15-09-2016 11:37
2587

1.2 Основные определения и операторы в Turbo Pascal

В этом уроке мы познакомимся с основными определениями и операторами в Turbo Pascal.

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

  • а) идентификатор может состоять только из букв, включая символ подчеркивания, и цифр (пп.1-3 алфавита языка). Использование пробела недопустимо;
  • б) первым символом должна быть буква;
  • в) строчные и прописные буквы считаются компилятором эквивалентными;
  • г) максимальная длина идентификатора - 126 символов. Однако компилятор различает только первые 63 символа.

1.1 Типы данных в Turbo PascalВам будет интересно:1.1 Типы данных в Turbo Pascal

Примеры идентификаторов: a, x1, alpha, ALPHA, Mass_of_Sun, speed

Служебные (зарезервированные слова). Это ограниченная группа слов (чуть более 50-ти), построенных из букв. Смысл каждого служебного слова четко фиксирован в языке. Служебные слова НЕЛЬЗЯ использовать в качетве идентификаторов вводимых программистом.

Примеры служебных слов: begin, end, for, to, if, else, array, in, mod, var, unit и т.д.

Неименованные константы (изображения). Группа лексем обозначающая числа, символы, строки и некоторые другие значения. Например, 'a' - символ "а"; 'Турбо Паскаль' - текстовая строка, 123 - целое число, 123.5 или 1.235Е2 - вещественное число.

1. Turbo Pascal Введение теория и основы.Вам будет интересно:1. Turbo Pascal Введение теория и основы.

Знаки операций. Формируются из одного или нескольких специальных символов и предназначены для задания действий по преобразованию данных и вычислению значений. Коментарии - произвольная последовательность символов заключенная в фигурные скобки { } или в разделители вида (* *). Коментарии используются для размещения в программе фрагментов пояснительного характера. Например, { Это строка коментария } { Это несколько строк коментария }

Кроме этого с помощью символов { } можно верменно исключить из программы определенную группу операторов, поскольку все, что является текстом коментария полностью игнорируется компилятором.

Ключи компиляции (дерективы компилятора) - спициальные конструкции позволяющие управлять режимом компиляции: включать или выключать контроль ошибок, производить или нет проверку диапазонов массивов, изменять распределение памяти и т.д. Ключ компиляции представояет собой специфический коментарий, содержащий символ "$" и букву-ключ с последующим знаком "+" (включить режим) или "-" (выключить). Например, {$R-} - отключить проверку диапазонов индексов массивов; {$I+} - включить обработку ошибок ввода-вывода и т.д.

Некоторые ключи задают не режим, а компоновку программы из внешних составных частей. Таков, например, ключ {$I Имя_файла} называемый командой включения в программу внешнего текстового файла. Эта команда заставляет компилятор считать заданный файл частью обрабатываемой программы.

Операторы языка в Turbo Pascal

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

Все операторы языка Паскаль можно разбить на две группы: простые и структурированные.

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

  • оператор присваивания;
  • обращение к процедуре;
  • оператор безусловного перехода GOTO;
  • пустой оператор.

Оператор присваивания С помощью этого оператора переменной или функции присваивается значение выражения. Для этого используется знак присваивания := , слева от которого записывается имя переменной или функции, которой присваивается значение, а справа - выражение, значение которого вычисляется перед присваиванием.

Допустимо присваивание значений переменным и функциям любого типа, за исключением типа файл. Тип выражения и тип переменной (или функции) должны быть совместимы для присваивания Пример. X := Y; Z :=А + В; Res := (I>0) and (I < 100); I := Sqr(J) + I * К;

Оператор безусловного перехода GOTO. Использование меток Оператор GOTO позволяет изменить стандартный последовательный порядок выполнения операторов и перейти к выполнению программы, начиная с заданного оператора. Оператор, на который происходит переход, должен быть помечен меткой. Эта же метка должна быть указана и в операторе GOTO. Метки, используемые в Turbo Pascal, могут быть двух типов:

  • целым числом в пределах от 0 до 9999;
  • обычным идентификатором.

Все используемые метки должны быть перечислены в разделе объявления меток, начинающемся зарезервированным словом label, например: label 1, 2, Metka;

Одной меткой можно пометить только один оператор. Метка от помеченного оператора отделяется двоеточием.

