Управляющие конструкции в SomonScript
Управляющие конструкции позволяют принимать решения (if, switch) и повторять действия (for, while). Это одна из важнейших тем для понимания того, как ведёт себя программа.
1. Зачем нужны управляющие конструкции?
Без условий и циклов программа просто выполняется сверху вниз. С ними мы можем:
- выполнять часть кода, только когда выполняется условие;
- выбирать один вариант из нескольких;
- повторять одно действие много раз.
2. Простой пример: «Сдал / не сдал»
В этом примере ученик получает баллы. Если баллов 60 или больше, программа пишет "Шумо гузаштед" («Вы сдали»), иначе - "Шумо нагузаштед" («Вы не сдали»).
Простое условие с АГАР-ВАГАРНА
Пример условия, которое определяет, сдал ученик экзамен или нет.
// Баллы одного ученика
тағ холҳо: рақам = 72;
// Простое условие с АГАР-ВАГАРНА
агар (холҳо >= 60) {
чоп.сабт("Шумо гузаштед");
} вагарна {
чоп.сабт("Шумо нагузаштед");
}somon run exam.som
Шумо гузаштед3. Пример посложнее: цикл с подсчётом
Теперь у нас есть баллы нескольких учеников, и мы хотим посчитать, сколько из них сдали. Для этого используем цикл барои и условие.
Подсчёт сдавших учеников
Цикл барои (for loop) с условием, чтобы посчитать, сколько учеников набрали достаточно баллов.
// Список баллов класса
тағ холҳо: рақам[] = [45, 80, 92, 58, 73];
// Количество сдавших учеников
тағ шумораи_гузаштанд: рақам = 0;
// Цикл для обхода списка баллов
барои (тағ и: рақам = 0; и < холҳо.дарозӣ; и++) {
// Если балл больше или равен 60, этот ученик сдал
агар (холҳо[и] >= 60) {
шумораи_гузаштанд = шумораи_гузаштанд + 1;
}
}
// Выводим результат на экран
чоп.сабт("Донишҷӯёни гузашташуда: " + шумораи_гузаштанд);somon run control-flow.som
Донишҷӯёни гузашташуда: 34. Упражнения
Эти упражнения можно выполнять в классе или дать как домашнее задание.
- Напишите программу, которая принимает номер дня (1-7) и с помощью интихоб выводит название дня.
- Создайте программу, которая выводит числа от 1 до 20, но показывает только нечётные (с помощью барои и давом).
- Создайте массив чисел и с помощью цикла посчитайте, сколько из них больше 0.