
- •Кафедра информационных технологий
- •Практикум
- •Введение
- •Тема 1. Основы алгоритмизации
- •1.1. Общие понятия и определения
- •1.2. Свойства информации
- •1.3. Этапы решения задач
- •1.4. Блок-схемы алгоритмов
- •Тема 2. Интегрированная среда Turbo Pascal 7.0
- •2.1. Основные элементы ide Turbo Pascal 7.0
- •2.2. Ввод программы в среде Turbo Pascal
- •2.3.Сохранение программы в файле
- •2.4. Работа с существующей программой
- •2.5. Компиляция программы в среде Turbo Pascal
- •Compile successful: Press any key... (Успешная компиляция: Нажмите любую клавишу...)
- •2.6. Выполнение программы в среде Turbo Pascal
- •2.7. Выход из среды Turbo Pascal
- •Тема 3. Элементы языка Турбо Паскаль и программирование линейных вычислительных процессов
- •3. 1. Алфавит языка
- •3. 2. Идентификаторы
- •3.3. Основные типы данных и операции с ними
- •3.4. Константы и переменные
- •3.5. Выражения
- •3.6. Стандартные математические функции языка Турбо - Паскаль
- •3.7. Структура программы
- •X,y : Integer;
- •3.8. Ввод исходных данных. Операторы read и readln
- •3.9. Вывод данных. Операторы write и writeln
- •Writeln (выражение 1, выражение 2, … , выражение n).
- •3. 10. Оператор присваивания
- •3.11. Пример составления программы
- •3.12. Контрольные вопросы
- •3.13. Варианты заданий
- •Тема 4. Программирование разветвляющихся процессов
- •4.1. Методические указания
- •4.2. Условный оператор if и составной оператор Begin … End
- •4.3. Оператор безусловного перехода goto и оператор отбора case
- •4.4. Контрольные вопросы
- •4.5. Варианты заданий
- •Тема 5. Циклические процессы
- •5.1. Общие сведения
- •5.2. Цикл с предусловием
- •I:integer;
- •5.3. Оператор цикла с постусловием
- •I:integer;
- •5.4. Цикл с параметром
- •I:integer;
- •5.5. Итерационные циклы
- •XI, s, X, e: real;
- •5.6. Контрольные вопросы
- •5.7. Варианты заданий
- •Тема 6. Ввод с клавиатуры и формы представления выходной информации
- •6.1. Операторы ввода и вывода
- •6.2. Управление шириной поля вывода в процедурах Write и Writeln
- •6.3. Пример выполнения задания
- •Xn, xk, hx : real;
- •Результаты выполнения программы
- •6.4. Контрольные вопросы
- •6.5. Варианты заданий
- •Тема 7. Вложенные циклы
- •7.1. Общие сведения
- •7.2. Примеры выполнения задания
- •X, hx, a, b, hx, s, x0, xn, y: Real;
- •7.3. Контрольные вопросы
- •7.4. Варианты заданий
- •Тема 8. Массивы и действия с ними.
- •8.1. Методические указания
- •8.2.Одномерные массивы
- •8.3.Многомерные массивы
- •V:stroka;
- •8.4.Символьные массивы
- •8.5.Ввод-вывод массивов
- •8.6. Примеры выполнения программ
- •I,k,l:integer;
- •I,j,m,r:integer;
- •8.7. Контрольные вопросы
- •I,j: integer;
- •8.8. Варианты заданий
- •Приложение 1
- •Приложение 2 Структурограммы
- •Рязанский государственный медицинский университет
- •Кафедра информационных технологий отчет
- •Рязань 2004
- •Составить программу для вычисления значения функции
- •Библиографический список
- •Содержание
4.2. Условный оператор if и составной оператор Begin … End
Условный оператор позволяет выбрать и выполнить один из двух входящих в него операторов в зависимости от значения логического выражения. Его синтаксическая запись:
IF <логическое выражение>
THEN <оператор 1>
[ELSE <оператор 2>];
в которой IF…THEN…ELSE – зарезервированные слова языка, означающие соответственно ЕСЛИ…ТО…ИНАЧЕ, квадратные скобки означают, что часть ELSE <оператор 2> может отсутствовать. Условный оператор может быть записан в одну строку, однако рекомендуется придерживаться требований структурированной записи программы.
Если логическое выражение принимает значение ИСТИНА (TRUE), то выполняется оператор 1, если же оно принимает значение ЛОЖЬ (FALSE), то выполняется оператор 2. В любом случае далее выполняется оператор, стоящий в программе за условием.
Например, оператор, вычисляющий Y = |X|, будет иметь следующий вид:
IF X>=0
THEN Y:=X
ELSE Y:= -X;
Условный оператор может не иметь конструкции ELSE, тогда он называется сокращённым условным оператором. Если логическое выражение принимает значение ЛОЖЬ (FALSE), сразу выполняется оператор, следующий за условием.
Например, оператор
IF X<0
THEN X:= -X;
обеспечивает инвертирование значения переменной Х, если оно отрицательно, и оставляет его без изменения в противном случае.
Рассмотрим подробнее составные части условного оператора.
Логическим выражением (булевым) называется выражение, имеющее значение типа BOOLEAN, т.е. TRUE или FALSE.
Составляющие логического выражения могут быть связаны между собой знаками логических операций, операций отношения и побитовых операций.
В языке PASCAL допустимы следующие операции отношения:
<, <=, =, >, >=, <>.
Отношение принимает значение TRUE, если оно справедливо для входящих в него операндов и FALSE в противном случае. Например, 10>7 имеет значение истина, а 5<=0 – ложь.
Переменные, которые в программе принимают значение логического выражения, должны быть описаны в разделе описания переменных как имеющие тип BOOLEAN. Например, переменные А и В, описанные как
VAR
A, B: BOOLEAN;
считаются в программе логическими (т.е. принимают значения TRUE и FALSE).
Над множеством логических переменных определены следующие логические операции:
AND – логическое умножение (И);
OR – логическое сложение (ИЛИ);
XOR – логическое ИЛИ-НЕ (исключающее ИЛИ);
NOT – логическое отрицание (НЕ).
Их действия показаны в таблице 1:
Таблица 1. Таблица истинности
A |
B |
NOT A |
A AND B |
A OR B |
A XOR B |
FALSE |
FALSE |
TRUE |
FALSE |
FALSE |
FALSE |
FALSE |
TRUE |
TRUE |
FALSE |
TRUE |
TRUE |
TRUE |
FALSE |
FALSE |
FALSE |
TRUE |
TRUE |
TRUE |
TRUE |
FALSE |
TRUE |
TRUE |
FALSE |
По сравнению с операторами отношения логические операции имеют меньший приоритет.
В процессе вычислений соблюдается следующая очерёдность в выполнении этих операций:
Выражения, заключённые в скобки;
Логическое отрицание NOT;
Логическое умножение AND;
Логическое сложение OR, XOR.
Операции, имеющие одинаковый приоритет, вычисляются слева направо.
Например, логическое выражение
1 6 4 2 5 3
(-9>=5) OR NOT (11<30) AND (0<=7)
имеет значение FALSE. Цифрами сверху показан порядок выполнения операций.
Операции NOT, AND, OR, XOR можно использовать для побитовых операций с целыми числами, для которых они имеют следующий смысл.
NOT – унарная операция инверсии всех битов целого числа:
a = 1011, NOT A = 0100.
AND – побитовая логическая операция И двух целых чисел:
b = 0110, A AND B = 0010.
OR – побитовая логическая операция ИЛИ двух целых чисел:
A OR B = 1111.
XOR – побитовая логическая операция ИСКЛЮЧАЮЩЕЕ ИЛИ двух целых чисел:
A XOR B = 1101.
Также к этой группе относят операции SHL и SHR.
SHL – операция I SHL J сдвигает содержимое I на J битов влево. Освободившиеся биты заполняются нулями:
A SHL 2 = 1100.
SHR – операция I SHR J сдвигает содержимое I на J битов вправо. Освободившиеся биты заполняются нулями:
B SHR 1 = 0011.
В этих операциях I и J – выражения любого целого типа.
Полный условный оператор в общем случае в своей записи после THEN и ELSE может использовать любой оператор языка PASCAL. Однако часто возникает необходимость вставить в какую-либо ветвь не один, а группу операторов. В этом случае пользуются так называемым составным оператором.
Составной оператор – это заключённая между зарезервированными словами BEGIN и END последовательность операторов, отделённых друг от друга символом ‘;’ (точкой с запятой):
BEGIN
Оператор 1;
Оператор 2;
…
Оператор N;
END;
В свою очередь любой из операторов, входящих в составной, тоже может быть составным. Зарезервированные слова BEGIN и END называются в этом случае операторными скобками. Турбо Паскаль допускает произвольную глубину их вложенности.
Приведём программу: вычисление действительных корней квадратного уравнения ax2 + bx + c = 0, в соответствии с алгоритмом рис. 2.
Program SQEQ;
Var
A, B, C, D, X1, X2: Real;
Begin
WriteLn (‘Введите А, В, С’);
ReadLn (A);
ReadLn (B);
ReadLn (C);
D:=Sqr (B) – 4 * A * C;
If D<0 then
WriteLn (‘Действительных корней нет’)
else begin
X1:=(–B + Sqrt (D)) / (2 * A);
X2:=(–B – Sqrt (D)) / (2 * A);
WriteLn (‘Действительный корень Х1= ’, X1:3:1);
WriteLn (‘Действительный корень Х2= ’, X2:3:1);
End;
WriteLn (‘Дискриминант D= ’, D:3:1)
End.
Результаты выполнения программы
Введите A, B, C
2 5 2
Действительный корень X1 = - 0.5
Действительный корень X2 = - 2.0
Дискриминант D = 9.0
Структура выбора может входить составной частью в одну из ветвей другой структуры выбора. В этом случае имеет место сложное ветвление. Например, даны две переменные a и b. Если a = b, то вывести на печать значения этих переменных без изменения. Если a < b, значения переменных уменьшить в 3 раза. Если a > b, то значения переменных увеличить на 6. Алгоритм и программа имеют следующий вид:
Рис. 3
Program AANOB;
Var
A, B: Real;
Begin
WriteLn (‘Введите A, B’);
Read (A, B);
If A<>B then
If A<B then begin
A := A / 3;
B := B / 3;
End
else begin
A := A + 6;
B := B + 6;
End;
WriteLn (‘A=’, A:2:1, ‘B=’, B:2:1)
End.
Результаты выполнения программы
Введите A, B
4 2
A = 10.0 B = 8.0
В ветви THEN внешнего разветвления содержится ещё один оператор. Конструкция ELSE во внешнем ветвлении отсутствует. Ветвь ELSE относится к ближайшему IF, не имеющему ELSE. Структурированный вид программы предполагает написание соответствующих IF…THEN…ELSE друг под другом. Операторы, ограниченные операторными скобками BEGIN … END, записывают также друг под другом и следуют относительно BEGIN и END.