Алгоритмизация и программирование. Языки программирования высокого уровня. Технологии программирования

Вид материалаДокументы

Содержание


Структурное программирование
Функциональное программирование
Логическое программирование
Объектно-ориентированное программирование (ООП)
Подобный материал:
Часть 3.


Алгоритмизация и программирование.

Языки программирования высокого уровня.

Технологии программирования.


Определение:

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

Замечание:

Некоторые действия алгоритма должны быть выполнены последовательно, некоторые могут быть и независимыми и выполняться одновременно (параллельно).


Комментарий.

Слово «алгоритм» образовано от имени персидского учёного аль-Хорезми (al-Khwarazmi).


Ранее часто писали «алгорифм», сейчас такое написание используется редко.


Часто в качестве исполнителя выступает некоторый механизм (компьютер, токарный станок, швейная машина), но понятие алгоритма необязательно относится к компьютерным программам, так, например, чётко описанный рецепт приготовления блюда также является алгоритмом, в таком случае исполнителем является человек.


Свойства алгоритмов, требования к алгоритмам:
  • Дискретность - процесс решения задачи является последовательным выполнением простых шагов за конечный отрезок времени.
  • Детерминированность - в каждый момент времени следующий шаг однозначно определяется состоянием системы. Т.е. алгоритм выдаёт один и тот же результат для одних и тех же исходных данных.
  • Понятность - алгоритм содержит команды, понятные исполнителю (которые входят в его систему команд).
  • Конечность – для корректных исходных данных алгоритм должен успешно завершать работу за конечное число шагов.
  • Массовость - алгоритм должен быть применим к разным наборам исходных данных.
  • Результативность – работа алгоритма должна завершаться определёнными результатами.


Определение:

Алгоритмизация – процесс построения алгоритма.


Определение:

Программирование - процесс создания программного обеспечения с помощью языков программирования.


Комментарий.

Программирование сочетает в себе элементы искусства, фундаментальных наук (это прежде всего информатика и математика), инженерии, спорта и ремесла.


Замечание:

Программирование следует отличать от ремесла кодирования программы


Программирование включает в себя:
  • Анализ поставленной задачи.
  • Проектирование/разработку комплекса алгоритмов.
  • Кодирование – реализация алгоритмов - написание исходного текста программы на языке программирования (исходников).
  • Компиляцию - преобразование исходников в исполнимый код с помощью компилятора.
  • Тестирование и отладку - выявление и устранение ошибок в программах.
  • Испытания и сдачу программ.
  • Сопровождение программ.


Определение:

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


Комментарий.

На сегодняшний день известно более 8500 языков программирования.


Языки программирования делятся на:
  • компилируемые
  • интерпретируемые


  • низкоуровневые
  • высокоуровневые


Определение:

Компилятор это специальная программа, которая переводит исходный текст программы с языка программирования высокого уровня в двоичные коды инструкций процессора, которые записываются в отдельный исполнимый файл (например exe-файл). Этот файл может быть запущен как отдельная программа.


Определение:

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


Преимущества:

Компилируемые программы работают значительно быстрей интерпретируемых.

Интерпретируемые программы обладают большей гибкостью в процессе разработки и допускают запуск на разных компьютерных платформах и операционных системах.


Определение:

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


Общеизвестный пример языка низкого уровня - язык ассемблера.


Определение:

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


Замечание:

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


Примеры языков высокого уровня:
  • C, C++, Visual Basic, Java, PHP, Delphi, Pascal, Fortran.


Язык программирования строится в соответствии с парадигмой программирования.


Определение:

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


Основные модели (парадигмы) программирования:
  • Императивное программирование
  • Структурное программирование
  • Функциональное программирование
  • Логическое программирование
  • Объектно-ориентированное программирование


Императивное (процедурное) программирование - это парадигма программирования, которая описывает процесс вычисления в виде последовательности инструкций, которые должен выполнить компьютер.


Примеры процедурных языков программирования: Fortran, Basic, Pascal, C.


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

Каждый блок должен представлять собой одну из трех структур: последовательное выполнение, ветвление и повторение.


^ Функциональное программирование - раздел дискретной математики, в которой процесс вычисления трактуется как вычисление значений функций в математическом понимании последних (в отличие от функций как подпрограмм в процедурном программировании).


Примеры функциональных языков программирования: LISP, Haskell, ML.


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


Самым известным языком логического программирования является Prolog.


^ Объектно-ориентированное программирование (ООП) - парадигма программирования, в которой основными концепциями являются понятия объектов и классов.


Определение:

Класс - это описание устройства объектов (как бы теоретическая модель).

Определение:

Объект - это экземпляр класса (как бы физическая реализация).


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


Замечание:

ООП есть по сути императивное программирование, дополненное принципом инкапсуляции данных и методов в объект и наследованием.

Внимание!

Понятия инкапсуляции и наследования – изучить самостоятельно!!!


Определение:

Технология программирования - дисциплина, изучающая технологические процессы программирования и порядок их прохождения.


Основные технологии программирования:
  • восходящее программирование
  • нисходящее программирование


Определение:

Восходящее программирование (программирование «снизу вверх») - методика разработки программ, при которой крупные блоки собираются из ранее созданных мелких блоков.

Восходящее программирование начинается с разработки ключевых процедур и подпрограмм, которые затем постоянно модифицируются.


Определение:

Нисходящее программирование (программирование «сверху вниз») - методика разработки программ, при которой разработка начинается с определения целей решения проблемы, после чего идет последовательная детализация, заканчивающаяся детальной программой.

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