
- •Рязанская государственная радиотехническая академия Объектно-ориентированное программирование
- •Рязань 2003
- •390005, Рязань, ул. Гагарина, 59/1.
- •1. Программирование линейных алгоритмов Основные понятия
- •Идентификаторы
- •Объявление переменных
- •Стандартные типы данных
- •Представление констант
- •Символьные константы
- •Строковые константы
- •Ввод – вывод данных
- •Математические функции
- •Контрольные вопросы
- •Варианты заданий
- •2. Программирование алгоритмов разветвляющейся структуры Операторы управления
- •Контрольные вопросы
- •Цикл с параметром
- •Контрольные вопросы
- •Варианты заданий
- •4. Массивы. Классы памяти переменных Классы памяти переменных
- •Распределение памяти
- •Массивы
- •Инициализация
- •Указатели
- •Связь одномерных массивов с указателями
- •Связь двумерных массивов с указателями
- •Динамические массивы
- •Контрольные вопросы
- •Варианты заданий
- •5. Функции пользователя
- •Передача параметров в функции
- •Шаблоны функций
- •Контрольные вопросы
- •Варианты заданий
- •6. Структуры, объединения, битовые поля Структуры
- •Объединение
- •Битовые поля
- •Контрольные вопросы
- •Варианты заданий
- •7. Файлы
- •Типовые операции с файлами
- •Функции форматного ввода и вывода данных
- •Определение длины файла:
- •Спецификаторы доступа
- •Конструкторы и деструкторы
- •Наследование
- •Наследование и контроль доступа
- •Указатель this
- •Перегрузка операций
- •Константные объекты и константные методы
- •Статические элементы класса
- •Виртуальные функции
- •Абстрактные классы
- •9. Варианты заданий на курсовое проектирование
- •Оглавление
Шаблоны функций
Шаблоны представляют собой обобщающие определения функций, из которых компилятор может автоматически сделать функцию с заданными параметрами. Шаблоны позволяют пользователю оперировать параметризованными типами. Нет необходимости переписывать функцию при изменении типа параметра.
template <список аргументов>
<Тип возвращаемого значения> <имя функции> ( список параметров функции)
{тело функции}
Функция обмена.
template <class T >
void Exchange (T&x , T &y)
{T temp;
temp=x; x =y; y = temp; }
Вызываются шаблонные функции, как обычные.
Пример вызова:
float x=3.6, y=7.5;
char c=3, b=5;
Exchange(x,y);
Exchange(c,b);
Шаблоны функций можно специализировать, т. е. для типов данных, которые не подходят к шаблону можно определить специальную функцию с тем же именем.
В этом случае при вызове функции компилятор пытается:
1) найти функцию, параметры которой точно соответствуют параметрам в вызове;
2) искать шаблон, из которого можно сгенерировать функцию с указанным параметрами;
3) рассматривать функцию на предмет преобразования типов.
Контрольные вопросы
Что такое объявление функции? Чем определение функции отличается от объявления?
Для чего используется ключевое слово return?
Какими способами возможна передача параметров в функции?
В чем отличие использования встроенных функций?
Что такое перегрузка функций? Для чего она применяется?
Напишите полный синтаксис функции main в С++.
Каким образом в С++ осуществляется передача функции ввв качестве формального параметра в другую функцию?
Для чего применются шаблоны функий?
Варианты заданий
Модифицировать программу
вычисления значения функции
из лабораторной работы № 4.
Написать программу табулирования функции (вывода таблицы значений аргумента и соотетсвтвующего значения функции).
Алгоритмы вычисления y, a, b реализовать в виде функций. Функции a, b передать в функцию y в качестве формальных параметров.
Реализовать поиск максимального, минимального, среднего арифметического значения y на промежутке x0.. xk с шагом hx. Поиск реализовать в виде функций.
6. Структуры, объединения, битовые поля Структуры
Структура – это объединенное в единое целое множество компонентов. Компоненты структуры могут быть разных типов и все должны иметь различные имена. Структура - аналог записи в Паскале.
struct <имя типа (тэг)>
{ тип поле 1;
……………
тип поле n;} <объявление переменной-структуры>;
//для глобальных переменных
Объявить переменную можно потом, вместе с остальными.
Пример:
struct ShowMan
{ char name[20];
char age;
int hight; };
ShowMan D = {“Децл”,18,150};
ShowMan *PD;
PD = &D;
Обращение к полю структуры: D.name.
При вводе, перед полями, представляющими собой символьные массивы, & не ставится.
(*PD).name равносильно PD->name.
Пример массива записей:
ShowMan cinema[20];
(cinema + i)->name (обращение к i-му элементу массива).
ShowMan *p = new ShowMan; (выделение памяти и преобразование указателя на тип ShowMan).
ShowMan *p = new ShowMan(“Денис Ричи”,100,100);
………………….
Delete p;
Объединение
Объединение – это тип данных, позволяющий экономить память, т.к. делает возможным хранение разнотипных данных в одной области памяти (в разное время).
Основное свойство объединения состоит в том, что все его элементы размещаются от начала одного и того же участка памяти.
Пример:
#include<stdio.h>
union Ud
{ char a[10]; // Размер участка памяти, отводимого для объединения,
float b; // определяется размером самого большого из элементов
double z; };
REGS – используется для обращения к переменным, проецируемым на регистры процессора.
REGS a;
a.x – обращение ко всему регистру;
a.h – обращение к старшему байту;
a.l – обращение к младшему байту.
Недостатком объединений является плохая переносимость из-за обращения к памяти.