Цели:

  1. Сформировать понятие об условном операторе;
  2. Научиться использовать полный и неполный условный оператор;
  3. Получить навыки записи простых условий;
  4. Закрепить навыки использования условного оператора;
  5. Сформировать понятие о составном условии;
  6. Получить навыки записи составных условий.

Если в зависимости от первоначального условия задачи, должны выполняться различные выражения, то мы будем использовать условный оператор. Условный оператор может быть записан в полной и неполной форме.

Полная форма условного оператора

if <условие> then <оператор 1> else <оператор 2>

Неполная форма условного оператора

if <условие> then <оператор>

if then else – зарезервированные слова (если, то, иначе)

Рассмотрим несколько примеров:

|| Даны два числа. Найти большее из них.


                program zadacha3_1;                                // название программы
                var
                    max, x, y: real;                               // описание переменных
                Begin                                              // начало
                    writeln('Введите  число  x ');                 // вывод сообщения
                    readln(x);                                     // ввод x
                    writeln('Введите  число y ');                  // вывод сообщения
                    readln(y);                                     // ввод y
                    if x>y then max:=x                             // если x>y, то max присвоить значение x, иначе max присвоить значение y
                        else max:=y;                               // нахождение наибольшего из 2х чисел
                    writeln('большее из двух = ', max);            // вывод результата
                End.                                               //конец
            

|| Даны три числа. Найти максимальное.


                program zadacha3_2;                                // название программы
                var
                    max, x, y, z: real;                            // описание переменных
                Begin                                              // начало
                    writeln('Введите  три числа ');                // вывод сообщения
                    readln(x, y, z);                               // ввод x, y, z
                    if x>y then max:=x                             // если x>y, то max присвоить значение x, иначе max присвоить значение y
                        else max:=y;
                    if z>max then max:=z;                          // если z>max, то max присвоить значение z
                    writeln('большее из трёх =', max);             // вывод результата
                End.                                               //конец
            

