ОФОРМЛЕНИЕ ПРОГРАММЫ
на Turbo Pascal
Понятие лексемы и разделителя
Программа на Паскале состоит из последовательности лексических единиц -
лексем.
Лексема - минимальная единица языка, имеющая самостоятельный смысл.
В Паскале лексемы условно делятся на несколько классов:
идентификаторы;
числа без знака;
специальные знаки (слова-символы и специальные знаки);
символьные константы (строки),
директивы;
метки.
РАЗДЕЛИТЕЛИ
Между лексемами разрешено вставлять один и более разделителей.
В качестве разделителей в стандарте Паскаля используются пробелы, комментарии, символы «конец строки»
Блок лексического анализа Паскаль-компилятора, рассматривая символы входного языка, должен определить, какому классу принадлежит лексема.
ПРИМЕРЫ ЛЕКСЕМ И РАЗДЕЛИТЕЛЕЙ
:=
F5
LABEL 1, 5;
12–А
12 - A+5
А{присвоить}:=1;
Между лексемами “А” и “:=” в качестве разделителя использован комментарий.
А:{присвоить}=1
Последний пример ошибочен, так как разделитель в виде комментария разрывает лексему ":=”.
РАЗДЕЛ ПРОЦЕДУР И ФУНКЦИЙ
В этом разделе записываются подпрограммы, осуществляющие сложные действия, которые необходимо произвести неоднократно на разных этапах выполнения программы.
Подпограммы бывают двух типов: процедуры (PROCEDURE) и функции (FUNCTION). И те и другие представляют собой программы в миниатюре:
-
- PROCEDURE (FUNCTION) Заголовок процедуры (функции);
- LABEL Подраздел объявления локальных меток;
- CONST Подраздел объявления локальных
- констант;
- TYPE Подраздел объявления локальных типов;
- VAR Подраздел объявления локальных
- переменных;
- Раздел текстов подпрограмм.
- BEGIN Основной блок процедуры или функции;
- END;
СТУПЕНЧАТАЯ ФОРМА ЗАПИСИ
Строки, относящиеся к одной конструкции или связанные по смыслу, записываются с одной и той же позиции.
Строки, относящиеся к подчиненной конструкции, записываются правее ("глубже"), например, на две позиции, благодаря чему наглядно представляется структура программы. В длинных программах этот подход позволяет фиксировать соответствие пар операторов BEGIN - END.
Ступенчатое оформление программы преследует только "эстетические" цели и не влияет на эффективность работы компилятора или программы. Компилятор обрабатывает Паскаль- программы с любым расположением операторов:
как разделенные построчно нажатием клавиши [Enter] при подготовке текста программы, так и записанные подряд в одну строку.
ПЛОХОЙ ПРИМЕР
program hello; begin writeln('Привет, Ваня!'); writeln; writeln('Я надеюсь, что мы отлично'); writeln ('сработаемся!'); end.
ХОРОШИЙ ПРИМЕР
program hello; {заголовок программы}
begin {начало сегмента команд программы}
writeln('Привет, Ваня!');
{вывод строки}
writeln;
{перевод позиции курсора на строку ниже}
writeln('Я надеюсь, что мы отлично');
{вывод строки}
writeln('сработаемся!');
{вывод строки}
end.
{конец программы}
ГЛУБИНА ПРОГРАММЫ
Допускается произвольная глубина вложенности сегментов программы:
Begin
...
Begin
...
Begin
...
End;
End;
End;
УСЛОВНЫЙ ОПЕРАТОР
IF <условие> THEN <оператор1> [ELSE <оператор2>]
Условие – значение типа BOOLEAN или логическая операция.
Если условие верно, выполняется оператор, или блок операторов, следующий за THEN, в противном случае выполняется блок операторов после ELSE, если он есть.
Условия могут быть вложенными и в таком случае, любая встретившаяся часть ELSE соответствует ближайшей к ней "сверху" части THEN.
ПРИМЕР
Var
A, B, C, D: Integer;
begin
A:=1;
B:=2;
C:=3;
D:=4;
If A > B Then
If C < D Then
If C < 0 Then
C:=0
Else
Else
Else A:=B
ОРГАНИЗАЦИЯ ВЕТВЛЕНИЙ
В языке Паскаль используется два оператора для реализации условных переходов - IF и CASE, а также оператор безусловного перехода GOTO. Они позволяют нарушить последовательный порядок выполнения инструкций программы.
ОПЕРАТОР УСЛОВНОГО ПЕРЕХОДА
Оператор условного перехода в Турбо Паскаль имеет вид:
if
условие then
оператор 1 else
оператор 2;
условие - это логическое выражение, в зависимости от которого выбирается одна из двух альтернативных ветвей алгоритма.
Если значение условия истинно (TRUE), то будет выполняться
оператор 1, записанный после ключевого слова then.
В противном случае будет выполнен
оператор 2, следующий за словом else, при этом
оператор 1 пропускается.
После выполнения указанных операторов программа переходит к выполеннию команды, стоящей непосредственно после оператора if.
Необходимо помнить, что перед ключевым словом else точка с запятой никогда не ставится!
ОПЕРАТОР УСЛОВНОГО ПЕРЕХОДА
else - часть в операторе if может отсутствовать:
if
условие then
оператор 1;
Тогда в случае невыполнения логического условия управление сразу передается оператору, стоящему в программе после конструкции if.
Синтаксис языка допускает запись только одного оператора после ключевых слов then и else, поэтому группу инструкций обязательно надо объединять в составной оператор (окаймлять операторными скобками begin ... end). В противном случае возникает чаще всего логическая ошибка программы, когда компилятор языка ошибок не выдает, но программа тем не менее работает неправильно.
РЕШЕНИЕ ЗАДАЧ
При нагревании куска меди от 200 С до 1700 С было затрачено 140000 Дж тепла. Определить массу меди.
ТЕКСТ ПРОГРАММЫ
Program Copper;
Uses Crt;
const
c=400; {удельная теплоемкость меди}
var
Q,t1,t0,m:real;
begin
writeln (‘введите затраченное количество теплоты’);
readln(Q);Clrscr;
writeln (‘введите начальную температуру меди’);
readln(t0);Clrscr;
writeln (‘введите конечную температуру меди’);
readln(t1);Clrscr;
m:=Q/(c*(t1-t0));
writeln (‘масса меди равна’, m:3:3, ’кг’);
readln;
End.
Самостоятельная работа
Какое количество теплоты отдает 5 л воды
при охлаждении с 500 С до 100 С?
Составить программу для расчета, ответ показать учителю