- •Вопрос 1. Диалоговые программы. Понятие дружественности.
- •Вопрос 2. Условный оператор и условная операция
- •If (выражение) оператор_1 [else оператор_2]
- •Вопрос 3. Операции отрицания и побитового дополнения.
- •Вопрос 4. Логические операции.
- •Вопрос 5. Побитовые операции
- •Вопрос 6. Изменение типа выражения
- •Вопрос 8. Операция «адрес» и косвенной адресации (разадресации)
- •Вопрос 9. Структура объявления типов. Классы памяти
- •● Static — статическая
- •● Extern — внешняя (глобальная)
- •Extern int total; // ссылка на переменную total, определённую в другом файле ● register — регистровая (локальная)
- •Вопрос 10. Классификация типов данных с размерами в памяти (в байтах).
- •Вопрос 11. Подпрограммы в языке Си. Определение функции. Возврат значений.
- •Int maximum (int X; int y; int z) – формальные параметры
- •Вопрос 12. Передача в подпрограмму массивов
- •Вопрос 13. Объявление, вызов функции и возврат значений
- •Вопрос 14. Работа с файлами
- •Где *fname – имя файла, *mode – режим
- •Вопрос 15. Вызов функций с переменным числом аргументов
- •Вопрос 16. Возврат из функции нескольких значений.
- •Вопрос 17. Структура программы и время жизни переменных, объявленных на внутреннем уровне.
- •Вопрос 18. Общая структура программы, состоящей из нескольких файлов. Локальные и глобальные переменные. Переменные, видимые в нескольких файлах.
- •Вопрос 19. Время жизни и области видимости функций и переменных, объявленных на внешнем уровне.
- •Вопрос 20. Типы, определяемые пользователем. Структуры
- •Вопрос 21. Объединения
- •Вопрос 22. Поля битов
- •Вопрос 23. Динамическая память. Резервирование, освобождение памяти в языке с
- •Оператор new
- •New type_name [(инициатор)]; или new (type_name [(инициатор)]);
- •Оператор delete
- •Вопрос 25. Связные динамические структуры. Списки. Двусвязные списки
- •Вопрос 26. Связные динамические структуры. Очередь. Односвязные списки
- •Вопрос 27. Связные динамические структуры. Кольцевые списки.
- •Вопрос 28. Связные динамические структуры. Стек.
- •Вопрос 29. Нелинейные динамические структуры. Деревья
- •Основные характеристики дерева:
- •Вопрос 30. Перегрузка функций
- •Вопрос 31. Перегрузка операторов
- •{ Операторы, определяющие действия }
- •Вопрос 32. Основные принципы объектно-ориентированного программирования.
- •Вопрос 33. Понятие класса. Инкапсуляция
- •Вопрос 34. Конструкторы и деструкторы
- •Вопрос 35. Наследование
- •Режимы доступа
- •Вопрос 36. Полиморфизм
- •Вопрос 37. Структуризация. Восходящее программирование
- •Вопрос 38. Нисходящий метод проектирования программ
- •Вопрос 39. Методы тестирования программных средств, состоящих из одного модуля
- •Вопрос 40. Спецификация программного средства
- •Вопрос 41. Межмодульное тестирование
- •Вопрос 42. Основы доказательства правильности программ
- •Вопрос 43. Жизненный цикл программы
- •Вопрос 44. Причины отказов по и повышение отказоустойчивости
- •Вопрос 45. Направления в программировании. Классификация языков программирования. Направления в программировании:
- •Вопрос 46. Критерии качества программы
- •Вопрос 47. Директивы препроцессора. Директива define, макроподстановки
- •#Define имя значение
- •Удаление определения: #undef
- •Вопрос 48. Модульное программирование. Структура программы, состоящей из нескольких файлов.
- •Вопрос 49. Гост 19.701. Виды схем, символов. Обозначения для схем алгоритмов и схем работы системы.
Оператор new
Он выделяет блок памяти для размещения переменной или массива (необходимо указывать тип и, в случае массива, размерность).
New type_name [(инициатор)]; или new (type_name [(инициатор)]);
new int; — выделяет память под int, возвращает указатель
new double(3.14); — выделяет и инициализирует значением.
При нехватке памяти (void*)0.
Оператор delete
Он освобождает ранее выделенную память. Размер занятого блока для правильной работы delete записывается в его начало и обычно занимает дополнительно 4 байта.
Используется только с указателями, полученными от new.
Пример:
int* u_i = new int;
double* u_d = new double(3.1415);
if (!(u_i && u_d)) {
cout << "Не хватает памяти!";
return 1;
}
delete u_i;
delete u_d;
Вопрос 25. Связные динамические структуры. Списки. Двусвязные списки
Динамические структуры данных — это любая структура данных, занимаемый объем памяти которой не является фиксированным.
Список − это набор динамических элементов (чаще всего переменных типа «структура»), связанных между собой каким-либо способом. В зависимости от вида связей списки бывают линейными, кольцевыми, односвязными и двусвязными, нелинейными и т. дstruct L
{ int info;
struct L *Next; }
Обращение к динамической переменной происходит через ссылочную переменную, которая содержит адрес такой переменной. Под ссылочную переменную компилятор отводит место в памяти; эта переменная имеет имя и явно упоминается в программе. Ссылочные переменные образуют тип данных − ссылки или указатели.
Линейный двусвязный (двунаправленный) список отличается от односвязного тем, что в нем каждый элемент связан не только со следующим элементом, но и с предыдущим. И первый, и последний элементы списка содержат признак конца списка NULL:
Пример:
class Node
{ public:
int number;
Node* next;
Node* last; };
Вопрос 26. Связные динамические структуры. Очередь. Односвязные списки
Динамические структуры данных — это любая структура данных, занимаемый объем памяти которой не является фиксированным.
Очередь − динамическая структура или дисциплина обслуживания, организованная по принципу FIFO (first in – first out). "Первым пришел – первым ушел".
Основные операции для работы с очередями: добавление нового элемента в конец очереди (занесение заказа на обслуживание); удаление элемента из начала очереди для его обслуживания, при этом выбранный элемент, естественно, исключается из очереди. Таким образом, в очереди доступны только ее начало и конец.
Очередь можно представить в виде трубы с двумя открытыми концами, куда помещаются «бочонки» – элементы. Движение по трубе возможно лишь в одном направлении:
Линейные списки (односвязные) – это данные динамической структуры, представляющие собой совокупность линейно-связанных однородных элементов, для которых разрешены следующие действия:
1) добавление элемента в начало;
2) добавление элемента в конец (хвост) списка (частный случай вставки);
3) вставка элемента между двумя любыми другими элементами;
4) исключение элемента (удаление любого, как крайнего, так и среднего элемента списка).
