· оператор присваивания;
· обращения к процедуре;
· оператор безусловного перехода goto ;
· пустой оператор.
Оператор присваивания
С помощью этого оператора переменной или функции присваивается значение выражения.
Для этого используется знак присваивания := , слева от которого записывается имя переменной или функции, которой присваивается значение ,а справа- выражение, значение которого вычисляется перед присваиванием.
Допустимо присваивание значений переменным и функциям любого типа, кроме типа файл. Тип выражения и тип переменной должны быть совместимы для присваивания.
X:=y;
z:=a+b;
r:=( i>0) and (i<100);
Оператор безусловного перехода goto . Использование меток.
Оператор goto позволяет изменить стандартный последовательный порядок выполнения операторов и перейти к выполнению программы, начиная с заданного оператора. Оператор, на который происходит переход, должен быть помечен меткой. Эта метка должна быть указана и в операторе goto.
Метки, используемые в паскале должны быть двух типов:
· целым числом в пределах от 0 до 9999;
· обычным идентификатором.
Структурированными операторами являются такие операторы, которые состоят из других операторов:
· составной
· условный оператор if
· условный оператор case
· оператор цикла repeat
· оператор цикла while
· оператор цикла for
· оператор над записями with
Cоставной оператор
Составной оператор представляет из себя совокупность последовательно выполняемых операторов, заключенных в операторные скобки begin и end;
begin
оператор1;
оператор2;
.................
операторn;
end;
Он может потребоваться в тех случаях, когда в соответствии с правилами построения конструкций языка можно использовать один оператор, а нужно выполнить несколько дейсвий. В такой составной оператор входит ряд операторов, выполняющих требуемые действия.
В дальнейшем, везде, где будет указываться, что можно использовать один оператор, им может быть и составной оператор.
Условный оператор позволяет проверить некоторое условие и в зависимости от результатов проверки выполнить то или иное действие.Таким образом,условный оператор-это средство ветвле-ния вычислительного процесса.
Структура условного оператора имеет следующий вид:
IF<условие>THEN<оператор1>ELSE<оператор2>,
где IF, THEN, ELSE - зарезервированные слова (англ.если,то,иначе);
<условие>-произвольное выражение логического типа;
<оператор1>,<оператор2>-любые операторы Паскаля.
Условный оператор работает по следующему алгоритму.Вначале
выполняется условное выражение.Если результат есть TRUE,то вы-
полняется <оператор1>,а<оператор2>пропускается; если результат есть FALSE,то,наоборот,<оператор1> пропускается,а выполняется <оператор2>.
Часть оператора ELSE <оператор2>может быть опущена.Тогда при значении условного выражения ТRUE выполняется <оператор1>, в противном случае этот оператор пропускается.
Поскольку каждый из операторов <оператор1>и<оператор2> может быть оператором любого типа,в том числе и условным,а в то же время не каждый из “вложенных” условных операторов может иметь часть ELSE<оператор2>,то возникает неоднозначность трак-товки условий. Эта неоднозначность в Паскале решается следующим образом: любая встретившаяся часть ELSE соответствует ближайшей к ней “сверху” части THEN условного оператора. Например:
Пример программы, анализирующей принадлежит ли точка с координатами x,y прямоугольнику с координатами вершин x1,x2,y1,y2.
СТРОКИ
ОПИСАНИЕ ТИПА
Для обработки последовательностей символов в ТУРБО-ПАСКАЛЕ предусмотрены строчные типы. Строчные типы - это структурные типы. Количество символов в строке (длина строки) может динамически изменяться от 0 до 255. Для определения данных строкового типа используется идентификатор string, за которым следует заключенное в квадратные скобки значение максимально допустимой длины строки данного типа. Если размер строки не указан, то он считается равным 255.
Переменную строкового типа можно определить через описание типа в разделе описания типов или непосредственно в разделе описания переменных. Строковые данные могут использоваться также в качестве констант. Недопустимо применение строковых переменных в качестве селектора в операторе case. Строковая переменная занимает определённую максимальную длину байт в памяти плюс один байт, содержащий её текущую длину. Отдельные символы в строке индексируются от 1 до длины строки.
Допускается смешение в одном выражении операндов строкового и литерного типа. Если при этом литерной переменной присваивается значение строкового типа, длина строки должна быть равна единице, иначе возникает ошибка выполнения. К отдельным символам строки, можно обратиться по номеру (индексу) данного символа в строке. Индекс определяется выражением целочисленного типа, которое записывается в квадратных скобках сразу за идентификатором строковой переменной или константы.
ПРОЦЕДУРЫ
Delete(St,Pos,N) - удаление N символов строки St, начиная с
позиции Pos. Если значение Pos > 255, возникает ошибка.
Значение St Выражение Результат
'река Волга' Delete(Str, 1, 5); 'Волга'
Insert(Str1,Str2,Pos) - вставка строки Str1 в строку Str2,
начиная с позиции Pos.
П р и м е р:
Var S1, S2, S3 : string[11];
...
S1 := ' ЕС '; S2 := 'ЭВМ1841 '; S3 := Insert(S1,S2,4);
Р е з у л ь т а т:
'ЭВМ ЕС 1841'.
Str(IBR,St) - преобразование числового значения величины IBR и помешение результата в строку St. После IBR может записываться формат, аналогичный формату вывода.
Значение Выражение Результат
4.8E+03 Str(IBR:10,St); ' 4800'
Val(St,IBR,Cod) - преобразует значение St в величину целочисленного или вещественного типа и помещает результат в IBR. Значение St не
должно содержать незначащих пробелов в начале и в конце. Cod - целочисленная переменная.
Если во время операции преобразования ошибки не обнаружено, значение Cod равно нулю, если ошибка обнаружена, Cod будет содержать номер позиции первого ошибочного символа, а значение IBR не определено.
Записи.
Запись есть структура данных,построенная из компонент,имеющих в общем случае разные типы данных.
Например, чтобы описать в программе время суток (10.45 утра или 7.15 вечера) , можно использовать структуру данных следующего формата:
часы | минуты | до полудня |
в которой 10.45 утра может храниться как
10 | 45 | true |
а 7.15 вечера :
7 | 15 | false |
Секция записи определяет одно или несколько имен полей и тип соответствующей компоненты. Если в секции перечисляется несколько имен полей, то все они однотипны.
Тип компонента в секции записи может быть любым типом данных и быть именем предопределенного типа, именем ранее определенного типа.
К каждому компоненту записи можно обратиться, используя имя переменной типа записи и имя поля, разделенные точкой: now.hour, later.befornoon;
Рассмотрим программу bestseller ( лучший товар), которая вводит с клавиатуры данные по сбыту за несколько лет, распечатывает их и находит продукцию с максимумом сбыта.
Входные данные : Каждая вводимая строка содержит информацию о продаже в следующей форме:
год продажи: целое в диапазоне 1900..2099;
код продукции: четырехзначное целое ;
общий объем сбыта: вещественное число, обозначающее сумму в денежных единицах.Ввод заканчивается,когда введена строка с отрицатедьным значением года.
Массивы записей.
Ввести список студентов из 5 человек, включающий в себя фамилию (10 символов), год рождения ( четырехзначное целое), оценки ( массив из 5 целых чисел).
Выдать данный список, добавив к нему средний балл. Выдать список отличников, упорядоченных по году рождения.
ПРОЦЕДУРЫ и ФУНКЦИИ
В практике программирования, типичной является такая ситуация . Когда в разных местах программы приходится выполнять по сути дела один и тот же частный алгоритм , который имеет достаточно самостоятельное значение , т.е. предназначен для решения некоторой подзадачи , выделенной из основной решаемой задачи . Например нахождение наибольшего общего делителя двух натуральных чисел , упорядочение компонентов вектора и т.д. Если этот частный алгоритм достаточно сложен и представляется достаточно большим фрагментом текста , то было бы явно нерационально выписывать его каждый раз заново в том месте программы , где этот алгоритм должен использоваться.
Для обеспечения большей компактности программы и повышения её наглядности язык Паскаль позволяет выделить любой частный алгоритм из программы и записать его только один раз, представив этот частичный алгоритм в качестве самостоятелной программной единицы , называемой процедурой.
ПОДПРОГРАММА-ПРОЦЕДУРА
Описание процедур. Процедуры описываются в специальном разделе основной программы вслед за разделом переменных. Любая процедура является логически законченной программной единицей и поэтому содержит внутри себя теже разделы , что и основная программа :
· раздел описаний (меток , констант , типов , переменных процедур и функций);
· раздел операторов, представляющий собой составной оператор BEGIN-END.
Процедура состоит , аналогично программе , из заголовка и тела процедуры.
Заголовок процедуры имеет вид:
PROCEDURE имя (список формальных параметров);
где PROCEDURE-служебное слово; имя-имя процедуры , определяемое в соответствии с общими правилами образования идентификаторов; список формальных параметров-перечень имен для обозначения исходных данных и результатов работы процедуры с указанием их типов.
Допускается описание процедуры не содержащей формальных параметров:
PROCEDURE имя;
Всякая подпрограмма-процедура может содержать свои внутренние или вложенные процедуры.Степень вложенности определяется возможностями машины.