Введение. Парадигмы программирования – это различные способы мышления о том, как
решать проблемы с помощью кода. Они могут влиять на дизайн, структуру и стиль ваших программ,
а также на инструменты и языки, которые вы используете. Изучение различных парадигм
программирования может помочь вам расширить свои навыки, творческий потенциал и
универсальность как программиста. Но как можно эффективно обучать парадигмам
программирования? Одними из самых распространённых парадигм программирования являются
императивное и декларативное программирование — это старые, широкие, полярно
противоположные парадигмы, которые сегодня часто используются для описания других парадигм
программирования. Они отличаются тем, что императивное программирование шаг за шагом
сообщает компьютеру, как что-то сделать, в то время как декларативное программирование
объявляет конечный результат и позволяет компьютеру понять, как его достичь.
“PEDAGOGIK MAHORAT” ilmiy-nazariy va metodik jurnal. 2023, № 11
179
При декларативном подходе выражается логика вычисления без отсутствия описания потока
управления, тогда как в императивной парадигме программирования используются утверждения,
изменяющие состояние программы (рисунок 1).
Рисунок 1. Описание императивного и декларативного подходов
Современные
языки
программирования,
т
акие
языки,
как
Python
и
C++—
мультипарадигматичны, поскольку поддерживают написание кода в более чем одной парадигме.
Рассмотрим некоторые способы, которые помогут вам внедрить и изучить различные парадигмы
вместе с вашими студентами [4].
Обсуждение. Один из лучших способов обучения парадигмам программирования - показать
примеры кода, использующего различные парадигмы. Вы можете использовать онлайн-ресурсы,
такие как metanit.com, чтобы найти фрагменты кода, иллюстрирующие одну и ту же задачу на разных
языках и парадигмах. Показывая примеры, вы можете помочь своим студентам увидеть различия и
сходства между парадигмами, а также преимущества и недостатки каждого подхода.
Императивное программирование – это парадигма программирования, в которой программа
состоит из последовательных инструкций, указывающих компьютеру, как выполнять определенную
задачу. Основная идея заключается в изменении состояния программы с помощью
последовательности команд [5].
Пример кода на C++ в императивном стиле:
```cpp
#include
int main() {
int sum = 0;
for (int i = 1; i <= 10; i++) {
sum += i;
}
std::cout << "Сумма чисел от 1 до 10: " << sum << std::endl;
return 0;
}
```
Этот пример демонстрирует использование цикла for для вычисления суммы чисел от 1 до 10.
Декларативное программирование – это парадигма программирования, в которой программа
описывает желаемый результат, а не последовательность команд для его достижения. Он
сосредотачивается на описании «что» должно быть сделано, а не «как».
Пример кода на Python в декларативном стиле:
```python
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
sum = sum(numbers)
“PEDAGOGIK MAHORAT” ilmiy-nazariy va metodik jurnal. 2023, № 11
180
print("Сумма чисел от 1 до 10:", sum)
```
Этот пример использует встроенную функцию ‘sum()’, которая принимает список чисел в
качестве аргумента и вычисляет их сумму [7].
В обоих примерах результат одинаков - сумма чисел от 1 до 10, но подходы к написанию кода
различаются. В императивном стиле программист явно указывает, как выполнить задачу, в то время
как в декларативном стиле программа описывает желаемый результат, и компьютер самостоятельно
находит способы его достижения.
Очень часто приходиться писать коды программ с ветвлениями, для этого используется
конструкция if-else для разветвления программы на несколько путей выполнения кода в зависимости
от некоторого условия.
Рассмотрим пример, переменная a сначала проверяется на условие a > 0. Если это условие
выполняется, то выводится сообщение “a is positive”. Если это условие не выполняется, то переходит
к проверке следующего условия - a == 0. Если и это условие не выполняется (т.е. значение a не равно
нулю), то выводится сообщение “a is negative”.
Код на С++.
{
int a;
std::cout << "Enter a number: ";
std::cin >> a;
if (a > 0) {
std::cout << "a is positive" << std::endl;
} else if (a == 0) {
std::cout << "a equals zero" << std::endl;
} else {
std::cout << "a is negative" << std::endl;
}
Ниже приведен пример кода на Python:
a = 5
if a > 0:
print(“a is positive”)
elif a == 0:
print(“a is zero”)
else:
print(“a is negative”)
Теперь рассмотрим пример с использованием оператора выбора. В этом примере программа
запрашивает у пользователя число от 1 до 3, а затем использует оператор выбора для выполнения
различных действий в зависимости от введенного числа.
В C++, оператор выбора switch используется для выполнения различных действий в
зависимости от значения выражения.
Код С++:
{
int choice;
std::cout << “Введите число от 1 до 3: “;
std::cin >> choice;
switch (choice) {
case 1:
std::cout << “Вы выбрали 1” << std::endl;
break;
case 2:
std::cout << “Вы выбрали 2” << std::endl;
break;
case 3:
std::cout << “Вы выбрали 3” << std::endl;
“PEDAGOGIK MAHORAT” ilmiy-nazariy va metodik jurnal. 2023, № 11
181
break;
default:
std::cout << “Неверный выбор” << std::endl;
}
В этом примере программа запрашивает у пользователя число от 1 до 3, а затем использует
оператор switch для выполнения различных действий в зависимости от введенного числа. Если
введенное число не соответствует ни одному из case, выполняется код в блоке default.
Код Python:
choice = int(input(“Введите число от 1 до 3: “))
if choice == 1:
print(“Вы выбрали 1”)
elif choice == 2:
print(“Вы выбрали 2”)
elif choice == 3:
print(“Вы выбрали 3”)
else:
print(“Неверный выбор”)
Этот код сначала запрашивает у пользователя ввод числа. Затем он использует условные
операторы if, elif и else, чтобы выполнить различные действия в зависимости от введенного числа.
Если введенное число не соответствует ни одному из вариантов, будет выполнен блок кода в else [1].
При сравнении кодов, можно заметить, что запись на языке программирования Python выгладит
более компактно и удобна в использовании.
Теперь рассмотрим организацию циклов на разных языках программирования.
В языках программирования С++, Java и Python используются различные подходы к
организации циклов, но все они служат одной цели - повторению набора инструкций определенное
количество раз или до выполнения заданного условия.
В С++ для организации циклов используется ключевые слова “ for”, “ while” и “ do-while”.
Например, цикл “ for” используется для выполнения блока кода определенное количество раз:
for(int i = 0; i < 10; i++){
// тело цикла
}
Цикл “ while” используется, когда количество итераций заранее не известно и продолжает
выполняться, пока условие истинно:
int a = 5;
while(a > 0){
a--;
//тело цикла
}
Наконец, цикл “ do-while” выполняется хотя бы один раз, даже если условие ложно:
do{
// тело цикла
} while(a == 42);
В Java циклы организованы аналогично С++, с использованием ключевых слов “ for”, “ while”,
“ do-while”, а также “ foreach” для итерации по коллекциям:
|