Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ООП.rtf
Скачиваний:
42
Добавлен:
03.08.2019
Размер:
707.21 Кб
Скачать

8 Основные принципы структурного программирования.

Рост затрат на разработку программного обеспечения заставил искать такую технологию разработки программ, которая позволила бы:

а) получать надежные программные продукты, т. е. программный код, без ошибок;

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

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

Ключевая идея структурного программирования — отражение внутренней структуры алгоритма в структуре текста программы. Например, следуя Н. Вирту, реализуем алгоритм Евклида поиска наибольшего общего делителя двух целых чисел (НОД), который состоит в замене большего из двух чисел на их разность до тех пор, пока числа не станут равными. Тогда полученное число и есть искомый НОД.

Первый набросок выглядит так:

WHILE х #у DO

заменить большее из х и у на их разность”

WEND

Здесь символ “#” означает “не равно”. Заменим теперь текст в кавычках на предложения формального языка:

WHILE х #у DO

IF х > у THEN

х : = х — у

ELSE у: = ух

END IF

WEND

Иерархия операторов в данном фрагменте текста отражает структуру алгоритма. Первый набросок — это один оператор, который содержит другой — подчиненный “оператор” (текст в кавычках). В формальном тексте этот внутренний оператор детализирован.

Развитие идей структурного программирования привело к появлению модульного программирования. Программа разбивается на модули, соответствующие иерархии абстракций. Каждый модуль с точки зрения его внешнего функционирования соответствует какой-либо абстракции, например, операция ввода-вывода; при этом нам совершенно безразлично внутреннее устройство модуля. Более того, внутреннее устройство модуля должно быть скрыто. Такое скрытие внутренней информации модуля, защищенность от внешнего доступа, с одной стороны, гарантирует правильность функционирования модуля, с другой стороны, предоставляет возможность изменения в случае необходимости только этого модуля без изменения остальных модулей.

С внедрением в широкую практику разработки программ объектно-ориентированного программирования, впитавшего в себя идеи структурного и модульного программирования, структурное программирование стало фактом истории информатики.

9 Основные типы и способы организации данных (переменные, массивы, списки).

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

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

Вот как выглядит иерархия скалярных типов (классов) в языке Смолток:

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

Структурные типы языка Смолток имеют следующую иерархию:

В языке Паскаль и родственных ему языках для создания сложных структур данных используется тип “запись”, в языке С для этой же цели служит тип “структура”.