- •Www.Msta.Ru
- •Москва – 2005
- •1 Цель и задачи дисциплины
- •2 Тематическое содержание программы
- •3 Перечень рекомендуемых лабораторных работ
- •4 Экзаменационные вопросы по дисциплине
- •1. Введение
- •Var a,d: integer; X: real; d: string;.
- •2. Простейшие операторы языка
- •3. Организация ветвлений
- •Var a,b,c: real;
- •4. Логические функции
- •5. Организация циклов
- •Program p5_2; {другой вариант}
- •Var X,y: real;
- •С помощью этого оператора гораздо проще решить пример 5-2 (program p5_2). Оператор цикла с постусловием:
- •6. Массивы
- •Var X,z: array [1..8] of real;
- •Var I,j: integer;
- •Var n,I,j:integer; s,y,sr:real; X: array [1..10,1..5] of real;
- •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. Файлы
- •Ввод и вывод информации для типизированных и текстовых файлов производится процедурами:
- •X,y:real;
- •X,y:real; I:integer;
- •Im: string[4];
- •I: integer;
- •Im: string[4];
- •I: integer;
- •10. Подпрограммы
- •11. Графика
- •Var d,I,m,rx,ry:integer;
- •Var d,m,rx,ry:integer;
- •X,y,xn,xk,ymin,ymax,dx:real; msy,msx:real;
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.
Пример. Напишем оператор взятия корня числа х с учетом его знака.
IF 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 a>0
THEN WRITELN(a)
ELSE IF
b>0
THEN WRITELN(b)
ELSE IF
c>0
THEN WRITELN(c)
ELSE
WRITELN('все
числа <0');
GOTO метка оператора
вынуждает программу выполнять не следующий по порядку оператор, а оператор с указанной меткой. Например, оператор GOTO m читается как “Идти к оператору с меткой m” и передает ему управление. Метки должны быть предварительно объявлены оператором label в разделе объявлений программы (в нашем случае label m). Меткам можно давать произвольные символьные или числовые имена, важно чтобы все метки были разными, т.е. никогда не совпадали в пределах программы. В операторе, на который происходит ссылка, метка ставится перед ним и отделяется двоеточием.
Очень распространенной задачей является программирование алгоритмов с несколькими исходами – ветвящихся процессов. Здесь удобно (по крайней мере, на первом этапе) сначала построить блок-схему, дающую наглядное графическое представление алгоритма. В блок-схеме отдельные операции или их группы помещаются в прямоугольные блоки. Операции анализа отображаются ромбами. Обозначение других операций будет рассмотрено позже. Блок-схемы обрамляют блоки НАЧАЛО и КОНЕЦ. Мы будем изображать последние только в случае, если возможно разночтение.
П ример 3-1. Для произвольного аргумента Х вычислить значение кусочно-ломаной функции Y(X) (рис. 3.1а).
Отметим, что практически любая задача может быть запрограммирована по-разному. Два таких решения приведены в program p3_1 (рис. 3.1б и 3.1в). Второй вариант работает быстрее поскольку, если обнаружено выполняющееся условие, следующие условия не проверяются.
Пример 3-2. Даны три произвольных числа А, В, С. Составить программу, которая анализирует их и, если сумма первых двух чисел не меньше третьего, а второе больше первого – выдает сообщение ВЕРНО. Если хотя бы одно из условий не выполняется, – то сообщение НЕВЕРНО. Иными словами