Вы находитесь на странице: 1из 18

Тема: Парадигмы

программирования
Парадигма программирования – это совокупность принципов, методов и
понятий, определяющих способ конструирования программ.

Парадигма программирования — это набор идей и понятий, которые


определяют стиль написания программ, подход к программированию.
Существует множество разных парадигм, но чаще всего используются
императивная и декларативная, практически противоположные друг другу. 
Язык программирования не обязательно использует только одну парадигму.
Языки, поддерживающие несколько парадигм, называются
мультипарадигменными. Создатели таких языков придерживаются точки
зрения, гласящей, что ни одна парадигма не может быть одинаково
эффективной для всех задач, и следует позволять программисту выбирать
лучший стиль программирования для решения каждой отдельной задачи
Разновидности парадигмы
Парадигма программирования не определяется
однозначно языком программирования; практически все
современные языки программирования в той или иной
мере допускают использование различных парадигм.
Так на языке Си, который не является объектно-
ориентированным, можно работать в соответствии с
принципами объектно-ориентированного
программирования, хотя это и сопряжено с
определёнными сложностями; функциональное
программирование можно применять при работе на
любом императивном языке, в котором имеются функции
(для этого достаточно не применять присваивание), и т.д.
Императивное программирование
В императивной (англ. imperative — приказ) парадигме
разработчик пишет для компьютера инструкции, которым
тот следует. Инструкции могут быть следующие:

• сложи два числа;


• если а, то сделай б, а иначе сделай в;
• отправь запрос на сервер;
• открой файл;
• выведи строку.
То есть программист говорит, что нужно сделать и в каком
порядке, а компьютер выполняет приказы.
Императивное программирование
Отличительная черта императивной парадигмы — понятие
состояния компьютера или программы. Состояние — это
совокупность всех данных в определённый момент времени:
переменных, массивов, счётчиков и так далее.
К императивной парадигме относятся следующие виды
программирования:

• структурное;
• объектно-ориентированное и другие.

Также императивную парадигму программирования можно


считать более низкоуровневой, потому что программисту
нужно знать, как работают программы.
Декларативная парадигма программирования
В декларативной парадигме разработчик описывает проблему и
ожидаемый результат, но не пишет никаких инструкций. В
декларативном программировании отсутствуют переменные,
состояние и прочие понятия, которые свойственны императивной
парадигме.
К декларативной парадигме относятся функциональное
программирование и др.
Примеры использования парадигм
Допустим, у нас есть массив следующих чисел:
5, 1, 3, 9, 12, 583, 998, 7538, 72, 53, 71, 85, 7, 2, 9
Нам может понадобиться получить из этого массива все числа,
которые больше 3, но меньше 100.
В декларативном программировании разработчик просто пишет
следующее: Получить из массива N все числа, которые больше 3 и
меньше 100
Декларативная парадигма программирования
В императивном программировании придётся самостоятельно
написать код, который будет проверять все числа из массива N на
соответствие условию и, если они подходят, записывать их в новый
массив. То есть код будет выглядеть примерно так:

Создать массив N с числами …;


объявить переменную i со значением 0;
Начало цикла:
Если значение элемента номер i больше 3 и меньше 100, то добавить его в
массив N2;
Прибавить к переменной i единицу;
Повторять, пока значение переменной i меньше количества элементов
массива N;
Конец цикла;
Вернуть массив N2;
Декларативная парадигма программирования
То есть в декларативном программировании разработчик говорит,
что ему нужно. А в императивном — как это можно получить.
Давайте рассмотрим это на примере двух реальных языков:
C# (императивный) SQL (декларативный)
int[] N = new int[] { 5, 1, 3, 9, 12, 583, 998, 7538, 72, 53, 71, 85, SELECT num FROM N WHERE num > 3 AND num < 100;
7, 2, 9 };

List<int> nums = new List<int>();


for(int i = 0; i < N.Length; i++)
{
if(N[i] > 3 && N[i] < 100)
{
nums.Add(N[i]);
}
}
int[] N2 = nums.ToArray();
Зачем это нужно
У вас мог появиться вполне логичный вопрос:
Зачем использовать императивное программирование, если декларативное
позволяет писать гораздо меньше кода?
Есть несколько причин.
Во-первых, декларативное программирование — это обёртка для
императивного. Компьютер не может вот так просто понять, чего хочет
программист, поэтому для него нужно написать конкретные инструкции, что
и в каком порядке делать.
Когда вы пишете запрос в SQL, его выполнение происходит по заранее
описанным инструкциям. Поэтому нам нужно императивное
программирование, чтобы заставить работать декларативное.
Во-вторых, декларативное программирование не подходит для задач, для
решения которых важно иметь доступ к состоянию программы — например,
если нужно проверить, нажата ли кнопка или поставлена ли галочка в чекбокс.
В декларативном программировании нельзя отследить ни само состояние,
ни его изменение, поэтому не получится указать, что должно происходить
в ответ на действия пользователя.
В-третьих, императивное программирование даёт больше свободы, поэтому
его чаще используют в творческих областях, особенно там, где важен порядок
выполняемых действий.
Каждая парадигма подходит для определённых задач: императивная лучше для
работы с анимацией, графическими интерфейсами, скриптами, играми
и многим другим, а декларативная — для вычислений и работы с данными.
Поэтому вопрос «Какая парадигма лучше?» некорректен: они все хороши,
если использовать их по назначению.
ФУНКЦИОНАЛЬНОЕ
ПРОГРАММИРОВАНИЕ
это парадигма декларативного программирования, в которой программы
создаются путем последовательного применения функций
public int sum (int xl, int x2) public int sub (int x1, int x2)
{ return xl+x2;} { return x1-x2;}
public int sub (int xl, int x2)
( return xl-x2;}
Функциональное программирование
f(x,y,z) = 2*х - 6*у +f(z) -10

Вычисление факториала:
f(0) = 1
f(n) = n * f (n -1)
СТРУКТУРНОЕ ПРОГРАММИРОВАНИЕ

парадигма программирования, в основе которой лежит

представление программы в виде иерархической структуры

блоков

Цель структурного программирования - повысить

производительность труда программистов, в том числе при

разработке больших и сложных программных комплексов,

сократить число ошибок, упростить отладку и


СТРУКТУРНОЕ ПРОГРАММИРОВАНИЕ

Принцип 1. Следует отказаться от использования оператора

безусловного перехода goto.

Принцип 2. Любая программа строится из трёх базовых

управляющих конструкций: последовательность, ветвление, цикл

Принцип 3. В программе базовые управляющие конструкции могут

быть вложены друг в друга произвольным образом

Принцип 4. Повторяющиеся фрагменты программы можно оформить в

виде подпрограмм (методов и функций)


j=0;
float r[100];
for (i=0;i<kol;i++)
{
if (fmod(mas[i],1)==0)
{
if (is_prime(mas[i])==1)
{
r[j]=mas[i];
++j;
}
}
}vvod.close();
8

Вам также может понравиться