Будь умным!


У вас вопросы?
У нас ответы:) SamZan.net

с ходу. Требуется осмысление задачи выбор адекватного подхода разработка некоей структуры решения

Работа добавлена на сайт samzan.net: 2016-03-13

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 10.5.2024

АЛГОРИТМЫ. ВИДЫ АЛГОРИТМОВ.

В инженерной практике постоянно встречаются задачи, которые не могут быть решены «с ходу». Требуется осмысление задачи, выбор адекватного подхода, разработка некоей структуры решения. Собственно эта структура решения, т.е. план, и есть алгоритм.

 Алгоритм – точно определенное правило действий (программа), для которого задано указание, как и в какой последовательности это правило необходимо применять к исходным данным задачи, чтобы получить ее решение.

 Основные характеристики алгоритма:

  •  Детерминированность (определенность) – однозначность результата процесса при заданных исходных данных;

  •  Дискретность определяемого алгоритмом процесса – расчлененность его на отдельные элементарные акты, возможность выполнения которых человеком или машиной не вызывает сомнения;

  •  Массовость – исходные данные для алгоритма можно выбирать из некоторого множества данных (потенциально бесконечного), т.е. алгоритм должен обеспечивать решение любой задачи из класса однотипных задач.

Существует несколько базовых алгоритмических конструкций, из которых могут быть построены алгоритмы любой сложности:

  •  Линейный
  •  Разветвляющийся (альтернативный)
  •  Циклический

Описать алгоритм можно одним из способов:

  •  Вербально (словесно);
  •  Блок – схемой (графически) – представление статических связей или динамического поведения систем с помощью геометрических фигур различной формы, содержащих внутри символы, уравнения или текст, стрелок и соединительных линий. Это вспомогательное методическое средство для получения наглядного представления о процессе;
  •  Алгоритмическим языком.

  1.  Линейный алгоритм. Состоит из последовательных инструкций и не содержит проверок логических условий, ветвлений и иных входов кроме начала.

           ……

 

   

  1.  Альтернативный. Предполагает ветвление программы или изменение последовательности выполнения команд в зависимости от результатов проверки некоторого условия.

 +      +  

        

   

  1.  Циклический – последовательность команд, которые в зависимости от выполнения условия выхода из цикла многократно повторяется при решении задачи. Различают циклы с фиксированным числом повторений и циклы с переменным числом повторений (итерационные процессы).

  

      

 Алгоритмический язык – формальный язык записи алгоритмов для их реализации на ЭВМ, публикации или формального анализа. Он определяется заданием алфавита (т.е. словаря исходных символов),

точным описанием его синтаксиса (грамматики)

и семантики. 

Правила преобразования информации в различных алгоритмических языках весьма разнообразны и качественно различны. Но в каждом языке должны быть средства для задания операторов, осуществляющих переработку информации, и операторов перехода (распознавателей), определяющих порядок выполнения этих операторов. Операторы, в свою очередь, могут обозначать последовательности других более элементарных операций.

 

ЯЗЫКИ ПРОГРАММИРОВАНИЯ.

DELPHI – ЯЗЫК ВЫСОКОГО УРОВНЯ.

«Мозгом» компьютера является процессор. Эта небольшая электронная схема выполняет все вычисления и обработку информации. У каждого типа процессоров свой состав регистров (ячеек памяти), и у каждого регистра свое назначение.

Состав регистров и их назначение называются архитектурой процессора. Чем сложнее процессор, тем сложнее его архитектура.

Для каждого процессора существует своя система команд – документ, в котором описано, какая команда что выполняет, каким кодом она записывается и как ее следует использовать. Эти команды элементарны: переслать число из одного регистра в другой, включить определенный бит в определенном случае и т.п.

Языки программирования, использующие такие команды, называют языками низкого уровня. В них одна команда языка соответствует одной команде процессора. Примером языка низкого уровня является Ассемблер. Программы, написанные на Ассемблере, работают очень быстро, но для их правильного составления нужно хорошо знать архитектуру процессора.

Для удобства пользователей компьютеров были разработаны так называемые языки высокого уровня. В них команды звучат привычнее и приближены к формулам. Но для выполнения такой команды требуется несколько команд процессора.

Тексты  программ становятся компактнее и понятнее, однако возникает необходимость в другой программе – трансляторе, которая переведет составленный текст на машинный язык.

Есть два вида таких программ – компиляторы и интерпретаторы. 

 Паскаль был разработан в 1970 году Никлаусом Виртом как язык для обучения студентов программированию. Но быстро обнаружилась чрезвычайная эффективность языка в самых разнообразных приложениях. Паскаль позволяет писать программы, легко читаемые даже новичком, и содержит в себе все элементы, необходимые для соблюдения хорошего строгого стиля программирования, упрощающего разработку сложных программ. Язык Паскаль стандартизован во многих странах. В 1983 году был принят международный стандарт.

Сейчас существуют многочисленные реализации языка  практически для всех машинных архитектур; разработаны десятки диалектов и проблемно-ориентированных расширений языка Паскаль.

Система программирования Турбо Паскаль появилась в середине 80-х г.г. и завоевала высокую популярность в классе систем программирования на ПК. Она состоит из языка программирования Паскаль и разработанного фирмой Borland программного окружения, предоставляющего сервисные услуги:

  •  Компилятор, осуществляющий преобразование программ на языке программирования в программу в машинных кодах, или интерпретатор, осуществляющий непосредственное выполнение текста программы на языке программирования высокого уровня;
  •  Библиотеки подпрограмм – заранее подготовленные подпрограммы, которыми могут пользоваться программисты;
  •  Различные вспомогательные программы, например, отладчики, программы для получения перекрестных ссылок и т.д.

  1.  ЛЕКСИЧЕСКАЯ СТРУКТУРА ЯЗЫКА DELPHI.

