Cтраница 2
Входная информация верхнего уровня не содержит данных относительно конкретной ЦВМ, на которой реализуется программа, а отражает только логику работы транслируемого алгоритма. Основным назначением верхнего уровня является определение общей структуры программы и глобальной памяти, распределение информации между устройствами ЦВМ, организация связи с операционной системой ЦВМ, определение адресов всех глобальных величин, последовательности и содержания операторов программы. Все эти задачи решаются с учетом конкретных характеристик управляющей ЦВМ. [16]
Такие языки часто используются в структурном программировании. Обычно формальный синтаксис языка проектирования программ покрывает задачи определения данных и общей структуры программы. В последнем случае используемые средства должны включать в себя основные управляющие структуры - следования, выбора и итерации - и конструкции для определения и вызова подпрограмм. [17]
Два взаимодействующих модуля образуют пару вызывающий модуль - подпрограмма. Для правильного их функционирования необходимо, чтобы вызывающему модулю было известно местонахождение подпрограммы в общей структуре программы, были определены способы вызова подпрограммы и возврата из нее и, наконец, выбран способ обмена данными между подпрограммой и вызывающим модулем. [18]
Нисходящее проектирование, облегчая в значительной степени отладку - наиболее трудный этап разработки программ - позволяет рядовым и начинающим разработчикам сравняться с более сильными и опытными по эффективности отладки программ и сложности решаемых задач, а опытным - повысить надежность сложных программ, то есть уменьшить количество необнаруженных ошибок. Содействие нисходящего проектирования эффективному поиску ошибок в программе можно объяснить и тем, что зафиксированные на бумаге различные по детализации уровни алгоритма помогают разработчикам быстро переключать свое внимание от общей структуры программы на другие гораздо более конкретные ее представления. А именно такая возможность ( или способность программиста) является, в конечном счете, главным условием успешной локализации ошибок и, в целом, разработки программ. [19]
Глобальное масштабирование имеет целью преобразование формул и операторов для исключения возможности получения значений переменных, приводящих к потере точности или делению на нуль во всем диапазоне изменения переменных. Такая задача решается на верхнем уровне при формировании общей структуры программы и ее блок-схемы. Локальное масштабирование для ЦВМ с фиксированной запятой имеет целью лишь сопряжение масштабов двух величин или результатов предыдущих вычислений. Оно реализуется умножением ( или сдвигом) результата или очередного операнда, при этом учитывается место знакового разряда и другие особенности представления чисел в управляющей ЦВМ. [20]
Изложение элементарных принципов программной реализации представляется авторам весьма важным компонентом учебного материала. По их мнению даже для инженера, занимающегося только счетом по готовым программам, эти программы не должны быть абсолютно черными ящиками. Поэтому в пособии уделено большое внимание изложению примеров составления простейших программ, использования стандартного программного обеспечения, а также рассмотрению общей структуры программ для решения простейших задач теплообмена. [21]
Входная информация верхнего уровня может включать и альтернативные данные для компоновки общей программы на основании некоторого общего показателя качества. Задачей верхнего уровня может являться выделение из алгоритма стандартных блоков и функций. Эти две последние задачи не обязательны для реализации в САП и могут быть возложены на программистов, записывающих алгф ритм, однако их реализация в САП может быть только щ верхнем уровне, так как по их результатам опеределяется общая структура программы. [22]
Нам предстоит выбрать один из двух видов порций для дальнейшей работы. Рассмотрим их повнимательнее и попытаемся представить себе, для какого вида порции программа должна получиться проще. В первом случае последняя порция имеет особый вид; а во втором - первая буква текста выпадает из цикла, и порция кажется не вполне естественной, так как в ней присутствуют части двух соседних слов. Общая структура программы, видимо, будет проще все-таки для 2-го случая, поскольку цикличности обработки текста легко добиться, введя первую букву текста перед циклом. [23]
На распечатке 1.1 представлена простая программа на языке Модула-2. Эта программа выводит сообщение на экран и записывает числа от 1 до 10 в столбик. Цель, с которой так рано рассматривается программа, состоит в том, чтобы показать общую схему программы. Читателю нужно получить представление об общей структуре программы на Модуле-2 еще до того, как будут введены конкретные элементы языка. Неопытным программистам придется принять бо льшую часть этой программы на веру, пока она не будет подробно рассмотрена в последующих главах. [24]
Обратите внимание, что при коде заготовки, равном 2, управление передается по адресу 31, где стоит команда В / О. Иначе говоря, реализуется переход на пустую подпрограмму. Это сделано, чтобы не нарушать общей структуры программы, не включать в нее анализ значения кода, загружая ее лишними в данном случае командами сравнения и передачи управления. [25]
В настоящее время практически каждая ЭВМ общего и специального назначения снабжается собственным автокодом. Практически каждый автокод представляет собой оригинальный машинно-ориентированный язык программирования. В целях упрощения обучения программистов при переходе с одной специализированной ЭВМ на другую, а также упрощения настройки САПО на новый автокод целесообразно принять общие правила построения автокодов для специализированных ЭВМ на базе общей структуры программы и описаний данных, изложенных выше. [26]