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

В словесной формулировке запись ветвления выглядит так:
ЕСЛИ <условие выбора > ТО <команды, выполняемые при соблюдении условия> ИНАЧЕ <команды, выполняемые при несоблюдении условия>
Реализация ветвления в Паскаль.
Как же реализовать ветвление в Паскаль? Проще, чем вы думаете:
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.

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. Вывести его строку-описание вида «четное двузначное число», «нечетное трехзначное число» и т. д.
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.
Вот и все! Не забывайте кликать по кнопочкам и добавлять наш сайт в закладки!
http://i2.wp.com/learnpascal.ru/wp-content/uploads/2014/02/if30.jpg?resize=510%2C819
Где идет проверка на a>10 знаки спутали (> и <)
спасибо
пожалуйста!!
Рад помочь, хорошему сайту =) Вы потом такие же уроки по другим языкам выкладывайте… Например С++…
времени не хватает. может года через три — четыре learnc откроем, а может learnpython
три года прошло где все обещанное
Вы будете смеяться, но весь этот сайт — результат двухлетней работы пары школьников. Сейчас мы уже в институте, и времени на все это решительно не хватает. Наверное, ничего так и не появится. А возможно, пройдет еще несколько лет, и мы все же решим осуществить что-нибудь такое. Кто знает 🙂
талантливые школьники однако)
Хех, будем ждать) Так, из любопытства, вы из какого города?
Каменск-Шахтинский
Я, на самом деле, даже подумывала на каникулах написать пару статей про алгоритмы.
Различные сортировки и реализации каких-нибудь примитивненьких структур вроде кучи, деревьев и т.д.
Но как-то руки так и не дошли 🙁
Даны два угла треугольника (в градусах). Определить, существует ли такой треугольник, и если да, то будет ли он прямоугольным
Как-то так 🙂
Чтобы определить: трехзначное ли число, лучше задать диапазон [100;999]
Смысл тогда в такой задаче? оно в любом случае будет трехзначным
Спасибо огромное вашему сайту, буду так же с нетерпением ждать на С++
вы лучшие
Как придать цикличность этой программе?
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.
Используйте циклы!
Спасибо кэп… Знал бы какой именно, не спрашивал.
If5. Даны три целых числа. Найти количество положительных и количество отрицательных чисел в исходном наборе.
А что если в вашу блок-схему попадет 3 нуля? Вывод будет 3 отрицательных?
Я исправил.
После введения chose1=Нет,программа исполняет комманды при условии chose1=Да,что делать?
program justtryit;
var
name:string;
chose1:string;
chose2:string;
chose3:string;
begin
Writeln(‘Имя: ‘);
Readln(name);
Writeln(name,’ сегодня ты попадешь в странную страну,в которой есть страх и голод,выживешь или нет,все зависит от твоего выбора’);
Writeln(‘Ты готов?(Да/Нет): ‘);
Readln(chose1);
if chose1=’Нет’ then
Writeln(‘Чтоже,тогда закрывай программу’);
if chose1=’Да’ then
Writeln(‘Тогда начнем’);
Writeln(‘Ты просыпаешся в кровати от стука в окно.’);
Writeln(‘Тебе страшно,но интересно,ведь ты живешь на 6 етаже:Спать дальше/Подойти к окну’);
Readln(chose2);
if chose2=’Подойти к окну’ then
Writeln(‘Только подошел к окну и увидел тварь с черными глазами и она потянулась за тобой в окно’);
if chose2=’Спать дальше’ then
Writeln(‘Ты все испортил,скучный чел’);
Readln;
end.
И еще,у меня при запуске проги через ЕХЕ файл,рус яз не одображается,что делать?
Прошу исправить If5. Правильное решение этой задачи выглядит вот так:
program if5;
var
a, b, c, plus, minus: integer;
begin
write(‘Введите три целых числа: ‘);
read(a);
read(b);
read(c);
plus := 0;
minus := 0;
if a > 0 then Inc(plus)
else if a 0 then Inc(plus)
else if b 0 then Inc(plus)
else if c < 0 then Inc(minus);
writeln('Количество положительных чисел: ', plus);
writeln('Количество отрицательных чисел: ', minus);
end.
у вас просто другой алгоритм и тем более вы тоже забыли приравнять ваши условия к 0
var
a, b, c, plus, minus: integer;
begin
write(‘Введите три целых числа: ‘);
read(a);
read(b);
read(c);
plus := 0;
minus := 0;
if a >= 0 then Inc(plus)
else if a = 0 then Inc(plus)
else if b = 0 then Inc(plus)
else if c < 0 then Inc(minus);
writeln('Количество положительных чисел: ', plus);
writeln('Количество отрицательных чисел: ', minus);
end.
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.
там вы знак равно забыли если не будет >=0 то когда будете вводить три 0 то оно воспримет ее как отрицательное число