Текст программы представляет собой последовательность строк, состоящих из символов, образующих алфавит языка. Строки завершаются специальными управляющими символами, не входящими в алфавит (#10, #13). Максимальная длина строки 126 символов.

Алфавит языка включает:

  •  Буквы – латинские буквы от A до Z, причем большие и малые буквы не различаются, если не входят в строковые константы;
  •  Цифры 0..9;
  •  16-ричные цифры 0..9 и буквы A..F;
  •  Специальные символы .   +   -   /  *  =  :  ‘  ;  <  >  [  ]  (  )  {  }  ^  $  #  @;
  •  Составные символы, образующиеся из комбинаций специальных символов. В тексте программы их нельзя разделять пробелами:  <>    <=    >=     :=     ..     {}
  •  Пробел – разделитель в языке.

Из символов алфавита языка строятся базовые элементы программы –:

  •  Идентификаторы (имена) – для обозначения в программе переменных, констант, типов. Имя может состоять из букв, цифр, знаков подчеркивания, но начинаться должно с буквы. Длина его может любой, но при трансляции программы воспринимаются только первые 63 символа имени. Имена вводятся в программу посредством описаний.
  •  Зарезервированные слова – имеют строго фиксированное написание, их нельзя использовать в качестве имен, вводимых программистом (array, absolute, and, begin, end, for, else, mod, nil, implementation, do и т.д.).
  •  Знаки операций – формируются из одного или нескольких специальных символов для задания действий по преобразованию данных и вычислению значений.

СТРУКТУРА ПРОГРАММЫ.

DELPHI является алгоритмическим языком. В соответствии с этим программа всегда состоит из двух частей – описания последовательности действий, которые нужно выполнить, и описания данных, над которыми производятся эти действия. Действия представляются операторами языка.

Данные вводятся посредством описаний и определений. 

Текстуально описание данных должно предшествовать описанию действий и содержать упоминание всех объектов, используемых в действиях.

В общем виде программа на Паскале состоит из разделов:

Program Имя программы;

Uses

 Список используемых библиотек (модулей);

Label

 Список меток;

Const               

 Определение констант;         данных

Type

 Описание типов;

Var

 Описание переменных;

Определение используемых процедур;

Определение используемых функций;

 Begin

  . . . . .

  Основной  блок программы    описание

  . . . . .     

         End.

Кроме конструкций языка, программа может содержать комментарии и ключи компиляции.

Комментарий – любой текст в любом месте программы, заключенный в фигурные скобки {} или в круглые скобки со звездочкой (*  *). Комментарий не изменяет смысл программы и на выполнение не влияет, используется для пояснения текста программы.

Ключи компиляции (директивы компилятору) тоже заключаются в фигурные скобки, но являются инструкциями компилятору, предписывающими тот или иной режим обработки программы. Состоит из знака $, стоящей за ним буквы, определяющей конкретный режим, и знаков + или -, указывающих включить или выключить данный режим.

СИСТЕМА ТИПОВ ЯЗЫКА.

ТП является языком с сильной системой типизации. Это означает, что все данные, обрабатываемые программой, должны принадлежать к какому-либо заранее известному типу.

Под типом понимается множество значений, которое может принимать переменная, и совокупность действий, которые можно выполнять с этими значениями. 

С точки зрения внутреннего распределения памяти, задавая тип переменной, мы тем самым однозначно определяем размер памяти, выделяемый под переменную.

Такой подход (когда тип переменной задается при ее описании и не может быть изменен, а переменная может участвовать только в операциях, допустимых ее типом) способствует большей аккуратности и ответственности при составлении программ, делает их поддающимися автоматической проверке на корректность при компиляции, и в конечном итоге приводит к более высокой надежности создаваемых программ.

В языке предопределено достаточное количество типов данных, и имеются возможности для объявления новых типов (пользовательских).

Иерархическая структура типов

СКАЛЯРНЫЕ ТИПЫ.

Это базовые (простые) типы языка. Они распадаются на 4 группы:

  •  Целые типы
  •  Вещественные
  •  Символьный
  •  Логический

Целые типы. имеется пять целых типов, которые отличаются форматами и диапазонами допустимых значений.

Тип переменной

Описание

Размер памяти

Диапазон

Пример

Неотрицательные целые числа

byte

1 байт

0 … 255

16; 124

word

2 байта

0 … 65535

12363

Положительные и отрицательные целые числа

shortint

1 байт

-128 .. 127

25; -99, 111

integer

2 байта

-32768..32767

 -6956

longint

4 байта

-231 … 231-1

2147483647

Для целочисленных переменных, кроме рассмотренных выше, определены следующие арифметические функции, результат которых тоже целое число:

ABS (N) — абсолютная величина N;

A DIV B — целая часть от деления A на B;

A MOD B — остаток от деления A на B;

*, –, + — умножение, вычитание, сложение;

SQR (N) — квадрат числа N;

SQRT(N) — корень квадратный из N;

 ODD (N) — проверка N на четность.

Заметим, что при выполнении обычного деления / для целых чисел всегда получается вещественный результат ( тип REAL).

Операции сложения и вычитания могут использоваться как унарные (для одного операнда). При изменении знака числа, например, можно записать:

а := –а;

Рассмотрим подробнее операции DIV, MOD. При делении с точностью до целых чисел получается два результата — частное и остаток. Операция DIV обозначает целочисленное деление. Знак результата берется по обычным правилам, а полученный остаток игнорируется.

Пример 1:

23 DIV 5 = 4;

2 DIV 6 = 0;

(–13) DIV 5 = –3;

(–13) DIV (–5) = 3.

Операция MOD дает остаток при делении двух целых чисел.

Пример 2:

23 MOD 5 = 3;

2 MOD 6 = 2;

(–13) MOD 5 = –3;

(–13) MOD (–5) = 2;

8 MOD 2 = 0.

Операции *, DIV, MOD одинаковый более высокий ранг, а операции + и – также имеют одинаковый, но более низкий ранг.

Чаще всего целые числа используются в простых арифметических выражениях и выступают в программах в качестве различных счетчиков и значений индексов.

Вещественные типы определено пять стандартных вещественных типов, которые, как и целые типы данных, отличаются форматами и диапазонами допустимых значений.

Описание

Диапазон

Число значащих цифр

Объем памяти, б

real

2.9*10–39…1.7*10+38

11—12

6

single

1.5*10–45…3.4*10+38

78

4

double

5.0*10324…1.7*10+308

1516

8

extended

3.4*104932…1.1 *10+4932

1920

8

comp

–9.2*10+18…9.2*10+18

19—20

8

Comp — хотя и считается вещественным типом, но  содержит только целые числа из весьма значительного диапазона, которые представляются в вычислениях как вещественные с нулевой мантиссой.

Наиболее распространенная форма типов вещественных чисел  — это тип real.

Результат работы функций сложения, вычитания, деления, умножения, возведения в квадрат вещественных чисел дает вещественное число. Кроме этого используются следующие функции, результат которых — вещественное число:

ABS(X)  — абсолютное значение X;

ARCTAN(X) — арктангенс X;

COS(X)  — косинус X;

SIN(X)  — синус X;

LN(X)  — натуральный логарифм X при этом должно выполняться X >0;

SQR(X)  — квадрат X;

SQRT(X)  — корень квадратный из X, при этом должно выполняться X >= 0;

EXP(X)  — еX ;

FRAC(X)  — дробная часть X;

INT(X)  — целая часть X;

PI  — значение PI = 3.141592653589793238;

TRUNC (X)  — получение целой части вещественного числа X;

ROUND (X)  — округление вещественного числа X.

Форма представления вещественных чисел может быть в двух форматах:

1) с плавающей точкой;

2) с фиксированной точкой.

Точка является в языке разделителем целой и дробной частей.

