Структура программы и типы данных в Pascal
ПОНЯТЬ
Язык программирования Pascal в своей первоначальной версии был разработан в 70-х годах 20 века Никлаусом Виртом. Язык назван в честь знаменитого французского ученого Блеза Паскаля (1623-1662), сконструировавшего в 1642 году первую в мире механическую счетную машину, которая умела складывать и вычитать. Первоначально ЯП Pascal был задуман как хорошо структурированный язык для обучения программированию, но очень быстро перерос в универсальный, очень мощный язык.
Каждый язык программирования имеет свои правила и особенности. Основными понятиями ЯП Pascal являются «переменная» и «процедура».
Переменная – это по сути ячейка памяти, которой пользователь дал имя и в которую в процессе выполнения программы можно поместить то или иное значение из определенного множества значений.
Процедура – это некоторое завершенное действие, имеющее в языке определенное обозначение. Обозначение процедуры вместе с параметрами, над которыми будут производиться действия, называется оператором языка. Из операторов и составляется программа.
Программа на ЯП Pascal состоит из трёх частей: заголовка, описательной части, исполнительной части.
Заголовок включает в себя ключевое слово Program, название программы и указание на используемые средства ввода/вывода. В современных версиях заголовок программы не является обязательным, то есть его можно не включать в программу.
Описательная часть предназначена для описания всех используемых в программе констант, переменных, меток, процедур, функций, указателей, типов и т.п.
Необходимость этой части вытекает из того, что целые числа, вещественные числа, символы текста, логические значения «истина» и «ложь» кодируются по-разному для хранения в памяти компьютера. Обрабатываются двоичные коды тоже по-разному, поскольку для данных разного типа определены различные допустимые операции. Например, нет смысла умножать или делить символы текста. Поэтому перед началом программы во многих ЯП надо в явном виде указать типы всех используемых в программе переменных. Это позволяет: с одной стороны, сообщить компьютеру, сколько ячеек памяти отвести под те или иные данные и закодировать их соответствующим образом, с другой стороны – автоматизировать проверку, соответствуют ли выполняемые над переменными операции указанному типу данных.
Пример
Пусть переменные a, b, c определены как переменные типа целые числа, переменные r, q – как символы, а w – как переменная логического типа. Тогда операции c:=a+b; и w:=rq; будут допустимы, а операции c:=a/b; w:=r+q; недопустимы в ЯП Pascal. И если такие операции встретятся в программе, то ещё до выполнения программы транслятор ЯП (транслятор проверяет правильность написания программы и переводит её в систему команд, понятную процессору) сообщит программисту, что в программе есть ошибки и их нужно устранить.
Типы данных в ЯП Pascal делятся на простые и составные. Среди простых типов данных особое значение имеют стандартные типы, которые являются базовыми для всех остальных.
Переменные стандартных типов данных – это переменные, которые могут принимать значения вещественных чисел, целых чисел, целых чисел без знака, символов, логических значений.
Тип real – вещественные числа. Значения этого типа занимают 4 или 8 байт (в разных версиях языка). В последнем случае они содержат 15-16 значащих цифр и по модулю не могут превосходить величины 1.7∙10308.
Константы и переменные типа real можно записывать как в форме с фиксированной точкой, так и в экспоненциальной форме
Пример
С фиксированной точкой: +1.7; -0.013; -1234,56.
В экспоненциальной форме: -2.5e+3 = -2500; 1.4e-1 = 0.14; 1.0е-6 = 0.000001.
Для переменных типа real допустимы арифметические операции и операции отношений: + (сложение), - (вычитание), * (умножение), / (деление), = (равно), (больше), = (не меньше), (не равно).
Дискретные (порядковые) типы:
Тип integer – целые числа. Значения этого типа занимают 2 или 4 байта и находятся в диапазоне либо [-32768; +32767], либо [-2147483648; +2147483647].
Тип byte – целое число без знака. Значения этого типа занимают 1 байт и находятся в диапазоне [0; 255].
Для целых чисел допустимы арифметические операции и операции отношений: + (сложение), - (вычитание), * (умножение), div (деление нацело), mod (остаток от деления), =, , =, .
Тип char - символьный. Значения этого типа занимают 1 байт и представляют собой символы в таблице кодировки.
Для символов допустимы операции отношений: =, , =, .
Тип boolean – логический. Переменные и константы логического типа занимают 1 байт и принимают одно из двух значений True (истина) и False (ложь).
Для переменных и выражений логического типа допустимы логические операции: not (отрицание), and (и – конъюнкция), or (или – дизъюнкция), xor (исключающее или - строгая дизъюнкция).
Кроме стандартных типов данных можно использовать перечислимый и интервальный типы.
Перечислимый тип определяется явным перечислением упорядоченного набора значений:
Пример
type Season = (Winter,Spring,Summer,Autumn);
DayOfWeek = (Mon,Tue,Wed,Thi,Thr,Sat,Sun);
Интервальный тип представляет собой подмножество значений целого, символьного или перечислимого типа и описывается в виде a..b, где a - нижняя, b - верхняя граница интервального типа.
Пример
var a: 1..10;
c: 'a'..'z';
d: Mon..Thr;
Составные типы данных, как видно из названия, составляются из простых.
Тип array – массив. Массив представляет собой набор элементов одного типа, каждый из которых имеет свой номер, называемый индексом. Индексов может быть несколько, тогда массив называется многомерным.
Описание массива задаётся следующим образом:
array [тип индекса1, ..., тип индексаN] of базовый тип
Чаще всего тип индекса представляет собой интервальный тип в виде a..b, где a и b - константные выражения целого, символьного или перечислимого типа.
Пример
var a1,a2: array [1..10] of integer;
b: array ['a'..'z'] of string;
c: array [2000..2006, 1..12] of real;
Базовый тип может быть любым.
Тип string – строковый тип. Строки в Pascal – это последовательность не более чем из 255 символов. При описании var S: string; под переменную S отводится 256 байт, при этом в нулевом байте хранится длина строки. По сути строка – это массив символов.
Тип record - запись. Запись представляет собой набор элементов разных типов, каждый из которых имеет свое имя и называется полем записи. Описание записи задаётся следующим образом:
record список полей1: тип1; ... список полейN: типN; end:
Пример
Var Date : record
Day: 1..31;
Month: (Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec);
Year: Integer;
end;
Кроме того, есть типы set – множество, file – файл, object –объект и другие.
Для описания переменных в описательной части программы в ЯП Pascal используется служебное слово var (от англ. variable – переменная), после которого указываются имена переменных и через двоеточие тип данных.
Пример
var a, b, c : integer; {переменные целого типа}
x, y, z : real; {переменные вещественного типа}
r, q : char; {переменные символьного типа }
w : boolean; {переменные логического типа }
Для определения констант в описательной части программы используется служебное слово const, после которого указываются имена констант и их значения, которые не могут быть изменены в процессе выполнения программы.
Пример
const G=9,8; N=100; R=’Информатика’;
Существуют специальные служебные слова для описания функций (function), процедур (procedure), типов (type), меток (label). По мере необходимости Вы познакомитесь с ними.
Исполнительная часть программы – это и есть реализация алгоритма средствами языка программирования.
Начинается она со служебного слова begin и заканчивается end. .
Все операторы отделяются друг от друга точкой с запятой «;».
Служебные слова begin и end; используются также и как операторные скобки в тех случаях, когда по правилам языка может стоять только один оператор, а нужно выполнить несколько действий. Несколько операторов, заключенных в операторные скобки считаются одним составным оператором.
То есть end с точкой – это признак конца программы, end с точкой с запятой – признак конца составного оператора.
Пояснительные комментарии к программе можно разместить в любом месте программы, заключив их в фигурные скобки: {комментарий}, или в круглые скобки со звёздочкой: (*комментарий*).
Иногда при решении задачи нужно использовать какую-либо стандартную подпрограмму. Для подключения конкретной библиотеки стандартных подпрограмм перед программой нужно указать служебное слово uses и далее имя библиотеки.
Пример
Uses CRT; позволяет использовать такие подпрограммы, как очистка рабочего окна, использование датчика случайных чисел, размещение информации в окне результатов. управление шрифтом при выводе результатов и другое.
Uses Graph; позволяет подключить библиотеку подпрограмм работы с графикой.
ЗНАТЬ
Pascal относится к процедурным языкам программирования.
Программа записывается как последовательность процедур, каждая из которых описывает одно или несколько действий посредством операторов языка (причем, действия могут быть простыми и составными).
Все допустимые операторы и правила их использования составляют синтаксис языка программирования.
Структура программы на языке Pascal:
заголовок (не обязательно): Program имя программы (параметры);
подключение библиотек: Uses имя библиотеки;
описательная часть: Const имя = значение; {определение констант}
Var имя : тип; {описание переменных}
…
исполнительная часть: begin {начало}
оператор1;
…
операторN;
end.
Размещение строк программы на листе может быть произвольным. Обычно не различаются прописные и строчные буквы в обозначении операторов и именах переменных и констант.


УМЕТЬ
Дан фрагмент программы. По формальным признакам определите, какие правила синтаксиса нарушены.
Определите, какие из операций недопустимы для переменных указанных типов.