- •Преимущества
- •Связь: ooa→oop→ood
- •Механизм работы virtual
- •Абстрактный класс
- •Виртуальный деструктор
- •{Основные элементы языка программирования}
- •Основные подходы к семантике:
- •Формальное описание семантики:
- •Среда программирования
- •Объекты данных
- •Атрибуты объекта данных
- •Система типизации данных
- •Реализация типов данных
- •Типизация
- •Система типизации данных
- •Реализация типов данных
- •Связывание переменных
- •Контроль типов
- •Статистический контроль типов
- •Алгоритм статистического контроля типов
- •Динамический контроль типов
- •Параллелизм
- •Полиморфизм
- •Статический полиморфизм
- •Динамический полиморфизм
- •Преобразование типов
- •Связь: ooa→oop→ood
- •Среда программирования
- •Цель технологий параллелизма
- •Схемы параллелизма
- •Проблемы параллельного программирования
- •Показатели эффективности параллельного алгоритма Ускорение
- •Закон Густавсона-Барсиса
- •Масштабируемый алгоритм
- •Схемы параллелизма
- •Подтипы данных
- •Разновидности массивов. Статические
- •Кортежи
- •Разновидности массивов. Статические
- •Динамические
- •Атрибуты объекта данных
- •Операции над целыми числами
- •Вещественные числа
- •Числа с фиксированной точкой
- •Числа с плавающей точкой(float)
- •Ошибки вычислений с вещественными числами
- •Утечки памяти и повисшие указатели
- •Указатели на указатели
- •Типизированные указатели
- •Указатели на функции
- •[Отличия указателей и ссылок]
- •Параметры подпрограмм
- •Преимущества подпрограмм
- •Позиционное сопоставление
- •Сопоставление по имени
- •Методы передачи параметров:
- •Передача параметров по значению
- •Передача параметров по ссылке
- •Передача параметров по значению-результату
- •Параметр по результату
- •Стековые языки
- •Циклы и рекурсия
- •Циклы со счетчиком
- •Операторы циклы без заданного числа повторений (бесконечно)
- •Динамический полиморфизм
- •Родовые (настраиваемые) сегменты и шаблоны
Позиционное сопоставление
• Соответствие устанавливаются на основе их позиций в списках фактических и формальных параметров - два параметра, которые занимают одинаковые позиции списках, образуют пару.
• Обычно количество формальных и фактических параметров должны обладать, чтобы соответствие между ними было взаимно однозначным.
• Питон, Ruby, php, с++ формальные параметры могут иметь значения по умолчанию.
• Используется если формальному параметру не передается никакого фактического параметра.
Питон:
Def salary(hours, tax_freee=1, hour_rate)//tax_free задан
My_money=salary(120, hour_rate=10.0)//можно вызвать так
Сопоставление по имени
Можно явно указать, какой формальныйпараметр должен соответствовать данному фактическому параметру.
Недостаток - пользователь подпрограммы должен знать имена формальных параметров.
Питон:
Adder(size=the_size, #size, list, sum - формальные
List=the_list, #the size, the list, the sum – фактические ( конкретные значения)
Sum=the_sum)
Методы передачи параметров:
Передача параметров по значению
• При передаче формальный параметр x подпрограммы p(x) получает значение фактического параметра.
X:=e; передать значение е, присвоить его х
Sq:=x*x выполнить тело функции
Return sq вернуть результат
- Любые изменения значения формального параметра, произошедшие во время выполнения подпрограммы, теряются, когда подпрограмма завершает свое выполнение.
• В паскале и с она рассматривается как основной метод передачи параметров.
Передача параметров по ссылке
• Формальный параметр превращается в синоним места размещения фактического параметра. Т.е подпрограмме становится доступным указатель на местоположение этого объекта.
С++:
Void sw(int *px, int *py){
Int z;
Z= *px; *px=*py; *py=z}
Px=&a;передача адреса а в рх
Py=&b
Z=*px;присваивание z начального значения a
*px=*py; присваивание a Значения переменной b
*py =z; присваивание b начального значения a, сохраненного в z
+ Высокая эффективность как времени, так и памяти. Не надо копировать значения фактических параметров, а затем отдельно обновлять их.
- Доступ к обрабатываемым параметрам замедляется, поскольку используется косвенная адресация.
- Могут возникнуть неумышленные и ошибочные изменения фактических параметров.
- Появляется возможность возникновения псевдонимов (алиасов) фактических параметров. Псевдонимы снижают читабельность и надежность программ, а также усложняют их проверку.
Передача параметров по значению-результату
• Фактические параметры, не имеющие места размещения, передаются по значению.
• Фактические параметры, имеющие место размещения обрабатываются так:
Этап copy-in. Вычисляются значения и места размещения фактических параметров. Значения присваивают формальные параметры.
Выполнение тела подпрограммы. Здесь обрабатываются формальные параметры.
Этап cory-out. После выполнения тела подпрограммы конечные значения формальных параметров копируются обратно в места размещения, вычисленные на этапе 1.
+ Доступ к обрабатываемым в подпрограмме параметрам ускоряется, поскольку в косвенной адресации нет необходимости.
+ Безопасность хранения фактических параметров повышается, т.к канал связи с ними открывается перед началом обработки в режиме приема и после окончания обработки в режиме записи. Во время выполнения тела подпрограммы канал закрыт.
- Необходимость хранить параметры в нескольких местах и тратить время на копирование их значений и адресов.
- Сохраняется проблема псевдонимов.
