Оператор условия if является одним из самых популярных средств, изменяющих естественный порядок выполнения операторов программы.
Условный оператор используется для реализации разветвлений в программе, которые происходят при выполнении некоторого условия.
Синтаксическая диаграмма оператора условия if выглядит так:
Как видно из диаграммы, он может принимать одну из следующих форм:
Полная (расширенная) форма оператора if:
If <условие> then <Серия1> | если <условие> То <Серия 1> |
else <Серия2>; | Иначе <Серия2>; |
Выполнение условного оператора начинается с вычисления значения логического выражения, записанного в условии. Простые условия записываются в виде равенств или неравенств. Сложные условия составляют из простых с помощью логических операций. В результате его вычисления получается выражение булевского типа.
Если логическое выражение, выступающее в качестве условия, принимает значение True (истина), то управление передаётся операторам < Серия1> (это может быть один оператор или несколько операторов, заключенных в операторные скобки begin-end), расположенным после then (ТО), после чего управление передаётся оператору, следующему сразу за оператором if (т. е. стоящему после ; ).
Если логическое выражение, выступающее в качестве условия, принимает значение False (ложь), то управление передаётся операторам <Серии 2> (это также может быть один оператор или несколько операторов, заключенных в операторные скобки), расположенным после else, после чего выполняется оператор, следующий сразу за оператором if (т. е. стоящему после ; ).
При записи логического выражения следует избегать знака = (равно) для действительных переменных, так как они представляются неточно, а поэтому может не произойти совпадений значений выражений, стоящих слева и справа от знака равно. Для устранения указанного недостатка следует требовать выполнения условия с заданной точностью, т. е. вместо отношения X = Y рекомендуется, например,
Abs(X - Y) < 1E-8.
Поскольку развилка может быть неполной, то возможна и неполная форма записи условного оператора:
IF <логическое выражение> THEN серия;
![]() | ![]() |
Полное ветвление Неполное ветвление
Условный оператор реализует разветвление вычислительного процесса по двум направлениям, одно из которых осуществляется при выполнении условия, другое — в противном случае.
Рассмотрим примеры.

program prim1;
uses crt;
var a, b, y: integer;
begin
writeln(‘введи два числа’);
readln(a, b);
If a=1 then y:= a+b else y:=a-b;
Writeln (‘Значение выражения=’, y);
End.
Здесь используется полная форма оператора if.
Решение этого же примера можно записать, используя два оператора if неполной формы:
program prim2;
uses crt;
var a, b, y: integer;
begin
writeln(‘введи два числа’);
readln(a, b);
If a=1 then y:= a+b else y:=a-b;
If a=1 then y:= a+b;
If a<>1 then y:= a-b;
Writeln(‘Значение выражения=’, y);
End.
Для реализации разветвлений более чем по двум направлениям необходимо использовать несколько вложенных условных операторов.


