- •Лекция 1 Создание консольного приложения
- •2. Консоль. Построение консольного проекта
- •3. Запуск приложения
- •4. Сохранение и редактирование проекта
- •Лекция 2
- •4. Функции форматированного ввода и вывода
- •4.1. Функция форматированного ввода с клавиатуры
- •4.2. Функция форматированного вывода на экран
- •5. Математические функции
- •Лекция 3 Линейные вычислительные процессы
- •1. Алгоритм. Управляющие структуры
- •2. Линейные вычислительные алгоритмы
- •2.1. Условный оператор if()
- •2.2. Условное выражение
- •2.3. Оператор выбора switch()
- •Лекция 5 Программирование разветвляющихся вычислительных процессов
- •Лекция 6 Циклические вычислительные процессы.
- •1. Типы циклов
- •3. Операторы безусловного перехода
- •Лекция 7 Вычисление последовательностей
- •4. Примеры вычисления последовательностей
- •5. Структура алгоритмов вычисления рекуррентных последовательностей
- •Лекция 8 Одномерные массивы
- •1. Массивы
- •1.1. Примеры программ обработки одномерных массивов
- •1.2. Сортировка выбором
- •1.3. Сортировка простыми вставками
- •Лекция 10 Двухмерные массивы
- •1. Двухмерные массивы
- •Лекция 11 Алгоритмы матричной алгебры
- •1. Алгоритмы матричной алгебры
- •Лекция 12 Динамические массивы
- •1. Память компьютера. Адресное пространство
- •2. Динамическая память
- •3. Адреса и указатели
- •4. Указатели и массивы. Динамические массивы
- •5. Проблемы, связанные с указателями
- •6. Поразрядные операции
- •1.2. Способы объявления и обращения к элементам двухмерных массивов
- •Лекция 14 Символы и строки
- •1. Символьный тип данных
- •2. Строки
- •Лекция 15 Структуры
- •1. Понятие структуры
- •2. Определение нового имени типа
- •3. Массивы структур. Указатели на структуры
- •3.1. Определение статического массива структур
- •3.1. Определение динамического массива из n структур
- •Лекция 16 Файлы
- •1. Потоковый ввод-вывод данных
- •3. Понятие файла. Функции работы с файлами
- •Лекция 17 Файлы
- •Лекция 18 Функции пользователя
- •I. Приёмы построения алгоритмов
- •2. Понятие функции
- •2.1. Определение функции
- •2.2. Область видимости переменных
- •2.3. Параметры функции
- •2.4. Описание функции
- •2.5. Организация вызова функции
- •2.5. Передача параметров в функцию
- •3. Рекурсия
- •Лекция 20 Нахождение приближенного значения корня нелинейного уравнения
- •На отрезке [a;b] с заданной точностью eps
- •1.1. Метод дихотомии (половинного деления)
- •1.2. Метод хорд
- •1.3. Метод касательных (Ньютона)
- •Лекция 22 Объектно-ориентированное программирование
- •Полиморфизм – это свойство класса, позволяющее определить одно и то же по имени, но разное по смыслу действие. Основные этапы ооп:
- •Уточнённое имя принадлежит классу (т.Е. Компонентной) функции
- •Лекция 23 Объектно-ориентированное программирование
- •1. Конструкторы и деструкторы
- •1.2. Определение компонентных функций
- •Лекция 25 Объектно-ориентированное программирование
- •1. Свойства классов
- •1.1. Наследование классов
- •1.2. Полиморфизм
- •Библиографический список
2. Определение нового имени типа
При решении прикладных задач на компьютере часто возникает необходимость в типах данных, которые не определены в языке программирования. В языке С++ можно создавать новые имена типов данных – пользовательские типы данных. Эта возможность реализуется при помощи спецификатора typedef или директивы задания макроопределений #define. Ключевое слово typedef позволяет заменить имя заранее созданного пользовательского или стандартного типа данных на имя, которое задает программист. Это очень удобно при работе со структурами. Пример определения нового (пользовательского) имени структурного типа данных приведен в табл.10.
Таблица 10 |
|
Определение tovar с помощью typedef |
Определение tovar с помощью #define |
typedef struct { char name[50];// Наименование float price ; // Цена оптовая float percent; // Наценка в % int vol; // 06ъем партии char date[9] ; // Дата поставки партии } tovar; tovar tv; |
#define tovar struct tvr tovar { char name[50]; // Наименование float price ; // Цена оптовая float percent; // Наценка в % int vol; // 06ъем партии char date[9] ; // Дата поставки //партии }; tovar tv; |
В обоих примерах именем нового типа пользователя будет tovar, а tv – это структура-переменная типа tovar. Надо заметить, что такие определения записываются в разделе программы: директивы препроцессора, т.е. перед заголовком главной функции main().
Примечание. В языке С++ кроме структур существует такое понятие, как объединение. Объединение от структуры отличается тем, что объем оперативной памяти, занимаемой объединением, будет равен объему, который необходим для размещения максимального по объёму памяти элемента этого объединения.
3. Массивы структур. Указатели на структуры
При решении большинства задач приходится иметь дело не с одним, а с совокупностью однотипных объектов, которые отличаются только значениями, а не описанием. Поэтому в таких случаях создают и работают с массивами структур. Если количество объектов можно определить до запуска программы, то объявляют статический массив структур. В противном случае объявляют указатель на структурный тип.
Указатели на структуры определяются, как и указатели на переменные других типов. Если объявлен указатель на структурный тип, то в этом случае говорят о динамическом массиве структур. Динамическим массивам структур ОП выделяется в процессе выполнения программы с помощью одной из соответствующих библиотечных функций, например malloc().
Допустим, что определён новый тип пользователя stud (студент) – структура с полями fio, kurs, facultet, spec.
typedef struct
{
char fio[30]; // ФИО студента
int kurs ; // курс
char facultet[50]; // наименование факультета
char spec[50] ; // специальность
} stud;
Тогда, чтобы решать задачи об обработке списков студентов, необходимо создать массив структур (статический или динамический) типа stud и обработать его согласно поставленной задаче.