Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Структура программного модуля




......

условие n условие n Выход n

о

действие n действие n

б) в)

цикл цикл

Вход завершен Выход Вход завершен Выход

о о о о о о о о

тело цикла

цикл не цикл не

завершен завершен

тело цикла

г) д)

Рис. 1.9. Р-графы типовых алгоритмов

Цикл с неизвестным числом повторений характерен тем, что число повторений тела цикла заранее определить невозможно. Примером такого цикла является алгоритм "Подавай звуковой сигнал, пока с клавиатуры не будет введено число 10". Поскольку числа, вводимые с клавиатуры, являются произвольными (ведь в условии задачи не оговорен диапазон и порядок следования вводимых чисел), то число повторений тела цикла предсказать невозможно.

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

Цикл с модификацией команд предусматривает изменение параметров команд в зависимости от номера шага выполнения цикла. Возвратимся к алгоритмам подачи звуковых сигналов. Если частоту подаваемого сигнала сделать зависящей от содержимого счетчика цикла, мы получим цикл с модификацией команды, потому что частота – параметр сигнала, а значит, и команды "подать звуковой сигнал": "Меняя содержимое счетчика от 1 до 10 с шагом 1, подавать звуковой сигнал с частотой равной десятикратному содержимому счетчика".

Цикл с модификацией адресов данных предусматривает изменение адресов обрабатываемых данных в зависимости от номера шага выполнения тела цикла. Рассмотренный выше алгоритм записи нулей в элементы массива является типичным циклом с модификацией адресов данных.

Возможно комбинирование модификации команд и модификации адресов данных. В этом случае получается цикл с модификацией команд и адресов данных.

Следует иметь в виду, что в современной практике программирования типовые алгоритмы встречаются в комбинации друг с другом (т.е. как фрагменты некоторого сложного алгоритма).

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

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

· заголовок;

· описание меток;

· описание типов данных;

· описание данных;

· описание процедур; функций; методов объектов;

· реализацию алгоритма.

Если модуль не является главным, то он может быть чисто описательным и не содержать раздел реализации алгоритма.

Заголовок обычно состоит из специального слова и комментария. Специальное слово (например, PROGRAMM или UNIT) указывает на назначение модуля. Некоторые языки позволяют его не употреблять или вообще не предусматривают его. Комментарий обычно содержит текст, который системой программирования игнорируется и содержит необходимые для самого программиста служебные сведения.

Описание меток начинается словом LABEL и содержит перечень идентификаторов (имен) меток. Оно может отсутствовать, если метки не употребляются. Некоторые языки позволяют вообще не описывать метки.

Описание типов данных содержит описания сложных типов, сконструированных самим пользователем из стандартных типов, и может отсутствовать. Описание сложного типа данных содержит имя типа данных и перечень имен и типов его составных частей. Это описание необходимо для того, чтобы впоследствии, сославшись на созданный тип, указать длину конкретных данных в байтах.

Описание данных содержит список идентификаторов данных различных типов, являющихся символьными эквивалентами адресов данных, и указания типов данных. Традиционно различают следующие виды данных – переменные, константы и именованные константы.

Переменными называются данные, которые хранятся по вполне определенным адресам и могут меняться в ходе выполнения программы.

Именованные константы тоже являются данными, которые хранятся по определенным адресам и должны оставаться неизменными в течение работы программы. Изменение таких данных, в принципе, должно блокироваться средствами языка программирования. Некоторые языки программирования не имеют такого механизма блокирования. Многие языки предоставляют пользователю массу встроенных именованных констант, имеющих различное назначение.

Константы являются конкретными значениями различных данных, определяемыми программистом в момент написания текста программы. Как и всякие данные, они имеют различные типы, как правило, определяемые по контексту, в котором они употребляются. Например, число 2 может быть и целым, и длинным целым, и числом с плавающей точкой, и числом с плавающей точкой двойной точности.

Описания процедур, функций и методов выполняются по схемам, приведенным на рис. 1.2, 1.3 и предшествуют вызовам этих блочных структур в тексте программы. Некоторые процедуры и функции могут содержать внутри себя вызовы других процедур и функций. Поэтому теоретически порядок следования описаний не должен допускать вызова блочной структуры до ее описания. Ряд языков снимают это ограничение путем введения декларирования имени процедуры или функции и указания о последующем описании этой блочной структуры. Этот механизм "ссылок на дальнейшее описание" может применяться как в явном, так и в неявном виде.

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

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




Поделиться с друзьями:


Дата добавления: 2014-11-29; Просмотров: 763; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.01 сек.