program prim3;
uses crt;
var a, b, y: integer;
begin
writeln(‘введи два числа’);
readln(a, b);
If a=1 then
If b<=3 then y:= a+b
else y:=a-b
else y:=0;
Writeln(‘Значение выражения=’, y);
End.
При использовании вложенных условных операторов может возникнуть синтаксическая неоднозначность, иллюстрируемая следующей схемой:
If условие1 then if условие2 then <оператор1> else <оператор2>;
Возникающая двусмысленность, к какому оператору if принадлежит часть else <оператор2>, разрешается тем, что служебное слово else всегда связывается с ближайшим по тексту служебным словом if , которое ещё не связано служебным словом else.
Этот пример можно решить, не используя вложенных условных операторов.
program prim4;
uses crt;
var a, b, y: integer;
begin
writeln(‘введи два числа’);
readln(a, b);
If (a=1) and ( b<=3) then y:= a+b;
If (a=1) and ( b>3) then y:= a-b;
If a<>1 then y:=0;
Writeln(‘Значение выражения=’, y);
End.
![]()
Умение решать задачи – такое же практическое искусство, как умение плавать или бегать на лыжах. Ему можно научиться только путем подражания или упражнения.
Дъердъ Пойа
Задача 1.
Даны два числа А и В. Найти наибольшее из них.
Решение.
program prim1;
uses crt;
var a, b: integer; {Описываем переменные А и В как целые.}
begin
writeln(‘введи два числа’); {Выводим на экран сообщение}
|
if a>b then writeln (‘максимальное число=’, a)
else writeln (‘максимальное число=’, b);
readln;
end.
Задача 2 решается у доски под контролем преподавателя
Задача 2.
Какими будут значения переменных j, k после выполнения условного оператора:
If j>k Then j = k-2 Else k=k-2;
если исходные значения переменных равны:
1) j=3, k=5; 2)j=3, k=3; 3)j=3, k=2 .
Решение.
При j=3, k=5 получим:
Так как условие j>k не выполняется, то выполняется k=k-2, то есть
k=5-2, k=3.
Ответ: j=3, k= 3.
При j=3, k= 3 получим:
Так как условие j>k не выполняется, то выполняется k=k-2, то есть
k=3-2, k=1.
Ответ: j=3, k= 1.
При j=3, k=2 получим:
Так как условие j>k выполняется, то выполняется j = k-2, то есть
j =2-2, j=0.
Ответ: j=0, k= 2.
Задача 3.
Ввести три числа a,b,c. Определить сумму отрицательных чисел.
program prim3;
uses crt;
var a, b,c, sum: integer; {Описываем переменные как целые.}
begin
writeln(‘введи три числа’); {Выводим на экран сообщение}
readln(a,b,c); {Вводим три целых числа.}
Sum:=0;
if a<0 then Sum:=Sum+a;
if b<0 then Sum:=Sum+b;
if c<0 then Sum:=Sum+c;
writeln (‘сумма отрицательных чисел =’, Sum);
readln;
end.
Задача 4.
Ввести три числа a,b,c. Определить произведение отрицательных чисел.
program prim4;
uses crt;
var a, b,c, Proiz: integer; {Описываем переменные как целые.}
begin
writeln(‘введи три числа’); {Выводим на экран сообщение}
readln(a,b,c); {Вводим три целых числа.}
Proiz:=1;
if a<0 then Proiz := Proiz *a;
if b<0 then Proiz := Proiz *b;
if c<0 then Proiz := Proiz *c;
writeln (‘произведение отрицательных чисел =’, Proiz);
readln;
end.
Задача 5.
Ввести три числа a,b,c. Определить количество отрицательных чисел.
program prim5;
uses crt;
var a, b,c, kol: integer; {Описываем переменные как целые.}
begin
writeln(‘введи три числа’); {Выводим на экран сообщение}
readln(a,b,c); {Вводим три целых числа.}
kol :=0;
if a<0 then kol := kol +1;
if b<0 then kol := kol +1;
if c<0 then kol := kol +1;
writeln (‘количество отрицательных чисел =’, kol );
readln;
end.
Задача 6.
Ввести три числа a,b,c. Напечатать все отрицательные числа.
program prim6;
uses crt;
var a, b,c: integer; {Описываем переменные как целые.}
begin
writeln(‘введи три числа’); {Выводим на экран сообщение}
readln(a,b,c); {Вводим три целых числа.}
if a<0 then writeln (‘отрицательное число a =’, a);
if b<0 then writeln (‘отрицательное число b =’, b);
if c<0 then writeln (‘отрицательное число с =’, с);
readln;
end.
Задача 7.
Ввести три числа a,b,c. Напечатать все четные числа.
program prim7;
uses crt;
var a, b,c: integer; {Описываем переменные как целые.}
begin
writeln(‘введи три числа’); {Выводим на экран сообщение}
readln(a,b,c); {Вводим три целых числа.}
if a mod 2 =0 then writeln (‘четное число a =’, a);
if b mod 2 =0 then writeln (‘четное число b =’, b);
if c mod 2 =0 then writeln (‘четное число с =’, с);
readln;
end.
Задача 8.
Ввести три числа a,b,c. Напечатать все числа кратные числу 7.
program prim7;
uses crt;
var a, b,c: integer; {Описываем переменные как целые.}
begin
writeln(‘введи три числа’); {Выводим на экран сообщение}
readln(a,b,c); {Вводим три целых числа.}
if a mod 7 =0 then writeln (‘число a кратное 7 =’, a);
if b mod 7 =0 then writeln (‘число b a кратное 7 =’, b);
if c mod 7 =0 then writeln (‘число с a кратное 7 =’, с);
readln;
end.
Задача 9.
Ввести три числа a,b,c. Напечатать все числа в интервале от 7 до 15.
program prim9;
uses crt;
var a, b,c: integer; {Описываем переменные как целые.}
begin
writeln(‘введи три числа’); {Выводим на экран сообщение}
readln(a,b,c); {Вводим три целых числа.}
if (a>7) and (a<9) then writeln (‘число a лежит в интервале от 7 до 9 и равно ’, a);
if (b >7) and (b<9) then writeln (‘число b лежит в интервале от 7 до 9 и равно ’, b);
if (c >7) and (c <9) then writeln (‘число c лежит в интервале от 7 до 9 и равно ’, с);
readln;
end.
Задача 10.
Ввести три числа a,b,c. Найти и напечатать среднее арифметическое чисел кратных заданному числу К.
program prim9;
uses crt;
var a, b,c,k, kol,sum: integer; {Описываем переменные как целые.}
Cred_arif: real; {Описываем переменную как дробную (действительную)}
begin
writeln(‘введи число k’); {Выводим на экран сообщение}
readln(k); {Вводим число k.}
writeln(‘введи три числа’); {Выводим на экран сообщение}
readln(a,b,c); {Вводим три целых числа.}
if a mod k =0 then begin Sum:=Sum+a; kol := kol +1 end;
if b mod k =0 then begin Sum:=Sum+b; kol := kol +1 end;
if c mod k =0 then begin Sum:=Sum+c; kol := kol +1 end;
Cred_arif:= Sum/ kol;
writeln (‘Среднее арифметическое чисел кратных k =’, Cred_arif:5:2);
readln;
end.