Формат представления с плавающей точкой — это форма записи числа, которая характеризирует его порядок. Это форма вида:

[Sign1]<N1>.<N2> e Sign2<N3>,

Логический тип. Значением логического типа boolean является множество из двух упорядоченных элементов FALSE и TRUE. Переменным логического типа могут присваиваться только эти два значения. Про их значения известно, что:

TRUE > FALSE,

SUCC(FALSE) = TRUE,

ORD(FALSE) = 0,

ORD(TRUE) = 1,

PRED(TRUE) = FALSE.

На этом множестве определены одна унарная (один аргумент) и три логические бинарные операции (два аргумента):

NOT (отрицание — изменяет значение на противоположное);

AND (конъюнкция — истина только тогда, когда обе переменные истинны);

OR ( дизъюнкция — истина только тогда, когда один из операндов истинен);

XOR (исключение — истина только тогда, когда обе переменные различны).

Работа этих операций для двух переменных представлена в следующей таблице:

a

not a

a

b

a and b

a or b

a xor b

True

False

True

True

True

True

False

False

True

True

False

False

True

True

False

True

False

True

True

False

False

False

False

False

При записи условий используются следующие отношения между величинами: =, <>, >, <, <=, >=, in (принадлежность элемента множеству).

Подвыражение, содержащие операции отношение, заключаются в круглые скобки. Операции сравнения дают результат булевского (логического) типа, поэтому его можно присваивать булевской переменной. Например:

с := a > b.

Такой оператор присваивания называется логическим.

Символьный тип. Значением символьного типа сhar (1 байт памяти) может быть один из 255 упорядоченных элементов множества всех символов, представленных кодами ЭВМ таблицы ASCII (American Standard Code for Information Interchange — американский стандартный код  для обмена информацией).

Символы записываются в одинарных кавычках. Например,a’, ’@’, ’1’, а при выводе символов на экран апострофы не изображаются.

Допускается использование записи символа через его внутренний код, который записывается после символа #. Внутренний код — это порядковый номер символа в таблице кодов.

Например:

a ’ соответствует записи  #97;

z ’ соответствует записи  #90.

Допустима операция сложения (сцепления) символов — знак «+», но типом результата уже не будет тип char, результат будет иметь структурированный тип string. Символы можно сравнивать друг с другом, результат будет иметь логический тип. При сравнении считается, что символы равны, если равны их ASCII-коды, и один код больше другого, если его код больше. Таким образом, операций над значениями символьного типа, которые давали бы значение этого же типа, нет. Например:

