Структура Паскаль-программы

Автор работы: Пользователь скрыл имя, 20 Февраля 2011 в 19:37, лекция

Описание работы

Программа на языке Паскаль состоит из следующих частей:

Заголовок

Подключение модулей

Раздел описаний

Begin

Раздел операторов

Файлы: 1 файл

Программирование1.doc

— 199.00 Кб (Скачать файл)

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

Операции – определяют действие по вычислению новых значений, исходя из значения операндов.

Все операции Паскаля  можно разделить на 4 группы по приоритетам: 1) унарные операции (логическое not, операция взятия адреса); 2) мультипликативные операции (умножение, деление, деление нацело, взятие остатка от целочисленного деления, логическое and, операции сдвига – shl и shr); 3) аддитивные операции (сложение, вычитание, логическое or, логическое xor); 4) операции отношения (проверка на равенство или неравенство, операции сравнения, операция проверки принадлежности к множеству – in).

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

Options – Compiler – Boolean Evaluation – выбор типа вычисления логических выражений. 

Операторы.

Это синтаксические конструкции, предназначенные как для записи действий по преобразованию данных, так и для задания порядка выполнения других действий. Язык Паскаль содержит всего 11 операторов: 1) оператор присваивания; 2) оператор процедуры; 3) оператор перехода; 4) составной оператор; 5) условный оператор; 6) оператор варианта; 7, 8, 9) операторы цикла; 10) оператор над записями; 11) пустой оператор. Кроме того, существуют операторы машинного кода и ассемблера.

Оператор  присваивания.

<идентификатор> := <выражение>;

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

Оператор  процедуры.

Другое название – вызов процедуры.

<имя процедуры>(<параметры>);

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

Оператор  перехода.

Этот оператор вызывает передачу управления оператору, которому предшествует метка.

goto <метка>;

Все метки, используемые в блоке, должны быть описаны, причём не более одного раза.

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

Переход внутрь структурного оператора может вызвать непредсказуемые эффекты, хотя компилятор не выдаст сообщение об ошибке.

Составной оператор.

Это последовательность операторов программы, заключённая  в операторные скобки begin-end.

Условный  оператор.

С помощью условного  оператора реализуется структура  «развилка». В Паскале два вида условного оператора: с ветвью else и без ветви else.

if <выражение> then <оператор1> else <оператор2>;

if <выражение> then <оператор>;

if <выражение1> then if <выражение2> then <оператор1> else <оператор2>;

else всегда относится к ближайшему if. 

var a, b, c, d: integer;

begin

a := 1; b := 2; c := 3; d := 4;

if a > b then if c < d then if c < 0 then c := 0 else a := b;

Значение a не изменится.

If a > b then if c < d then if c < 0 then c := 0 else else else a := b;

Значение a станет равным 2.

Рассмотрим пример программы, которая вводит произвольное десятичное число от 0 до 15 и выводит его в шестнадцатеричном формате.

program Hex1;

var ch: char;

       n: integer;

begin

write(‘n = ‘); readln(n);

if (n >= 0) and (n <= 15) then

begin

if n < 10 then ch := chr(ord(‘0’) + n)

else ch := chr(ord(‘A’) + n - 10);

writeln(‘n = ‘, ch);

end

else writeln(‘Ошибка.’);

end.

Оператор  варианта.

Реализует структуру  «выбор», то есть возможность выбирать из нескольких альтернатив. Оператор работает следующим образом: сначала вычисляется выражение. Это выражение иногда называется селектором или ключом выбора. Выражение должно давать результат любого порядкового типа. После этого вычисленное значение сравнивается с константами выбора. При совпадении с какой-либо константой выполняется оператор, помеченный этой константой. На этом выполнение оператора варианта заканчивается. Если значение не совпадает ни с одной из ветвей, то выполняется оператор else, если он есть. Если ветвей нет, то оператор не производит никаких действий.

case <выражение> of

<константа выбора1>: <оператор1>

<константа выбора2>: <оператор2>

<константа выбора n>: <оператор n>

[else <оператор>]

end;

Пример.

var color: (Green, Yellow, Red);

begin

color :=

case color of

Red: x := y + 2;

Yellow: x := y – 2;

Green: x := y;

end;

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

case switch of

1..3: Proc1;

4, 10..20: Proc2;

