Меню
Спросить
({ })

Условия IF THEN, ELSE

13 февраля 2017
Условия IF THEN, ELSE

Всем привет. На улице минус пять и ни какого ветра, да и снег почти не идет. Думаю недельки через две весна уже будет с нами и мы будем лепить снеговиков из грязи и остатков снега, пускать кораблики по ручейкам, морщится, смотря в окно на солнышко, уберем зимние куртки в долгий ящик и достанем от туда же легкую весеннюю олимпийку. Конечно же через две недели этого не будет, но я все же надеюсь. А пока, продолжим изучение программирования, в этом нам поможет Pascal.
Это седьмая часть по программированию для начинающих, мы уже не мало узнали, но сегодня узнаем еще больше и закрепим багаж знаний хорошей практикой. Сегодня мы начнем изучать ветвящиеся алгоритмы и познакомимся с условиями и операторами "IF" и "ELSE".

Разветвленный алгоритм

Кто пропустил, советую почитать и посмотреть статью про алгоритмы.
До этого мы практиковались на линейных алгоритмах, то есть программа у нас работала прямолинейно и не зависела от каких-либо условий, но сегодня мы этот пробел заполним и будем работать уже не так предсказуемо.

IF then

Начнем с оператора IF, читается как "ИФ". Дословно это означает "ЕСЛИ".
После оператора IF, идет оператор THEN, дословно "ТОГДА".
Я предлагаю читать их дословно, чтобы лучше понимать, что происходит вообще.
Посмотрим на примере, как это выглядит в коде.

  1. if ( a>b ) then

А теперь дословно это переведем

  1. if ( a>b ) then
  2. ЕСЛИ ( a больше b ) ТОГДА

Тогда выполняем условие

Ветвящийся(разветвленный) алгоритм

Вспомним машинку

  1. ЕСЛИ ( машинка есть ) ТОГДА садимся и едем

Начинаем понимать? Отлично идем дальше и рассмотрим оператор ELSE, потом практикуемся на реальной задаче для полного понимания.

ELSE

Оператор ELSE читается как "ЭЛЗЭ", дословно это можно понять как "В ПРОТИВНОМ СЛУЧАЕ".
Посмотрим на пример

  1. if ( a>b ) then
  2. ЕСЛИ ( a больше b ) ТОГДА
  3. else
  4. В ПРОТИВНОМ СЛУЧАЕ

В противном случае, это как раз тот случай когда "a" оказалась НЕ больше "b".
А теперь машинка

  1. ЕСЛИ ( машинка есть ) ТОГДА садимся и едем
  2. В ПРОТИВНОМ СЛУЧАЕ идем пешком

Калькулятор

Лично у меня бы в голове не полностью бы все прояснилось если бы я не написал бы пример какой-нибудь.
Поэтому, предлагаю написать калькулятор на Pascal для полного закрепления информации.
Поехали =)

  1. program calc;
  2. uses crt;
  3. var
  4. znak: char;
  5. a,b,c: real;
  6. otv: boolean;
  7. begin
  8. clrscr;
  9. writeln( '--------------------' );
  10. writeln( '"+" - сложения     |' );
  11. writeln( '"-" - вычитание    |' );
  12. writeln( '"*" - умножение    |' );
  13. writeln( '"/" - деление      |' );
  14. writeln( '____________________' );
  15. write( 'Введите знак для операции ' );
  16. read(znak);
  17. if ( znak = '+' )
  18. then
  19.   begin
  20.     writeln( 'Вы выбрали знак сложения - "'+znak+'"' );
  21.     writeln('');
  22.     write( 'Введите первое число ' );
  23.     read(a);
  24.     write( 'Введите второе число ' );
  25.     read(b);
  26.     c:= a+b;
  27.     otv:= true;
  28.   end
  29. else if ( znak = '-' )
  30. then
  31.   begin
  32.     writeln( 'Вы выбрали знак вычитания - "'+znak+'"' );
  33.     writeln('');
  34.     write( 'Введите первое число ' );
  35.     read(a);
  36.     write( 'Введите второе число ' );
  37.     read(b);
  38.     c:= a-b;
  39.     otv:= true;
  40.   end
  41. else if ( znak = '*' )
  42. then
  43.   begin
  44.     writeln( 'Вы выбрали знак умножения - "'+znak+'"' );
  45.     writeln('');
  46.     write( 'Введите первое число ' );
  47.     read(a);
  48.     write( 'Введите второе число ' );
  49.     read(b);
  50.     c:= a*b;
  51.     otv:= true;
  52.   end
  53. else if ( znak = '/' )
  54. then
  55.   begin
  56.     writeln( 'Вы выбрали знак деления - "'+znak+'"' );
  57.     writeln('');
  58.     write( 'Введите первое число ' );
  59.     read(a);
  60.     write( 'Введите второе число ' );
  61.     read(b);
  62.     c:= a/b;
  63.     otv:= true;
  64.   end
  65. else
  66.   begin
  67.     writeln( 'Ошибка: Знак не распознан!' );
  68.     otv:= false;
  69.   end;

  70. if ( otv = true )
  71.   then
  72.     begin
  73.       writeln( 'Ответ:' );
  74.       writeln( a+' '+znak+' '+b+' = '+c );
  75.     end;
  76. readkey;
  77. end.

