1 PASCAL БАЗОВЫЕ ЭЛЕМЕНТЫ ЯЗЫКА АЛФАВИТ ЯЗЫКА Алфавит языка PASCAL состоит из букв, цифр и специальных символов. В качестве букв используются прописные и строчные буквы латинского алфавита и знак подчеркивания: ABCDEFGHIJKLMNOPQRSTUVWXYZ a b c d e f g h i j k l m n o p q r s t u v w x y z _ В качестве цифр: 0 1 2 3 4 5 6 7 8 9. Специальные символы: + – * / = < > [ ] { } ( ) . , ; : ‘ # $ ^ Комбинации специальных символов образуют составные символы: : = присваивание < = меньше или равно < > не равно > = больше или равно . . диапазон значений (. .) альтернатива квадратных скобок (* *) альтернатива квадратных скобок Последовательности знаков алфавита образуют слова. Зарезервированные слова являются составной частью языка и имеют определенный смысл. Идентификаторы пользователя применяются для обозначения меток, констант, переменных, процедур и функций, определенных программистом. Общие правила написания идентификаторов: - идентификатор начинается только с буквы или знака подчеркивания ( за исключением меток, которые могут начинаться и с цифры); - идентификатор может состоять из букв, цифр и знака подчеркивания (пробелы, точки и другие специальные символы не допускаются); - между двумя идентификаторами должен быть по крайней мере один пробел; - максимальная длина идентификатора 127 символов, все они значимы; - можно использовать как прописные буквы, так и строчные ( компилятор не делает различий между ними). П р и м е р ы идентификаторов: Pole1 8class blok_3 Nomer.Kab Nomer_Kab - верный - ошибочный - верный - ошибочный - верный 2 PASCAL КОНСТАНТЫ И ПЕРЕМЕННЫЕ При решении любой задачи требуются данные, над которыми выполняются определенные действия для получения конечного результата. В программе каждый элемент данных является либо константой, либо переменной. Константы и переменные определяются идентификаторами (именами), по которым к ним можно обращаться для получения текущих значений. Константами называются элементы данных, значения которых известны заранее и в процессе выполнения программы не изменяются. Для определения констант служит зарезервированное слово Const. Формат: Const < идентификатор > = < значение константы >; П р и м е р: Const Nom = 200; Argum = 65.4; Pole = ‘ Программа ‘; Зарезервированные константы языка PASCAL: Pi число “ ПИ “ (3.1415926536) True “ Истина“ False “ Ложь“ Переменные в отличие от констант могут менять свои значения в процессе выполнения программы. Тип переменных должен быть описан перед тем, как с ними будут выполняться какие-либо действия. Для описания переменных предназначено зарезервированное слово Var . Формат: Var < идентификатор, … > : < тип >; П р и м е р: Var Nom : integer ; Nom1, Nom2 : integer ; Argum : real ; Pole : char ; { целый тип данных } { вещественный тип данных } { литерный (символьный) тип данных } В языке PASCAL допускается использование чисел, представленных в десятичной или шестнадцатеричной системе. Если число представлено в шестнадцатеричной системе, перед ним без пробела записывается знак $. В десятичной системе числа могут записываться с фиксированной и с плавающей точкой. П р и м е р ы записи чисел: 324 - целое десятичное число; $12А - шестнадцатеричное число; 256.78 - вещественное число; - 52.8 - отрицательное вещественное число; 5.34Е+2 - вещественное десятичное число в форме с плавающей точкой, где «Е» означает «десять в степени» (экспоненциальный вид), равное 534; 20Е-03 - 0.02 5.23Е 00 - 5.23 3 PASCAL ТИПЫ ДАННЫХ ТИП – это множество значений, которые могут принимать константы, переменные, функции, выражения, и совокупность операций, допустимых над этими значениями. Все допустимые в языке PASCAL типы данных подразделяются на две большие группы: скалярные (простые) и структурированные. Типы данных Скалярные Стандартные Структурированные Описанные пользователем Массив Строка Целочисленный ( integer ) Байтовый ( byte ) Перечисляемый тип Множество Запись Интервальный тип Вещественный ( real ) Литерный ( char ) Указатель Файл Булевский ( boolean ) Скалярные типы данных. Байтовый тип аналогичен целочисленному, но в памяти занимает не 2 байта, а 1 байт и охватывает диапазон значений от 0 до 255. Данные типа integer, byte, real можно смешивать в арифметических и логических операциях. Переменные литерного типа в памяти занимает 1 байт. Значения переменных и констант типа char должны быть заключены в апострофы: ‘A‘. В арифметических операциях данные типа char не используются. К ним могут применяться операции сравнения (сравниваются коды символов из кодовой таблицы ASCII ). Для работы с данными литерного типа используются стандартные функции Chr, Ord, Pred, Succ. Последовательность символов, заключенных в апострофы, называется строкой. Переменные булевского типа в памяти занимает 1 байт. Значения переменных и констант типа boolean могут принимать только одно из двух значений True (истина) и False (ложь). Применяются для управления порядком выполнения операторов в программе. 4 PASCAL Примеры описания переменных различных типов: Var Nomer : integer ; N1, N2 : boolean ; Summa, Sum : real ; Pole : char ; { целый тип данных } { булевский тип данных } { вещественный тип данных } { литерный (символьный) тип данных } Перечисляемый тип задается непосредственно перечислением всех значений, которые может принимать переменная данного типа. Отдельные значения указываются через запятую, а весь список заключается в круглые скобки. Формат: Type < имя типа > = (значение1, значение2, . . . , значениеn) ; Var < идентификатор, . . . > : < имя типа > ; П р и м е р: Type Metall = (Fe, Na, Cu, Zn) ; Var Met1, Met2 : Metall ; Переменные Met1 и Met2 имеют тип Metall и могут принимать одно из перечисленных значений. Выражения и константы перечисляемого типа допустимы для использования в операторе Case. Интервальный тип позволяет задавать две константы, определяющие границы диапазона значений для данной переменной. Обе константы должны принадлежать одному из стандартных типов, кроме типа Real. Значение первой константы должно быть обязательно меньше значения второй. Формат: Type < имя типа > = < константа1 > . . < константа2 > ; Var < идентификатор, . . . > : < имя типа > ; П р и м е р: Type Dni = 1 . . 31 ; Var Rabdni, Vdni : Dni ; В этом примере переменные Rabdni и Vdni имеют тип Dni и могут принимать любые значения из диапазона 1 . . 31. 5 PASCAL Основные арифметические операции. Операция Выражение Тип операнда Тип результата Название + – * / div A+B A–B A*B real, integer real, integer real, integer real, integer real, integer real, integer Сложение A/B A div B real, integer integer real, integer integer mod and or A mod B A and B A or B integer integer integer integer integer integer – -A real, integer real, integer Вычитание Умножение Деление Целочисленное деление Получение остатка Арифметическое «И» Арифметическое «ИЛИ» Изменение знака Арифметическое «И» (and) производит логическое умножение операндов в соответствии с таблицей истинности: 1 and 1 = 1 1 and 0 = 0 0 and 1 = 0 0 and 0 = 0 Арифметическое «ИЛИ» (or) производит логическое сложение операндов в соответствии с таблицей истинности: 1 or 1 = 1 1 or 0 = 1 0 or 1 = 1 0 or 0 = 0 Операции отношения. Операции отношения выполняют сравнение двух операндов и определяют, истинно значение выражения или ложно. Операция = Выражение A=B <> A<>B > A>B < A<B >= A>=B <= A<=B Результат True, если А равно В True, если А не равно В True, если А больше В True, если А меньше В True, если А больше или равно В True, если А меньше или равно В Название Равно Не равно Больше Меньше Больше или равно Меньше или равно Результат всегда имеет булевский тип и принимает одно из двух значений: True (истина) или False (ложь). 6 PASCAL Основные логические операции. Операция Выражение Значение А not not A and A and B or A or B xor A xor B True False True True False False True True False False True True False False Значение В True False True False True False True False True False True False Результат Название False True True False False False True True True False False True True False Логическое отрицание Логическое «И» Логическое «ИЛИ» Исключающее «ИЛИ» Пример логического выражения: ( A< 10 ) and ( B < 100 ) Логические операции позволяют строить сложные условия в ряде операторов языка PASCAL. СТРУКТУРА ПРОГРАММЫ Текст программы начинается с заголовка, который состоит из зарезервированного слова Program, имени программы и параметров, с помощью которых программа взаимодействует с операционной системой. Заголовок несет чисто смысловую нагрузку и может отсутствовать. Параметрами программы обычно являются стандартные идентификаторы стандартных файлов ввода-вывода Input и Output, но их можно не записывать, т.к. они всегда подразумеваются системой. Н а п р и м е р, заголовки программ Program Start (Input, Output); и Program Start; эквивалентны. После заголовка следует программный блок, состоящий в общем случае из 6 разделов: - описания меток; - описания констант; - определения типов данных; - описания переменных; - описания процедур и функций; - операторов. Любой раздел, кроме раздела операторов, может отсутствовать. Общая схема программы на PASCALе: Program S; < разделы описаний > ; Begin < раздел операторов > ; End . 7 PASCAL Раздел описания меток Перед любым оператором можно поставить метку, что позволяет выполнить прямой переход на этот оператор с помощью оператора goto из любого места программы. Формат: Label < имя , . . . > ; П р и м е р: Label M1, M2; { описание меток } Begin ... M1: < оператор>; ... М2: < оператор>; ... End. Описание констант, типов данных и переменных рассмотрено выше. Описание процедур и функций будет рассмотрено дальше. Раздел операторов Begin (начало), далее следуют запятой, и наконец слово End ( Раздел операторов начинается с зарезервированного слова операторы языка отделенные друг от друга точкой с конец) и точка: Begin < оператор ;> ... < оператор > End . Комментарии Комментарий – это пояснительный текст, который можно записать в любом месте программы. Текст комментария ограничен символами { } или (* *) и может содержать любые символов алфавита языка PASCAL, кроме символов ограничителей. В ограничителях (* *) пробелы между скобкой и звездочкой запрещены. Ограничений на длину комментария нет. Комментарий игнорируется компилятором и поэтому никакого влияния на ход выполнения программы не оказывает. П р и м е р: Program Demo; { ***********************************************} {* Программа вычисления площади круга *} {* Pi - стандартная константа *} {***********************************************} Var R : integer ; (* R – радиус *) Pl : real ; (* Pl – площадь *) Begin R := 8 ; Pl := Pi * R * R (* Вычисление площади круга *) End .