a’ > ’A, так как 97 > 65 (’a’ = #97, ’A’ = #65).

К символьным значениям можно применять стандартные функции (в скобках указан аргумент функции и через двоеточие тип аргумента):

CHR (x:byte) :char — возвращает символ ASCII-кода;

ORD (c:char) : byte — возвращает ASCII-код символа;

PRED (c:char) : char — выдает предшествующий с символ;

SUCC (c:char) : char — выдает последующий за с символ.

Не определены значения SUCC(#255) и PRED(#0).

Перечисляемые типы

Задаются непосредственно перечислением всех значений, которые может принимать переменная данного типа. Отдельные значения указываются через запятую, а весь список заключается в круглые скобки.

Например,

Type

Color = (red, yellow, green, black);

Animals = (cat, dog, horse) ;

Days = (Monday, Sunday, Tuesday, Friday);

Поскольку перечисляемый тип — это тип данных, при котором количество всех возможных значений конечно, значит типы целые, символьный, логический тоже можно считать перечисляемыми.

Любой перечисляемый тип упорядочен и имеет внутреннюю нумерацию: 1-й элемент имеет №0, 2-й - №1 и т.д. Номер каждого элемента можно получить функцией:ORD (x) : longint.

Переменные перечисляемого типа можно сравнивать: больше та переменная, у которой больше порядковый номер.

Для переменных этого типа можно использовать функции SUCC(x) и PRED(x). Например: DEC (5) = 4; PRED (’b’) = ’a’. Не определены значения SUCC (последний элемент перечисления) и PRED (1-й элемент перечисления).

Ограниченный тип (диапазон)

Содержит значения только из ограниченного поддиапазона некоторого базового типа (любой целочисленный тип, тип char, и любой из введенных программистом перечисляемых типов). Для задания этого типа надо указать границы, сначала меньшую, потом большую, между ними разделитель — 2 точки:

Type

Digits = 1..8;

Symbols = ’b’..’m’.

Ограниченный тип наследует все свойства (допустимые операции) базового типа.

Перечислимые и ограниченные типы повышают наглядность программы и позволяют более надежно контролировать выходы значений за пределы заданного диапазона, как при трансляции, так и при выполнении программы.

ОПИСАНИЕ ПЕРЕМЕННЫХ.

Переменные вводятся в программу для хранения и передачи данных внутри нее. Любая используемая переменная должна быть определена, причем ее описание должно предшествовать ее использованию. Описание начинается со служебного слова var. За ним следует список идентификаторов переменных с указанием их типов, разделенных двоеточием.

Пример: var

  A:integer;  {стандартный тип}

  S:char;   {стандартный тип }

  Flag: boolean;  {стандартный тип }

  Sinus:real;  {стандартный тип }

  Index: 0..5;  {тип диапазон}

  Semafor: (red, green); {перечислением}

  X,y,z: real;  {неск. пер-х одного типа можно объединять}

2.ОПИСАНИЕ КОНСТАНТ.

Константы – это объекты, которые при выполнении программы не меняют своего значения. Описание начинается со служебного слова const, за которым следует список идентификаторов констант и их значений через знак равенства «=».

Пример:

 Const

  Min = 10;

  Max = 1000;

  Center = (max-min) div 2; {расширение ТП – можно использовать

       константные выражения}

  Message = ‘Out of memory’;

Тип не указывается. Он однозначно определяется по конкретному значению каждой константы.

Использование в программе идентификаторов констант вместо записи конкретных значений считается хорошим стилем программирования, т.к. делает программу более  “читабельной” и способствует лучшему ее пониманию. И, кроме того, проще редактировать программу, поменяв один раз какое-то значение в разделе описаний, чем отслеживать это значение по ходу программы и менять несколько раз.

Типизированные константы.

Занимают промежуточное положение между переменными и константами:

  •  Типизированные константы описываются в разделе описаний констант вместе с обычными;
  •  Как и обычные константы, они получают при описании начальное значение;
  •  Аналогично переменным, они имеют тип, который задается при их описании, и могут получать новые значения по ходу программы.

Т.о., названиеконстантадовольно условное.

 Пример:

  Const

   Pi: real = 3.14;

   Diapazon: 0..100 = 1;

   Title: string = ‘Name’;

Нужно помнить, что типизированные константы не взаимозаменяемы с обычными константами. Их нельзя использовать в константных выражениях:

 Const 

  Min : integer = 0;

  Max: integer = 99;

 Var

  M: array[min..max] of byte;  {некорректно!}

В подобных случаях следует помнить, что типизированная константа фактически является переменной с заданным начальным значением.

Для типизированных констант регулярных типов в качестве начального значения нужно задать список всех элементов массива через  запятую, заключенный в круглые скобки.

 Type

  Mas=array[1..5]of real;

 Const

  M:mas = (2.8, 3.2, 4.5, -3.4, -0.9);

  1.  ОСНОВНОЙ БЛОК ПРОГРАММЫ.

ВЫРАЖЕНИЯ.

Выражение представляет собой формальное правило для вычисления некоторого (нового) значения. Понятие выражения присутствует практически в любом достаточно развитом языке программирования, а синтаксические правила для их построения очень похожи в различных языках.

В самом общем виде выражения строятся из операндов, знаков операций и круглых скобок.

 Операнды – “элементарные” значения. Ими могут быть переменные, элементы массивов, поля записей и т.д.

 Операции определяют действия, которые надо выполнить над операндами. Операции в ТП подразделяются на арифметические, отношения, логические, строковые и др. Соответственно выражения называются арифметическими, отношения, логическими, строковыми и др. в зависимости от того, какого типа операнды и операции в них используются.

Операции обозначаются:

  •  Специальными знаками, состоящими из одного или нескольких символов. (@, +, <=)
  •  С помощью служебных слов. (Div, mod.)

Операции бывают:

  •  Бинарные, т.е. определенные для двух операндов. Знак операции записывается между операндами (a+b, f1 div f2);
  •  Унарные, т.е. содержащие 1 операнд. Знак операции всегда предшествует операнду (@d, -a).

 Арифметические операции – выполняют арифметические действия над значениями операндов целочисленных и вещественных типов:

  •  Бинарные   +, -, *, /, div, mod
  •  Унарные   - (отрицание знака), not (арифметическое отрицание)

Операции отношения – выполняют сравнение двух операндов и определяют истинно значение выражения или ложно. Результат имеет булевский тип (true или false): <, >, <=, >=, <>, =, in. Сравнивать можно совместимые простые значения, указатели, символы, строки. Замечание: формально х 2.23 * х / 2.23, но из-за ошибок округления в вещественном типе левая и правая части будут отличаться; т.е. при сравнении вещественных значений нельзя быть уверенным в его корректности.

Логические операции – результат true или false: not, or, and, xor. ТП поддерживает 2 различные модели генерации кода для операций and и or: полное вычисление и вычисление по короткой схеме (частичное). Полное – каждый член логического выражения, построенного с помощью операций and и or, всегда будет вычисляться, даже если результат всего выражения уже известен. Частичное – вычисление прекращается, как только результат всего выражения становится очевиден. Во многих случаях эта модель удобна, т.к. обеспечивает минимальное время выполнения и, как правило, минимальный объем кода. Такое вычисление делает возможными такие конструкции, которые в противном случае были бы недопустимыми. Пример: if (x<>0) and (2/x >N) then… Здесь: если результат первого вычисления будет false, то вычисление второго выражения не выполняется (а если бы попыталось выполниться, то возникла бы ошибка). Полная схема необходима лишь тогда, когда один или более операндов в выражении – логические функции с побочными эффектами, которые изменяют смысл программы. Схема вычисления задается с помощью ключа компилятора $B в меню Option/Compiler.  {$B+} – полная схема, {$B-} – короткая схема.

Задачи: установить, истинны или ложны следующие условия:

 Not ((6<4) and (4>8))   {true}

 (a<=a+1) or (12-3>0)   {true}

 ((2<=2) and (3>=3)) or (15>25) {true}

Операция взятия адреса @ - унарная операция, создает указатель на переменную.

Выполнение операций происходит с учетом их приоритетов. Чем выше приоритет, тем раньше выполняется операция:

  •  1-й приоритет (высший) – унарные операции @, not
  •  2-й – операции типа умножения: *, /, div, mod, and
  •  3-й - операции типа сложения: +, -, or, xor
  •  4-й - операции отношения: =, <, >, in и т.д.

Если необходимо изменить порядок действий, который определен приоритетами, то нужно использовать круглые скобки ( ).

В выражениях можно использовать готовые функции и процедуры ТП:

  1.  функции

Вызов функции

Тип аргумента

Тип значения

Назначение функции

Abs(x)

Целый/веществен.

Как у аргумента

Абсолютное знач. х

Pi

-

Вещественный

. Генерирует число с точностью, зависящей от наличия сопроцессора и содержит 10-14 знаков после «,». Может использоваться в вычислениях как константа, но не может быть подставлена в вычислимые константы раздела Const

Sin(x)

Вещественный

Вещественный

Sin x радиан

Cos(x)

Вещественный

Вещественный

Cos x радиан

Arctan(x)

Вещественный

Вещественный

Arctg x радиан. Возвращает главное значение (от до )

Sqrt(x)

Целый/веществен.

Вещественный

, х>0

Sqr(x)

Целый/веществен.

Как у аргумента

X2

Exp(x)

Вещественный

Вещественный

ex

Ln(x)

Вещественный

Вещественный

Ln x, x>0

Trunc(x)

Вещественный

Longint

Целая часть  х

Frac(x)

Вещественный

Вещественный

Дробная часть х

Int(x)

Вещественный

Вещественный

Целая часть значения х. Записывает целое число в вещественном формате (для совместимости в операторах присваивания) (после « . » - нули)

Round(x)

Вещественный

Longint

Округление х до ближайшего целого

Odd(x)

Целый

Логический

True – если х нечетное

Random

-

Вещественный

Случайное число (0..1)

Random(x)

Word

Word

Случайное число (0..х)

Остальные математические функции надо выражать через стандартные (используя справочник по математике).

logab= ln(b)/ln(a)

Задача: записать выражение по правилам ТП:

 

  1.  процедуры

inc(var x : целое) – увеличивает значение х на 1

dec(var x : целое) – уменьшает значение х на 1

inc(var x : целое; N: целое) – увеличивает значение х на N

dec(var x : целое; N: целое) – уменьшает значение х на N

Оптимизируют операции сложения и вычитания. При компиляции inc(i) дает  более эффективный код, чем традиционное i:=i+1 (выигрыш до 30%).

  •  Randomize – гарантирует несовпадение последовательностей случайных чисел, выдаваемых функцией Random. Пока программа работает, любое обращение к Random дает вполне “случайное” значение. Но если запустить программу второй раз, то “случайные” значения будут теми же, что и в прошлый раз. Значит, многократный запуск программ, моделирующих случайные процессы, наберет статистику, одинаковую с единичным прогоном. Во избежание этого рекомендуется включать в начало программы вызов процедуры Randomize. Эта процедура записывает случайное число (взятое со встроенного таймера) в т.н. “затравку” случайной последовательности, сбивая ее тем самым на новые числа.

  1.  ОПЕРАТОРЫ.

Операторы – это синтаксические конструкции, предназначенные для записи алгоритмических действий по преобразованию данных, а также для задания порядка выполнения других действий.

В ТП есть:

  •  Простые операторы – не содержащие в себе никаких других операторов
  •  Структурные – в их состав могут входить другие операторы (а те, в свою очередь, тоже могут быть структурными; глубина вложенности не ограничивается).

Простые операторы.

  •  Присваивания «:=» предписывает выполнить выражение, заданное в его правой части, и присвоить результат переменной, идентификатор которой расположен в левой части. Переменная и выражение должны быть совместимы по типу.

Пример:  flag:= false;

 Ch:=’h’;

 Sum:= x+y;

 R:= (x+z)/(2+z*10) – 0.5;

Задачи:

  1.  Поменять между собой значения двух переменных a и b, воспользовавшись 3-ей переменной для временного хранения значения.  R:=a; a:=b; b:=R;
  2.  Поменять между собой значения трех переменных x, y, z по схеме xyzx.

Temp:=x;

X:=z;

z:=y;

y:=temp;

  1.  Чему равно х в результате выполнения программы:

X:=2;

X:=x+x;

X:=x-1;   {3}

  1.  Поменяйте между собой значения двух целых переменных, не используя третьей переменной.

A:=5;   a:=a+b;

B:=3;   b:=a-b;

  a:=a-b;

  •  Безусловного перехода. Любой оператор в программе можно пометить меткой. Все метки должны быть описаны в разделе LABLE. Синтаксис оператора: goto имя метки;

Применяется в случаях, когда после выполнения некоторого оператора надо выполнить не следующий по порядку, а какой-либо другой, отмеченный меткой оператор. Метка может содержать как цифровые, так и буквенные символы: goto 99;  goto EndBlock;

! Старайтесь не использовать goto в своих программах. Применение безусловных передач управления подвергается серьезной критике и считается теоретически избыточным, т.к. получаются малопонятные и трудно модифицируемые программы, которые вызывают большие сложности при отладке и сопровождении.

  •  Пустой оператор – не содержит никаких символов и не выполняет никаких действий. Обычно используется для организации перехода к концу блока (по метке). На End метку ставить нельзя, т.к. по определению помечается оператор.
  •  Операторы простого ввода/вывода – read, readln, write, writeln.

Задачи:

  1.  На клавиатуре набраны 2 строки:

2 3 4 5

6

     Какие значения придаст переменным х и у пара операторов:

 Read(x);   readln(x);

Read(y);   read(y);

  1.  В результате вычислений получили, что х1=5, х2=3, х3=1, х4=0. Что будет выведено на экран операторами:

Write(x1,x2);    writeln(x1);

Write(x3,x4);    writeln(x2,x3);

    Writeln(x4);

Можно использовать writeln без списка вывода – курсор переместится в начало следующей строки.

Составные операторы.-

Конструкции, построенные из других операторов по строго определенным правилам. Делятся на 3 группы: составные, условные, повтора.

  •  Составной оператор – задает последовательное выполнение операторов, входящих в него. Эти операторы заключены между служебными словами begin и end и отделяются друг от друга “;”

Пример:  begin     begin

   A:=11;      z:=x;

   B:=a*a;      x:=y;

   Write(b);      y:=z;

 End;     end;

     Составной оператор применяется в тех случаях, когда синтаксис языка Паскаль допускает использование только одного оператора, в то время как по логике программы надо выполнить некоторую последовательность действий.

  •  Условный оператор – для выбора к исполнению одного из двух возможных операторов в зависимости от некоторого условия. При этом один из операторов может быть пустым, т.е. отсутствовать.

 If <условие> then <оператор 1>

 Else <оператор 2>;    (1)

If <условие> then <оператор>;   (2)

     Условие – это выражение булевского типа. Если значение выражения истинно, выполняется оператор 1, если ложно – оператор 2 (для (1)). Для (2): если условие истинно, то выполняется <оператор>, если ложно – оператор, следующий за оператором If.

Пример:

  1.  Из двух чисел определить большее.

If x>y then max:=x

Else max:=y;

  1.  Проверка кода – если не тот, то выйти из программы.

If x=100 then write(‘код правильный’)

     Else

 Begin

   Write(‘ошибка в коде!’);

   Halt(1);

 End;

Допускается вложенность условных операторов.

Задачи:

  1.  Определить максимальное из трех чисел.

 If a>b Then

  If a>c then max:=a

  Else max:=c

 Else

  If b>c then max:=b

  Else max:=c;

  1.  Ввести число. Напечатать “1”, если число четное, и “0”, если нечетное.

If odd(x) then writeln(‘0’)

   Else writeln(‘1’);  или ((x mod 2) <> 0)

  1.  Ввести 2 числа. Напечатать сначала меньшее, потом большее.

Readln(a,b);

If a>b then write (b,’  ‘,a)

Else write (a,’  ‘,b);

  1.  Решить задачу 3), используя только один оператор вывода.

Readln(a,b);

If a>b then begin

 Temp:=a;

 A:=b;

 B:=temp

       End;

Writeln(a,’  ‘,b);

  1.  Даны 3 числа a, b, c <>0. Установить, имеет ли уравнение ax2+bx+c=0 действительные корни и, если имеет, то найти их.

Const a=3; b=5; c=-4;

Var d:real; x1,x2:real;

Begin

 D:=sqr(b)-4*a*c;

 If d>0 then

     Begin

 X1:=(-b+sqrt(d))/2*a;

 X2:= (-b-sqrt(d))/2*a;

 Writeln(‘x1=’, x1, ‘x2=’, x2);

    End

 Else writeln (‘нет действительных корней!’);

End.

  1.  Заданы площади круга R и квадрата S. Определить, поместится ли квадрат в круге при R=70, S=36.4 ; и круг в квадрате при R=3.2, S=3.5.

 

  •  Оператор выбора – позволяет сделать выбор из произвольного числа имеющихся вариантов.

Case <выражение-селектор> of

< набор значений 1>:<оператор 1>;

< набор значений 2>:<оператор 2>;

. . . . .

< набор значений N>:< оператор N>

 else < оператор >

end;

     Пример:

 Case Color of

 Red     : x:=y+2;

 Yellow: x:=y-2;

 Green  : x:=y;

 End;

     Сначала вычисляется текущее значение переменной Color. Затем это значение сравнивается с константами, записанными перед операторами. При совпадении значения переменной и одной из констант выбора будет выполнен оператор, «помеченный» данной константой. Если значение переменной Color не совпадет ни с одной константой, то данный оператор не выполнит никаких действий.

Кроме одиночных констант могут использоваться списки или диапазоны значений: Пример: Case Sw of

  1..3      : proc1;

  4,5,8    : proc2;

  6,9..12 : proc3

         else proc4

 end;

Операторы безусловного выхода из программы.

ТП обладает средствами безусловного выхода из программных блоков. Это очень удобно, т.к. позволяет завершить программу или процедуру без предварительных переходов по меткам. К таким операторам завершения относятся вызовы системных процедур Halt и Exit.

Exit завершает работу своего программного блока. Вызов Exit в процедуре означает завершение ее работы и возврат в основную программу. Вызов в основной программе означает завершение программы.

Halt(n) – независимо от того, где она находится, ее выполнение завершает работу программы с кодом завершения n. Этот код впоследствии может быть проанализирован, в частности, командой If ErrorLevel… в среде MS DOS. Значение ErrorLevel после остановки программы будет равно значению n. N=0 соответствует нормальному коду завершения.


Лекция №3

Операторы цикла

Циклы – это повторяющееся выполнение одних и тех же операторов. Существует 3 стандартных способа организации циклических вычислений.

Цикл с предусловием.

 

 While <выражение>  do <оператор>;

Перед каждым очередным выполнением  оператора производится проверка значения булевского выражения, которое служит критерием повторения. Если это выражение имеет значение True – тело цикла выполняется. Затем снова вычисляется выражение условия. Если результат равен False – происходит выход из цикла и переход к первому после While оператору. Если выражение с самого начала было ложно, то цикл не выполнится ни разу.

Пример: 1) While E>0.05 do begin

           S:=a*b;

           E:=p-s;

           A:=a+0.5;

           B:=b+0.5;

       End;

  1.  While m[i]<>0 do i:=i+1;