Вот собсна и сам калькулятор.
Давайте разбираться.

В разделе "var" мы объявляем переменные, это мы знаем.
Дальше с 9 по 14 строчку мы выводим подсказки для пользователя.
На 15 строке мы выводим подсказку о том, что просим ввести один из четырех знаков, в 16 строчке мы введенное значение считываем.
Теперь, после того как мы записали введенный знак в переменную "znak", мы начинаем с ней работать.
Начинаю с 17 строчки с помощью оператора IF проверяем
ЕСЛИ (переменная znak равна символу плюс)
18 строчка - ТОГДА
19 строчка - открываем логические скобки
Логические скобки мы открываем только в том случае если мы будем выполнять больше одного действия, если жен действие одно, то логические скобки ни к чему.
Строка под номер 20 - выводим текст о том, какой знак выбрал пользователь, дальше пустая строчка(просто так)
22 - Выводим текст о том, что просим пользователя ввести первое число, дальше считываем введенное число в переменную "a" и тоже самое делаем с переменно "b"
Строка 26 - Присваиваем переменной "c" сумму двух чисел.
Дальше присваиваем переменной "otv" значение "true", это будет говорить нам о том, что пользователь ввел знак, а не посторонний символ.
И строка 28, мы закрываем логические скобки, но в конце не стами ни точку ни точку с запятой, потому что дерево условий не закончилось, ведь впереди еще четыре оператор ELSE и лишь когда это будет последнее условие, мы у логических скобок в конце должны поставить точку с запятой.

Теперь подытожим
Просим пользователя ввести знак, считываем введенный символ в переменную "znak"
Проверяем, ЕСЛИ переменная "znak" равна символу плюс, ТОГДА делаем действия для символа плюс
29 строка В ПРОТИВНОМ СЛУЧАЕ ЕСЛИ знак равен символу минус...
и поехали по тому же условию по тем же действиям только изменяя нужные строчки под свой знак, будь то умножение или деление или минус.

После того, как мы проверили все четыре знака, и в случае если пользователь не ввел ни одного из них, у нас сработает условие на 65 строчке и выйдет ошибка, так же переменной "otv" мы присваиваем значение "false"

И в конце мы проверяем
ЕСЛИ переменная "otv" равна true(истинно)
ТОГДА выводи ответ
Мы делаем эту проверку потому, что в каждом из условий мы присвоили значение true только в том случае если пользователь ввел один из четырех знаков, тогда ответ мы выведем, если же у нас вышла ошибка и переменной присвоено значение "false" то мы ни чего не делаем, то есть ни какой ответ не выводим.

Заключение

Запустите программу попробуйте все возможные действия, попробуйте написать свою программу.
Всем спасибо.
Пока =)

Следующая статьяПредыдущая статья