Родовые (настраиваемые) сегменты и шаблоны
• Понятие «родовые настраиваемые сегменты» старо и использовалось Ada.
• Родовые функции в языке С++ называются функциями-шаблонами
• Объявление функции-шаблона имеет следующую общую форму:
Template <Template <параметры шаблона>
• функция-шаблон должна иметь хотя бы один родовой параметр, представляемый в одной из следующих форм:
•class имя_родового_параметра
•typename имя_родового_параметра
Template<typename T>
T max (T a, T b)
{return a>b? A:b;}
66. Шаблоны.
Шаблоны - предназначены для кодирования обобщённых алгоритмов, без привязки к некоторым параметрам (например, типам данных, размерам буферов, значениям по умолчанию).
Шаблоны позволяют создавать параметризованные классы и функции. Параметром может быть любой тип или значение одного из допустимых типов (целое число, enum, указатель на любой объект с глобально доступным именем, ссылка).
Typedef – объявление своего типа
Typedef enum { black =0,green=2..)
Color a,b;
A=black;
B=a+2;//результат =green
Многие языки требуют явной типизации значений типа перечислений при таких операциях.
67. Вариантные записи.
Вариантные и неограниченные записи – одна переменная может иметь значение разных типов.
Вариантные записи - это записи с фиксированными частями. Они имеют во всех ситуациях строго определенную структуру. Соответственно, записи с вариантами в различных ситуациях могут иметь различную структуру.
Понятие записи, также как и понятие массива, является механизмом структурирования данных. Однако, в отличие от массива, запись позволяет сгруппировать в одном объекте набор объектов которые могут принадлежать различным типам. При этом объекты из которых состоит запись часто называют компонентами или полями записи.
Для работы с записями, Ада предлагает средства подобные тем, которые предоставляют другие современные языки программирования, а также дополняет их некоторыми своими особенностями. Также как и для массивов, для записей предусматривается использование агрегатов. Использование дискриминантов позволяет создавать вариантные записи, указывать размер для записи переменного размера и выполнять инициализацию компонентов записи.
68. Средства описания действий над данными. Операторы, выражения, модули, блоки в языках программирования.
<Элементы (операторы)>
•Редактор - инструментальное средство для создания и изменения исходных файлов(текстов), содержащих написанную на ЯП программу.
•Транслятор - переводит синтаксические конструкции исходного кода в т.н. объектный модуль, который содержит команды в машинном коде конкретного вычислительного устройства.
•Библиотекарь - поддерживает совокупность объектных файлов, называемых библиотеками.
•Компоновщик - собирает объектные файлы отдельных компонентов программы и разрешает внешние ссылки от одного компонента к другому, формируя исполняемый файл.
•Загрузчик – копирует исполняемый файл с диска в память и инициализирует компьютер перед выполнением программы.
•Отладчик – Инструментальное средство, которое дает возможность программисту управлять выполнением программы на уровне отдельных операторов. (диагностика ошибок)
◘Используется для диагностики ошибок:
· Трассировка (пошаговое выполнение программы)
· Контрольная точка – ограничение (ставит точки от каких и до каких пределов трассировать)
· Проверка и изменение данных – (Зафиксировали данные в регистре, потом проверяем изменения после использования программы).
· Профилировщик – измеряет трудемкость отдельных частей программы.
· Среда тестирования – автоматизирует процесс тестирования программ, создавая и выполняя тесты и анализируя результаты тестирования.
· Средства конфигурирования – автоматизируют поддержку версий программного продукта.
· Процессор(макропроцессор) – собирает предварительную информацию, необходимую для компоновки программы, осуществляет раскрытие сокращений, называемых макросами.
· Средства автоматизированной генерации кода и средства визуальной разработки – позволяет на основе некоторых шаблонов и визуальных инструментов автоматически генерировать исходный код.