Следует помнить:

  •  Чтобы цикл имел шанс когда-нибудь завершиться, содержимое его тела должно обязательно влиять на условие цикла;

. . . . .

a:=5;

While a>0 do x:=x+2*x;

. . . . .

  •  Условие должно состоять из корректных выражений и значений, определенных еще до первого выполнения цикла.

Цикл с постусловием.

 Repeat

   <оператор>;

   . . . . . . .    тело цикла

   <оператор>

 Until <условие>;

В случае цикла с постусловием вначале выполняется тело цикла, затем проверяется условие выхода из цикла. Если результат булевского выражения False, то тело цикла выполняется еще раз. Если результат True – происходит выход из цикла. Здесь тоже тело цикла должно влиять на значение условия, иначе цикл будет выполняться бесконечно. Заметьте, что этот цикл выполнится хотя бы раз, т.к. условие стоит после тела.

Пример: Repeat

   K:=i mod j ;

   I:=j ;

   J:=k;

 Until j=0;

. ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ PASCAL

Язык Pascal (Паскаль) был разработан швейцарским профессором Николаусом Виртом в конце 60-х начале 70-х годов прошлого века и назван в честь выдающегося французского математика и философа Блеза Паскаля. Первоначально этот язык был создан для обучения программированию. Однако, благодаря заложенным в нем большим возможностям структурного программирования, он стал широко применяться в различных областях: науке, технике, экономике, при создании информационных систем и т.д. В настоящее время язык Pascal это один из необходимых элементов обучения программированию. Существует много версий языка. В настоящее время наиболее популярна версия Turbo Pascal 7.0.

