SomonScriptDocsУправляющие конструкции
Глава 5 • Управляющие конструкции

Управляющие конструкции в SomonScript

Управляющие конструкции позволяют принимать решения (if, switch) и повторять действия (for, while). Это одна из важнейших тем для понимания того, как ведёт себя программа.

1. Зачем нужны управляющие конструкции?

Без условий и циклов программа просто выполняется сверху вниз. С ними мы можем:

  • выполнять часть кода, только когда выполняется условие;
  • выбирать один вариант из нескольких;
  • повторять одно действие много раз.

2. Простой пример: «Сдал / не сдал»

В этом примере ученик получает баллы. Если баллов 60 или больше, программа пишет "Шумо гузаштед" («Вы сдали»), иначе - "Шумо нагузаштед" («Вы не сдали»).

Простое условие с АГАР-ВАГАРНА

Пример условия, которое определяет, сдал ученик экзамен или нет.

example.som
// Баллы одного ученика
тағ холҳо: рақам = 72;

// Простое условие с АГАР-ВАГАРНА
агар (холҳо >= 60) {
  чоп.сабт("Шумо гузаштед");
} вагарна {
  чоп.сабт("Шумо нагузаштед");
}
terminal
somon run exam.som
Шумо гузаштед

3. Пример посложнее: цикл с подсчётом

Теперь у нас есть баллы нескольких учеников, и мы хотим посчитать, сколько из них сдали. Для этого используем цикл барои и условие.

Подсчёт сдавших учеников

Цикл барои (for loop) с условием, чтобы посчитать, сколько учеников набрали достаточно баллов.

example.som
// Список баллов класса
тағ холҳо: рақам[] = [45, 80, 92, 58, 73];

// Количество сдавших учеников
тағ шумораи_гузаштанд: рақам = 0;

// Цикл для обхода списка баллов
барои (тағ и: рақам = 0; и < холҳо.дарозӣ; и++) {
  // Если балл больше или равен 60, этот ученик сдал
  агар (холҳо[и] >= 60) {
    шумораи_гузаштанд = шумораи_гузаштанд + 1;
  }
}

// Выводим результат на экран
чоп.сабт("Донишҷӯёни гузашташуда: " + шумораи_гузаштанд);
terminal
somon run control-flow.som
Донишҷӯёни гузашташуда: 3

4. Упражнения

Эти упражнения можно выполнять в классе или дать как домашнее задание.

  1. Напишите программу, которая принимает номер дня (1-7) и с помощью интихоб выводит название дня.
  2. Создайте программу, которая выводит числа от 1 до 20, но показывает только нечётные (с помощью барои и давом).
  3. Создайте массив чисел и с помощью цикла посчитайте, сколько из них больше 0.