- •3. Система программитрования турбо паскаль
- •3.1 Окно среды разработчика
- •3.2. Элементы диалоговой среды
- •3.3. Команды редактора
- •3.4. Модули
- •4. Общие сведения о языке паскаль
- •4.1 Алфавит языка
- •4.2. Типы данных в TurboPascal 7.0
- •4.3. Операции и выражения в языке Паскаль
- •4.4 Стандартные функции в языке Паскаль
- •5. Линейные алгоритмы
- •5.1. Структура программы на языке Паскаль
- •5.2. Конструкция «следование»
- •6. Разветвляющиеся алгоритмы
- •And, * (умножение), / (деление), div, mod;
- •6.1. Операторы условных переходов
- •Var a, b, c : Real; lv : Boolean;
- •Var a, b, c : Real; lv : Boolean;
- •Var X, y : Real;
- •6.2. Оператор безусловного перехода
- •Var n, p, X : Real;
- •20: WriteLn('Факториал числа ' , n:4:2,' равен ' ,p:4:2);
- •7. Циклические алгоритмы
- •7.1. Цикл с предусловием While
- •X, xn, xk, dx, y, s, p: real;
- •7.2. Цикл с постусловием repeat
- •X1, x0, X, eps: real;
- •7.3. Цикл с параметром for
- •I: integer; c: char;
- •7.4. Принудительное завершение цикла
- •X, xn, xk, dx: real;
- •8. Символьный тип
- •8.1. Особенности символьного типа
- •8.2. Объявление символьной переменной
- •8.3. Операции с символами
- •Строковые переменные
- •9.1. Определение и типы строк
- •9.2. Упакованный строковый тип
- •9.3. Строковый тип
- •9.5. Примеры работы со строками
- •9.6. Индивидуальные задания по работе со строками и символами
- •10. Массивы
- •10.1. Организация данных в массиве
- •10.2. Объявление массивов
- •10.3. Ввод и вывод значений элементов массива
- •10.4. Подсчет количества элементов по заданному условию
- •10.5. Поиск минимального элемента массива
- •10.6. Вычисление произведения ненулевых элементов массива
- •10.7. Сортировка элементов массива
- •10.8. Заполнение массива случайными числами
- •10. 9. Индивидуальные задания по работе с массивам
- •11. Процедуры и функции
- •11.1. Понятие подпрограммы
- •11.2. Описание процедуры
- •11.3. Описание функции
- •11.4. Области действия имен
- •11.5. Индивидуальные задания по разработке процедур и функций
- •Var k,l; real;
6.1. Операторы условных переходов
Операторы условных переходов относятся к числу сложных, так как в их состав входят другие (не условные) операторы. Условные операторы применяются в том случае, если возникает необходимость выполнять ту или иную часть (фрагмент) запущенной на исполнение программы в зависимости от выполнения содержащегося в ней какого-то условия. Существуют две формы условного оператора – полная и краткая.
Условный оператор полной формы имеет вид:
IF <Lv> THEN <оп. 1> ELSE <оп. 2> ;
Его элементами являются: IF(если), THEN (тогда), ELSE(иначе) – служебные (ключевые, зарезервированные) слова, <Lv>–логическое выражение условия булевского типа(типа Boolian), <оп. 1> и < оп. 2> – отдельные (одиночные) операторы программы. При выполнении этого оператора сначала проверяется (определяется) истинность логического выражения <Lv>. Если оно окажется истинным (TRUE), тогда будет выполняться только первый оператор <оп. 1>, а если оно окажется ложным (FALSE), то станет выполнятьсятольковторойоператор <оп. 2>, стоящий после слова ELSE.
Условный оператор краткой формы имеет вид:
IF<Lv>THEN<оп. 1> ;
Если предварительно проверенное логическое выражение <Lv>этого оператора окажется истинным (TRUE), тогда произойдёт выполнение единственного в нём оператора <оп. 1>. Если же <Lv>окажется ложным (FALSE), то <оп. 1> не выполняется и управление передаётся первому оператору, расположенному в программе непосредственно за условным оператором IF.
Рассмотрим в качестве примера использование этих условных операторов полной и краткой формы для программного решения одной и той же задачи, посвящённой выбору (поиску) большего числа из двух заданных. Программы решения этой задачи могут быть составлены по алгоритмам, структурные схемы которых имеют вид:
ДА НЕТ
НЕТ ДА
Приведенные ниже первая «Poisk_Bolsego_1» и вторая «Poisk_Bolsego_2» программы соответствуют левой и правой структурной схеме.
Program Poisk_Bolsego_1;
Uses Crt;
Var a, b, c : Real; lv : Boolean;
BEGINClrScr;
Write(' Bведите два числа А и В: '); ReadLn(A, B);
LV:=(A>B);
WriteLn(' Логическое выражение -- ',LV);
IFLVTHENC:=AELSEC:=B; {Условный оператор полной формы.}
Writeln(' Большим из двух является число ',C:3:1);
READLN END.
Program Poisk_Bolsego_2;
Uses Crt;
Var a, b, c : Real; lv : Boolean;
BEGINClrScr;
Write(' Bведите два числа А и В: '); ReadLn(A, B);
C:=A;
LV:=(B>A);
WriteLn(' Логическое выражение -- ',LV);
IFLVTHENC:=B; {Условный оператор краткой формы.}
Writeln(' Большим из двух является число ',C:3:1);
READLN END.
Операторы вывода значений истинности логических выражений в приведенных программах введены в учебных целях и при желании могут быть опущены. В условных операторах программ после ключевого слова IF вместо предварительно определённой переменной LV может записываться (в круглых скобках или без скобок) само условие, например, (B>A). Для каждой программы приводятся далее по две распечатки их выполнения, подтверждающие верность их (программ) составления.
Bведите два числа А и В: 55.5 55.7
Логическое выражение A>B -- FALSE
Большим из двух является число 55.7
Распечатки первой программы..
Bведите два числа А и В: 55.7 55.5
Логическое выражение A>B -- TRUE
Большим из двух является число 55.7
Bведите два числа А и В: 55.5 55.7
Логическое выражение B>A -- TRUE
Большим из двух является число 55.7
Распечатки второй программы.
Bведите два числа А и В: 55.7 55.5
Логическое выражение B>A -- FALSE
Большим из двух является число 55.7
При вводе по запросу приведенных программ двух одинаковых чисел в их распечатках (например, в распечатке второй программы вида
Bведите два числа А и В: 55.5 55.5
Логическое выражение B>A -- FALSE
Большим из двух является число 55.5 ) будет отсутствовать данная информация о равенстве А и В. Для устранения данного недостатка потребуется использовать в программах другие существующие в Паскале разновидности условных операторов, называемых составными.
Если в ранее рассмотренных условных операторах полной и краткой формы после ключевых слов THENиELSEможно было вставлять (записывать) только по одному оператору (и не более), то в составных условных операторах это ограничение отсутствует. Составной условный оператор полной формы относится к числу сложных операторов и представляется в программах по формату вида:
IF <Lv> THEN
BEGIN
< оп. 1>;
<оп. 2>; По ветви «ДА»
……… (TRUE).
< оп. n>Знак «;» не ставится!
END
ELSE
BEGIN
< оп. 1>;
<оп. 2>; Поветви «НЕТ»
……… (FALSE).
< оп. n>Знак «;» не ставится!
END.
Из приведенного формата видно, что составными операторами в нём являются обобщённые в единую группу разнообразные операторы <оп. 1>, <оп. 2>, … , <оп. n> с помощью зарезервированных операторных скобок BEGIN и END и расположенные после ключевых слов THEN иELSE. Между операторными скобками может быть сколько угодно других операторов, но считается всё это одним составным оператором. Другими операторами, входящими в составной, могут быть и разнообразные условные операторы. В рассматриваемом условном операторе вместо двух составных может использоваться только один (верхний или нижний по формату), а другой быть одиночным. Рассмотрим для последнего варианта простую программу вычисления суммы двух присвоенных переменным Х и Y чисел, если Х – положительное, или вычисления квадрата переменной Х в противном случае.
.
Program SUMMA_or_KVADRAT;
USES Crt;