Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
азовые элементы языка Паскаль. Операторы ввода-вывода. Структура программ Страница 12 из 12
[1] Оглавление [2] Алфавит и классификация данных языка Паскаль [2.1] Данные [2.2] Пользовательские типы переменных [2.3] Арифметические выражения [2.4] Стандартные функции [2.5] Оператор присваивания [2.6] Процедура ввода данных [2.7] Процедура вывода данных [2.8] Форматы вывода данных [2.9] Структура программы [2.10] Контрольные вопросы |
[1] Оглавление [2] Алфавит и классификация данных языка Паскаль [2.1] Данные [2.2] Пользовательские типы переменных [2.3] Арифметические выражения [2.4] Стандартные функции [2.5] Оператор присваивания [2.6] Процедура ввода данных [2.7] Процедура вывода данных [2.8] Форматы вывода данных [2.9] Структура программы [2.10] Контрольные вопросы |
Урок-лекция №1
Тема: Введение.
Цель: формирование представлений об основных элементах языка программирования Паскаль, операторы ввода-вывода.
Алфавит языка Турбо Паскаль включает буквы, цифры, шестнадцатеричные цифры, специальные символы, пробелы и зарезервированные слова.
Буквы - это буквы латинского алфавита от а до z и от А до Z, а также знак «подчеркивание» (код ASCII #95). В Турбо Паскале нет различия между прописными и строчными буквами алфавита, если только они не входят в символьные и строковые выражения.
Цифры - арабские цифры от 0 до 9.
Каждая шестнадцатеричная цифра имеет значение от 0 до 15. Первые 10 значений обозначаются арабскими цифрами 0...9, остальные шесть - латинскими буквами A...F или a...f.
Специальные символы Турбо Паскаля - это символы
+ плюс {} фигурные скобки : двоеточие
- минус [ ] квадратные скобки ; точка с запятой
* звездочка ( ) круглые скобки ' апостроф
/ дробная черта # номер @ коммерческое а
= равно ¬ пробел $ знак доллара
> больше . точка ^ тильда
< меньше , запятая
Комбинации специальных символов могут образовывать составные символы:
:= присваивание <= меньше или равно >= больше или равно
.. диапазон значений <> не равно
(. .) альтернатива квадратным скобкам
(* *) альтернатива фигурным скобкам.
В программе эти пары символов нельзя разделять пробелами, если они используются как знаки операций отношения или ограничители комментария. Символы (. и .) могут употребляться соответственно вместо [ и ].
Особое место в алфавите языка занимают пробелы, к которым относятся любые символы ASCII в диапазоне кодов от 0 до 32. Эти символы рассматриваются как ограничители идентификаторов, констант, чисел, зарезервированных слов. Несколько следующих друг за другом пробелов считаются одним пробелом (последнее не относится к строковым константам).
В Турбо Паскале имеются следующие зарезервированные слова:
Таблица 1.
and |
end |
nil |
shr |
do |
interface |
constructor |
implementation |
array |
for |
object |
then |
else |
mod |
destructor |
in |
asm |
file |
not |
string |
downto |
label |
procedure |
until |
begin |
function |
of |
to |
repeat |
while |
program |
uses |
case |
goto |
or |
type |
set |
with |
div |
inline |
const |
if |
packed |
unit |
shl |
xor |
record |
var |
Идентификаторы в Турбо Паскале это имена констант, переменных, меток, типов, объектов, процедур, функций, модулей, программ и полей в записях. Идентификаторы могут иметь произвольную длину, но значащими (уникальными в области определения) являются только первые 63 символа.
Идентификатор всегда начинается буквой, за которой могут следовать буквы и цифры. Буквой считается также символ подчеркивания, поэтому идентификатор может начинаться этим символом и даже состоять только из одного или нескольких символов подчеркивания. Пробелы и специальные символы алфавита не могут входить в идентификатор.
Примеры правильных идентификаторов:
а
ALPHA
MyProgramIsBestProgram
date_27_sep_39
external
_beta
Примеры неправильных идентификаторов:
1Program {начинается цифрой}
block#l {содержит специальный символ}
My Prog {содержит пробел}
Mod {зарезервированное слово}
В зависимости от способа хранения и обработки в ЭВМ данные можно разбить на две группы: константы и переменные.
Константы - это те данные, значения которых известны заранее и в процессе выполнения программы не изменяются.
В языке Паскаль используются следующие виды констант:
1) числовые константы целые (Integer);
2) числовые константы вещественные (Real);
3) логические (или булевские) константы (Boolean);
4) символьные (или литерные) константы (Char).
Целые числа записываются со знаком или без него по обычным правилам и могут иметь значение от -2147483648 до +2147483647. Следует учесть, что, если целочисленная константа выходит за указанные границы, компилятор дает сообщение об ошибке. Такие константы должны записываться с десятичной точкой, т.е. определяться как вещественные числа.
Пример:
286; -17; +1995;
Можно использовать целую константу в шестнадцатеричном виде. Шестнадцатеричное число состоит из шестнадцатеричных цифр (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F), которым предшествует знак доллара $ ( код символа 36 ). Диапазон шестнадцатеричных чисел - от $00000000 до $FFFFFFFF.
Пример:
$3A4F; $100A
Вещественные константы могут быть представлены в двух видах: с фиксированной и плавающей точкой. Константа с фиксированной точкой это число, содержащее точку, разделяющую целую и дробную часть (наличие целой и дробной части обязательно).
Пример:
-39.013; 0.256;
Константа с плавающей точкой - это число, представленное с десятичным порядком: mEp (без пробелов).
Здесь m - мантисса (как целые, так и вещественные числа с фиксированной точкой);
E - признак записи числа с десятичным порядком; p - порядок числа (только целые числа).
Символ е (Е) имеет смысл «умножить на 10 в степени». Например,
3.14Е5 - 3.14 умножить на 10 в степени 5;
-17е-2 - минус 17 умножить на 10 в степени минус 2.
Если в записи вещественного числа присутствует десятичная точка, перед точкой и за ней должно быть хотя бы по одной цифре. Если используется символ экспоненциальной части е (Е), за ним должна следовать хотя бы одна цифра десятичного порядка.
Пример:
-7.78Е-3;
4.9Е5;
-0.785Е02;
3.14 → 3.14Е+00
0.314Е+01
31.4Е-01
Логическая константа - это либо слово FALSE (ложь), либо слово TRUE (истина).
Символьные константы - это последовательность символов, заключенная в апострофы.
Пример:
'B'; 'Т-097'; 'ТБИП';
Если необходимо записать собственно символ апострофа, он удваивается:
'' - символ ' (апостроф).
Допускается использование записи символа путем указания его внутреннего кода, которому предшествует символ # (код 35), например:
#97 - символ а;
#90 - символ Z;
#39 - символ ';
#13 - символ CR.
Строковая константа - любая последовательность символов (кроме символа CR - возврат каретки), заключенная в апострофы. Если в строке нужно указать сам символ апострофа, он удваивается, например:
'That''s string.'
Строка символов может быть пустой, т.е. не иметь никаких символов в обрамляющих ее апострофах. Строку можно составлять из кодов нужных символов с предшествующими каждому коду символами #, например, строка #83#121#109#98#11#108 эквивалентна строке ' Symbol'.
Наконец, в строке можно чередовать части, записанные в обрамляющих апострофах, с частями, записанными кодами. Таким способом можно вставлять в строки любые управляющие символы, в том числе и символ CR (код 13), например:
#7'Ошибка !'#13'Нажмите любую клавишу ...'#7 .
Конструктор множества список элементов множества, обрамленный квадратными скобками, например:
[1,2,4..7,12]
[blue, red]
[]
[true]
В отличие от стандартного Паскаля, в Турбо Паскале разрешается в объявлении констант использовать произвольные выражения, операндами которых могут быть ранее объявленные нетипизированные константы, имена типов и объектов, а также следующие функции от них:
abs lo ptr swap chr odd round trunc hi ord sizeof length pred succ
Например:
Const
MaxReal = MaxInt div SizeOf(real);
NumChars = ord('Z') - ord('a') + 1;
Ln10 = 2.302585092994;
Ln10R = 1 / Ln10;
Переменная - это именованный объект, который в процессе выполнения программы может принимать различные значения.
Типы переменных можно представить двумя группами: простые и сложные. К сложным типам относятся: массивы, строки символов, записи, множества и файлы. Простые типы состоят из двух групп: скалярные и пользовательские. К скалярным относятся: целые, вещественные, символьные и логические, а к пользовательским - интервальные и перечисляемые. Переменные скалярного типа могут принимать только значения, совпадающие с константами соответствующих типов.
При объявлении переменных следует знать, что:
Пример 1. Объявите переменные, необходимые для вычисления значения функции у = х2.
Var х: real; { аргумент функции }
у: real; { значение функции }
Пример 2. Объявите переменные, необходимые для пересчета веса из фунтов в килограммы.
Var funt: real; { вес в фунтах }
kg: real; { вес в килограммах }
Пример 3. Объявите переменные, необходимые для вычисления стоимости покупки, состоящей из нескольких тетрадей, карандашей и линейки.
Var CenaTetr: real; {цена тетради }
KolTetr: integer; { количество тетрадей }
CenaKar: real; { цена карандаша }
KolKar: integer; { количество карандашей }
CenaLin: real; { цена линейки }
Suirana: real; { стоимость покупки }
К ним относятся переменные перечисляемого и интервального типов. Переменная типа «перечисление» задается перечислением значений, которые она может принимать.
Форма описания этих переменных:
Type <имя типа> = (список значений);
Var <идентификатор 1,...> : <имя типа>;
или
Var <идентификатор> : (список значений);
Пример:
Type Sezon = (Zima, Vesna, Leto, Osen);
Var S1,S2 : Sezon;
или
Var S1,S2 : (Zima, Vesna, Leto, Osen);
Здесь S1, S2 - переменные типа «перечисление», которые могут принимать любое из заданных значений.
Следует отметить, что описание типа перечисляемой переменной одновременно вводит упорядочение ее значений. Так, для данного примера Zima < Vesna < Leto < Osen (в операциях сравнения).
Для переменных интервального типа указывается некоторое подмножество значений, которые они могут принимать.
Форма описания этих переменных:
Type <имя типа> = <константа 1>..<константа 2>;
Var <идентификатор 1,...> : <имя типа>;
или
Var <идентификатор 1,...> : <константа 1>..<константа 2>;
Здесь <константа 1>, <константа 2> - соответственно константы, определяющие левую и правую границы значений, которые может принимать интервальная переменная. Значение первой константы должно быть обязательно меньше значения второй. Эти константы могут быть целого, символьного или перечисляемого типов.
Пример:
Type Dni = 1..31;
Var D1, D2 : Dni;
В этом примере переменные D1 и D2 имеют тип Dni и могут принимать любые значения из диапазона 1..31. Выход из диапазона вызывает программное прерывание.
Можно определять интервальный тип и более универсальным способом, задав границы диапазона не значениями констант, а их именами.
Пример:
Const Min=1; Max=31;
Type Dni = Min..Max;
Var D1, D2 : Dni;
Арифметические выражения строятся из числовых констант, переменных, стандартных функций и операций над ними. Для обозначения операций используются символы: + сложение, - вычитание, * умножение и / деление.
В Турбо Паскале определены следующие операции:
Наивысшим приоритетом обладают унарные операции, низшим - операции отношения. Порядок выполнения нескольких операций равного приоритета устанавливается компилятором из условия оптимизации кода программы и не обязательно слева направо.
Порядок выполнения операций изменяется с помощью скобок. Примеры выражений:
Y
21
(а + b) * с
sin(t)
а > 2
not Flag and (а = b)
NIL
[1, 3..7] * set1
В Турбо Паскале определены следующие логические операции:
not - логическое НЕ;
and - логическое И;
or - логическое ИЛИ;
хоr - исключительное ИЛИ.
Логические операции применимы к операндам целого и логического типов. Если операнды - целые числа, то результат логической операции есть тоже целое число, биты которого (двоичные разряды) формируются из битов операндов по правилам, указанным в табл. 3.2.
Таблица 2. Логические операции над данными типа INTEGER (поразрядно)
Операнд 1 |
Операнд 2 |
not |
and |
or |
xor |
1 |
- |
0 |
- |
- |
- |
0 |
- |
1 |
- |
- |
- |
0 |
0 |
- |
0 |
0 |
0 |
0 |
1 |
- |
0 |
1 |
1 |
1 |
0 |
- |
0 |
1 |
1 |
1 |
1 |
- |
1 |
1 |
0 |
К логическим операциям в Турбо Паскале обычно относятся и две сдвиговые операции над целыми числами:
i shl j - сдвиг содержимого i на j разрядов влево; освободившиеся младшие разряды заполняются нулями;
i shr j - сдвиг содержимого i на j разрядов вправо; освободившиеся старшие разряды заполняются нулями.
В этих операциях i и j - выражения любого целого типа.
С помощью программы примера 1 можно вывести на экран результат применения логических операций к двум целым числам.
Пример. Программа вводит два целых числа и печатает результат применения к ним логических операций. Для выхода из программы ввести Ctrl-Z и Enter.
var n,m : integer;
begin
while not EOF do
begin
Write('n,m='); ReadLn(n,m);
WriteLn( not= , not n, not m);
WriteLn( and= , n and m);
WriteLn( or = , n or m) ;
WriteLn( xor= , n xor m);
WriteLn( ' shl= ,n shl m);
WriteLn( ' shr= , n shr m);
end
end.
В программе организуется ввод двух произвольных целых чисел и печать результата применения к ним всех логических операций. Для выхода из программы следует нажать Ctrl-Z и Enter.
Логические операции над логическими данными дают результат логического типа по правилам, указанным в таблице 3.
Таблица 3. Логические операции над данными типа Boolean
Операнд 1 |
Операнд 2 |
not |
and |
or |
xor |
True |
- |
False |
- |
- |
- |
False |
- |
True |
- |
- |
- |
False |
False |
- |
False |
False |
False |
False |
True |
- |
False |
True |
True |
True |
False |
- |
False |
True |
True |
True |
True |
- |
True |
True |
False |
Операция отношения IN применяется к двум операндам. Первым (левым) операндом должно быть выражение любого порядкового типа, вторым - множество, состоящее из элементов того же типа, или идентификатор множественного типа. Операция дает TRUE, если левый операнд принадлежит множеству, например:
var с: char;
type digit = set of ' 0 '..' 9 ' ;
begin
if с in digit then .......
В тригонометрических функциях аргумент должен быть задан только в радианах (см. ниже таблицу).
Вызов функции |
Тип аргумента |
Тип значения |
Назначение функции |
Abs(x) |
Целый/вещественный |
Как у аргумента |
Абсолютное значение x |
Pi |
Целый/вещественный |
Вещественный |
Значение числа Pi |
Sin(x) |
Вещественный |
Вещественный |
Синус x (радиан) |
Cos(x) |
Вещественный |
Вещественный |
Косинус x (радиан) |
Arctan(x) |
Вещественный |
Вещественный |
Арктангенс x (радиан) |
Sqrt(x) |
Целый/вещественный |
Как у аргумента |
Квадратный корень из x, x>0 |
Sqr(x) |
Целый/вещественный |
Как у аргумента |
Значение квадрата x |
Exp(x) |
Вещественный |
Вещественный |
Значение E в степени x |
Ln(x) |
Вещественный |
Вещественный |
Натуральный логарифм x, x>0 |
Trunc(x) |
Целый |
LongInt |
Целая часть значения x |
Frac(x) |
Вещественный |
Вещественный |
Дробная часть значения x |
Int(x) |
Вещественный |
Вещественный |
Целая часть значения x |
Round(x) |
Вещественный |
LongInt |
“Правильное” округление x до ближайшего целого |
Random |
Вещественный |
Вещественный |
Следующее число из диап.0<=…<1 |
Random(x) |
Word |
Word |
Следующее число из диап.0<=…<x |
Odd(x) |
Целый |
Логический |
Возвращает True, если x-нечетное (x-целое) |
Succ(x) |
Целый |
Логический |
Возвращает след. за x значение в перечисляемом типе |
Pred(x) |
Целый |
Логический |
Возвращает предыдущее значение x в перечисляемом типе |
Chr(x) |
Целый(Byte) |
Символьный |
Возвращает символ ASCII кода x |
Ord(x) |
Символьный |
Целый(Byte) |
Возвращает ASCII код символа x |
Inc(x) |
Целый |
Целый |
Увеличивает значение x на 1 |
Dec(x) |
Целый |
Целый |
Уменьшает значение x на 1 |
Inc(x, n) |
Целый |
Целый |
Увеличивает значение x на N |
Dec(x, n) |
Целый |
Целый |
Уменьшает значение x на N |
A Div B |
Целочисленное деление A на B. Возвращает целую часть частного, дробная часть отбрасывается |
||
A Mod B |
Восстанавливает остаток, полученный при выполнении целочисленного деления. A и B должны быть целого типа |
Пример:
A = 11; B = 5, тогда A Div B дает 2
A Mod B дает 1
A = 2; B = 3, тогда A Div B дает 0
В Паскале заданы стандартные функции для вычисления трех тригонометрических функций. Для вычисления остальных необходимо использовать известные математические соотношения, например:
ArcSinx = ArcTg (x /Sqrt(1- x*x));
ArcCosx = Pi/2 ArcSin(x);
ArcCtgx = Pi/2 - ArcTg (x);
Для вычисления логарифма с основанием а используется соотношение .
Возведение x в степень a осуществляется с использованием стандартных функций .
Но таким образом нельзя возвести в целую степень отрицательное число. Это можно сделать с использованием операторов цикла.
Общий вид оператора: <Имя>:= <Выражение>;
Здесь имя - имя переменной, выражение - арифметическое или логическое выражение.
Пример:
Y := Abs(x) -3.5;
Min := M Div N;
В операторах присваивания переменная и выражение должны иметь один и тот же тип, а для переменных интервального типа - одно и то же подмножество значений. Нельзя присваивать целочисленным переменным выражение типа Real. Однако разрешается присваивать переменной типа Real выражение целочисленного типа.
Пример:
Y:=Sqrt(Exp(x)) + 2 * Sqr(x) * Sin(x/2) - Exp(5*Ln(x))
Для ввода данных:
Для вызова процедуры ввода используются три оператора:
1) Read(список переменных);
Каждое вводимое значение набирается минимум через один пробел и последовательно присваивается переменным из списка;
2) ReadLn(список переменных);
То же, что и оператор Read, только после ввода данных происходит переход на новую строку (т.е. следующий оператор ввода будет вводить данные с новой строки);
3) ReadLn;
Происходит переход на новую строку без ввода данных.
Последовательно расположенные операторы 1, 3 эквивалентны одному оператору 2. Значения переменных вводятся с терминала и должны соответствовать типам переменных из списка ввода. В Паскале допускается вводить следующие данные: целые, вещественные, символьные. С помощью операторов ввода нельзя ввести значение переменной следующих типов: логический, перечисляемый, массив (необходимо вводить значения отдельных элементов массива), множество (следует вводить значения элементов множества) и запись (необходимо вводить значения отдельных полей записи).
Пример:
Var A,B,C : Real;
D,F : Integer;
. . .
Read (A,B,C);
ReadLn;
Read (D,F);
Для ввода значений переменных на экране набираются числа в следующем порядке:
0.5 6.78 -3.974Е-1
10 25
Для вывода данных на экран:
Для вызова процедуры вывода используются три оператора:
1) Write (список переменных);
Выводит последовательно значения переменных из списка;
2) Writeln (список переменных);
То же, что и оператор Write, но после вывода переменных осуществляется переход на новую строку (следующий оператор вывода будет выводить данные с начала новой строки);
3) Writeln;
Осуществляется переход на новую строку без вывода данных.
Как и при выводе, последовательно расположенные операторы вида 1, 3 эквивалентны одному оператору 2.
С помощью оператора вывода нельзя вывести: значение переменной типа перечисление, массив (необходимо выводить значения отдельных его элементов), множество (следует выводить значения отдельных его элементов), запись (необходимо выводить значения отдельных полей).
В процедурах вывода имеются две возможности выводить данные: без указания ширины поля вывода (бесформатный вывод) и с указанием ширины поля вывода (форматный вывод).
Бесформатный вывод
Целые, символьные и логические - выводятся, начиная с позиции курсора.
Пример:
а=15 Write('A=',A); → A=15
c='X' Write('C=',C); → C=X
d=True Write('D=',D); → D=TRUE
Вещественные - выводятся в поле шириной 17 позиций в формате с плавающей точкой. Дробная часть мантиссы содержит 10 цифр.
Пример:
а=125.286 Write('A=',A); → A= 1.2528600000E+02
b=-2.281e1 Write('B=',B); → B=-2.2810000000E+01
Форматный вывод
Общий вид P : M;
Здесь - P - имя переменной; M - ширина поля вывода в позициях.
Целые - выводятся в правые крайние позиции поля шириной M.
Пример:
а=17 Write ('A=',A:5); → A= 17
b=3456 Write ('B=',B:5); → B= 3456
Вещественные - выводятся в крайние правые позиции поля шириной М в формате с плавающей точкой. Минимальная ширина поля равна 8, в противном случае она игнорируется.
Пример:
a=134.25 Write('A=',a:11); → A= 1.3425E+02
b=-134.25 Write('B=',b:11); → B=-1.3425E+02
В случае если форматный вывод имеет вид P:M:N, где N - число позиций дробной части, то значение переменной Р выводится в виде числа с фиксированной точкой.
Пример:
r=3.1743 Write(' R=',R:5:2); → R= 3.17
Программа реализует алгоритм решения задачи и объединяет последовательность действий, выполняемых над определенными данными с помощью определенных операций для реализации заданной цели.
Программа на языке Паскаль состоит из строк. Максимальная длина строки не должна превышать 127 символов. Размер программы имеет предел. Редактор текстов и компилятор позволяют обрабатывать программы и библиотечные модули объемом до 64 Кбайт. Если программа требует большего количества памяти, следует использовать библиотечные модули (.TPU-файлы) или оверлейные структуры.
В идеальном случае программа на языке Паскаль состоит из процедур и функций, которые вызываются для выполнения из раздела операторов основной программы.
В начале программы находится заголовок, состоящий в общем случае из зарезервированного слова Program, имени программы и параметров, с помощью которых программа взаимодействует с операционной системой. Заголовок программы несет чисто смысловую нагрузку и может отсутствовать, однако рекомендуется всегда его записывать для быстрого распознавания нужной программы среди листингов других программ.
После заголовка следует программный блок, состоящий в общем случае из 7 разделов. Структура программы выглядит следующим образом:
Program <имя> (Input,Output);
Uses <имя1, имя2,...>; {список имен подключаемых модулей}
Label ...; { раздел объявления меток }
Const ...; { раздел объявления констант }
Тyре ...; { раздел объявления типов }
Var ...; { раздел объявления переменных }
Procedure <имя>;{ раздел объявления процедур }
<тело процедуры>
Function <имя>;{ раздел объявления функций }
<тело функции>
Begin
<операторы>{ раздел инструкций основной программы }
End.
Любой раздел, кроме раздела операторов, может отсутствовать. Разделы описаний (кроме Uses, который всегда расположен после заголовка программы) могут встречаться в программе любое количество раз и следовать в произвольном порядке. Главное, чтобы все описания объектов программы были сделаны до того, как они будут использованы.
Раздел Uses - с его помощью подключаются библиотечные модули из стандартного набора Турбо Паскаля или написанные самим пользователем. Если он присутствует, то должен стоять перед прочими разделами. Кроме того, слово Uses может появиться в программе только один раз.
Пример:
Uses Crt, Printer, My_Lib;
Раздел меток (Label). Любой выполняемый оператор может иметь метку. Метки могут обозначаться целыми числами в диапазоне от 0 до 9999 или идентификаторами. Все метки должны быть описаны в разделе Label. Разделов Label может быть несколько, и стоять они могут где угодно до начала основного блока.
Общая форма записи: Label список меток;
Пример:
Label 25, M1, K750, A;
В программе метка отделяется от оператора двоеточием и следующим за ним пробелом.
Пример:
A1: X:=X*Sin(Y);
Раздел констант (Const). Если в программе используются константы, имеющие достаточно громоздкую запись, либо сменные константы (для разных вариантов программы), то их целесообразно описать в разделе Const, а в программе использовать только имена констант. Раздел Const может располагаться в любом месте, и их может быть несколько или не быть вообще.
Раздел типов (Type). Является необязательным разделом. В нем описываются типы переменных, отличающиеся от стандартных, т.е. перечисляемые, интервальные, массивы, записи и т.д. В этом разделе могут быть использованы константы из блока Const. Если это так, то раздел Type может быть расположен где угодно, но не выше соответствующего раздела Const. Если же описания типов ни с чем не связаны, то они могут быть помещены в любом месте между другими разделами, но выше того места, где будут использованы.
Раздел переменных (Var) формально тоже необязателен и может отсутствовать. Реально он объявляется и содержит список глобальных переменных программы и их типов. Разделов Var может быть несколько, но переменные в них не должны повторяться. Если в программе описываются процедуры или функции, то их определение должно предшествовать основному разделу (разделу операторов).
Раздел операторов - это собственно программа, использующая все, что было описано и объявлено. Он обязательно начинается словом Begin и заканчивается End с точкой. После точки, завершающей основной раздел, любой текст игнорируется.
Операторы языка Паскаль не привязаны к определенной позиции строки. В одной строке можно указывать несколько описаний и операторов. Исполняемые операторы отделяются друг от друга ";". Точка с запятой не ставится после Begin и перед End, так как они являются не операторами, а операторными скобками. В операторах цикла точка с запятой не ставится после While, Repeat, Do и перед Until. В условных операторах ";" не ставится после Then и перед Else. Допускается перенос с одной строки на другую частей операторов и описаний, но без разделения ключевых слов.
Комментарий - это пояснительный текст, который можно записать в любом месте программы, где разрешен пробел. Текст комментария ограничен символами или (* *) и может содержать любые комбинации латинских и русских букв, цифр и других символов алфавита.
В ограничителях (* *) пробелы между скобкой и звездочкой запрещены. Ограничения на длину комментария нет. Ограничители и (* *) удобно использовать при отладке программы.
Пример программирования линейного алгоритма. Составить программу для вычисления следующего выражения:
Program Lin;
Var A, B, C : Real;
W, X : Real;
Begin
A := 1.03;
B := 2.91e-03; { Ввод исходных данных }
X := 5.27e-2;
W := Exp(7 * Ln(A));
W := Abs(W);
W := Ln(W) / Ln(10);
C := Exp(3 * Ln(X));
C := ArcTan(C);
C := C * Pi * A / Sqrt(Abs(A + X));
C := C * (B - Cos(A / B));
W := W + C;
Writeln('Исходные данные к задаче:');
Writeln('a= ',A : 4 : 2,' b=',B : 9,' x=',X : 9);
Writeln;
Write('Результат: w=',W : 13)
End. {Ответ: W=9.008913E-02}