1. Лексическая структура языка

Текст программы на языке Pascal представляет собой последовательность строк, состоящих из символов, образующих алфавит языка. Строки завершаются специальными управляющими символами, не входящими в алфавит (#10, #13). Максимальная длина строки 126 символов.

Алфавит языка включает:

  •  Буквы — латинские буквы от A до Z, причем большие и малые буквы не различаются, если не входят в строковые константы;
  •  Арабские цифры от 0 до9;
  •  16-ричные цифры 0..9 и буквы A..F;
  •  Специальные символы .   +   –   /  *  =  :  ‘  ;  <  >  [  ]  (  )  {  }  ^  $  #  @ ;
  •  Составные символы, образующиеся из комбинаций специальных символов. В тексте программы их нельзя разделять пробелами:  <>    <=    >=     :=   .. и т.д.
  •  Пробел — разделитель в языке.

Из символов алфавита языка строятся базовые элементы программы:

  •  Идентификаторы (имена) — служат для обозначения в программе переменных, констант, типов. Имя может состоять из букв, цифр, знаков подчеркивания, но начинаться должно с буквы. Длина его может любой, но при трансляции программы воспринимаются только первые 63 символа имени. Имена вводятся в программу посредством описаний.
  •  Зарезервированные слова имеют строго фиксированное написание, их нельзя использовать в качестве имен, вводимых программистом (array, and, begin, end, for, else, mod, nil, implementation, do и т.д.). К зарезервированным словам относятся служебные слова, операторы, имена встроенных функций, имена директив и т.д.
  •  Знаки операций формируются из одного или нескольких специальных символов для задания действий по преобразованию данных и вычислению значений. Под знаками операций понимаются как различные арифметические действия ( +, -, *, /, <>, <=, >=, @) так и арифметические и логические функции (DIV, MOD, NOT, AND, OR, XOR).
  •  Множество знаков пунктуации  складывается из следующих символов:

{ }или (* *) — скобки комментария;

[ ] — выделение индексов массива и элементов массива;

( ) — выделение списков параметров, алгебраические скобки;

‘ — апостроф;

: — отделение переменной или типизированной константы от типа;

; — разделение операторов и объявлений;

= — отделение идентификатора типа от описания типа или типизированной константы от значения;

, — разделение элементов списка;

.. — разделение границ диапазона;

. — конец программы, отделение целой части от дробной, разделение полей записи;

$ — знак шестнадцатеричного числа или директивы компилятору;

# — признак кода числа.

Разделителями в программе служат пробелы, любые управляющие символы и комментарии.

Комментарий — любой текст в любом месте программы, заключенный в фигурные скобки {} или в круглые скобки со звездочкой (*  *). Комментарий не изменяет смысл программы и на выполнение не влияет, используется для пояснения текста программы.

Некоторые символы, например &, %, буквы русского алфавита можно использовать только в символьных строках и комментариях.

Комментарий, в котором вслед за скобкой следует знак $, является директивой компилятору.

Директивы компилятору (ключи компиляции) тоже заключаются в фигурные скобки, но являются инструкциями компилятору, предписывающими тот или иной режим обработки программы. Директива компилятору состоит из знака $ и стоящей за ним буквы, определяющей конкретный режим, а также знаков + или – , которые указывают включить или выключить данный режим.

2. Структура программы

Программа на языке Pascal всегда состоит из двух частей:

1. Описания данных, над которыми производятся действия. Описание данных должно предшествовать описанию действий и содержать упоминание всех объектов, используемых в действиях.

2. Описания последовательности действий, которые нужно выполнить. Действия представляются операторами языка.

В общем виде программа может содержать следующие разделы, каждый из которых, кроме последнего, завершается точкой с запятой:

Program имя программы;

Uses

 Список используемых библиотек (модулей);

Label

 Список меток;

Const         описание

 Определение констант;       данных

Type

 Описание типов;

Var

 Описание переменных;

Определение используемых процедур;

Определение используемых функций;

 Begin

  . . . . .

  Основной  блок программы   описание

  . . . . .  действий (обязательная часть)

 End.

Кроме конструкций языка, программа может содержать комментарии и ключи компиляции.

Заголовок программы. Заголовок программы необязателен и игнорируется компилятором. Если заголовок присутствует, то он состоит из зарезервированного слова и имени программы.

Например: Program Summa_1;.

Раздел Uses служит для подключения как библиотечных модулей, так и модулей пользователя. Имена модулей последовательно перечисляются в виде списка. Например: Uses Сrt, Modul1, Modul2;.

Порядок размещения  последующих разделов  части описания произвольный, можно создавать сразу несколько одинаковых разделов.

Раздел описания меток Label содержит список меток, используемых в программе. Обычно программе в качестве меток можно использовать целые числа и короткие идентификаторы, например, 12, М12. Сама метка ставится в тексте программы перед оператором и отделяется от него двоеточием.

Раздел объявления констант Const вводится для того, чтобы задать начальные значения переменным или предписать некоторым константам идентификаторы. Например:

Const 

А = 12.3;

Str = ’ asd’;

Раздел объявления типов Type используется тогда, когда пользователь хочет создать свои пользовательские типы. Стандартные типы данных языка не требуют объявления. Например:

Type

YEAR = 2000…2009;

Day = (Sunday, Monday, Tuesday, Wednesday, Thursday, Friday);

Раздел объявления переменных Var содержит список переменных с объявлением их типов. Например:

Var

a, b, c : integer;

d, f : real;

e : string;

Раздел объявления функций и процедур содержит описания всех используемых функций и процедур пользователя.

Основной блок программы (тело программы) обязателен. Он заключается в операторные скобки Begin   End с точкой. Тело программы содержит набор операторов, которые определяют действия программы.

3. Структура данных

Использование различных типов данных имеют огромное значение при программировании, т.к. определяют способы и алгоритмы обработки этих данных. Pascal является языком с сильной системой типизации. Это означает, что все данные, обрабатываемые программой, должны принадлежать к какому-либо заранее известному типу. Тип переменной задается при ее описании и не может быть изменен, а переменная может участвовать только в операциях, допустимых ее типом. С точки зрения внутреннего распределения памяти, задание типа переменной однозначно определяет размер памяти, выделяемый под переменную.

Можно выделить следующие группы типов:

  •  простые типы;
  •  структурированные типы;
  •  указатели;
  •  процедурные типы;
  •  объекты.

При программировании можно использовать как стандартные типы данных так имеется возможность и для создания и объявления новых типов (пользовательских).

3.1. Простые типы

Скалярные типы

Это базовые типы языка. Они распадаются на 4 группы:

целые типы;

вещественные типы;

символьные тип;

логические тип.

Целые типы. В Pascal имеется пять целых типов, которые отличаются форматами и диапазонами допустимых значений.

Тип переменной

Описание

Размер памяти

Диапазон

Пример

Неотрицательные целые числа

byte

1 байт

0 … 255

16; 124

word

2 байта

0 … 65535

12363

Положительные и отрицательные целые числа

shortint

1 байт

-128 .. 127

25; -99, 111

integer

2 байта

-32768..32767

 -6956

longint

4 байта

-231 … 231-1

2147483647

Для целочисленных переменных, кроме рассмотренных выше, определены следующие арифметические функции, результат которых тоже целое число:

ABS (N) — абсолютная величина N;

A DIV B — целая часть от деления A на B;

A MOD B — остаток от деления A на B;

*, –, + — умножение, вычитание, сложение;

SQR (N) — квадрат числа N;

SQRT(N) — корень квадратный из N;

         ODD (N) — проверка N на четность.

Заметим, что при выполнении обычного деления / для целых чисел всегда получается вещественный результат ( тип REAL).Операции сложения и вычитания могут использоваться как унарные (для одного операнда). При изменении знака числа, например, можно записать:

а := –а;

Рассмотрим подробнее операции DIV, MOD. При делении с точностью до целых чисел получается два результата — частное и остаток. Операция DIV обозначает целочисленное деление. Знак результата берется по обычным правилам, а полученный остаток игнорируется.

Пример 1:

23 DIV 5 = 4;

2 DIV 6 = 0;

(–13) DIV 5 = –3;

(–13) DIV (–5) = 3.

Операция MOD дает остаток при делении двух целых чисел.

Пример 2:

23 MOD 5 = 3;

2 MOD 6 = 2;

(–13) MOD 5 = –3;

(–13) MOD (–5) = 2;

8 MOD 2 = 0.

Операции *, DIV, MOD одинаковый более высокий ранг, а операции + и – также имеют одинаковый, но более низкий ранг.

Чаще всего целые числа используются в простых арифметических выражениях и выступают в программах в качестве различных счетчиков и значений индексов.

Вещественные типы. В языке Pascal определено пять стандартных вещественных типов, которые, как и целые типы данных, отличаются форматами и диапазонами допустимых значений.

Описание

Диапазон

Число значащих цифр

Объем памяти, б

real

2.9*10–39…1.7*10+38

11—12

6

single

1.5*10–45…3.4*10+38

78

4

double

5.0*10324…1.7*10+308

1516

8

extended

3.4*104932…1.1 *10+4932

1920

8

comp

–9.2*10+18…9.2*10+18

19—20

8

Comp — хотя и считается вещественным типом, но  содержит только целые числа из весьма значительного диапазона, которые представляются в вычислениях как вещественные с нулевой мантиссой.

Наиболее распространенная форма типов вещественных чисел  — это тип real.

Результат работы функций сложения, вычитания, деления, умножения, возведения в квадрат вещественных чисел дает вещественное число. Кроме этого используются следующие функции, результат которых — вещественное число:

ABS(X)  — абсолютное значение X;

ARCTAN(X) — арктангенс X;

COS(X)  — косинус X;

SIN(X)  — синус X;

LN(X)  — натуральный логарифм X при этом должно выполняться X >0;

SQR(X)  — квадрат X;

SQRT(X)  — корень квадратный из X, при этом должно выполняться X >= 0;

EXP(X)  — еX ;

FRAC(X)  — дробная часть X;

INT(X)  — целая часть X;

PI  — значение PI = 3.141592653589793238;

TRUNC (X)  — получение целой части вещественного числа X;

ROUND (X)  — округление вещественного числа X.

Форма представления вещественных чисел может быть в двух форматах:

1) с плавающей точкой;

