Информационный сайт

 

Реклама
bulletinsite.net -> Книги на сайте -> Программисту -> Непейвода Н.Н. -> "Основания программирования " -> 158

Основания программирования - Непейвода Н.Н.

Непейвода Н.Н., Скопин И.Н. Основания программирования — Институт компьютерных исследований , 2002. — 919 c.
Скачать (прямая ссылка): osnovanprogramm2002.pdf
Предыдущая << 1 .. 152 153 154 155 156 157 < 158 > 159 160 161 162 163 164 .. 316 >> Следующая

• Hедопустимость использования в качестве значений процедурного типа стандартных процедур и функций. Чисто прагматически это ограничение связано с другим форматом библиотек, но с теоретической точки
8.5.
445
зрения оно так е целесообразно, поскольку исходные процедуры программируются совершенно другим способом, с использованием осо-бенностой конкретного процессора и конкретной реализации. Обойти данное ограничение легко, построив сво процедуру или функци с телом из единственного оператора, взываего требуему программ-ну единицу.
• роцедуры и функции, которые могут подставляться в качестве фактических параметров для формальнх параметров процедурного типа, долны бть оттранслированы в самом обем реиме (использование так называемой дальней модели вызова подпрограмм, которое задается с помоь специального прагматического указания для компилятора). Это ограничение прагматическое, оно суественно преде всего для Turbo Pascal, поскольку в Delphi такой режим трансляции процедур стал стандартным по умолчани , но оно так е подкрепляется теоретическими рассмотрениями.
• роцедур и функции, используемые в качестве значений процедурного типа, не могут быть вложенными, т. е. не могут находиться внутри других подпрограмм (здесь создатели системы обошли серьезнейшую теоретическу ловуку).
• Процедуры и функции, используемые в качестве значений процедурного типа, не могут иметь прямых обраений к средствам операционной системы (и здесь никакое реение не было бы теоретически удовлетворительным, а практически удовлетворительне ослабления данного ограничения пока неизвестны).
Задания для самопроверки
1. Самостоятельно модифицировать алгоритм ввода матриц, предусматривая возмо ность оибочного ввода.
2. Продумать другие варианты представлений очередей и алгоритмы функций и процедур для работы с ними (например, кольцевой буфер).
3. Почему на стр. 388 говорится в связи с препроцессором не о программе, а о программном тексте?
4. Что будет, если из локального контекста функции MyInpMatr (см. программу 8.3.4) удалить описание переменной N?
446
ГЛАВА 8. ПОДПРОГРАММЫ
5. Hет никаких реализационных препятствий для обращения к формальному параметру по его вычисляемому порядковому номеру. Подумайте, почему в хорошо определенных языках это средство не встречается, а, скажем, в C, где оно осталось как рудимент, им во всех методиках решительно рекомендуют не пользоваться?
6. Как Вы думаете, каковы достоинства и недостатки идентификации параметров их номерами?
7. Привести пример, когда при параллельных вычислениях передача параметра-переменной и inout-параметризация приводят к разным результатам.
8. дин из авторов книги в студенческие год попал в ловуку, стоив-у ему линей недели работ над программой. дна из стандартных программ системы Algol-60 принимала параметр по имени, а автор подставил вместо него 0. В результате в разных местах программы началась мистика: константа 0 получила другое значение!
Как вы думаете, должен ли транслятор извещать программиста о такой ошибке? Если да, то какой алгоритм ее обнаружения Вы предложите?
9. На стр. 428 обсуждалсялокальный контекст процедуры MyOwnInpMatr и делался вывод о не елательности вынесения некоторх переменных в глобальный контекст. ерепроверьте эти рассу дения с помоь понятия операционной обстановки и операционного контекста.
10. Почему не стоит исключать возрождения аппарата параметров-имен? Для каких языков он привлекателен?
11. акие эффекты возника т при спецификации параметра как var N : by need?
12. Эквивалентны ли спецификации
name N : by need
и
name N ?
13. Сопоставтьте параметры-функции с параметрами, ппередаваемыми по наименовани . риведите примеры одинаковх и различных эффектов.
8.6.МОДУЛЬНОСТЬ TURBO PASCAL
447
§ 8.6. РАЗВИТИЕ ЯЗЫКОВЫХ СРЕДСТВ МОДУЛЬНОСТИ В ЯЗЫКАХ ЛИНИИ TURBO PASCAL
онятие модульности является одним из центральных в программировании, и м неоднократно обсу дали и будем обсу дать его различные аспекты. Этот параграф целиком посвящен развитию идеи модуляризации. В качестве базы мы выбрали язык Pascal и его диалектов и прямых потомков: Turbo Pascal и Object Pascal. Они ярко демонстрируют историческую трансформацию и отнюдь не самое худшее воплощение этой идеи. Конечно, один пример не в состоянии продемонстрировать все грани модуляризации. о он дает достаточно наглядное и убедительное представление данного вопроса. Выбор иного языка, к примеру С/С++, был бы не столь показательным, поскольку его линия развития находится под еще большим давлением примитивно понимаемой прагматики, что стабильно приводит к стратегически худим реениям и весьма затуеввает картину. Что е касается методических поло ений, развиваемых ни е, и в частности, выбора проектных решений, то, если оставаться в рамках традиционной модели вычислений, этот материал совсем не зависит от языка программирования. 8.6.1. Поддержка модульности в стандартном языке Pascal
Ближайшая задача, решаемая ниже, — развитие примера работы с очередями из § 8.1 в направлении реализации операционных подпрограмм некоторой специальной библиотеки. Требуется составить следуие подпрограммы:
Предыдущая << 1 .. 152 153 154 155 156 157 < 158 > 159 160 161 162 163 164 .. 316 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100