ПРОСТЫЕ ОПЕРАТОРЫ
ОБЩИЕ СВЕДЕНИЯ
ОПЕРАТОРЫ
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 ;