ПРОСТЫЕ ОПЕРАТОРЫ

ОБЩИЕ СВЕДЕНИЯ

ОПЕРАТОРЫ

Begin

Begin

Подпрограмма - процедура

Begin

Begin

<имя функции>:=<выражение>; {Тело подпрограммы}

end;

 

Пример: Оформить в виде функции алгоритм возведения в целочисленную степень y=xn.

function stepen(n:integer; x:real):real;

var i:integer;

stepen:=1;

for i:=1 to n do stepen:=stepen*x;

end;

Вызов функции stepen(9,alfa);

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

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

Формат:

Procedure <имя > (<имя перем.1 >,<имя перем.2 >, . . . <имя перем.n > );

<Раздел описания локальных меток, констант, переменных >;

{Список формальных параметров с указанием типа}

<Раздел операторов >; {Тело подпрограммы}

end;

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

Procedure summa(n:integer; a,b:massiv; Var summa:real );

Var i,j,k:integer;

S:=0;

For i:=1 to n do S:=S+a[i]*b[i];

end;

Основная часть программы на языке Turbo Pascal представляет собой последовательность операторов, каждый из которых производит некоторое действие над данными. Разделителем операторов служит точка с запятой “ ; “. Все операторы языка Turbo Pascal подразделяются на две группы: простые и сложные ( структурные).

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

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

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

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

Формат:

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

Пример: alfa_67 := (sqrt(a)-exp((b-c)*ln(2.5+1/a)))/(d+ln((a+b)*c)/ln(3));

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

Формат записи:

GOTO <МЕТКА>;

Пример: goto 36; goto beta8;

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

Формат записи:

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

Пример: ClrScr; { Вызов стандартной процедуры}

InitWork(a,b,c,d); { Вызов пользовательской процедуры }

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

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

а) read (a1, a2, a3, …, an) – каждое вводимое значение присваивается последовательности переменных a1, a2, a3, …, an;

б) readln(a1, a2, a3, …, an) – каждое вводимое значение присваивается последовательности переменных a1, a2, a3, …, an, после чего происходит переход на новую строку (следующий оператор ввода будет вводить данные с новой строки);

в) readln – переход на новую строку при вводе данных.

Логические данные в Паскале вводить не разрешается.

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

Пример ввода:

Var a, b, c : real;

K, t : integer;

read(a, b, c);

readln;

read(k, t);

После набора на экране дисплея всей программы и запуска ее на выполнение происходит остановка машины при встрече read (a, b, c). На клавиатуре ЭВМ необходимо набрать три действительных числа, затем новой строки (выполняется оператор readln) – два целых числа соответственно оператору read(k, t). Например,

0.5  6.23   -7.1

3  48

При этом переменные получат следующие значения: а = 0.5, b = 6.23, c = -7.1, k = 3, t = 48, и выполнение программы продолжится.

Числа можно отделять друг от друга не только пробелами, но и символом окончания ввода (клавиша enter), то есть каждое число вводится с новой строки.

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

Пусть имеется фрагмент программы

var a, b, c : char;

………………..

read(a, b, c);

Данные вводятся в виде: SNR. Переменные a, b, c получат следующие значения:

a = ‘S’, b = ‘N’, c = ‘R’.

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

С вводом данных связан стандартная функция EOLN. Она принимает значение true, если достигли конца строки; в противном случае – значение – false.

Операторы вывода допускают использование указания о ширине поля, отводимого под значение выводимой величины, в явном виде. Ширина поля вывода определяется типом устройства, использующимся в данном ЭВМ. Форма представления выводимых переменных определяется типом переменных: значения величин целого типа выводится в обычной форме; значения величин действительного типа – в виде нормализованного числа действительного типа с порядком: значения логического типа – в виде логических значений TRUE и FALSE; значения символьных переменных – в виде соответствующих символов.

Общий вид записи операторов при выводе значений целого типа:

Write(b:m); writeln(b:m);

где b – имя выводимой переменной; m – константа или выражение целого типа, отводимое под значение.

Например:

Write(dd:5, ir:8);

Значения переменных dd и ir размещаются в одной строке и занимают соответственно шесть и восемь позиций. При этом незаполненные позиции остаются свободными, образуя пробелы. Если значение переменной не размещается в отведенном поле, то увеличивается число позиций.

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

Write(b:n:n); writeln(b:m:n);

где m - поле, отводимое под запись значения; n – часть поля, отводимого под дробную часть числа.

Например:

Write(a:8:3);

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

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

Write(‘ ‘:q);

где q – константа целого типа, указывающая число пробелов.

Пример размещения информации при выводе:

Program ;