![](/user_photo/2706_HbeT2.jpg)
- •«Тюменский государственный нефтегазовый университет»
- •Курсовая работа
- •Оглавление.
- •Тема 1. «Основные стили и парадигмы программирования».
- •1.1. Стили программирования.
- •1.2. Понятие парадигмы программирования.
- •1.3. Основные виды парадигм.
- •Тема 2. «Разработка приложения для Windows, представляющего собой модель базы данных по успеваемости студентов».
- •2.1. Введение.
- •2.2. Назначение и область применения.
- •2.3. Технические характеристики.
- •Р 1. 2. Азработка программы.
- •3.2. Спецификация программы.
- •3.3. Текст программы.
1.2. Понятие парадигмы программирования.
Парадигма программирования - это обобщенная концептуальная схема, способ программирования. Вместе с языком, ее формализирующим, парадигма формирует стиль программирования. Она является инструментом грамматического описания фактов, событий, явлений и процессов, возможно, не существующих одновременно, но интуитивно объединяемых в общее понятие. Т.е., парадигма представляет (и определяет) то, как программист видит выполнение программы. Например, в объектно-ориентированном программировании программист рассматривает программу как набор взаимодействующих объектов, тогда как в функциональном программировании программа представляется в виде цепочки вычисления функций.
Каждая парадигма программирования имеет свой круг приверженцев и класс успешно решаемых задач. В их сфере приняты разные приоритеты при оценке качества программирования, отличаются инструменты и методы работы и соответственно — стиль мышления и изобразительные стереотипы. Нелинейность развития понятий, зависимость их обобщения от индивидуального опыта и склада ума, чувствительность к моде и внушению позволяют выбору парадигм в системе профессиональной подготовки информатиков влиять на восприимчивость к новому.
Ведущая парадигма прикладного программирования на основе императивного управления и процедурно - операторного стиля построения программ получила популярность более пятидесяти лет назад в сфере узкопрофессиональной деятельности специалистов по организации вычислительных и информационных процессов. Последнее десятилетие резко расширило географию информатики, распространив ее на сферу массового общения и досуга. Это меняет критерии оценки информационных систем и предпочтения в выборе средств и методов обработки информации.
Консервирующееся в наши дни доминирование одной архитектурной линии, стандартного интерфейса, типовой технологии программирования и т.д. чревато потерей маневренности при обновлении информационных технологий. Особенно уязвимы в этом отношении люди, привыкшие в учебе прочно усваивать все раз и навсегда. При изучении языков программирования подобные проблемы обходят за счет одновременного преподавания различных языков программирования или предварительного изложения основы, задающей грамматическую структуру для обобщения понятий, изменяемость которых трудно улавливается на упрощенных учебных примерах. Именно такую основу дает изучение функционального программирования тем, что оно нацелено на изложение и анализ парадигм , сложившихся в практике программирования в разных областях деятельности с различным уровнем квалификации специалистов, что может быть полезно как концептуальная основа при изучении новых явлений в информатике.
1.3. Основные виды парадигм.
В процедурном программировании программа состоит из структур данных (объектов обработки) и алгоритма (метода обработки). Программист должен в явном виде описать все вычисления, которые должен проделать компьютер. Для управления процессом выполнения используются следующие конструкции, последовательность, ветвление, цикл и вызов подпрограммы. Эта парадигма является самой старой. Она развивалась по мере появления новых концепций в языках программирования: трансляция (Ассемблер, Fortran, Cobol), типизация (Pascal), модули (Modula), специализация на конкретной области применения (RPG, Clipper) и универсальность (PL/I, С, Ada).
Pascal:
program HelloWorld;
uses crt;
begin
writeln('Hello,World');
end.
Функциональное программирование сформировалось как дань математической направленности при исследовании и развитии искусственного интеллекта и освоении новых горизонтов в информатике. В функциональном программировании единственной управляющей конструкцией является вызов функции. В языке, реализующем функциональную парадигму, существует некоторое множество базовых функций, и все другие функции строятся из базовых функций с помощью композиции. Теоретической основой функционального программирования является лямбда-исчисление и теория рекурсивных функций. В настоящее время существуют сотни функциональных языков программирования, ориентированных на разные классы задач и виды технических средств.
Наиболее известными языками программирования, реализующими функциональную парадигму, являются LISP, Scheme, Haskell.
LISP:
Пример программы, выводящей сообщение "Hello, world!":
(format t "Hello, world!~%")
Итеративная версия функции определения N-го числа Фибоначчи с использованием макроса Loop:
(defun fibonacci (n)
(loop repeat (+ n 1)
for a = 1 then b
and b = 1 then (+ a b)
finally (return a)))
Логическое программирование возникло как упрощение функционального программирования для математиков и лингвистов, решающих задачи символьной обработки. В логическом программировании вместо описания алгоритма решения задачи описывается мир задачи, какие имеются объекты, их свойства и отношения между ними. За основу описания берутся отношения между объектами. Логическая программа представляет собой набор отношений, которые называются фактами, и правил, на основании которых могут быть получены новые отношения. Логическая программа не задает никакого процесса вычислений. Это своего рода база данных (БД) о предметной области задачи. Ее применение инициализируется запросом. Поиск ответа на запрос заключается в попытке логического вывода запроса на основании фактов и правил, имеющихся в БД. Поиск решения выполняется специальной программой-интерпретатором.
Наиболее распространенным языком логического программирования является Prolog, у которого есть многочисленные наследники.
Особенно привлекательна возможность в качестве понятийной основы использовать недетерминизм, освобождающий от преждевременных упорядочений при программировании обработки формул. Продукционный стиль порождения процессов с возвратами обладает достаточной естественностью для лингвистического подхода к уточнению формализованных знаний экспертами, снижает стартовый барьер.
Логическая и функциональная парадигмы считаются разновидностями декларативного программирования, так как они основаны на описании взаимосвязей (логических или функциональных) между элементами проблемной области.
Данный пример иллюстрирует как организовать цикл, используя метод обобщенного правила рекурсии (ОПР)
Схема метода обобщенного правила рекурсии (ОПР)
<имя правила рекурсии> :- <условие продолжения>,
<список предикатов>,
<имя правила рекурсии>,
<список предикатов>.
Цель задачи: определить сумму ряда 1, 2, 3, ..., зная количество элементов ряда
predicates
nondeterm sum_series(integer, integer)
nondeterm sum_print
clauses
sum_series(1, 1).
sum_series(Number,Sum) :- Number > 1,
NextNumber = Number - 1,
sum_series(NextNumber, PartialSum),
Sum = Number + PartialSum.
sum_print :- sum_series(7, Sum), write("Сумма ряда: "), write(Sum).
goal
sum_print, nl.
В объектно-ориентированном программировании (ООП) мир задачи описывается как совокупность объектов, обладающих некоторыми свойствами и вступающих во взаимодействие. За основу описания берутся не отношения, а сами объекты. Объект состоит из данных (внутренняя структура объекта) и методов (набор операций, применимых к данному объекту). С помощью понятия класс, объединяющего совокупности объектов с похожими свойствами и поведением, выстраиваются иерархия объектов. Каждый объект наследует свойства своего класса и может иметь свои собственные свойства. Программа в ООП - это совокупность объектов, обменивающихся между собой сообщениями. Языками ООП являются Smalltalk, C++, Delphi.
Delphi:
Сама структура программы выглядит так:
program Project1; // Заголовок программы, с её именем «Project1»
uses
Forms,
Unit1 in 'Unit1.pas' {Form1}; // модули, которые подключены к проекту и используются программой
{$R *.res}
begin
Application.Initialize; // Инициализация приложения
Application.CreateForm(TForm1, Form1); // Создание формы/окна
Application.Run; // Запуск и исполнение
end.
Пример программы вывода сообщения:
program Helloworld; //название программы
{$APPTYPE CONSOLE} //директива компилятору о создании консольного приложения
begin
writeln(Helloworld); //вывод сообщения "Helloworld"
end. //конец программы
История термина "Парадигма"
Своим современным значением в научно-технической области термин «парадигма» обязан, по-видимому, Томасу Куну и его книге «Структура научных революций» (см. парадигма). Кун называл парадигмами устоявшиеся системы научных взглядов, в рамках которых ведутся исследования. Согласно Куну, в процессе развития научной дисциплины может произойти замена одной парадигмы на другую (как, например, геоцентрическая небесная механика Птолемея сменилась гелиоцентрической системой Коперника), при этом старая парадигма ещё продолжает некоторое время существовать и даже развиваться благодаря тому, что многие её сторонники оказываются по тем или иным причинам неспособны перестроиться для работы в другой парадигме.
Термин «парадигма программирования» впервые применил Роберт Флойд в своей лекции лауреата премии Тьюринга.
Флойд отмечает, что в программировании можно наблюдать явление, подобное парадигмам Куна, но, в отличие от них, парадигмы программирования не являются взаимоисключающими:
Если прогресс искусства программирования в целом требует постоянного изобретения и усовершенствования парадигм, то совершенствование искусства отдельного программиста требует, чтобы он расширял свой репертуар парадигм.
Таким образом, по мнению Роберта Флойда, в отличие от парадигм в научном мире, описанных Куном, парадигмы программирования могут сочетаться, обогащая инструментарий программиста.
Парадигма программирования как исходная концептуальная схема постановки проблем и их решения является инструментом грамматического описания фактов, событий, явлений и процессов, возможно, не существующих одновременно, но интуитивно объединяемых в общее понятие.