|| Задано число a. Кратно ли оно 3.


                program zadacha3_3;                                // название программы
                var
                    а: longint;                                    // описание переменных
                Begin                                              // начало
                    writeln('Введите число');                      // вывод сообщения
                    readln(а);                                     // ввод a
                    if a mod 3=0 then writeln(a,' кратно 3’)       // если остаток от деления a на 3 равен 0, то вывести сообщение a кратно 3
                        else  writeln(a,' не кратно 3’);           // иначе вывести сообщение a не кратно 3
                End.                                               //конец
            

Вместо условия a mod 3=0 напишите условие int(a/3)=a/3. Придумайте свои условия и проверьте их правильность.

|| Дано число. Дать характеристику числа:

  • положительное, отрицательное;
  • чётное, нечётное;
  • целое, не целое.


                program zadacha3_4;                                // название программы
                var
                    a: real;
                    k, m, p: string;                               // описание переменных
                Begin                                              // начало
                    writeln('Введите  число');                     // вывод сообщения
                    readln(a);                                     // ввод a
                    if a<0 then k:='отрицательное'                 // если a<0, то k присвоить значение 'отрицательное' 
                        else k:=' положительное';                  // иначе k присвоить значение 'положительное'
                    if a=int(a) then m:=' целое'                   // если a равно целой части от a, то m присвоить значение 'целое' 
                        else m:='не целое';                        // иначе m присвоить значение 'не целое'
                    if a/2=int(a/2) then p:=' чётное'              // если a/2 равно целой части от a/2, то p присвоить значение 'четное' 
                        else p:=' нечётное ';                      // иначе p присвоить значение 'нечетное'
                    writeln('число  ',a,' ; ',k,' ; ',m,' ; ',p);  // вывод результата
                End.                                               //конец
            

|| Дано три числа x, y, z. Вычислить сумму только положительных чисел из трех данных.


                program zadacha3_5;                                // название программы
                var
                    x, y, z, sum: real;                            // описание переменных
                Begin                                              // начало
                    writeln('Введите три числа');                  // вывод сообщения
                    readln(x, y, z);                               // ввод x, y, z
                    sum:=0;                                        // обнуляем переменную sum
                    if x>0 then  sum:=sum+x;                       // если x>0, то sum присвоить значение sum+x 
                    if y>0 then  sum:=sum+y;                       // если y>0, то sum присвоить значение sum+x 
                    if z>0 then  sum:=sum+z;                       // если x>0, то sum присвоить значение sum+x (суммируется значение суммы полученное в предыдущих действиях)
                    writeln('сумма положительных чисел = ',sum);   // вывод результата
                End.                                               //конец
            

Условия, которые мы до сих пор использовали, являются простыми. Если после служебного слова if проверяется только одно условие (а mod 3=0; a>b; k=1), то такое условие будем называть простым условием.

Если после служебного слова if возникает необходимость проверить сразу несколько условий, то группу таких простых условий будем называть составным условием. При написании составных условий, каждое из простых условий, входящих в составное, берётся в скобки. Можно использовать союзы and(и) или or(или).

Рассмотрим следующий пример:

|| Даны два числа а, b (a,b≠0). Ответить одного ли знака введённые числа.

Разберём данную задачу. Здесь возможны четыре варианта входных данных, для каждого из которых запишем отдельное составное условие:

a b Ответ
a>0 b>0 одного знака
a<0 b<0 одного знака
a>0 b<0 разные знаки
a<0 b>0 разные знаки


                program zadacha3_6a;                                            // название программы
                var
                    a, b: real;                                                 // описание переменных
                Begin                                                           // начало
                    writeln('Введите  два числa');                              // вывод сообщения
                    readln(a, b);                                               // ввод a, b
                    if (a>0) and (b>0) then writeln('числа одного знака');      // если a>0 и b>0, то выводим сообщение 'числа одного знака'
                    if (a<0) and (b<0) then writeln('числа одного знака');      // если a<0 и b<0, то выводим сообщение 'числа одного знака'
                    if (a>0) and (b<0) then writeln('числа разных знаков');     // если a>0 и b<0, то выводим сообщение 'числа разных знаков'
                    if (a<0) and (b>0) then writeln('числа разных знаков');     // если a<0 и b>0, то выводим сообщение 'числа разных знаков'
                End.                                                            //конец
            

А можно ли сделать нашу программу более красивой или более короткой? Да, можно. Давайте объединим первое и второе составные условия.


                program zadacha3_6b;                                            // название программы
                var
                    a, b: real;                                                 // описание переменных
                Begin                                                           // начало
                    writeln('Введите  два числa');                              // вывод сообщения
                    readln(a, b);                                               // ввод a, b
                    if ((a>0) and (b>0)) or ((a<0) and (b<0))                   // если (a>0 и b>0) или (a<0 и b<0), 
                        then writeln('числа одного знака')                      // то выводим сообщение 'числа одного знака'
                            else writeln('числа разных знаков');                // иначе выводим сообщение 'числа разных знаков'
                End.                                                            //конец
            

Программа стала действительно короче. Но в примере 3_6b составное условие состоит в свою очередь из двух составных условий. Просмотрите, как расставлены скобки.

А можно ли и эту программу сделать более красивой или более короткой? Можно. Приведём новую версию проверки условия для данной программы:


                if a*b>0 then writeln('числа одного знака')
		            else writeln('числа разных знаков');
            

Замените условие в компьютере и убедитесь, что оно работает верно.

|| Дано натуральное число. Проверить, является ли число двузначным, у которого первая цифра равна последней.


                program zadacha3_7;                                             // название программы
                var
                    a: integer;                                                 // описание переменных
                Begin                                                           // начало
                    writeln('Введите натуральное число');                       // вывод сообщения
                    readln(a);                                                  // ввод a
                    if (a mod 10=a div 10) and (a>9) and (a<=99)                // если остаток от деления a на 10 равен целочисленному делению a на 10 и a>9 и a<99
                        then writeln('является')                                // то выводим сообщение 'является'
                            else writeln('не является');                        // иначе выводим сообщение 'не является'
                End.                                                            //конец
            

Вопросы для повторения:

  1. Какие формы записи оператора if вам известны?
  2. Объясните исполнение оператора if.
  3. Для чего в задаче 3_5 переменная sum первоначально была обнулена?
  4. Что такое составное условие?
  5. В чём отличие составного условия от простого?
  6. Какие союзы используются при написании составного условия?
  7. Зачем в задаче 3_6b используются двойные скобки?

Задания для самостоятельной работы:

  1. Задано x, вычислить у:
  2. Даны три числа. Найти минимальное число.
  3. Задано натуральное число a. Является ли оно чётным? Решите задачу a) Используя операцию mod; b) используя функцию int.
  4. Задано натуральное число a. Является ли оно кратным 7? Заканчивается ли оно на 0?
  5. Дано трехзначное число. Кратна ли сумма его цифр шести?
  6. Дано целое число a>9. Больше ли цифра десятков цифры единиц?
  7. Дано двузначное число. Является ли сумма его цифр однозначным числом.
  8. Даны два вещественных числа. Уменьшить первое число в пять раз, если оно больше второго по абсолютной величине.
  9. Заданы четыре целых числа x, y, z, w. Вычислить сумму только четных чисел из четырёх заданных.
  10. Дано три числа x, y, z. Вычислить количество чисел больших 7.
  11. Проверить, является ли число трехзначным, у которого первая цифра равна последней.
  12. Определить, является ли данное целое число N нечетным четырехзначным числом.
  13. Вывести на экран номер четверти, которой принадлежит точка с координатами (x, y), при условии, что x и y отличны от 0.
  14. Заданы действительные x и у. Принадлежит ли точка (x, y) заштрихованной части плоскости:
  15. Дано натуральное число N (N<100), определяющее возраст человека в годах. Дать для этого числа наименование: "год", "года", "лет".