- •Преимущества
- •Связь: ooa→oop→ood
- •Механизм работы virtual
- •Абстрактный класс
- •Виртуальный деструктор
- •{Основные элементы языка программирования}
- •Основные подходы к семантике:
- •Формальное описание семантики:
- •Среда программирования
- •Объекты данных
- •Атрибуты объекта данных
- •Система типизации данных
- •Реализация типов данных
- •Типизация
- •Система типизации данных
- •Реализация типов данных
- •Связывание переменных
- •Контроль типов
- •Статистический контроль типов
- •Алгоритм статистического контроля типов
- •Динамический контроль типов
- •Параллелизм
- •Полиморфизм
- •Статический полиморфизм
- •Динамический полиморфизм
- •Преобразование типов
- •Связь: ooa→oop→ood
- •Среда программирования
- •Цель технологий параллелизма
- •Схемы параллелизма
- •Проблемы параллельного программирования
- •Показатели эффективности параллельного алгоритма Ускорение
- •Закон Густавсона-Барсиса
- •Масштабируемый алгоритм
- •Схемы параллелизма
- •Подтипы данных
- •Разновидности массивов. Статические
- •Кортежи
- •Разновидности массивов. Статические
- •Динамические
- •Атрибуты объекта данных
- •Операции над целыми числами
- •Вещественные числа
- •Числа с фиксированной точкой
- •Числа с плавающей точкой(float)
- •Ошибки вычислений с вещественными числами
- •Утечки памяти и повисшие указатели
- •Указатели на указатели
- •Типизированные указатели
- •Указатели на функции
- •[Отличия указателей и ссылок]
- •Параметры подпрограмм
- •Преимущества подпрограмм
- •Позиционное сопоставление
- •Сопоставление по имени
- •Методы передачи параметров:
- •Передача параметров по значению
- •Передача параметров по ссылке
- •Передача параметров по значению-результату
- •Параметр по результату
- •Стековые языки
- •Циклы и рекурсия
- •Циклы со счетчиком
- •Операторы циклы без заданного числа повторений (бесконечно)
- •Динамический полиморфизм
- •Родовые (настраиваемые) сегменты и шаблоны
Параметры подпрограмм
• Данные передаются подпрограмме в виде последовательности значений – параметры.
• Формальный параметр - некоторое значение (в т.ч переменная или адрес памяти), передаваемое внутрь подпрограммы и использующееся ею для вычислений( в т.ч и для возвращения значений)
• Объявление, которое находится в объявлении подпрограммы. Вычисление в теле подпрограммы пишется в терминах формальных параметров.
• Фактические параметры – конкретные значения, подставляемые на места формальных параметров подпрограммы. Это значение, которое вызывающая программа передает подпрограмме.
Int sq (int x)//х - формальный параметр
{Return x*x;}//в теле – формальные параметры
Sq(2);//вызов функции, ‘2’-фактический параметр
Различают три разновидности фактического параметра:
Локальный объект данных, принадлежащий вызывающей программе.
Нелокальный объект данных, видимый из вызывающей программы.
Результат вычислений функции, вызванной из вызывающей программы, который возвращается в точку вызова.
Преимущества подпрограмм
Уменьшение сложности программирования. Использование имени подпрограммы позволяет абстрагировать от деталей реализации, думать в терминах операций, относящихся к решаемой проблеме.
Закрытость реализации - модификация алгоритма внутри подпрограммы не воздействует на остальную программу.
Модульность программ - разбиение программы на небольшие куски, которые можно рассматривать отдельно, подпрограммы позволяют управлять более крупными программами.
Расширение возможностей языков программирования - создание библиотек. Мат функции синуса или логарифма обеспечиваются библиотекой, как и процедуры ввода-вывода.
59. Передача параметров подпрограмме.
Способы передачи параметров
1) Семантика COPY IN – копировать значение фактического параметра, в место памяти, выделенного для формального параметра. Особенности: функция возвращает только 1 результат, но если вычисления сложные, то может понадобиться возврат нескольких значений. Для того чтобы это осуществить нужно задать в процедуре несколько фактических параметров, которым могут быть присвоены результаты вычисления.
a. Целью выполнения подпрограммы может быть модификация данных, которые ей передаются, а не вычисления, тогда данная семантика не эффективна.
b. Параметр может быть настолько большим, что копировать его не эффективно.
2) Семантика COPY OUT - Фактический параметр должен быть переменный, а подпрограмме передается адрес фактического параметра, которая она сохраняет. Для формального параметра используется временная локальная переменная, и значение должно быть присвоено формальному параметру хотя бы один раз, во время выполнения подпрограммы. Когда выполнение подпрограммы завершено, значение копируется в переменную, для которой указывают сохраненный адрес.
3) Семантика COPY IN/OUT – фактически параметр копируется в подпрограмму, когда она вызывается. Результирующее значение копируется обратно после её завершения.
4) Семантика ссылки – передает адрес фактического параметра и обращается к параметру косвенно.
5) Формальные параметры являются внутренними элементами подпрограммы. Большинство языков программирования различают входные и выходные парамметры. Бывают параметры входные/выходные. Описание и использование параметров является специфичным для каждого языка программирования. В С все параметры являются входными, а для выходных используется передача указателя. Изменение входных параметров внутри подпрограммы никак не сказываются на фактических параметрах.
Поэтому в качестве фактических параметров, могут выступать любые выражения.
Выходные параметры наоборот нужны для того, чтобы их модификация отразилась на фактическом параметре.
Параметры подпрограммы имеют соответствующую область памяти. Они недоступны вне этих подпрограмм.
Глобальные переменные программы доступны внутри подпрограмм только в случае, если никакой параметр подпрограммы не имеет такое же имя.
При вызове подпрограммы входные параметры передаются через внутреннюю память (стек).
Значение фактических параметров копируется в создаваемой ячейке локальных переменных, из-за этого вызов подпрограмм с входными параметрами производятся медленнее и потребляют дополнительную память. Однако, изменение типа параметра с входного на входной и выходной или использование глобальных переменных нарушает структурированность программы. Возвращаемый функцией результат является специальной выходной переменной. Большинство языков программирования поддерживают строгую типизацию параметров подпрограмм. Так же во многих языках программирования разрешается создавать вложенные подпрограммы.
<Методы передачи параметров>
• Сопоставление между фактическими и формальными параметрами в вызове подпрограммы - передача параметров.
• Методы передачи параметров – способы, которые параметры передаются в/из подпрограммы.
• Два способа, которые применяются для установления такого связывания:
Позиционное сопоставление.
Сопоставление по имени.