проверка домашнего задания
Эталоны ответов на сканворд для проверки
домашнего задания
Сканворд
На дом учащимся предлагался сканворд, в котором необходимо было найти как изученные операторы языка программирования Pascal, так и еще неизвестные, и ответить на дополнительные вопросы. Слова в сканворде могут располагаться как по горизонтали (справа налево или слева направо) так и по вертикали (снизу вверх или сверху вниз) и змейкой. В данном сканворде нельзя было использовать одну букву в разных словах.
Учащиеся обмениваются тетрадями и проверяют домашнее задание, активно обсуждая, его друг с другом и учителем. Не обнаруженные никем из ребят слова учитель не называет, но помогает найти их на завершающем этапе — при работе над дополнительными вопросами. Так, после ответа на некоторые из них можно спросить: не зашифрованы ли соответствующие (еще не найденные) слова-ответы в сканвордной сетке?
Ответы на вопросы домашнего задания рассматриваются частично при разгадывании сканворда, а после урока проверяются учителем.
Образец выполнения домашнего задания:

Эталоны ответов к домашнему заданию (сканворд)
Сканворд | Ответ на сканворд | ||||||||
B | W | C | O | I | F | C | R | M | Изученные операторы: BEGIN, CONST, DIV, END, INTEGER, MOD, READ, VAR, READLN, AND, PROGRAM, REAL, WRITELN; Не изученные операторы: IF, CASE, OF, THEN |
E | R | I | N | R | R | A | E | O | |
G | I | T | S | E | E | S | A | D | |
E | N | E | T | A | A | E | D | I | |
N | O | L | V | D | L | E | T | N | |
D | F | N | A | L | N | G | E | R | |
A | N | D | R | P | R | O | G | R | |
T | H | E | N | D | I | V | M | A |
контроль исходного уровня знаний
![]()
1. Дайте определение языка программирования.
2. Какова структура программы на языке Turbo Pascal?
3. Из чего состоит заголовок программы?
4. Какие ограничения на имя программы Вы знаете ?
5. Далее идёт раздел описаний. Каким ключевым словом обозначается раздел описания переменных?
6. Какие атрибуты Вам известны для описания переменных?
7. После раздела описаний идет тело программы. С какого служебного слова начинается тело программы?
8. Из чего состоит тело программы?
9. Что такое оператор программы?
10. Как записываются операторы программы?
11. Любая программа взаимодействует с пользователем с помощью операторов …?
12. Ввод информации с клавиатуры осуществляется с помощью оператора…?
13. Формат оператора READ?
14. Для вывода информации на экран используется оператор?
15. Формат оператора WRITE?
16. Для чего применяется знак присваивания и как он выглядит?
17. Что Вы можете сказать о целочисленном делении?
18. Что необходимо сделать для запуска программы?
19. Что необходимо сделать для просмотра результата?
20. Как сохранить программу?
Эталоны ответов на вопросы фронтального опроса (для преподавателя)
1. Дайте определение языка программирования. (Язык программирования – это совокупность средств и правил представления алгоритма в виде, приемлемом для компьютера.)
2. Какова структура программы на языке Turbo Pascal? (Любая программа на Паскале имеет определенную структуру:
Ø Заголовок программы;
Ø Раздел описаний;
Ø Тело программы);
3. Из чего состоит заголовок программы? (Заголовок программы является хотя и необязательным, но желательным элементом и состоит из зарезервированного слова program и идентификатора - имени программы, за которым следует точка с запятой.)
4. Какие ограничения на имя программы Вы знаете? (В имени программы не должно быть пробелов, оно не должно начинаться с цифры, может состоять только из латинских букв, цифр и символа “_” (подчеркивания)).
5. Далее идёт раздел описаний. Каким ключевым словом обозначается раздел описания переменных? (Каждая переменная, встречающаяся в программе, должна быть описана в разделе описаний переменных. Он начинается со служебного (ключевого) слова Var, после которого идет последовательность объявления переменных, разделенных точкой с запятой. В каждом объявлении перечисляются через запятую имена переменных (идентификаторы) одного типа, после каждого списка ставится двоеточие и указывается тип переменных списка)
6. Какие атрибуты Вам известны для описания переменных? (Атрибут integer – для описания переменных целого типа, и атрибут real – для описания дробных переменных);
7. После раздела описаний идет тело программы. С какого служебного слова начинается тело программы? (Тело программы начинается со служебного слова Begin)
8. Из чего состоит тело программы? (состоит из операторов)
9. Что такое оператор программы? (Оператором называется предложение языка программирования, задающее полное описание некоторого действия, которое необходимо выполнить)
10. Как записываются операторы программы? (Операторы программы можно записывать подряд несколько в одной строке, так как они разделяются специальным знаком «;» (точка с запятой));
11. Любая программа взаимодействует с пользователем с помощью операторов …? (Ввода-вывода)
12. Ввод информации с клавиатуры осуществляется с помощью оператора…? (READ)
13. Формат оператора READ?
READ(а, b,...)
READLN(а, b,..,), где а, b,... - имена вводимых переменных
READLN - применяется, когда исполнение программы желательно задержать до нажатия клавиши ENTER.
14. Для вывода информации на экран используется оператор?( WRITE)
15. Формат оператора?
WRITE(а, b,...)
WRITELN(а, b,..), где а, b,... - список выводимых констант, переменных, выражений.
16. Для чего применяется знак присваивания и как он выглядит? (Операция присваивания применяется для записи информации в объявленную в программе переменную. Знак операции присваивания «:=» (двоеточие-равно))
17. Что Вы можете сказать о целочисленном делении? (Целочисленное деление – это деление нацело, т. е. деление с остатком)
18. Что необходимо сделать для запуска программы? (Для запуска программы необходимо в подменю RAN выбрать опцию RAN или использовать аккорд клавиш Ctrl+F9.)
19. Что необходимо сделать для просмотра результата? (Для просмотра результата использовать аккорд клавиш Alt+F5.)
20. Как сохранить программу? (Для того чтобы сохранить программу, необходимо:
- в главном меню выбрать меню File;
- в вертикальном меню выбрать пункт Save или Save as...(для первого сохранения не имеет значения);
- в появившемся окне набрать имя файла и нажать клавишу <Enter>.

При изучении наук примеры полезнее, чем правила.
Исаак Ньютон
материалы для закрепления изученного
Вопросы | Ответы |
Какое минимальное количество разделов может быть в программе в Turbo Pascal? Назовите их. | Один — раздел операторов |
Назовите основные типы данных и соответствующие им стандартные имена, используемые в сканворде. | Целочисленный тип — INTEGER, вещественный тип — REAL, логический — BOOLEAN. |
Укажите, какие операции деления возможны над данными целочисленного типа. Поясните их результат и назовите соответствующее стандартное имя, используемое в программе. | а. MOD; б. DIV. |
Укажите типы данных, в которых нет возможности ввода данных с помощью оператора READ. | Логический тип данных — BOOLEAN. |
Назовите операцию, которая в целочисленном типе данных невозможна, а в вещественном типе данных имеет место. Объясните причину невозможности. | Обычное деление. Данная операция невозможна над данными целочисленного типа, так как в результате его могут получиться дробные числа, а целочисленному типу могут быть присвоены только целые значения переменных. |
Перечислите операторы, которые могут использоваться для организации линейных алгоритмов. | BEGIN, END, READ. |
Назовите операторы для программ с разветвляющейся конструкцией. | IF... THEN... ELSE. |
Укажите форматы условного оператора, нарисуйте их блок-схемы. Перечислите используемые операторы для каждой из форм. | Неполная — IF... THEN, полная — IF... THEN... ELSE. |
Компьютерное тестирование
1. Какая из следующих последовательностей символов является условным оператором?
1) if a>b then m:=a; else m:=b;
2) if a>b then m >c;
3) if a>b then m=a else m=b;
4) if a>b then m:=a;
2.Результат после выполнения операторов А:=5; B:=7;if A>B then if A>0 then A:=2*A else b:=2*b;
1) A=5 B=7
2) A=5 B=14
3) A=10 B=14
4) A=10 B=7
3.После выполнения операторов А:=2; B:=4;if A>B then A:=2*A; b:=2*b;результат равен
1) A=4 B=8
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 |