2) с фиксированной точкой.

Точка является в языке разделителем целой и дробной частей.

Формат представления с плавающей точкой — это форма записи числа, которая характеризирует его порядок. Это форма вида:

[Sign1]<N1>.<N2> e Sign2<N3>,

где:

Sign1 — знак числа;

Sign2 — знак числа степени;

<N1> — цифры целой части числа;

<N2> — цифры мантиссы числа;

<N3> — порядок числа (степень десяти);

e — знак формы представления.

Например,

-1.0e-4,

2.02e3.

Формат представления с фиксированной точкой это форма записи вида:

Sign<N1>.<N2>,

где

Sign — знак числа;

<N1> — цифры целой части числа;

<N2> — мантисса числа.

Например,

.17,

0.01,

+324.0.

Логический тип. Значением логического типа boolean является множество из двух упорядоченных элементов FALSE и TRUE. Переменным логического типа могут присваиваться только эти два значения. Про их значения известно, что:

TRUE > FALSE,

SUCC(FALSE) = TRUE,

ORD(FALSE) = 0,

ORD(TRUE) = 1,

PRED(TRUE) = FALSE.

На этом множестве определены одна унарная (один аргумент) и три логические бинарные операции (два аргумента):

NOT (отрицание — изменяет значение на противоположное);

