Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
1337.docx
Скачиваний:
6
Добавлен:
01.04.2025
Размер:
211 Кб
Скачать
☆

29.Строки

Строки представляют собой последовательность символов и фактически реализованы как массив из символов. В первоначальной версии языка Паскаль предполагалось, что описание

VAR S: ARRAY[1...50] of char;

определяет строку из 50 символов. В современных версиях языка такая конструкция также будет работать. Однако более удобно использовать новые встроенные типы для строк. Приведем их в таблице: Тип строки

Максимальная длина

Используется для

Нулевой символ

в конце

ShortString

255

обратной совместимости

нет

AnsiString

231 (2 Гб)

символов ANSI

есть

String

или 255, или до 2 Гб

символов ANSI или Unicode

есть или нет

WideString

230 (1 Гб)

символов Unicode, в серверах COM и интерфейсах

есть

50. Проектирование модульных программ. Модуляризация

Обычно при проектировании программ разбиение проекта на модули происходит в самом начале разработки программной системы. Этот процесс называется модуляризацией. Как правило, этим занимается системный аналитик проекта и его группа. Считается, что размер модуля должен колебаться в пределах 30–300 строк исходного текста. Наглядность модуля существенно улучшается за счет использования в заголовке (начале) модуля комментариев и подробного описания функций модуля. При беглом просмотре достаточно читать комментарии-заголовки, практически не обращая внимания на весь остальной текст.

Обычно результат модуляризации изображается в виде графа взаимосвязи модуля и/или подсистем. Основой («корнем») этого графа является главная программа. Каждая вершина графа представляет собой модули, а дуги, соединяющие вершины, показывают взаимосвязь модулей между собой.

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

После завершения модуляризации, каждый модуль распределятся для кодирования между программистами для независимого написания кода и отладки. Однако в таких случаях часто возникает ситуация, когда в родительском модуле предполагается использование процедур и функций дочерних модулей, но дочерние модули ещё не закодированы другими программистами. Например, в модуле М3 используются элементы K, L из дочерних модулей, но эти модули пока не готовы, как быть программисту, реализующему код модуля М3? Выход из этой ситуации осуществляется посредством написания в родительском модуле процедур (или функций) «заглушек», которые по имени и параметрам полностью совпадают с элементами K, L. Заглушки позволяют компилировать и выполнять программу в отладочном режиме.

Процедура «заглушка» – процедура, представленная точной спецификацией заголовка (название и параметры) и пустым телом. Функция «заглушка» – функция, представленная точной спецификацией заголовка

165

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

Function L(A: integer):integer;

Begin

Result:= 3;

End;

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

Writeln (‘я внутри процедуры K’);

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