5, 6: Proc3;

else Proc4;

end; 

var ch: char;

begin

readln(ch);

case ch of

‘n’, ‘N’: writeln(‘Нет’);

‘y’, ‘Y’: writeln(‘Да’);

end

end.

При использовании  оператора варианта должны выполняться  следующие правила: 1) Значение ключа  выбора должно принадлежать порядковому  типу. 2) Все константы альтернатив должны быть типа совместимого с типом ключа выбора. 3) Все константы в альтернативах должны быть уникальны в пределах оператора варианта. Диапазоны не должны пересекаться. 4) Синтаксис языка предусматривает только один оператор в каждой альтернативе. Если необходимо выполнить несколько операторов, следует образовывать составной оператор.

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

В Паскале существует три вида циклов: цикл с предусловием, цикл с постусловием и цикл с параметром.

Оператор  цикла с предусловием.

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

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

var epsilon: real;

begin

epsilon := 1;

while epsilon / 2 + 1 > 1 do epsilon := epsilon / 2;

writeln(‘Машинный epsilon = ‘, epsilon);

end.

Оператор  цикла с постусловием.

repeat

<операторы>

until <выражение>

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

begin

repeat

readln(ch);

writeln(ch, ‘=’, ord(ch));

until ord(ch) = cr;

end.

Оператор  цикла с параметром.

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

for <имя> := <выражение1> to <выражение2> do <оператор>

for <имя> := <выражение1> downto <выражение2> do <оператор>

Выполнение оператора  цикла с параметром:

1) Вычисляется  выражение 1, определяющее начальное значение параметра.

2) Параметру  цикла присваивается это значение.

3) Параметр цикла  сравнивается с конечным значением.  Если он больше конечного значения, то цикл заканчивается.

4) Выполняется  тело цикла.

5) Значение параметра  изменяется на 1. Переход к шагу 3).

Пример: программа, находящая сумму целых чисел от 1 до n.

var i, n, s: integer;

begin

write(‘N = ‘); readln(n);

s := 0;

for i := 1 to n do s := s + i;

writeln(‘Сумма = ‘, s);

end.

На параметр цикла накладываются следующие  ограничения:

1) В качестве параметра цикла должна использоваться простая переменная, описанная в текущем блоке, и эта переменная должна принадлежать к порядковым типам.

2) Типы выражений  для вычисления начального и  конечного значений параметра  цикла должны быть совместимыми с типом параметра цикла.

3) В теле цикла  запрещается явное изменение  значений параметра цикла.

Пустой  оператор.

Никак не обозначается и никак не выглядит. Может использоваться, например, перед операторной скобкой end.

Пример:

repeat until Keypressed; 

Составные типы.

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

Массивы.

Массив – это конечная именованная совокупность элементов одного типа.

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

type <имя> = array[<тип индекса>] of <тип элемента>;

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

mas = array[1..10] of real;

color = array[byte] of mas;

m2 = array[char] of Boolean;

Размерность массива  – количество индексов, заданных при  описании. В Паскале оно неограниченно. Количество элементов в массиве фиксировано, то есть должно быть определено до трансляции программы.

Многомерные массивы  располагаются в памяти так, что  быстрее всего меняется самый  правый индекс. Максимальный объём  памяти под все переменные – 64 кБ.

Строковые типы.

Строки используются для хранения последовательностей символов. В Паскале существует три типа строк:

1) Стандартные.  Определяются ключевым словом  string.

2) Определяемые  программистом на основе string.

3) Строки в динамической памяти.

var st: string;

st1: array[0..255] of char;

str: string[4];

const st7: string[15] = ‘Пример строки’;

Такая строка может  содержать от 0 до 255 символов. Каждый символ в такой строке занимает 1 байт.

Под строку st отводится 256 байт памяти. При этом в нулевом элементе строки хранится длина строки в символьном виде.

begin

st := ‘Это строка’;

Для строк применима  операция конкатенации, или склеивания. Обозначается эта операция символом «+».

var line: string;

begin

line := line + ‘стала длиннее’;

Для того, чтобы  узнать длину строки: ord(line[0]) или length(<имя строки>).

Кроме операции склеивания над значениями строковых  типов определены операции отношения. При выполнении этих операций действуют следующие правила:

Информация о работе Структура Паскаль-программы