ПРОСТЫЕ ОПЕРАТОРЫ ЯЗЫКА ПАСКАЛЬ



План лекции

§ Характеристика разделов программы

§ Классификация операторов языка Паскаль

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

• Операторы ввода-вывода

§ Пример

Характеристика разделов программы

 

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

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

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

В начале программы находится заголовок,которыйв общем случае состоит из зарезервированного слова 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; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!