Продолжаю публиковать справочный материал по программированию. Особенно актуален он будет для тех, кто что-либо не понял на уроке или не присутствовал на занятии.
Для осуществления ветвления в программе используется условный оператор.
Он имеет полную и неполную формы:
Полная форма:
If условие Then оператор1 Else оператор2
Неполная форма:
If условие Then оператор1
Условный оператор выполняется следующим образом:
- проверяется условие
- если условие выполнено, выполняется оператор1
- если условие не выполнено, в полной форме выполняется оператор2, а в неполной форме никаких действий не выполняется
- осуществляется переход к следующей команде
Условие может быть простым или сложным.
Простое условие – сравнение значений двух выражений с помощью знаков сравнения:
< – меньше, >
– больше, <=
– меньше или равно, >= – больше или равно, = – равно, <>
– неравно
Например:
1)
X>=3; 2)
A<>B; 3) sqr(c)=sqr(a)+sqr(b)
Сложное условие – несколько простых условий, соединенных логическими операциями:
Not – не, And – и, Or – или, Xor – исключающее или
Простые условия, входящие в состав сложного, записываются в скобках.
Например:
1) (X>3) and (Y<=17) and (Z<>2) – выполнено, если выполнены все простые условия
2) (X<2) or (X=8) or (X>=12) – выполнено, если выполнено хоть одно из простых условий
3) (X=7) xor (Y=9) xor (Z=1) – выполнено, если выполнено ровно одно из простых условий
Операторы 1 и 2 могут быть простыми и составными. Простой оператор – один оператор.
Составной оператор – несколько операторов, заключенных в операторные скобки (Begin … End).
Примеры:
1. Программа выводит на экран большее из двух целых чисел
Program max;
Var a,b,m:integer;
Begin
Write(’Введите 2 числа’);
Readln(a,b);
If a>b then writeln(a, ’большее’)
else writeln(b, ’большее’)
End.
2. Программа вычисляет значение функции - квадратный корень из х
Program func1;
Var x,f:real;
Begin
Write(’x=’);
Readln(x);
If x>=0 then begin
f:=sqrt(x);
Writeln(’f=’,f:7:2)
end
End.
3. Программа вычисляет значение функции
Program func2;
Var x,f:real;
Begin
Write(’x=’);
Readln(x);
If x<2 then f:=-x
else if x=2 then f:=0
else f:=x;
Writeln(’f=’,f:7:2)
End.
В классе мы успели вспомнить только цикл с предусловием. Здесь же публикую материал по всем видам циклов.
Операторы цикла используются для реализации многократного выполнения одной или нескольких команд. Различают 3 типа циклов:
- цикл с параметром;
- цикл с предусловием;
- цикл с постусловием.
Все 3 типа реализованы операторами языка Pascal.
Цикл с параметром
Цикл с параметром используется тогда, когда заранее известно количество повторений и шаг постоянен. Этот тип цикла реализуется в языке Pascal оператором For, который имеет 2 варианта записи:
1) For параметр цикла:=начальное значение to конечное значение do тело цикла
2) For параметр цикла:=начальное значение downto конечное значение do тело цикла
Параметр цикла – переменная целого типа;
начальное и конечное значения – выражения того же типа;
тело цикла – простой или составной оператор.
- Цикл повторяется, пока значение параметра лежит в интервале между начальным и конечным значениями
- При каждом повторении цикла значение параметра автоматически изменяется: в первом варианте увеличивается, а во втором уменьшается на 1.
- Значение параметра цикла можно использовать, но нельзя изменять внутри цикла.
Примеры:
1. Программа выводит на экран числа от 1 до 7
Program prog1;
var i:integer;
begin
for i:=1 to 7 do writeln(i);
end.
2. Программа выводит на экран числа от 7 до 1
Program prog2;
var i:integer;
begin
for i:=7 downto 1 do writeln(i);
end.
3. Программа вычисляет S=1+2+…+N, где N - введенное целое число
Program sum1;
var i,n,s:integer;
begin
write('n=');
readln(n);
s:=0;
for i:=1 to n do s:=s+i;
writeln('s=',s);
end.
Цикл с предусловием (цикл – пока)
Цикл с предусловием – наиболее универсальная циклическая структура (с его помощью можно представить любой цикл). В языке Pascal этот вид цикла реализован оператором While:
While условие do begin тело цикла end
Оператор While выполняется следующим образом:
1. проверяется условие
2. если условие выполнено, выполняется тело цикла и происходит переход к п. 1
3. если условие не выполнено, то происходит переход к следующей команде (выход из цикла)
Особенности:
- Цикл повторяется, пока условие выполнено
- Если изначально условие не выполнено, то тело цикла не выполняется ни разу
- Оператор While может зациклиться: если изначально условие выполнено, а в теле цикла его значение не изменяется, то выхода из цикла не происходит
Примеры:
1. Программа вычисляет S=1+2+…+N, где N - введенное целое число
Program sum1;
var i,n,s:integer;
begin
write('n=');
readln(n);
s:=0; i:=1
While i<=n do
begin
s:=s+i; i:=i+1;
end;
writeln('s=',s);
end.
2. Написать программу решения уравнения ax + b = 0, если a = 1, 2, 3, 4, 5
Program ur_e;
var a:integer; b,x:real;
begin
write('введите коэффициент b');
readln(b);
a:=1;
While a <=5 do
begin
x:=-b/a;
writeln(’При a= ’, a, ’x=’, x:5:2);
a:=a+1;
end;
end.
Цикл с постусловием (цикл – до)
Цикл с постусловием реализован в языке Pascal оператором Repeat:
Repeat тело цикла until условие
Оператор Repeat выполняется следующим образом:
1. выполняется тело цикла
2. проверяется условие
3. если условие не выполнено, то происходит переход к п. 1
4. если условие выполнено, то происходит переход к следующей команде (выход из цикла)
Особенности:
- Цикл повторяется, пока условие не выполнено (до момента, когда условие выполниться)
- Тело цикла выполняется по крайней мере 1 раз
- Оператор Repeat может зациклиться: если изначально условие не выполнено, а в теле цикла его значение не изменяется, то выхода из цикла не происходит
- Если тело цикла Repeat – составной оператор, то операторные скобки не обязательны (тело цикла в этом операторе всегда ограничено ключевыми словами Repeat и Until)
Пример:
Написать программу решения уравнения ax + b = 0, если a = 1, 2, 3, 4, 5
Program ur_e;
var a:integer; b,x:real;
begin
write('введите коэффициент b');
readln(b);
a:=1;
repeat
begin
x:=-b/a;
writeln(’При a= ’, a, ’x=’, x:5:2);
a:=a+1;
end;
end.