Лекция 01. Тема Общая характеристика языков программирования высокого уровня


Параметры, являющиеся именами подпрограмм


Download 4.1 Mb.
Pdf ko'rish
bet40/57
Sana12.11.2023
Hajmi4.1 Mb.
#1767546
TuriЛекция
1   ...   36   37   38   39   40   41   42   43   ...   57
Bog'liq
Lektsii po YaP Lukinova 2 sem

4.5. Параметры, являющиеся именами подпрограмм. 
Часто возникают ситуации, когда имена подпрограмм передаются 
другим подпрограммам. В частности, при передаче в подпрограмму имени 
математической функции.
При этом возникает проблема проверки типов параметров-подпрограмм. 
Если возможна независимая компиляция (см. ниже), то компилятор не 
позволяет проверить даже правильность количества параметров. При 
раздельной компиляции проверка совместимости параметров возможна, но 
представляет собой крайне сложную задачу и обычно не выполняется. В 
языке Algol-68 или в позднейших версиях языка Раscal, типы формальных 
параметров включаются в список формальных параметров, получаемых 
подпрограммой, так что совместимость типов параметров, передаваемых в 
подпрограмму можно выполнить статически.
В языках С и C++ функции не могут передаваться как параметры, но 
указатели на функции – могут. Тип указателя на функцию определяется ее 
протоколом. Поскольку протокол содержит типы всех параметров, такие 
параметры, вообще говоря, могут быть полностью проверены на 
совместимость типов.
4.6. Понятие полиморфизма.
Понятие полиморфизма означает, что одно и то же имя может 
использоваться для логически связанных, но разных целей, т.е. имя 
определяет набор действий, которые в зависимости от типа данных могут 
существенно отличаться. 
Полиморфизм широко используется в императивных языках на уровне 
знаков операций. Например, привычные нам символы арифметических 
операций «+», «-», «*», «/» и др. являются перегруженными (их реализация 
осуществляется в идеологии полиморфизма) в любом ЯПВУ, т.е. один и тот 
же символ олицетворяет и действие для целого типа, и для вещественного. А 
в языках С, С++ реализована перегрузка операций <<, >>, которые имеют 
двоякий смысл – поразрядный сдвиг или вывод на консоль. Когда 


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

Download 4.1 Mb.

Do'stlaringiz bilan baham:
1   ...   36   37   38   39   40   41   42   43   ...   57




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling