if

Урок 8. Блок-схема оператора if.

В предыдущих уроках мы рассмотрели наиболее простой, линейный тип алгоритмов. Напомню, что всего существует три типа: линейные, разветвляющиеся и циклические (алгоритмы с повторениями). В этом уроке я расскажу вам о втором типе алгоритмов — об алгоритмах с ветвлениями.

 

Ветвления

Ветвление – это команда алгоритма, в которой делается выбор, выполнять или не выполнять какую-нибудь группу команд в зависимости от условий.

Ветвление используется в двух случаях:

  1. Когда требуется пропустить определенную команду или группу команд.
  2. Когда нужно записать выбор тех или иных действий в зависимости от условия.

В блок-схеме условие ветвления изображается в ромбе, из которого обязательно выходят ДВЕ стрелки – первая (стрелка «Да») указывает на команды, которые будут выполняться в случае, если условие соблюдено; вторая (стрелка «Нет») – на команды, которые будут выполнены, если условие не соблюдено. Даже если команда, на которую указывает одна из стрелок (Чаще всего «Нет») отсутствует, стрелка все равно имеет место быть.

Алгоритм ветвления
Алгоритм с ветвлением, представленный в виде блок-схемы.

В словесной формулировке запись ветвления выглядит так:

ЕСЛИ <условие выбора > ТО <команды, выполняемые при соблюдении условия> ИНАЧЕ <команды, выполняемые при несоблюдении условия>

Реализация ветвления в Паскаль.

Как же реализовать ветвление в Паскаль? Проще, чем вы думаете:
if <условие выбора > then <команды, выполняемые при соблюдении условия> else <команды, выполняемые при несоблюдении условия>

Запомните! Перед else никогда не ставят точку с запятой!

Давайте поговорим об условии выбора. Понятно, что это логическое выражение. Если оно является правдой, то выполняется главная ветвь, если ложь, то боковая ветвь.

Задачи из блока if.

Рассмотрим несколько задач из сборника М.Э.Абрамяна «1000 задач по программированию».

If1. Дано целое число. Если оно является положительным, то прибавить к нему 1; в противном случае не изменять его. Вывести полученное число.

В данной программе даже не надо реализовывать боковую ветвь.

program if1;

var
  a: integer;

begin
  read(a);
  if a > 0 then Inc(a);
  write(a);
end.

If2. Дано целое число. Если оно является положительным, то прибавить к нему 1; в противном случае вычесть из него 2. Вывести полученное число.

 

program if2;

var
  a: integer;

begin
  read(a);
  if a > 0 then Inc(a) else a -= 2;
  write(a);
end.

If3. Дано целое число. Если оно является положительным, то прибавить к нему 1; если отрицательным, то вычесть из него 2; если нулевым, то заменить его на 10. Вывести полученное число.

Для того чтобы решить эту задачу мы должны использовать вложенный if.

Мы работаем в PascalABC.NET. Только в этой СР есть возможность написать а -= 2.
program if3;

var
  a: integer;

begin
  read(a);
  if a >= 0 then 
    if a = 0 then a := 10 else Inc(a) {перед else нет точки с запятой.}
   else a -= 2;
  write(a);
end.

If5. Даны три целых числа. Найти количество положительных и количество отрицательных чисел в исходном наборе.

Длиннющая блок-схема. 🙂
program if5;

var
  a, b, c, plus, minus: integer;

begin
  write('Введите три целых числа: ');
  read(a, b, c);
  plus := 0;
  minus := 0;
  if a > 0 then Inc(plus) else Inc(minus);
  if b > 0 then Inc(plus) else Inc(minus);
  if c > 0 then Inc(plus) else Inc(minus);
  writeln('Количество положительных чисел - ', plus);
  writeln('Количество отрицательных чисел - ', minus);
end.

If30. Дано целое число, лежащее в диапазоне 1–999. Вывести его строку-описание вида «четное двузначное число», «нечетное трехзначное число» и т. д.

if30

program if30;

var
  a: integer;

begin
  write('Введите число: ');
  read(a);
  if Odd(a) then write('Нечетное ') else write('Четное ');
  if a >= 100 then write('трехзначное число') else
    if a < 10 then write('однозначное число') else write('двухзначное число');
end.

Вот и все! Не забывайте кликать по кнопочкам и добавлять наш сайт в закладки!

  • Kopnu

    http://i2.wp.com/learnpascal.ru/wp-content/uploads/2014/02/if30.jpg?resize=510%2C819
    Где идет проверка на a>10 знаки спутали (> и <)

    • спасибо

      • Kopnu

        Рад помочь, хорошему сайту =) Вы потом такие же уроки по другим языкам выкладывайте… Например С++…

        • времени не хватает. может года через три — четыре learnc откроем, а может learnpython

  • Рушан

    Даны два угла треугольника (в градусах). Определить, существует ли такой треугольник, и если да, то будет ли он прямоугольным

    • alen_marzz

      Как-то так 🙂

  • Санек

    Чтобы определить: трехзначное ли число, лучше задать диапазон [100;999]

  • Алена

    Спасибо огромное вашему сайту, буду так же с нетерпением ждать на С++
    вы лучшие

  • Roman Pavlov

    Как придать цикличность этой программе?

    program calc;
    uses crt;
    var a, b, sum, min, umn, del: real;
    begin
    write (‘Введите 2 числа(через пробел)’);
    read(a,b);
    sum := a+b;
    min := a-b;
    umn := a*b;
    del := a/b;
    writeln (‘Сложение = ‘,sum);
    writeln (‘Вычитание = ‘,min);
    writeln (‘Умножение = ‘,umn);
    write (‘Деление = ‘,del:5:1);
    readkey;
    end.

    • Используйте циклы

      • Roman Pavlov

        Спасибо кэп… Знал бы какой именно, не спрашивал.

  • Карл

    If5. Даны три целых числа. Найти количество положительных и количество отрицательных чисел в исходном наборе.
    А что если в вашу блок-схему попадет 3 нуля? Вывод будет 3 отрицательных?