
- •1. Введение
- •2. Операторы языка
- •Var Описание переменных;
- •3. Организация ветвлений
- •4. Логические функции
- •5. Организация циклов
- •Оператор цикла с предусловием имеет вид
- •Var I,j:integer; X,y,r:real;
- •Program p5_8;
- •Var y,X,z: integer;
- •6. Массивы
- •Var I,j: integer;
- •Var n,I,j:integer; s,y,sr:real; X: array [1..10,1..5] of real;
- •Var I,j,n,m: integer;
- •X:array [1..10] of integer;
- •Var n,I,j,st,kl,k:integer;
- •7. Символьные данные
- •Var n:integer;y:string;
- •Var X:string[1]; d:string; I:integer;
- •8. Записи
- •Var X:vr; y:array [1..5] of vr;
- •9. Файлы
- •Ввод и вывод информации для типизированных и текстовых файлов производится процедурами:
- •10. Подпрограммы
- •11. Графика
- •Var d,I,m,rx,ry:integer;
- •Initgraph(d,m,''); {переход в графику}
- •Var d,m,rx,ry:integer;
- •X,y,xn,xk,ymin,ymax,dx:real; msy,msx:real;
З
program
Имя программы
uses Подсоединение
библиотек
label Перечисление
меток
type Описание
типов
const Описание
констант; begin
Собственно
программа
end.Var Описание переменных;
Структура программы на Паскале имеет две части: описательную (пункты
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
Замечание.С целью придания наглядности подчиненные
(вложенные) операторы удобно вводить
с некоторым отступом, как показано
слева.
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в).
Второй
вариант работает быстрее поскольку при
выполнении условия, следующие условия
не проверяются.