Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информатика_3.doc
Скачиваний:
2
Добавлен:
12.11.2019
Размер:
435.2 Кб
Скачать

4.2. Принципы разработки алгоритмов и программ для решения прикладных задач

4.2.1. Процедурное программирование. Разработка алгоритма – это важнейший конструктивный компонент программирования. В настоящее время создание алгоритмов и программ для ЭВМ стало одним из видов человеческой деятельности. Подходы к созданию алгоритмов и требования к ним существенно изменялись в ходе эволюции компьютеров. Первоначально программы состояли из последовательности команд, определявших процедуру решения задачи и исполнявшихся непосредственно процессором. Это были команды:

  • присваивания;

  • простейших арифметических операций;

  • операций сравнения чисел;

  • операторов безусловного и условного перехода;

  • операторов вызова подпрограмм.

Основным являлся оператор присваивания, предназначенный для определения и изменения содержания памяти компьютера. Память служила хранилищем данных, значения которых можно было изменять операторами программы, и выполнение программы сводилось к последовательному выполнению операторов с целью преобразования исходного состояния памяти до конечного результативного состояния.

Такой подход в программировании, ориентированный на непосредственно выполняемые компьютером операции, называется процедурным или императивным (операциональным). Этот подход был ориентирован на возможности и особенности конкретной ЭВМ и с развитием компьютерной техники не позволял перейти к массовому промышленному программированию. Алгоритмы и программы, созданные таким методом содержали следующие недостатки:

  • программы было трудно читать даже опытным программистам;

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

  • уловки для повышения эффективности программы приводили к ее ненадежности, трудностям в отладке и модификации.

Программировать процедурным методом было трудно и дорого.

4.2.2. Структурное программирование. В начале 1970-х гг. появился новый подход к разработке алгоритмов, который получил название структурного. Суть его заключается в оформлении последовательности команд как замкнутых функций или процедур, связанных по смыслу в сложные структуры данных. Благодаря этому повышается наглядность текста и упрощается его отладка. В основе технологических принципов структурного программирования лежит тот факт, что логическая структура любой программы всегда выражается суперпозицией трех базовых структур: следования, ветвления и цикла. Умение образовывать из базовых структур их суперпозиции в соответствии с условиями конкретной задачи – одно из важнейших в программировании.

Еще одной важной компонентой структурного подхода к разработке алгоритмов является модульность. Модуль – это последовательность логически связанных операций, оформленных как отдельная часть программы. С использованием модулей можно:

  • создавать программу несколькими программистами;

  • упростить проектирование и последующую модификацию программы;

  • упростить отладку программы;

  • использовать готовые библиотеки программ.

Последняя компонента структурного программирования – нисходящее проектирование программ, основанное на идее уровней абстракции. Эти уровни становятся уровнями модулей в программе. На этапе проектирования строится схема иерархии, изображающая эти уровни. Такая иерархия позволяет разбивать общую программу на ряд подзадач, т. е. детализировать общую программу. На следующем этапе эти подзадачи в свою очередь разбиваются на еще более мелкие подчинённые подзадачи и т. д. до тех пор, пока не дойдут до уровня небольших подзадач, требующих для решения небольших модулей объёмом в 3-5 строк. Такой метод проектирования программ позволяет преодолевать проблему сложности разработки общей программы.

4.2.3. Функциональное программирование. Функциональное или аппликативное программирование, являясь одним из двух видов декларативного подхода, не рассматривает память как хранилище знаний. В нем отсутствует понятие оператора присваивания, основной конструкцией является выражение. Язык программирования, построенный на функциональных принципах, содержит следующие элементы:

  • классы констант;

  • набор базовых функций;

  • правила построения новых функций из базовых;

  • правила формирования выражений на основе вызова функций.

Здесь нет ни операторов присваивания, ни циклов, ни передачи управления, ни, тем более, блок-схем. Нет существенных различий между константами и функциями, т. е. между программами и данными. Программа представляет собой последовательность описаний функций и выражения, которые необходимо вычислить.

Первым языком, реализующим принципы функционального программирования, стал Лисп (LISP – LISt Processing – обработка списков).

4.2.4. Логическое программирование. Второй вид декларативного подхода – это логическое программирование. Оно появилось в 1970-х гг. при разработки больших программ. Этот подход не получил широкого применения из-за относительно узкого круга задач искусственного интеллекта, на решение которых он был ориентирован. При его применении программист описывает свойства исходных данных, их взаимосвязи, свойства, которыми должен обладать результат, а не алгоритм получения результата. Сам результат порождается автоматически системой, поддерживающей логический язык программирования.

Центральным понятием в логическом программировании является отношение. Программа представляет собой совокупность определений отношений между объектами и цели. Процесс выполнения программы трактуется как процесс общезначимости логической формулы, построенной из программы по правилам, установленным семантикой используемого языка. Результат вычисления получается по методу резолюций.

Логические программы имеют небольшое быстродействие, т. к. вычисление производится методом проб и ошибок. Первым языком логического программирования является Пролог (PROLOG – PROgramming in LOGic – программирование в терминах логики).

4.2.5. Объектно-ориентированное программирование (ООП). Является развитием структурного подхода. В объектно-ориентированном программировании задача представляется как совокупность взаимодействующих объектов, причем понятие объект шире понятия процедура. Каждый объект содержит некоторую структуру данных и доступные только ему процедуры или методы обработки данных. Объединение данных и свойственных им процедур обработки в одном объекте называется инкапсуляцией и присуще методам объектно-ориентированного программирования.

Другим фундаментальным понятием ООП является класс. Класс – это шаблон, на основе которого может быть создан конкретный программный объект, он определяет свойства и методы объекта, принадлежащего к этому классу. При создании новых объектов их свойства могут добавляться или наследоваться от объектов-предков, т. е. новые объекты могут создаваться на базе существующих. В процессе работы с объектами допускается полиморфизм – возможность использования методов с одинаковыми именами для обработки данных разных типов. Наиболее популярная реализация объектно-ориентированного программирования создана на основе языка Паскаль.