Условные операторы
Задача: Через реку можно переплыть на лодке, которая вмещает K пассажиров.На берегу стоит N человек и хочет переправиться на другой берег.
Сколько нужно сделать рейсов, чтобы переправить на другой берег всех людей?
1 рейс - это когда лодка плавает туда и обратно. Чтобы решить задачу, можно придумать математическую формулу. Придумайте формулу. Проверьте для разных значений N и К. Проще писать программу так, как думает обычный человек (не математик) :
- вычислим количество рейсов лодки, когда она полная
- если на берегу кто-то остался
- то добавим +1 рейс
#include <stdio.h> int main() { int n, // пассажиров на берегу k, // пассажиров за один рейс может перевезти лодка reisov, // количество рейсов ostalos; // в неполной лодке scanf("%d%d", &n, &k); // читаем n и k reisov = n/k; // количество рейсов, когда лодка полная ostalos = n%k; // сколько человек осталось после этого на берегу if (ostalos > 0) { // если на берегу остались люди reisov += 1; // добавить еще 1 рейс с неполной лодкой } printf ("%d\n", reisov); // напечатать количество рейсов return 0; }
if (условие) команды_ДА
-
Запомните:
- if - ключевое слово
- условие пишем в круглых скобках ( )
- команды пишем с отступом; с одинаковым отступом; используйте для отступа табуляцию.
- Если команд несколько, то нужно их объединить в блочный оператор, то есть написать внутри { }
- Одну команду можно писать БЕЗ { }
- Лучше сначала ВСЕГДА ставить { } (пока не перестанете их забывать)
Условие
Условие может быть либо истина (ДА), либо ложь (НЕТ).
Python | Математика | Русский |
---|---|---|
a == b | a = b | a равно b |
a != b | a ≠ b | a не равно b |
a < b | a < b | a меньше b |
a <= b | a ≤ b | a меньше или равно b (a не больше b) |
a > b | a > b | a больше b |
a >= b | a ≥ b | a больше или равно b (a не меньше b) |


Почему равно ==, а присвоить =

Операторы для "сравнить" и "присвоить" должны быть разными.
В программе чаще используют "присвоить", поэтому "присвоить" - это один знак =
"равно?" - это два знака == подряд.
if - вычислим модуль числа
Надо: x = |x|. Решение: Если число отрицательное, возьмем -x. (Никаких "иначе", "если число положительное" и т.п.)if (x < 0) x = -x;
if else - чет/нечет
Надо: Написать четное число (even) или нечетное (odd) Решение: Проверим, равен ли 0 остаток от деления числа на 2.Если равен,
то напечатаем EVEN
иначе
напечатаем ODD
if (x % 2 == 0) // если остаток от деления на 2 равен 0 printf ("EVEN"); else // иначе printf ("ODD");
else if - положительное, отрицательное, ноль
Надо: Написать положительное число, отрицательное или ноль. Решение: Если число > 0напечатать 'положительное'
иначе если число < 0
напечатать 'отрицательное'
иначе (остался ноль)
напечатать 'ноль'
Можно написать, отступая внутри каждого if и else еще на одну табуляцию:
if (x > 0) // если больше 0 printf ("положительное"); else // иначе меньше или равно 0 if (x < 0) // меньше 0 printf ("отрицательное"); else // равно 0 printf ("ноль");
if (x > 0) // больше 0 printf ("положительное"); else if (x < 0) // меньше 0 printf ("отрицательное"); else // равно 0 printf ("ноль");
Когда что использовать?
- if - один случай (иначе ничего не надо делать):
- если есть вода, я пью
- если начнется дождь, надо открыть зонт
- если на улице холодно, надо одеть шапку
- if / else - или одно или другое - 2 взаимоисключающих случая (одновременно быть не могут)
- если на улице дождь, надо надеть резиновые сапоги, иначе надеть сандалии (нельзя сразу надеть и сапоги, и сандалии)
- если есть кофе, я выпью кофе, иначе я выпью чай (я не буду пить чай и кофе вместе)
- if / else if (несколько раз) / else - несколько взаимоисключающих случаев
- если есть кофе, я выпью кофе, иначе если есть чай, я выпью чай, иначе если есть сок, я выпью сок, иначе я выпью воду
- else части может не быть
- если есть кофе, я выпью кофе, иначе если есть чай, я выпью чай, иначе если есть сок, я выпью сок, иначе я выпью воду
- if / if / if (много раз) - много раз делаем выбор, один выбор не исключает другого.
- если есть мясо, я ем мясо; если есть картошка, я ем картошку; если есть чай, я пью чай
- большое (если оно больше 10000000)
- четное или нечетное
- положительное, отрицательное или ноль
// характеристика: большой if (x > 1000000) { printf ("большое "); } // характеристика: четное / нечетное if (x % 2 == 0) { printf ("четное "); } else { printf ("нечетное "); } // характеристика: положительное / отрицательное / ноль if (x > 0) { printf ("положительное "); } else if (x < 0) { printf ("отрицательное "); } else { printf ("ноль "); }
- Для числа 16 напечатает: четное положительное
- Для числа -16 напечатает: четное отрицательное
- Для числа 1000016 напечатает: большое четное, положительное
- Для числа 163 напечатает: нечетное, положительное
- Для числа 0 напечатает: четное ноль
Краткое содержание
Блоки else и else if не обязательныif (условие) { командыДА; }
if (условие) { командыДА; } else { командыНЕТ; }
if (условие_1) { командыДА_1; } else if (условие_2) { командыДа_2; } ... else if (условие_N) { командыДа_N; } else { команды_НЕТ; }