ПРОСТЫЕ ОПЕРАТОРЫ ЯЗЫКА ПАСКАЛЬ
План лекции
§ Характеристика разделов программы
§ Классификация операторов языка Паскаль
• Простые операторы
• Операторы ввода-вывода
§ Пример
Характеристика разделов программы
Любая программа реализует алгоритм решения задачи. Она объединяет последовательность действий, выполняемых над определенными данными с помощью определенных операций для реализации определенной цели. Основными характеристиками программы является точность полученного результата, время выполнения и объем требуемой памяти.
Синтаксически программа на языке Паскаль состоит из двух частей: заголовка, который не является обязательным, и блока, который может содержать в себе другие блоки. Блок, в свою очередь, состоит из двух частей: раздела описанийираздела операторов. Первая часть может отсутствовать, без второй блок не имеет смысла.
Блок, который не входит ни в какой другой блок, называется глобальным. Если в глобальном блоке находятся другие блоки, они называются локальными. Глобальный блок – это основная программа, он должен присутствовать в любом случае. Локальные блоки – это процедуры и функции, их присутствие необязательно.
В начале программы находится заголовок,которыйв общем случае состоит из зарезервированного слова Program, имени программы и параметров, с помощью которых программа взаимодействует с операционной системой. Заголовок программы несет чисто смысловую нагрузку и может отсутствовать. Имя программы является идентификатором и формируется по соответствующим правилам.
|
|
Формат заголовка программы
Program <имя программы>;
Например, Program Lin;
После заголовка следует программный блок, состоящий в общем случае из разделов описаний подключаемых библиотечных модулей, меток, констант, типов данных, переменных, процедур и функций, и раздела операторов.
Любой раздел, кроме раздела операторов, может отсутствовать. Разделы описаний могут встречаться в программе любое количество раз и следовать в любом порядке. Главное, чтобы все описания объектов программы были сделаны до того, как они будут использованы.
Охарактеризуем разделы программного блока.
n Раздел описания подключаемых библиотечных модулей
Характерной чертой языка Паскаль является наличие большого количества стандартных процедур и функций (общее название – подпрограммы). Все они находятся в библиотечных модулях. Библиотечный модуль – это результат компиляции одной или нескольких процедур и функций. Модуль имеет имя, упомянув которое в разделе Uses, можно получить доступ к каждой из находящихся в нем процедур или функций.
|
|
Например, язык Турбо Паскаль имеет следующие стандартные модули: System, Dos, Overlay, Graph, Crt, Printer, которые хранятся в файле TURBO.
В модуле Crt содержатся стандартные процедуры управления экраном, а модуль Printer служит для управления работой принтера.
Рассмотрим некоторые процедуры модуля CRT, которые будут использоваться при написании программ:
1. CLRSCR – очистка экрана. Курсор перемещается в левый верхний угол экрана.
2. GOTOXY(N1, N2) – перемещение курсора в заданную точку экрана. Здесь N1,N2 – параметры:
N1 – номер столбца на экране дисплея, целое из диапазона от 1 до 80;
N2 – номер строки на экране дисплея, целое из диапазона от 1 до 25;
Например, GOTOXY(20,10) – перемещение курсора в 10 строку и 20 столбец.
3. DELAY(T) – задержка выполнения программы на Т милисекунд. Например, чтобы сделать задержку на 2 сек, следует записать DELAY (2000).
Интегрированная среда разработки Delphi имеет свои стандартные модули: SysUtils, Windows, Graphics и некоторые другие. Подробнее с назначением и составом каждого из них можно ознакомиться в справочной системе Delphi.
Пример
Uses SysUtils, Windows;
В модуле SysUtils содержатся процедуры, функции, объекты для обработки и управления разными типами данных, организации и обработки файлов, управления работой программы.
|
|
В модуле Windows содержатся библиотеки с набором API- функций ОС, в частности, процедура SetConsoleoutputСP(N), которую следует использовать для отображения русских шрифтов (в формате SetConsoleoutputСP(1251),где 1251 – код страницы, в которой находится кириллица).
Подробнее эта информация изложена в справочной системе программной среды Delphi.
Раздел описания подключаемых библиотечных модулей всегда расположен после заголовка программы.
Формат
Uses<имя модуля1>,<имя модуля2>, …;
n Раздел описания меток
Перед любым оператором языка Паскаль можно поставить метку, что позволит выполнить обращение к этому оператору с помощью оператора перехода goto из любого места программы. Метка состоит из имени и следующего за ним двоеточия. Именем может служить идентификатор или цифра.
Используемые метки должны быть описаны в разделе Label.
Формат
Label <имя, . . . >;
Пример
Label M1, М2, 4, Blok2;
Далее в тексте программы выполняется обращение к меткам с использованием оператора Goto.
Goto M1;
. . .
M1: Y:=2*SIN(X);
Здесь M1 – это метка оператора.
n Раздел описания констант
В этом разделе производится присваивание идентификаторам констант постоянных значений.
Формат
|
|
Const < идентификатор > = < значение>;
Пример
Const R1=22;
St=3.25;
R2:Integer=4;
После того, как константа определена, ей нельзя присвоить какое-либо другое значение. Ряд констант (True, False, Maxint) определен стандартно, к ним можно обращаться без предварительного описания.
n Раздел описания типов данных
Этот раздел включается в программу тогда, когда программист использует в программе свои собственные типы. Стандартные типы не требуют описания. Синтаксис языка Паскаль не требует обязательного определения идентификатора типа, так как значения типа всегда можно задать перечислением в разделе описания переменных.
Формат
Type < имя типа > = < значения типа >;
Пример
Type T1=1..25;
T2=Array[1..10] of real;
n Раздел описания переменных
Каждая встречающаяся в программе переменная должна быть описана. Раздел описания переменных включает в себя описание всех переменных, встречаемых в программе.
Формат
Var <идентификатор, . . .>: < тип >;
Пример
Var A,B,X : real;
Z,Y : integer;
n Раздел описания процедур и функций
Стандартные процедуры и функции в программе не описываются. В разделе описания процедур и функций должны быть приведены тексты только тех процедур и функций, которые разработаны самим программистом и используются в данной программе.
Формат
Procedure <имя процедуры>{(список формальных параметров)};
Function <имя функции>{(список формальных параметров)}:<тип>;
Пример
Procedure Sum(a,b:real; Var S:real);
Function Sum(a,b:real):real;
Подробнее процедуры и функции пользователя будут рассмотрены далее.
.
n Раздел операторов
Раздел операторов является основным, так как именно в нем описывается алгоритм решения задачи. Этот раздел начинается со слова Begin и заканчивается словом End с точкой (End.), между которыми располагаются строки операторов, описывающих, в каком порядке выполняются действия над данными, чтобы получить требуемый результат. В конце каждого оператора ставится точка с запятой («;»).
Формат:
Begin
< оператор;>
. . .
< оператор;>
End.
Операторы языка Паскаль
Оператор – это конструкция языка, которая определяет действия, выполняемые над данными, или порядок выполнения этих действий. Операторы выполняются последовательно в том порядке, в котором они записаны в тексте программы. Разделителем операторов служит точка с запятой. Все операторы языка Турбо Паскаль разделяются на три группы:
1. Простые операторы.
2. Операторы ввода-вывода, которые на самом деле являются процедурами, так как в них можно указывать параметры.
3. Структурированные (сложные) операторы, в состав которых включаются другие операторы по строго определенным правилам.
Простые операторы
Это операторы, не содержащие в себе никаких других операторов. К ним относятся операторы присваивания, безусловного перехода, вызова процедуры и пустой оператор.
Оператор присваивания (:=) предписывает выполнить выражение, стоящее в его правой части, и присвоить результат идентификатору переменной, стоящей в левой части. Переменная и выражение должны иметь один и тот же тип. Исключение представляет случай, когда переменная имеет вещественный тип, а выражение – целочисленный. Допустимо присваивание любых типов данных, кроме файловых.
Формат
<идентификатор>:=<выражение>;
Пример
Sort:=1;
Cena:=15.23;
Nazv:=’Model N986’;
Res:=Sin(A)+Cos(B);
Оператор безусловного перехода GOTOозначает «перейти к» и применяется в случаях, когда после выполнения некоторого оператора надо выполнить не следующий по порядку, а какой-нибудь другой, отмеченный меткой оператор. Метка может содержать как цифровые, так и буквенные символы.
Формат
GOTO <метка>;
Пример
...
Label Metka1, Metka2;
...
Metka1: GOTO Metka2;
Metka2: GOTO Metka1;
...
При записи оператора GOTO необходимо помнить следующее. Метка, на которую передается управление, должна быть описана в разделе описания меток того блока (процедуры, функции, основной программы), в котором эта метка используется. Областью действия метки является блок, в котором она описана. Попытка выйти за пределы блока вызывает программное прерывание.
Обычно оператор GOTO применяется для преждевременного выхода из цикла или при отладке программы.
Пустой оператор не содержит никаких символов и не выполняет никаких действий. Он может быть расположен в любом месте программы, где синтаксис языка допускает наличие оператора. Как и все другие операторы, пустой оператор может быть помечен меткой. Чаще всего пустой оператор используется для организации выхода из середины программы или составного оператора.
Пример
Begin
Goto Metka; {переход в конец блока}
. . .
Metka; {пустой оператор помечен меткой}
End.
Оператор вызова процедуры служит для активизации предварительно определенной пользователем или стандартной процедуры.
Формат
<имя процедуры> {(список параметров)};
Пример
Program Prim;
Procedure V1;
Begin
. . . {тело процедуры V1}
end;
Procedure V2;
Begin
. . . {тело процедуры V2}
end;
Procedure Sum(a,b:real; Var S:real);
Begin
. . . {тело процедуры Sum}
end;
Begin
V1; {вызов для выполнения процедуры V1}
V2; {вызов для выполнения процедуры V2}
Sum(x,y,S_xy); {вызов для выполнения процедуры Sum}
End.
Операторы ввода-вывода
Решение самой простой задачи не обходится без операций ввода-вывода информации.
Ввод данных – это передача информации от внешнего носителя в оперативную память для обработки.
Вывод данных – обратный процесс, когда данные передаются после обработки из оперативной памяти на внешний носитель.
Для выполнения операций ввода используются операторы Read и Readln.
Формат
Read(список ввода);
где в списке ввода могут фигурировать только переменные допустимых типов данных.
Пример
Var I: integer;
J: integer;
K: char;
Begin
read(I, J, K);
Оператор чтения Readln аналогичен оператору Read. Отличие состоит в том, что после считывания последнего в списке значения для одного оператора Readln данные для следующего оператора Readln будут считываться с начала новой строки.
Операторы записи Write и Writeln производят вывод числовых данных, символов, строк, булевских значений.
Формат
Write(список вывода);
где список вывода представляет собой набор переменных и выражений.
Например, Write(y1, y2, sin(3), yn) – выражения типа integer, byte, real, char, boolean и т.д.
Для вывода переменных целого и символьного типов используется следующий формат: Write(X:Р), где параметр Р определяет, сколько знакомест на экране будет выделено для вывода значения той или иной переменной.
Например, Write(X:3,C:7)
Для переменных вещественного типа используется обычно следующий формат: Write(X:P:q), где P означает общее число позиций на экране, выделенное для данной переменной, а q – число позиций (из общего числа) после десятичной точки.
Например,
Write(X:3:1, С:7:4) – правильный формат,
Write(X:1:3, С:7:6) – неправильный формат.
Для вывода результирующей информации на экран иногда требуется вывести текстовую информацию, поясняющую результат.
Пример
Write(‘Cумма ряда =’, S:7:3, ‘при X=’,X:4:2);
Оператор Writeln аналогичен оператору Write, но после вывода последнего в списке значения происходит перевод курсора к началу следующей строки. Оператор Writeln без параметров вызывает пропуск пустой строки.
Знание рассмотренных операторов дает возможность программирования алгоритмов линейной структуры.
Пример
Вычислить значение функций
Текст программы:
Program Lin1;
{$APPTYPE CONSOLE} -
Uses SysUtils, Windows;
Const c=1.2;
Var x,y,z,a,b1,b2,b:real;
Begin
SetConsoleoutputСP(1251);
Writeln('Введите x,y,z');
Readln(x,y,z);
a:=arctan(x)-3/5*exp(x-y)+0.5*abs(x+y)/exp(c*ln(x+y));
b1:=exp(abs(x-y))*sin(z)/cos(z);
b2:=arctan(y)+sqrt(x);
b:=b1/b2+ln(x);
Writeln('При x=',x:0:1,' y=', y:0:2,' результаты: а=',a:0:2,' b=',b:0:2);
Sleep(7000);
End.
Пояснения к программе:
Директива компилятора {$APPTYPE CONSOLE} указывает на генерацию консольного приложения.
Процедура SetConsoleoutputСP(1251) из модуля Windows используется для правильного отображения русских шрифтов.
Процедура Sleep(7000) из модуля SysUtils используется для задержки на экране результата на 7 сек.
Лекция 4
Дата добавления: 2018-04-15; просмотров: 595; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!