Использовать оператор GOTO следует крайне осторожно. Широкое его применение без особых на то оснований ухудшает понимание логики работы программы. Безусловный переход можно осуществлять далеко не из каждого места программы и не в любое место программы. Так, нельзя с помощью этого оператора перейти из основной программы в подпрограмму или выйти из подпрограммы, не рекомендуется осуществлять переход внутрь структурированного оператора, т. к. он может дать неправильный результат, и т. д.

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

Структурированные операторы

Структурированными являются такие операторы, которые состоят из других операторов. К ним относятся:

  • составной оператор;
  • условный оператор IF;
  • условный оператор CASE;
  • оператор цикла REPEAT;
  • оператор цикла WHILE;
  • оператор цикла FOR;
  • оператор над записями WITH.

Составной оператор

Составной оператор представляет собой совокупность последовательно выполняемых операторов, заключенных в операторные скобки begin и end:

begin <оператор 1>; <оператор 2>; . . . <оператор N> end; Он может потребоваться в тех случаях, когда в соответствии с правилам! построения конструкций языка можно использовать один оператор, а выполнить нужно несколько действий. В такой составной оператор входит ряд операторов выполняющих требуемые действия.

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

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

Можно считать, что и само тело программы, т. к. оно заключено в операторные скобки begin и end, тоже является составным оператором.

Условный оператор IF

Оператор IF реализует алгоритмическую конструкцию РАЗВИЛКА и изменяет порядок выполнения операторов в зависимости от истинности или ложности некоторого условия. Существует два варианта оператора:

if S then A else В; {полная развилка} и if S then А; {укороченная развилка}

В этих операторах:

  • S - некоторое логическое выражение, истинность которого проверяется;
  • А - оператор, который выполняется, если выражение S истинно;
  • В - оператор, который выполняется, если выражение S ложно.

Так как условный оператор IF является единым предложением, ни перед then, ни перед else точку с запятой ставить нельзя. Примеры использования оператора:

if X < 0 then X := -Y; if X < 1.5 then Z := X + Y else Z := 1.5;

Условный оператор CASE С помощью этого оператора можно выбрать вариант из любого количества вариантов. Структура этого оператора в Turbo Pascal: case S of C1:Instruction1; C2:Instruction2; CN: InstructionN; else Instruction end;

В этой структуре: S - выражение порядкового типа, значение которого вычисляется; C1, C2, ..., CN - константы, с которыми сравнивается значение выражения S; Instruction1, Instruction2, ..., InstructionN - операторы, из которых выполняется ТОТ, с константой которого совпадает значение выражения S; Instruction - оператор, который выполняется, если значение выражения S не совпадает ни с одной из констант С1, ..., CN. Ветвь оператора else является необязательной. Если она отсутствует и значение выражения S не совпадет ни с одной из перечисленных констант, весь оператор рассматривается как пустой. В отличие от оператора IF перед словом else точку с запятой можно ставить.

Если для нескольких констант нужно выполнять один и тот же оператор, их можно перечислить через запятую (или даже указать диапазон, если возможно), сопроводив их одним оператором.

Оператор цикла REPEAT Оператор цикла REPEAT организует выполнение цикла, состоящего из любого числа операторов, с неизвестным заранее числом повторений. Тело цикла выполняется хотя бы один раз. Выход из цикла осуществляется при истинности некоторого логического выражения. Структура этого оператора: repeat Instruction1; Instruction2; . . . InstructionN until S;

В этой структуре: Instruction1, Instruction2, ..., InstructionN - выполняемые операторы, составляющие тело цикла; S - логическое выражение, истинность которого проверяется в конце каждой итерации. Так как слова repeat и until являются своеобразными операторными скобками, точку с запятой перед словом until ставить не обязательно. Оператор цикла REPEAT Оператор цикла REPEAT организует выполнение цикла, состоящего из любого числа операторов, с неизвестным заранее числом повторений. Тело цикла выполняется хотя бы один раз. Выход из цикла осуществляется при истинности некоторого логического выражения. Структура этого оператора: repeat Instruction1; Instruction2; . . . InstructionN until S;

В этой структуре: Instruction1, Instruction2, ..., InstructionN - выполняемые операторы, составляющие тело цикла; S - логическое выражение, истинность которого проверяется в конце каждой итерации. Так как слова repeat и until являются своеобразными операторными скобками, точку с запятой перед словом until ставить не обязательно.

