Загрузил valerialetunova175

Виды программирования

реклама
Виды программирования:
структурное, модульное,
функциональное, процедурное,
логическое. Принципы
различных методов
программирования
Структурное программирование – это метод, предполагающий создание
улучшенных программ. Он служит для организации проектирования и кодирования
программ таким образом, чтобы предотвратить большинство логических ошибок и
обнаружить те, которые допущены.
Структурное программирование состоит в получении правильной программы из
некоторых простых логических структур. Оно базируется на строго доказанной
теореме о структурировании, которая утверждает, что любую правильную
программу (с одним входом, одним выходом, без зацикливания и недостижимых
команд) можно написать с использованием только следующих основных логических
структур:
линейной (следование);
нелинейной (развилка);
циклической (цикл, или повторение).
Структура «следование» реализуется составным оператором,
оператором-выражение, asm-оператором и др.
Составной оператор, или блок, представляет собой список
(возможно, пустой) операторов, заключенных в фигурные скобки
{…}. Синтаксически блок рассматривается как единый оператор,
но он влияет на контекст идентификаторов, объявленных в нем.
Блоки могут иметь любую глубину вложенности.
Оператор-выражение представляет собой выражение, за которым
следует точка с запятой. Его формат следующий:
<выражение>;
Asm-операторы обеспечивают программирование на уровне ассемблера
(использование указателей, побитовые операции, операции сдвига и т.д.).
Используя ассемблерный язык для обработки подпрограмм критических
ситуаций, многократно повторяющихся операций, можно повысить скорость
оптимизации без какого-либо усовершенствования языка высокого уровня.
Структура «развилка» реализуется операторами выбора. Операторы выбора,
или операторы управления потоком, выполняют выбор одной из
альтернативных ветвей программы, проверяя для этого определенные
значения. Существует два типа операторов выбора: if...else и switch.
Базовый оператор if имеет следующий формат:
if(условное_выражение)оператор_если_"истина"<else>оператор_если_"ложь";
Модуль – это последовательность логически связанных фрагментов, оформленных как
отдельная часть программы.
К модулю предъявляются следующие требования:
1) модуль должен реализовывать единственную функцию, т.е. при построении модуля
используется концепция: «один модуль – одна функция». Таким образом, модуль – это
элемент программы, выполняющий самостоятельную задачу. На его входе он может
получать определенный набор исходных данных, обрабатывать их в соответствии с
заданным алгоритмом и возвращать результат обработки, т.е. реализуется стандартный
принцип IPO (Input – Process – Output) – вход-процесс-выход;
2) на модуль нужно ссылаться с помощью его имени. Он должен иметь один вход и
один выход, что гарантирует замкнутость модуля и упрощает сопровождение программ;
3) модуль должен иметь функциональную завершенность, т.е. выполнять перечень
регламентированных операций для реализации каждой отдельной функции в полном
составе, достаточных для завершения начатой обработки;
4) модуль должен возвращать управление в точку его вызова, в свою
очередь, он должен иметь возможность сам вызывать другие модули;
5) модуль не должен сохранять историю своих вызовов и использовать ее
при своем функционировании;
6) модуль должен иметь логическую независимость, т.е. результат работы
программного модуля зависит только от исходных данных, но не зависит от
работы других модулей;
7) модуль должен иметь слабые информационные связи с другими
программными модулями – обмен информацией между модулями должен
быть по возможности минимизирован;
8) модуль должен быть сравнительно невелик, т.е. быть обозримым по
размеру и сложности. Опытные программисты рекомендуют его размер не
более двух страниц распечатки на принтере.
Достоинствами модульного программирования:
большую программу могут писать одновременно несколько программистов, что позволяет
раньше закончить задачу;
можно создавать библиотеки наиболее употребительных модулей;
упрощается процедура загрузки в оперативную память большой программы, требующей
сегментации;
 появляется много естественных контрольных точек для отладки проекта;
 проще проектировать и в дальнейшем модифицировать программы.
