22. Условный оператор Условный оператор используется для реализации конструкции Альтернатива. Имеет две формы: полную и неполную.
Полный условный оператор If условие then оператор 1 else оператор 2; Условие – выражение логического типа Условие + -- Оператор 1 Оператор 2
Неполный условный оператор If условие then оператор; Условие – выражение логического типа Условие +-- оператор
23. Составной оператор Begin оператор 1; оператор 2; … End; Составной оператор позволяет «упаковывать» несколько операторов в один. Не несет самостоятельного значения. В соответствии со стандартом языка Pascal в Borland Pascal допускается не ставить ; в конце оператора перед словом end.
24. Оператор выбора. Оператор выбора реализует Множественную альтернативу. Case выражение_выбора of выбор 1: оператор 1; выбор 2, выбор 3: оператор 2; выбор 4..выбор 5: оператор 3; … else оператор_иначе End;
Оператор выбора Выражение выбора оператор 1 оператор 2 Оператор_ иначе выбор 1 выбор 2 --
Особенности оператора выбора Выражение выбора – выражение любого порядкового типа. Выбор 1, выбор 2… – константы соответствующего порядкового типа. Часть оператора с ветвью else – не обязательна. Константы выбора должны задавить непересекающиеся диапазоны. Порядок работы Вычисление выражения выбора Сравнение полученного значения с константами выбора. В случае совпадения выполнение оператора, помеченного соответствующей константой. В случае несовпадения выполнение оператора помеченного else. Если else отсутствует, выполнение переходит к следующему за case оператору.
Примеры If (Length(s)<=10) and (s[1]=A) then s := s+8; If 2*sqr(a)-4 > 10 then Proceed(a) else begin WriteLn(Range check error); Error := 3 end;
Примеры if a<>0 {1} then {1} WriteLn(Root =, -b/a) else {1} if b<>0 {2} then {2} WriteLn(Root =, no roots) else {2} WriteLn(Root =, any real);
Примеры Case ch of r : Operation1(ch); +, -: begin WriteLn(All ok!); Operation2(ch); end; A..Z: WriteLn(Not good); else Error := RangeError end;
25. Операторы циклов. Операторы циклов реализуют конструкции повторов. Pascal реализует три вида циклов: с предусловием, с постусловием, цикл с заданным количеством повторов.
Цикл с предусловием While условие do оператор; Условие – выражение логического типа. Условие Оператор -- +
Порядок работы 1. Вычисление условия 2. Если условие истинно – выполнение оператора 3. Если условие ложно – завершение цикла 4. Повторение с п.1.
Цикл с постусловием. repeat оператор 1; оператор 2; … until условие; Операторы условие -- +
Порядок работы 1. Выполнение операторов 2. Вычисление условия 3. Если значение условия ложно – повтор с п.1 иначе - завершение работы цикла.
Сравнение циклов с пред- и постусловием С предусловиемС постусловием Реализует конструкцию повтора Условие вычисляется перед выполнением операторов Тело цикла повторяется если условие истинно Тело цикла – один оператор Тело может не выполниться ни разу Реализует конструкцию повтора Условие вычисляется после выполнением операторов Тело цикла повторяется если условие ложно Тело цикла – любое количество операторов Тело будет выполнено хотя бы один раз
Цикл с заданным количеством повторений For параметр:=нач_знач to кон_знач do оператор; Параметр – переменная порядкового типа нач_знач, кон_знач – выражения соответствующего типа Параметр:= нач_знач Вычисление нач_значки он_знач Оператор Параметр:= Параметр+1 Параметр<=кон_знач -- +
Цикл с заданным количеством повторений For параметр:=нач_знач downto кон_знач do оператор; Параметр:= нач_знач Вычисление нач_значки он_знач Оператор Параметр:= Параметр-1 Параметр>=кон_знач -- +
26. Прерывающие процедуры. Процедура Break прерывает работу цикла. Процедура Continue прерывает текущую итерацию цикла. Процедура Exit прерывает работу текущего блока. Процедура Halt прерывает работу программы.
Пример Program BreakEx; var S: String; begin while True do begin ReadLn(S); if S = '' then Break; WriteLn(S); end; end.
Пример Program ContEx; Uses WinCRT; var I: Integer; Name: string[79]; F: file; begin for I := 1 to ParamCount do begin Name := ParamStr(I); Assign(F, Name); {$I-} Reset(F, 1); {$I+} if IOResult <> 0 then begin WriteLn('File not found: ', Name); Continue; end; WriteLn(Name, ': ', FileSize(F), ' bytes'); Close(F); end; End.
27. Оператор безусловного перехода. Оператор обеспечивает передачу управления на любой помеченный оператор в программе. Порядок использование 1. Объявление меток Label метка 1, метка 2,…; 2. Маркирование оператора (только один оператор может иметь данную метку) метка: оператор; 3. Вызов оператора перехода Goto метка;
Пример Program GotoEx; Label 1; Var … Begin {часть 1} 1: WriteLn(Что-то); {часть 2} Goto 1; {часть 3} End.