Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Степан / Информатика / Паскаль (Яньков).doc
Скачиваний:
61
Добавлен:
20.04.2015
Размер:
660.99 Кб
Скачать

З

program Имя программы

uses Подсоединение библиотек

label Перечисление меток

Var Описание переменных;

type Описание типов

const Описание констант;

begin

Собственно программа

end.

апись операторов.Оператор может занимать любое количество строк и для переноса на другую строку не нужно никаких символов переноса. Все операторы Паскаля завершаются знаком “точка с запятой”. Однако после оператора begin и перед оператором end точку с запятой можно не ставить.

Структура программы на Паскале имеет две части: описательную (пункты

1,2,3) и вычислительную и состоит из следующих элементов (см. рисунок справа):

1. Задается имя программы (необязательно).

2. Присоединяются библиотеки Паскаля.

3. Описываются все участвующие метки, переменные, константы, типы и т.п.

4. Оператором Begin открывается вычислительная часть.

5. Внутри блока помещаются операторы собственно программы.

6. Оператором End (с точкой) завершается вся программа.

Теперь напишем простую программу вычисления площади круга S произвольного радиуса R по известной формуле S=πR2. Программу назовем KRUG. Переменные S и R обозначим как вещественные, поскольку они могут иметь дроб­ную часть. Ввод радиуса осуществляется оператором readln(r). Чтобы пользователь понимал, что именно он должен ввести, прежде оператором write(‘радиус=’) на экран выводится слово “радиус=”. В конце программы видим оператор readkey. Он нужен для удобства отладки. Встречая его, компьютер ожидает от пользователя нажатия любой клавиши. В это время он может без спешки осмотреть результаты счета. Если этого не сделать Паскаль сразу же вернет нас в окно редактирования и тогда окно выдачи придется вызывать клавишами Alt+F5, что неудобно. Остальное очевидно. Замечание. В текстах следующих примеров для компактности мы не будем больше вносить команду очистки экрана, оператор задержки readkey, и, в большинстве случаев, операторы-подсказки ввода, однако студент должен это делать.

3. Организация ветвлений

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

Условный оператор позволяет выполнять некоторые действия в зависимости от заданных условий.

IF логическое условие THEN оператор1 ELSE оператор2

Здесь, еслиусловие истинно, выполняется оператор1, иначе оператор2. Например, оператор

IF a>b THEN WRITELN ('А больше В') ELSE WRITELN ('А не больше В');

выводит словесное сообщение о фактическом соотношении переменных А и В.

Оператор может использоваться и в усеченной форме без опции ELSE.

Другой пример. На практике иногда приходится выяснять кратность числа (например Х) некоторому другому числу (Y). Это можно сделать с помощью следующего выражения (оба числа должны быть целого типа)

IF x MOD y =0 THEN WRITELN ('X кратно Y') ELSE WRITELN ('X не кратно Y')

Всюду, где в синтаксисе команд встречается слово “оператор”, может быть записано любое число операторов, заключенных в операторные скобки BEGIN...END. Пример. Напишем оператор взятия корня числа х с учетом его знака.

I

Замечание.С целью придания наглядности подчиненные (вложенные) операторы удобно вводить с некоторым отступом, как показано слева.

F x>0

THEN BEGIN y:=SQRT(x); WRITELN('корень=', y) END

ELSE WRITELN('число отрицательно')

IF a>0 THEN WRITELN(a)

ELSE IF b>0 THEN WRITELN(b)

ELSE IF c>0 THEN WRITELN(c)

ELSE WRITELN(все числа <0’);

Внутрь оператора if могут быть вложены другие if. Например, пусть в после­довательности чисел a,b,c требуется вывести первое по порядку положительное число. Если таковых не оказалось, печатать “Все числа отрицательны”. Программа справа.

Оператор безусловного перехода. Оператор вида:

 GOTO метка оператора

вынуждает программу выполнять не следующий по порядку оператор, а оператор с указанной меткой. Например, опе­ратор GOTO m читается как “Идти к оператору с меткой mи передает ему управление. Метки должны быть предварительно объявлены оператором label в разделе объявлений программы (в нашем случае label m). Меткам можно давать произвольные символьные или числовые имена, важно только, чтобы все метки были разными, т.е. никогда не совпадали в пределах программы. В операторе, на который происходит ссылка, метка ставится перед ним и отделяется двоеточием.

Очень распространенной задачей является программирование процессов с несколькими исходами – ветвящихся процессов. Здесь удобно (по крайней мере, на первом этапе) сначала построитьблок-схему, дающую наглядное графическое представление алгоритма. В блок-схеме отдельные операции или их группы помещаются в прямоугольные блоки. Операции анализа отображаются ромбами. Обозначение других операций будет рассмотрено позже. Блок-схемы обрамляют блоки НАЧАЛО и КОНЕЦ. Мы будем изображать последние только в случае, если возможно разночтение.

Задача 3-1. Для произвольного аргумента

Х вычислить значение кусочно-ломаной

функции Y(X) (рис.3-1а).

Отметим, что практически любая задача может быть запрограммирована

по-разному. Два таких решения приведены в program p3_1 (рис. 3-1б и 3-1в).

Второй вариант работает быстрее поскольку при выполнении условия, следующие условия не проверяются.