AND (конъюнкция — истина только тогда, когда обе переменные истинны);

OR ( дизъюнкция — истина только тогда, когда один из операндов истинен);

XOR (исключение — истина только тогда, когда обе переменные различны).

Работа этих операций для двух переменных представлена в следующей таблице:

a

not a

a

b

a and b

a or b

a xor b

True

False

True

True

True

True

False

False

True

True

False

False

True

True

False

True

False

True

True

False

False

False

False

False

При записи условий используются следующие отношения между величинами: =, <>, >, <, <=, >=, in (принадлежность элемента множеству). Подвыражение, содержащие операции отношение, заключаются в круглые скобки. Операции сравнения дают результат булевского (логического) типа, поэтому его можно присваивать булевской переменной. Например:

с := a > b.

Такой оператор присваивания называется логическим.

Символьный тип. Значением символьного типа сhar (1 байт памяти) может быть один из 255 упорядоченных элементов множества всех символов, представленных кодами ЭВМ таблицы ASCII (American Standard Code for Information Interchange — американский стандартный код  для обмена информацией).

Символы записываются в одинарных кавычках. Например,a’, ’@’, ’1’, а при выводе символов на экран апострофы не изображаются.

Допускается использование записи символа через его внутренний код, который записывается после символа #. Внутренний код — это порядковый номер символа в таблице кодов.

Например:

a ’ соответствует записи  #97;

z ’ соответствует записи  #90.

Допустима операция сложения (сцепления) символов — знак «+», но типом результата уже не будет тип char, результат будет иметь структурированный тип string. Символы можно сравнивать друг с другом, результат будет иметь логический тип. При сравнении считается, что символы равны, если равны их ASCII-коды, и один код больше другого, если его код больше. Таким образом, операций над значениями символьного типа, которые давали бы значение этого же типа, нет. Например:

a’ > ’A, так как 97 > 65 (’a’ = #97, ’A’ = #65).

К символьным значениям можно применять стандартные функции (в скобках указан аргумент функции и через двоеточие тип аргумента):

CHR (x:byte) :char — возвращает символ ASCII-кода;

ORD (c:char) : byte — возвращает ASCII-код символа;

PRED (c:char) : char — выдает предшествующий с символ;

SUCC (c:char) : char — выдает последующий за с символ.

Не определены значения SUCC(#255) и PRED(#0).

Перечисляемые типы

Задаются непосредственно перечислением всех значений, которые может принимать переменная данного типа. Отдельные значения указываются через запятую, а весь список заключается в круглые скобки.

Например,

Type

Color = (red, yellow, green, black);

Animals = (cat, dog, horse) ;

Days = (Monday, Sunday, Tuesday, Friday);

Поскольку перечисляемый тип — это тип данных, при котором количество всех возможных значений конечно, значит типы целые, символьный, логический тоже можно считать перечисляемыми.

Любой перечисляемый тип упорядочен и имеет внутреннюю нумерацию: 1-й элемент имеет №0, 2-й - №1 и т.д. Номер каждого элемента можно получить функцией:ORD (x) : longint.

Переменные перечисляемого типа можно сравнивать: больше та переменная, у которой больше порядковый номер.

Для переменных этого типа можно использовать функции SUCC(x) и PRED(x). Например: DEC (5) = 4; PRED (’b’) = ’a’. Не определены значения SUCC (последний элемент перечисления) и PRED (1-й элемент перечисления).

Ограниченный тип (диапазон)

Содержит значения только из ограниченного поддиапазона некоторого базового типа (любой целочисленный тип, тип char, и любой из введенных программистом перечисляемых типов). Для задания этого типа надо указать границы, сначала меньшую, потом большую, между ними разделитель — 2 точки:

Type

Digits = 1..8;

Symbols = ’b’..’m’.

Ограниченный тип наследует все свойства (допустимые операции) базового типа.

Перечислимые и ограниченные типы повышают наглядность программы и позволяют более надежно контролировать выходы значений за пределы заданного диапазона, как при трансляции, так и при выполнении программы.

3.2. Структурированные типы

В языке используются следующие структурированные типы:

массив;

запись;

множество;

файл.


В предыдущих разделах – формат с плавающей запятой.




1.  Навязывание роли
2. Этические основы деятельности полиции в современном обществе
3. Контрольная работа- Исследование частотных свойств линейных динамических звеньев
4. РЕФЕРАТ дисертації на здобуття наукового ступеня кандидата економічних наук Микола
5. тема DOS. Если обнаружена системная дискета то BIOS выполняет прерывание INT 19H для доступа к первому сектору ди
6. Стандартизация и управление предприятием
7. Стерилизация собак зачем когда как
8. Дагестанский государственный университет К
9. во возник после смерти пророка в 632г
10. Реферат- Поводження й переконання
11. Содержание образования как средство формирования базовой культуры личности и ее развития
12. Создание форм в Microsoft ccess 2003
13.  В мире сложилась такая ситуация когда само развитие человеческой цивилизации ставит выживание человека п
14. РадиотехникаМ
15. Тема 3 Средневековые государства на территории Казахстана 1
16. Творчество Антонио Ринальди
17. День Матери Для среднего школьного возраста 5 ~ 9 классы
18. РЕФЕРАТ диссертации на соискание ученой степени кандидата экономических наук Москва1998 Работа выполне
19. Расторжение трудового договора при ликвидации предприятия
20. Статья 1 Основные термины применяемые в настоящем Кодексе и их определения 1