Оператор цикла WHILE Оператор цикла WHILE организует выполнение одного оператора неизвестное заранее число раз. Выход из цикла осуществляется, если некоторое логическое выражение окажется ложным. Так как истинность логического выражения проверяется в начале каждой итерации, тело цикла может не выполняться ни разу. Структура оператора цикла имеет вид: while S do Instruction;

В этой структуре: S - логическое выражение, истинность которого проверяется в начале каждой итерации; Instruction - выполняемый оператор цикла.

Оператор цикла FOR Оператор цикла FOR организует выполнение одного оператора заранее известное число раз. Существует два варианта оператора: For Param:=Start to Finish do Instruction; For Param:=Start downto Finish do Instruction; В этих операторах:

  • Param - параметр цикла, являющийся переменной порядкового типа;
  • Start - выражение, определяющее начальное значение параметра цикла;
  • Finish - выражение, определяющее конечное значение параметра цикла;
  • Instruction - выполняемый оператор.

Start и Finish должны быть совместимы для присваивания с параметром цикла (см. п. 9.3). Цикл действует таким образом. Сначала вычисляются и запоминаются начальное - Start и конечное - Finish значения параметра цикла. Далее параметру цикла Param присваивается начальное значение Start. Затем значение параметра цикла сравнивается со значением Finish. Далее, пока параметр цикла меньше или равен конечному значению (в первом варианте оператора) или больше или равен конечному значению (во втором варианте), выполняется очередная итерация цикла; в противном случае происходит выход из цикла. Выполнение очередной итерации включает в себя сначала выполнение оператора Instruction, а затем присваивание параметру цикла следующего большего значения (в первом варианте оператора) или следующего меньшего значения (во втором варианте).

Естественно, что, если в первом варианте значение Start больше Finish или во втором варианте меньше Finish, оператор не выполняется ни разу.

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

Использование стандартных процедур Break и Continue в операторах циклов REPEAT, WHILE и FOR В циклах REPEAT, WHILE и FOR можно использовать две новые стандартные процедуры - Break и Continue. Процедура Break позволяет досрочно выйти из цикла, не дожидаясь выполнения условия выхода. Процедура Continue позволяет начать новую итерацию цикла, даже если предыдущая не завершена.

Операторы ввода – вывода

Write (англ. писать) - оператор, который используется для вывода информации на экран. Оператор WriteLn выполняет то же самое действие, но так как у него есть еще окончание Ln (line - англ. линия, строка), то после вывода на экран нужного сообщения, он дополнительно переводит курсор в начало следующей строки. Общий вид: Write (список выражений) WriteLn (список выражений)

Процедуры Write и WriteLn используются не только для вывода результата, но и для вывода различных сообщений или запросов. Это позволяет вести диалог с пользователем, сообщать ему, когда ему нужно ввести значения, когда он получает результат, когда он ошибся и др. Например, при выполнении процедуры WriteLn(‘Найденное число ‘,а), будет напечатана строчка, заключенная в апострофы, а затем выведено значение переменной а.

Оператор WriteLn можно применить и без параметров. В этом случае курсор просто будет переведен в начало следующей строки. Это иногда нам нужно для лучшего восприятия ввода данных.

Операторы Read и ReadLn. Этими операторами вводится информация с клавиатуры. Общий вид: Read(переменная, переменная...) ReadLn(переменная, переменная...)

При выполнении процедуры Read ожидается ввод перечисленных в скобках значений. Вводимые данные нужно отделить друг от друга пробелами. Присваивание значений идет по очереди. Например, если вводятся значения 53 и Х, то при выполнении оператора Read(a,b) переменной а будет присвоено число 53, а переменной b - буква Х. Причем, отметим, чтобы не было аварийной ситуации, нужно правильно определить тип данных в разделе Var; в нашем случае а:integer, а b:char.

Особых различий при чтении и записи в использовании операторов Read и ReadLn нет. Часто процедуру ReadLn без параметров применяют в конце программы для задержки: до нажатия на клавишу результат выполнения программы остается на экране. Это очень полезно делать для анализа результатов.

Содержание: 1. Turbo Pascal Введение теория и основы. 1.1 Типы данных в Turbo Pascal 1.2 Основные определения и операторы в Turbo Pascal 1.3 Структура программы в Turbo Pascal 2 Практика 2.1 Практика Создание простой программы Turbo Pascal