|
Основные принципы модульного программирования. Средства для разработки модульных программ на примере одного из языков программирования высокого уровня.
Модульное программирование - это организация программы как совокупности небольших независимых блоков, модулей, структура и поведение которых подчиняется определенным правилам. Следует заметить, что понятие «модуль» не совпадает в данном случае с понятием «модуль» ( в смысле «библиотека») языка Паскаль. Это должна быть простая, замкнутая (независимая) программная единица (процедура или функция), обозримая, реализующая только одну функцию. Для написания одного модуля должно быть достаточно минимальных знаний о тексте других, как вызывающих, так и вызываемых. Программа, разработанная в соответствии с принципами структурного программирования, должна удовлетворять следующим требованиям:
программа должна разделяться на независимые части, называемые модулями
модуль - это независимый блок, код (текст) которого физически и логически отделен от кода других модулей;
модуль выполняет только одну логическую функцию, иначе говоря, должен решать самостоятельную задачу своего уровня по принципу: один программный модуль - одна функция;
Работа программного модуля не должна зависеть:
от входных данных;
от того, какому программному модулю предназначены его выходные
данные;
от предыстории вызовов программного модуля;
Размер программного модуля желательно ограничивать одной-двумя страницами исходного листинга (50-100 строк исходного кода); Модуль должен иметь только одну входную и одну выходную точку; Взаимосвязи между модулями устанавливаются по иерархической структуре; Каждый модуль должен начинаться с комментария, объясняющего его назначение, назначение переменных, передаваемых в модуль и из него, модулей, которые его вызывают, и модулей, которые вызываются из него; При создании модуля можно использовать только стандартные управляющие конструкции: выбор, цикл, блок (последовательность операторов); Оператор безусловного перехода или вообще не используется в модуле, или применяется в исключительных случаях только для перехода на выходную точку модуля; В тексте модуля необходимо использовать комментарии, в особенности в сложных местах алгоритма; Идентификаторы переменных и модулей должны быть смысловыми, «говорящими»; В одной строке стоит записывать не более одного оператора. Если для записи оператора требуется больше, чем одна строка, то все последующие операторы записываются с отступами; Желательно не допускать вложенности более, чем трех уровней;
Следует избегать использования языковых конструкций с неочевидной семантикой и программистских «трюков».
В заключение следует напомнить, что все эти вместе взятые меры направлены на повышение качества разрабатываемого программного обеспечения.
Основные концепции объектно – ориентированного программирования. Понятие инкапсуляции, наследования и полиморфизма. Классы и объекты.
В теории программирования ООП определяется как технология создания сложного программного обеспечения, которая основана на представлении программы в виде совокупности объектов, каждый из которых является экземпляром определенного типа (класса), а классы образуют иерархию с наследованием свойств. Взаимодействие объектов в такой системе осуществляется путем передачи сообщений между объектами. В основу ООП заложены следующие принципы: Абстрагирование – процесс выделения абстракций в предметной области задачи. Абстракция – совокупность существенных характеристик некоторого объекта, которые отличают его от других объектов и т.о. четко определяют особенности данного объекта с точки зрения дальнейшего рассмотрения и анализа. Иерархичность – ранжированная или упорядоченная система абстракций. Типизация – ограничения, накладываемые на свойства объектов и препятствующие взаимозаменяемости абстракций разных типов (либо сильно сужающие такую возможность). Реализация позднего связывания в языке программирования позволяет создавать переменные – указатели на объекты, принадлежащие разным классам (так называемые полиморфные объекты). Параллелизм – свойство нескольких абстракций одновременно находиться в активном состоянии, т.е. выполнять несколько операций. Устойчивость – свойство абстракции существовать во времени независимо от процесса, породившего программный объект и/или в пространстве, перемещаясь из одного адресного пространства, в котором он был задан в другое ООП включает в себя три основных понятия: абстрактные типы данных, наследование, динамическое связывание. Языки ООП (ООЯ) поддерживаются этой парадигмой с помощью классов, методов, объектов, передаваемые сообщений.
Характеристика основных структур хранения данных: вектор, список, сеть. Линейные структуры данных: способы формирования, основные операции и примеры использования.
Память компьютеров с архитектурой Intel представляет собой упорядоченный набор непосредственно адресуемых машинных ячеек (байтов). Исходя из этого номенклатура структур хранения данных архитектурно ограничена следующим набором: скаляр, вектор, список, сеть.
- Скаляр — поле, содержащее одиночное двоичное значение, размерностью один или несколько байтов. Количество байтов, составляющих скаляр, определяется допустимыми размерами операндов системы команд конкретного процессора.
- Вектор — конечное упорядоченное множество расположенных рядом скаляров одного типа, называемых элементами вектора. По сути дела вектор — это одномерный массив. Что у них общего? Геометрически вектор представляет собой состоящий из точек объект в пространстве, имеющий начальную точку, из которой он выходит, и конечную точку, в которую он приходит. Точки, лежащие в пространстве между начальной и конечной точками (элементы вектора), находятся между собой в единственно возможном отношении — отношении непосредственного следования. Такая строгая упорядоченность элементов вектора позволяет произвести их последовательную нумерацию. Аналогично и одномерный массив имеет началом и концом скаляры, расположенные по определенным адресам памяти. Между этими адресами последовательно расположены скаляры, составляющие элементы массива. Определенность с начальным и конечным адресами массива, а также с размерностью его элементов дает возможность однозначно идентифицировать любой его элемент.
- Список — набор элементов, каждый из которых состоит из двух полей. Одно поле содержит элемент данных или указатель на элемент данных, другое -указатель на следующий элемент списка, который, в свою очередь, тоже может быть начальным или промежуточным элементом другого списка. Наличие явного указания на упорядоченность элементов списка позволяет достаточно легко манипулировать содержимым списка, включая новые и исключая старые элементы списка без их фактического перемещения в памяти. Это свойство позволяет размещать в памяти динамически изменяющиеся структуры данных.
- Сеть — набор элементов, каждый из которых помимо информационного поля содержит несколько полей-указателей на другие элементы сети. С помощью сети удобно представлять такие структуры данных уровня представления, как деревья, ориентированные графы и т. п.
Линейные структуры данных – это структуры данных, в которых переход от одного элемента данных к другому не зависит от каких-либо логических условий, т.е. в линейных структурах используются лишь безусловные связи элементов.
К линейным структурам относятся стеки, очереди и деки. Очереди и стеки — это динамически изменяемые упорядоченные наборы элементов. Новые элементы в очередях и стеках всегда добавляются к одному и тому же концу набора — «входному концу».
Стек функционирует по принципу «последним пришел — первым ушел» , при этом удаление элементов производится с входного конца. При добавлении в стек нового элемента данных все ранее загруженные элементы сдвигаются на одну позицию в глубину стека, а при удалении элемента данных сдвиг производится на одну позицию ко входу в стек. По такому принципу используется, например, стопка бумаги (листы добавляются и удаляются сверху) или магазин автомата (верхний патрон выстреливается первым), поэтому иногда стек называют магазином.
Очереди и стеки обычно организуются аппаратными (схемными) средствами как очень быстрые запоминающие устройства ограниченной емкости с безадресным обращением. Например, очереди могут использоваться для запоминания запросов центрального процессора на обслуживание терминалов, стеки — при трансляции скобочных выражений, обработке вложенных циклов, вычислениях по рекуррентным формулам.
Не нашли, что искали? Воспользуйтесь поиском по сайту:
©2015 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.
|