Пятница, 22.11.2024, 19:50
Приветствую Вас Гость | RSS | PDA

Всё для студента информата

Полезная информация

Материалы для студента

Всё для студента IT » Материалы для студента » Теория языков программирования

Синтаксис языка программирования - Общая структура программы и подпрограммы

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

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

Отдельное определение данных. Альтернативной моделью является объединение в одну группу всех операций, которые взаимодействуют  с конкретным объектом данных. Например, подпрограмма может состоять из всех операций, связанных с обработкой данных определенного формата, имеющихся в программе: операций создания записей данных (data record), операций печати записей данных и операций вычислений с записью данных. Это общий подход для языков, в которых имеется механизм класса (С++).

Вложенные определения подпрограмм. Вложенное определение подпрограмм играло существенную роль для создания модульных программ на раннем этапе развития языков программирования (ALGOL, FORTRAN, Pascal. Но с появлением объектно-ориентированных языков типа C++, Java эта концепция утратила свое значение. Pascal является примером языка со вложенной структурой программ, при которой определения подпрограмм играют роль объявлений в программе. Сами эти подпрограммы, в свою очередь могут содержать другие вложенные определения подпрограмм и так до любого уровня вложенности. Вложенные определения подпрограмм обеспечивают для этих подпрограмм соеду нелокалных ссылок, которая определяется во время компиляции и допускает статическую проверку типов и компиляцию эффективного выполняемого кода для программ, содержащих нелокальные ссылки.

Независимые определения интерфейса. Структура языка FORTRAN легко позволяет компилировать отдельные подпрограммы, но недостатком такого подхода является то, что одни и те же данные, используемые в разных подпрограммах, могут быть по разному объявлены в них. Следствием этого является неспособность компилятора обнаруживать подобные несоответствия во время компиляции. Pascal, напротив, позволяет осуществлять такую проверку, так как компилятор языка Pascal имеет доступ ко всем определениям данных. Но недостатком такого подхода является необходимость перекомпоновки всей программы при внесении любого изменения (что в случае длинных программ значительно замедляет разработку программ). В языках Ada, C для улучшения качества работы компилятора используются возможности обеих методик.
В названных языках реализация программы состоит из нескольких подпрограмм, которые должны взаимодействовать друг с другом. Объединение и связывание подпрограмм воедино (как в FORTRAN) позволяет проводить изменения в отдельном модуле независимо от других. В то же время наличие общих объявлений данных обеспечивает их эффективную проверку компилятором. Однако для передачи информации между независимо компилируемыми модулями нужны дополнительные данные. Для этого используется механизм компонент типа СПЕЦИФИКАЦИИ ПРОГРАММЫ. В языке С – это включение в программу файловых операций операционной системы, что позволяет включать в программу файлы, содержащие определение интерфейса. Файлы с расширением .h формируют компоненты спецификации программ, а файлы с расширением  .с формируют компоненты реализаций.

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

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

Похожие статьи:

Не нашли то, что Вам нужно?.. Найдите ответ на форуме!
Категория: Теория языков программирования | Добавил: admin (23.04.2011)
Просмотров: 2493 | Теги: лекция, Тяп, синтаксис
Сообщество
Помощь
Форма входа
Поиск

Студенческий помощник по информатике © 2024
При цитировании материалов данного сайта, обязательна ссылка на источник: ITstudents.ru



>