- •55. Структура Паскаль-программы.
- •56.Блок схема алгоритма.
- •57. Типы данных в Паскале.
- •58. Основные операции в Паскале. Стандартные функции.
- •59. Паскаль. Приоритет операций в выражениях. Оператор присваивания.
- •60. Паскаль. Процедуры ввода-вывода
- •156 23 [Enter]
- •156 [Enter] 23 [Enter]
- •61. Паскаль. Линейная программа. Составной оператор
- •62. Паскаль. Разветвляющаяся программа. Условный оператор.
- •63. Паскаль. Оператор выбора (варианта)
156 23 [Enter]
или
156 [Enter] 23 [Enter]
При вводе с клавиатуры ввод всегда должен завершаться нажатием клавиши Enter, ибо именно она заставляет программу принять введенные буквы или цифры.
При вводе с клавиатуры особой разницы между Read и ReadLn нет. Для текстовых файлов процедура ReadLn (Read Line) считывает значения в текущей строке и переводит позицию на начало следующей строки, даже если в текущей строке остались непрочитанные данные.
Процедуры вывода информации Write/WriteLn.
Синтаксис вызова: Write( [ f ], P1, P2, P3, ..., Pn ) или WriteLn( [ f ], P1, P2, P3, ..., Pn )
Эти процедуры выводят список значений P1, P2, ..., Pn в текстовый файл f. Если файл не указан, то вывод осуществляется на экран. Значения, как и при вводе, могут иметь лишь целые, вещественные, символьные и строковые типы, а также производные от них. Структурированные данные (например, массив) должны вводится по элементам. Выводить можно также значение логического типа Boolean, например
CONST tr : Boolean = True; fl : Boolean = False; BEGIN Write( tr, '...', fl ); END.
Процедура Write напечатает на экране: TRUE ... FALSE.
Процедура Write выводит данные в текущую строку и не закрывает ее, т.е. следующие данные запишутся в ту же строку. Формально во внешнем файле (на диске) размер строки не ограничен. Исключение составляет вывод на экран. Если выводимый текст "уперся" в правую границу экрана, то он на этом месте разрывается и продолжается с начала следующей строки.
Процедура WriteLn (Write Line) выводит строку данных и закрывает ее: помещает в конец строки символ конца строки #13 (точнее два символа: #10 - конец строки и #13 - "перевод каретки"). При выводе на экран курсор автоматически устанавливается в первую позицию следующей строки.
Список вывода процедуры Write может содержать константы, переменные, выражения, вызовы функций - лишь бы они имели соответствующие типы и были разделены запятыми:
Write( 2+5 ); Write( 'Результаты: ', a+b/sin(x) ); Write( 'Элемент А[', i, ',', j, ']: ', A[i,j] );
61. Паскаль. Линейная программа. Составной оператор
62. Паскаль. Разветвляющаяся программа. Условный оператор.
Условные операторы позволяют выбирать для выполнения те или иные части программы в зависимости от некоторых условий. Если, например, в программе используются вещественные переменные x и z, и на каком-то этапе решения задачи требуется вычислить z=max(x, y), то желаемый результат получается в результате выполнения либо оператора присваивания z:=x, либо оператора присваивания z:=y. Поскольку значения переменных x и y заранее неизвестны, а определяются в процессе вычислений, то в программе необходимо предусмотреть оба эти оператора присваивания. Однако на самом деле должен выполниться один из них. Поэтому в программе должно содержаться указание о том, в каком случае надо выбирать для исполнения тот или иной оператор присваивания.
Это указание естественно сформулировать с использованием отношения x>y. Если это отношение при текущих значениях x и y справедливо (принимает значение true), то для исполнения должен выбираться оператор z:=x; в противном случае для исполнения должен выбираться оператор z:=y (при x=y безразлично, какой оператор выполнять, так что выполнение оператора z:=y в этом случае даст правильный результат).
Для задания подобного рода разветвляющихся вычислительных процессов в языках программирования существуют условные операторы.
Рассмотрим полный условный оператор Паскаля:
if B then S1 else S2
Здесь if (если), then (то) и else (иначе) являются служебными словами, В – логическое выражение, а S1 и S2 – операторы.
Выполнение такого условного оператора в Паскале сводится к выполнению одного из входящих в него операторов S1 или S2: если заданное в операторе условие выполняется (логическое выражение В принимает значение true), то выполняется оператор S1, в противном случае выполняется оператор S2.
Алгоритм решения упомянутой выше задачи вычисления z= max( x, y) можно задать в виде условного оператора Паскаля
if x>y then z:= x else z:= y
При формулировании алгоритмов весьма типичной является такая ситуация, когда на определенном этапе вычислительного процесса какие-либо действия надо выполнить только при выполнении некоторого условия, а если это условие не выполняется, то на данном этапе вообще не нужно выполнять никаких действий. Простейшим примером такой ситуации является замена текущего значения переменной х на абсолютную величину этого значения: если x<0, то необходимо выполнить оператор присваивания x:= - x; если же x>=0, то текущее значение х должно остаться без изменений, т.е. на данном этапе вообще не надо выполнять каких-либо действий.
В подобных ситуациях удобна сокращенная форма записи условного оператора в Паскале:
if B then S
Правило выполнения сокращенного условного оператора Паскаля достаточно очевидно: если значение логического выражения В есть true, то выполняется оператор S; в противном случае никаких иных действий не производится.
В языке программирования Паскаль в условном операторе между then и else, а также после else по синтаксису может стоять только один оператор. Если же при выполнении (или невыполнении) заданного условия надо выполнить некоторую последовательность действий, то их надо объединить в единый, составной оператор, т.е. заключить эту последовательность действий в операторные скобки begin... end (это важно!). Если, например, при x< y надо поменять местами значения этих переменных, то условный оператор будет записан следующим образом в Паскале:
if x<y then begin r:=x; x:=y; y:=r end
Наличие сокращенной формы условного оператора Паскаля требует большой осторожности при использовании. Например, условный оператор
if B1 then if B2 then S1 else S2
допускает, вообще говоря, две разные трактовки:
как полный условный оператор Паскаля вида
if B1 then begin if B2 then S1 end else S2
как сокращенный условный оператор Паскаля вида
if B1 then begin if B2 then S1 else S2 end
По правилам Паскаля имеет место вторая трактовка, т.е. считается, что каждое слово else соответствует первому предшествующему ему слову then. Для избежания возможных ошибок и недоразумений можно порекомендовать во всех подобных случаях четко выделять желаемую форму условного оператора Паскаля путем взятия в операторные скобки.
