- •Модульное программирование. Понятие функции.
- •Объявление и определение функции. Вызов функции.
- •Обмен информацией между функциями. Рекурсивные функции.
- •Библиотечные функции. Функции для работы в графическом режиме.
- •Графические примитивы.
- •Классы памяти.
- •Указатели: понятие, инициализация.
- •Операции с указателями.
- •Указатели и массивы. Массив как параметр функции.
- •Динамические массивы.
- •Структуры: определение, инициализация.
- •Операции над структурами.
- •Массивы структур. Объединения.
- •Понятие потока. Классификация потоков.
- •Файловые потоки. Запись данных в файл. Режимы открытия файлов.
- •Чтение данных из файла.
- •Форматирование данных: флаги форматирования. Манипуляторы.
- •Строки: описание, ввод/вывод.
- •Операции со строками. Строка как параметр функции.
- •Сортировка данных. Алгоритмы сортировки.
- •Сортировка выбором.
- •Сортировка обменом .
- •Сортировка включением.
- •Динамические структуры данных. Линейные списки.
-
Операции с указателями.
-
Оп. разадресации(*)-косвенное обращение к объекту. Оп.разадр-ии предназначены для доступа к величине адрес кот хранится в ук. Эту опер. можно исп. как для получ. так и для изменен. знач. величины.
пример:
int a=5,b,d;
int*pti=&a;
….
b=*pti;d=pti+2;
cout<<b<<d;
-
Арифм. оп.
Арифм оп. с ук. автоматич. учитывают размер типа величин адресных ук.
Единицей измерения значения ук. явл.размер соответсв.ему типа. Эти оп. примен. в основном при работе со структурами данных последовательно размещённых в пам.(пр.:массивы). Если ук. на определённый тип увел. или умен. на константу его значение изм на величину этой конст. умноженную на размер объекта данного типа. Разность 2-х ук.-это разность их знач. делённая на размер типа в байтах. Суммирование ук. не допускается. Инкремент перемещает ук.к след.элем. масс., декремент – к предыдущ.
-
Сравнивание ук.
Допускается только для ук. одного типа.
-
Взятие адреса
Применимо к величинам имеющим имя и размещённым в оперативной памяти.
-
Указатели и массивы. Массив как параметр функции.
Имя масс. обозн. как ук.-константа на массив. В массиве int x[10] x-ук. на нулевой элемент масс-ва, т.е. x=&x[0]. Поэтому для доступа к элементам масс., кроме индексированных имён можно использовать разадрессованные ук.: имя[индекс]*(имя+индекс) (пр:x[i]*(x+i))
Т.к. имя масс. явл. ук.- константой, то его нельзя изм. в прогр., т.е. ему нельзя ничего присвоить.
Мас. как параметр ф-ии
При исп. в качестве парам масс-ва в ф-ию передаётся ук.на его первый элемент, т.е. масс.всегда передаётся по адресу. При этом инф. о кол-ве элем. масс. теряется и следует передавать его размерность ч/з отдельные парам. Передать масс. в ф-ию можно след. сп.:
1)func(int a[N],int N)
2)func(int a[], int N)
3)func(int *a, int N)
-
Динамические массивы.
Дин. масс. применяются если до начала работы прогр. неизв.сколько в масс.элем-в. Пам. под них выделяется с пом. операции new.
В дин. обл.пам.(heap) во время вып.прогр. Адр.её начала запис-ся в ук.(пр:int n=10; int*a=new int[n]//в дин.пам.выд.обл.пам.дост-я для размещ.10 элем.типа int.
Дин.мас-ы нельзя при созд. иниц-ать. и они не обнуляются.
Преимущество дин.мас.-размерность может быть переменной, т.е. объём пам. выд-ой под масс.определяется на этапе выполнен.прогр.
Обращение к элементу дин.мас.осущ. так же как к элементу обычного (a[3] или *(а+3)
Если дин. масс. в к-то момент работы прогр. больше не нужен необходимо освободить область пам. кот.он занимает с пом. операции delete[]a;
Для созд.дин.многомер.мас. необходимо указать в операции new все его размерности. Самая левая (первая) размерность может быть переменной.
пример:
int nstr=5;
int **m=(int**)new int[nstr][10];
или
int n;
cout int m=5;
cin>>n;
int(*a)[m]=new int[n][m];
Более универсальный способ выделения пам.под 2-мерн.мас., когда обе его размерности задаются на этапе выполнения прогр. Освобождение пам. из под мас. с любым кол-вом изменений вып. с пом. оп delete[].