Условный и составной операторы.
В случае, когда возникает необходимость сравнения величин, используется условный оператор:
if В then P1 else P2;
где В – условие, Р1 и Р2 – операторы. Если условие В удовлетворяется, то выполняется Р1, иначе выполняется Р2. В качестве условий используются отношения: =, >, <, >=(), <=(), <>().
Например: определить максимум из двух чисел (x1,x2):
if x1>x2 then max:=x1 else max:=x2;
Задача3: написать программу вычисления значения y по значению х:
Допускается сокращенная форма условного оператора:
if B then P;
где В – условие, Р – оператор, выполняющийся в случае, если условие истинно. Если же условие ложно, то будет выполнен оператор, следующий за условным оператором.
В условном операторе после then и else можно помещать по одному оператору. Однако часто необходимо в зависимости от результата проверки выполнить ту или иную группу операторов. В ТР такая группа операторов составляет составной оператор. Структура составного оператора:
begin P1; P2;…;Pn; end;
где Р1,…,Рn – любые операторы.
Задача4: написать программу, вычисляющую корни квадратного уравнения ax2+bx+c=0, заданного коэффициентами a, b и с. Если дискриминант отрицательный, то вывести ноль.
В данной задаче можно выдать сообщение в виде «корней нет» или «корень кратный», для этого нужно в самой программе ввести строки с оператором вывода: write(‘корней нет’). Вообще, в операторе вывода могут указываться не только переменные, но произвольные выражения (будет вычислено их значение и выведено на экран) и тексты (ограниченные с обоих сторон штрихом). Например, корнb можно вывести как:
write(‘x1=’,x1,’ ,x2=’,x2);
Возможность использования выражений в операторе вывода часто позволяет исключать из программы некоторые переменные.
В ТР дополнительно включены операторы ввода и вывода: readln и writeln с той разницей от предыдущих, что после выполнения происходит переход на другую строку. Если у этих операторов отсутствуют аргументы, то readln – пропускает строку и курсор ожидания переводится на другую строку, writeln – производит переход на новую строку.
Пропуски строк и выводы групп пробелов широко используются при оформлении выводимой информации в виде таблиц и графиков.
Циклы
Многократно повторяемые действия могут быть заданы оператором цикла.
-
Цикл с условием или цикл «пока»:
while B do P, где В – условие, Р – оператор, называемый телом цикла. Выполняется оператор цикла следующим образом: проверяется условие В, и если оно удовлетворено, то выполняется Р, а затем вновь проверяется условие В и т.д. Как только на очередном шаге окажется, что условие В не удовлетворяется, то выполнение оператора цикла прекратится. Цикл while – это цикл с предусловием.
Задача 5. написать программу, вычисляющую сумму 1 + х/1! + х2/2! + …. При суммировании учитываются только слагаемые, большие по абсолютной величине данного положительного числа .
-
Цикл с параметром или цикл «для»:
for i:=A to B do S, здесь i – некоторая переменная типа integer, которая называется параметром цикла, А и В – выражения со значением типа integer, S – оператор цикла. Предполагается, что в выражения А и В не входит переменная i и что выполнение оператора S не приводит к изменению значений параметра цикла i и тех переменных, которые входят в А и В. Такой оператор цикла заставляет переменную i последовательно принимать значения А, А+1, А+2, … ,В. Для каждого из этих значений выполняется оператор S. Если значение А больше значения В, то оператор S не будет выполнен ни разу.
Еще один вариант цикла с параметром: for i:=A downto B do S, здесь i принимает последовательно значения А, А–1, А–2, … ,В и для каждого из них выполняется оператор S, если же значение А меньше значения В, то оператор S не выполняется ни разу.
Следует иметь в виду, что по окончании выполнения оператора цикла с параметром значение i считается неопределенным.
Задача 6. Вводятся последовательно 10 чисел и из них выбирается наименьшее.
Замечание: значение наименьшего элемента вычисляется за 10 шагов, первый из которых состоит в присваивании с помощью оператора ввода переменной y значения первого элемента; остальные 9 шагов выполняются с помощью оператора цикла. После выполнения i-ого шага значение переменной y равно наименьшему из первых i чисел.
В программе строку for i:=2 to 10 do можно заменить строкой
for i:=1 to 9 do или
for i:=10 downto 2 do.
– от этого ничего не изменится, так как сами значения параметра цикла при выполнении программы не используются, и существенным является только число шагов цикла.
При написании программ оператор цикла с условием необходимо применять в тех случаях, когда число шагов не устанавливается заранее непосредственным рассмотрением значений переменных. Но в тех случаях, когда число шагов легко определяется по исходным данным, удобно использовать оператор цикла с параметром.
Задача 7. Обозначим: fi=… Написать программу вычисления произведения f0*f1*…*fn.
-
Цикл повтора или цикл «до»:
repeat P until S, где Р – тело цикла, S – условие, проверяемое каждый раз после выполнения оператора Р. оператор Р выполняется до тех пор, пока условие, стоящее после слова until, ложно. Для завершения цикла в операторе Р обязательно должны быть инструкции, выполнение которых влияет на условие завершение цикла. Цикл repeat – это цикл с постусловием, т.е. оператор цикла будет выполнен хотя бы один раз.
Задача 8. составить программу вычисления и печати множества значений функции y=x2+b для х, изменяющегося от a до c с шагом d. Пусть b=5.