Недостатки модульного программирования:
возрастает размер требуемой оперативной памяти;
увеличивается время компиляции и загрузки;
увеличивается время выполнения программы;
довольно сложными становятся межмодульные интерфейсы.
Модульное программирование реализуется через модули –
функции.
Функция – это область памяти, выделяемая для сохранения
программного
кода,
предназначенного
для
выполнения
конкретной задачи. Другими словами, функция – минимальный
исполняемый модуль программы на языке С/С++. По умолчанию
функция имеет тип external, и доступ к ней возможен из любого
файла
программы.
Но
она
может
спецификатором класса памяти static.
быть
ограничена
Тип – это тип возвращаемого функцией значения, в том числе void
(кроме типов массива или функции). Умолчанием является тип int.
Если тип возврата функции не void, то тело функции должно
содержать как минимум один оператор return.
Имя_функции – идентификатор, с помощью которого можно
обратиться к функции. Он выбирается программистом произвольно и
не должен совпадать со служебными словами и с именами других
объектов программы. Однако любая программа на языке С/С++ должна
иметь хотя бы одну функцию с именем main – главную функцию,
содержащую точку входа в программу.
Спецификация_параметров – список формальных параметров, т.е.
переменных, принимающих значения, передаваемые функции при ее
вызове. Список формальных параметров перечисляется через запятую.
Функциональное программирование – это подход к программированию,
при котором программа задается совокупностью определений функций без
явного указания последовательности их применения.
Функциональные языки обладают двумя весьма мощными средствами:
1. Способность структурировать данные. Мощность этого средства состоит
в том, что структуры данных выступают как единые значения. Они могут
вводиться в функцию как аргументы и выдаваться из нее как результаты.
Наиболее важно, что однажды построенная структура не может изменяться.
2. Возможность определять функции высших порядков. Такие функции
имеют другие функции либо своими аргументами, либо вырабатывают в
качестве результатов. Использование функций высших порядков приводит к
более кратким и сжатым программам.
Процедурное
(императивное)
программирование
является
отражением архитектуры традиционных ЭВМ, которая была предложена
фон Нейманом в 40-х годах. Теоретической моделью процедурного
программирования служит алгоритмическая система под названием
«машина Тьюринга».
Программа на процедурном языке программирования состоит из
последовательности операторов (инструкций), задающих процедуру
решения задачи. Основным является оператор присваивания, служащий
для изменения содержимого областей памяти. Концепция памяти как
хранилища значений, содержимое которого может обновляться
операторами программы, является фундаментальной в императивном
программировании.
Выполнение программы сводится к последовательному выполнению
операторов с целью преобразования исходного состояния памяти, то есть
значений исходных данных, в заключительное, то есть в результаты. Таким
образом, с точки зрения программиста имеются программа и память, причем
первая последовательно обновляет содержимое последней.
Процедурные языки характеризуются следующими особенностями:
необходимостью явного управления памятью, в частности, описанием
переменных;
малой пригодностью для символьных вычислений;
отсутствием строгой математической основы;
высокой эффективностью реализации на традиционных ЭВМ.
Двоичный язык является непосредственно машинным языком. В настоящее
время такие языки программистами практически не применяются.
Язык Ассемблера — это язык, предназначенный для представления в
удобочитаемой символической форме программ, записанных на машинном
языке. Он позволяет программисту пользоваться мнемоническими кодами
операций, присваивать удобные имена ячейкам и областям памяти, а также
задавать наиболее удобные схемы адресации.
Язык Макроассемблера является расширением языка Ассемблера путем
включения в него макросредств. С их помощью в программе можно
описывать
последовательности
инструкций
с
параметрами
—
макроопределения.
Логическое
программирование
программированию,
при
котором
–
это
подход
программа
к
задаѐтся
совокупностью правил без явного указания последовательности
их применения.
Под логическим программированием обычно подразумевают
идею использования для создания программного обеспечения
логики
предикатов,
в
частности
рассуждений,
показывают путь к достижению желаемого результата.
которые
Естественный язык
Логика предикатов
Роза красная.
красная (роза).
Монополия – игра.
игра (монополия).
Ане нравится монополия,
нравится (аня, монополия)
если монополия – игра.
if игра (монополия).
У языков логического программирования два главных отличия от классических
алгоритмических языков:
Это символьное программирование. Данные в нем суть символы,
представляющие только самих себя и не подлежащие интерпретации при
выполнении программы.
Алгоритмы получения определенных результатов непосредственно
задаются, но описываются объекты, их свойства и отношения.
не
Скачать