УСЛОВНЫЕ ОПЕРАТОРЫ В ЯЗЫКЕ PASCAL
Если в процессе выполнения программы требуется реализовать разный набор команд в зависимости от некоторого условия, то это достигается с помощью специальных конструкций – условных и безусловных операторов .
if (если) (условие) then (то)
выполняемые действия
еlse (иначе)
выполняемые действия;
ОПЕРАТОР УСЛОВНОГО ПЕРЕХОДА IF
Основная ветка
Логическое выражение
IF
false
true
THEN
ELSE
Блок 1
Блок 2
Основная ветка
Оператор условия if выполняется следующим образом.
Сначала вычисляется выражение, записанное в условии. В результате его вычисления получается значение булевского типа.
В первом случае, если значение выражения равно True (истина), то выполняется оператор1 , указанный после слова then.
Если результат вычисления выражения в условии равен False (ложь), то выполняется оператор2 , следующий за else.
var n,a : integer ;
begin
write ( 'Введите целое число: ' ) ;
readln ( n ) ;
a:= n mod 2;
b:= n div 2;
if n mod 2 = 0 then
write ( 'Оно четное. a= ',a ) ☺
else
write ( 'Оно нечетное. a= ',a ) ;
readln
end .
ОПЕРАТОР IF неполная форма
Основная ветка
Логическое выражение
IF
false
true
THEN
ELSE
Блок 1
Основная ветка
var n : integer ;
begin
write ( 'Введите целое число: ' ) ;
readln ( n ) ;
if n then
n := abs ( n ) ;
write ( n ) ;
readln
end .
begin
Непосредственно после then может стоять только один оператор. При необходимости выполнения нескольких операторов они должны быть заключены в операторные скобки
end
var a , b , c : integer ;
begin
write ( 'a=' ) ;
readln ( a ) ;
write ( 'b=' ) ;
readln ( b ) ;
if a b then
c := a;
a := b;
b := c;
writeln ( 'a=' , a , '; b=' , b ) ;
else
writeln ( 'Введены одинаковые числа' ) ;
readln ;
end .
begin
end
ОПЕРАТОР ВЫБОРА CASE
Основная ветка
Переменная
CASE
Значение 1
Блок 1
Значение 2
Блок 2
Значение 3
Блок 3
Основная ветка
Оператор CASE работает следующим образом.
Сначала вычисляется значение выражения-селектора
затем обеспечивается реализация того оператора, константа выбора которого равна текущему значению селектора
Если ни одна из констант не равна текущему значению селектора, выполняется оператор, стоящий за словом ELSE
Если слово ELSE отсутствует, то активизируется оператор, находящийся за словом END , т.е. первый оператор за границей CASE .
Const arrnumb : array [ 1..7 ] of String = ( ’ Понедельник ’ , ’ Вторник ’ , ’ Среда ’ , ’ Четверг ’ , ’ Пятница ’ , ’ Суббота ’ , ’ Воскресенье ’ ) ;
var d : Integer;
begin
repeat
write ( ‘Введите номер дня недели: ‘ );
readln(d);
if (d7) then
writeln ( ‘ Упс ! В неделе семь дней...’ );
until d
writeLn ( ‘Сегодня ‘, arrnumb[d] );
case d of
1: write ( ‘День тяжелый... ‘ );
2: write ( ‘Вовсе не простой... ‘ );
3: write ( ‘Третий день недели... ‘ );
4,5: write ( ‘Информатика... Отпустите нас, пожалуйста :( ‘ );
6: write ( ‘Понедельник начинается в субботу. ‘ );
7: write ( ‘Ура! Завтра в школу. ‘ );
end;
readln;
end.
ОПЕРАТОР БЕЗУСЛОВНОГО ПЕРЕХОДА GOTO
Основная ветка
Блок 1
Блок 2
GOTO M:
M:
Основная ветка
Оператор GOTO работает следующим образом.
при выполнении программы переходит к определенному оператору программы, перед которым находится метка
Метка должна быть описана в разделе LABEL программы
Метка от помеченного оператора отделяется двоеточием .
Учтите! Само понятие структурного программирования и общепринятый стиль программирования на структурных языках
НЕ ПРИВЕТСТВУЕТ
применение меток и операторов перехода в программах.
Это затрудняет понимание программы как автором, так и потребителями, кроме того, применение меток отрицательно сказывается на эффективности генерируемого кода.
program Guk;
uses crt;
label n ;
const g=9.8;
Var vvod,y: char; Lkr,k,m,L: real;
begin
writeln ('Введите критическую длину и коэффициент жесткости : ') ;
readln (Lkr, k);
n: writeln ('Введите массу груза ') ;
readln (m);
l:=m*g/k;
if l then
writeln ('Растяжение пружины равно ' ,l:7:5, ' метров')
else
writeln ('Разрыв пружины') ;
readln;
writeln ('Завершить ввод данных: y/n') ;
readln (vvod);
if vvod='y' then
exit
else
goto n;
end.