- •2. Применение условной компиляции и определений: директивы #ifdef и их синтаксис.
- •3. Сокрытие и защита данных. Доступ к защищенному члену данных.
- •1.Синтаксис языка Си, зарезервированные имена.
- •2.Форматированный и неформатированный ввод-вывод.
- •Форматированный ввод с клавиатуры
- •3.Сценарии создания объектов: с инициализацией по умолчанию, со специальной инициализацией, путем копирования других объектов
- •1. Структура программы на Си, трансляция и создание загрузочного модуля.
- •1. Классификация функций, функции пользователя и стандартные.
- •2.Агрегаты данных, описание агрегатов через шаблоны, вложенные описания
- •3. Интерфейс класса. Свойство защищенности интерфейса класса
- •2. Модификаторы «[],(),*» в объявлениях.
- •3. Наследование, инкапсуляция и полиморфизм, иерархия классов.
- •1.Вызов функций: параметры и аргументы.
- •2. Функции преобразования и тестирования.
- •3. Уровни описания и реализации структур данных.
- •Билет №6
- •2. Структуры данных struct, поля битов в структуре
- •Билет 7
- •1. Библиотеки функций и их подключение.
- •2. Спецификаторы и модификаторы в объявлениях
- •3. Объекты класса и члены данных.
- •Билет 8
- •Ввод-вывод как средство связи пользователя с пк.(билет2)
- •3.Правила перегрузки операторов. Приоритеты операторов.
- •1.Библиотечные функции ввода-вывода символов и строк, функции gets и puts.
- •3.Константы и переменные скалярного типа.
- •3.Объявление класса: private, protected, public элементы класса.
- •Ключевые слова public и private
- •Билет №10
- •1. Ввод-вывод данных, функции printf и scanf, спецификации преобразования.
- •Идентификаторы и зарезервированные слова.
- •Билет 11
- •1.Простой и составной оператор.
- •2.Базовые типы данных и перечислимый тип enum, объявление перечислимого типа через шаблон, использование перечислимого типа вместо констант.
- •3.Статические элементы класса.
- •Билет n 12
- •1.Операторы принятия решений: применение операторов решения.
- •2.Классы памяти и область действия объектов программы.
- •3.Приватные конструкторы. Конструкторы с аргументами.
- •Билет 13
- •1.Условный оператор if.
- •2.Функция и указатель на функцию: объявление.
- •3.Деструкторы: общедоступные, приватные
- •Билет №14
- •1.Вычисляемый оператор-переключатель группового выбора switch
- •2.Классы памяти, область действия объявления
- •3.Принципы разработки структуры проекта, блок-схемы проекта
- •Билет №15
- •1.Организация цикла в программе, цикл с предусловием while
- •2.Рекурсивные функции
- •3.Ссылки и указатели: указатели и ссылки как члены данных
- •1.Организация цикла в программе, цикл с постусловием do - while.
- •2.Объединение данных union.
- •3.Понятие объекта и класса.
- •Билет 17
- •1. Организация цикла в программе. Цикл с инициализацией и модификацией for
- •2. Директивы препроцессора: директива #define, синтаксис.
- •3. Отладка программных комплексов: этапы отладки, методы отладки, организация тестирования программ.
- •1.Функции для работы со строками символов.
- •2.Примеры абстрактных структур: таблицы.
- •3.Понятие проекта программы: структура проекта.
- •Билет №19
- •1. Преобразование типов явное и неявное.
- •2. Таблицы указателей на функции и вызов функции из таблицы
- •3. Доступ к глобальным и локальным данным, область видимости для идентификаторов, объявленных внутри класса
- •Билет 20
- •1 Операции арифметического типа, преобразование типа в операции присвоения.
- •2 Главная функция и способы передачи аргументов.
- •3. Абстрактные структуры данных. Понятие шаблона структуры.
- •Билет n 21
- •1. Операции логического типа, одноместные и двуместные операции.
- •2.Разбор аргументов в главной функции и их использование.
- •3. Форматы данных и их применение.
- •Билет №22
- •1.Адресные операции: указатели в адресных операциях.
- •2.Функции ввода-вывода: классификация функций, ввод-вывод символов и строк.
- •3.Перегрузка операторов, правила перегрузки операторов, приоритеты
- •2.Описание файла.
- •3.Классификация функций-членов класса
- •Билет №24
- •1.Определение массива и его описание, индексирование массива.
- •3.Операторы new и delete.
- •1.Связь между массивами и указателями
- •2.Файлы данных: структура данных в файле.
- •3. Примеры абстрактных структур: очереди
- •1.Обращение к элементам массива
- •2.Директивы препроцессора: директива #include и способы включения файла
- •3.Вызов функций-элементов
- •Билет 27
- •1.Классы: использование указателя this.
- •2.Спецификаторы и модификаторы в объявлениях
- •1.Строки и массивы строк символов.
- •2.Файловый ввод-вывод потоком: поиск в файле, добавление и удаление данных.
- •3.Объявление структур через шаблон.
- •1.Массив ссылок
- •2.Файловый ввод-вывод записями, доступ к данным.
- •3.Перегрузка функций.
- •2 Поиск в файле, добавление и удаление данных.
- •3.Понятие стиля программирования: «ясность», «краткость», «эффективность».
- •Билет №31
- •1.Размерность массива и представление в памяти.
- •Билет 32
- •Билет 33
- •3.Скобочные операторы: оператор вызова функции operator() и оператор индексирования [].
- •Билет 34
- •1 Стиль оформления выражений
- •Классификация данных по назначению, структуре и формату.
- •Управление динамической памятью: функции распределения памяти.
- •Принцип модульности: совокупность модулей (функций) и файлов, разделение на модули.
- •Билет №36
- •2.Макроподстановки: директива #define, синтаксис.
- •Билет 28
- •1.Многомерные массивы, способы описания, инициализация.
- •2.Режимы открытия и модификации файла.
- •3.Перегруженные конструкторы.
Билет 33
1.Способы употребления конструкций языка программирования.
Основными конструкциями языка программирования являются циклы, ветвления.
В Си такие конструкции:
фигурные скобки - позволяют объединить несколько элементарных операторов в один составной оператор, или блок.
{ sum+=m; m+=2;}
Для организации циклов используются операторы for, предуслов while, постусл do while
for (i=0;n<=s;i++,n*=x)
{
s-=n;
}
do
{
s-=n;
n*=x;
i++;
}
while(s>=n);
while(s>=n)
{
s-=n;
n*=x;
i++;
}
Ветвление выполнение определённых команд только при истинности некоторого логического выражения, операторы if, if…else и switch.
if (<условие>)
{
<операторы>
}
else
{
<операторы>
}
Switch(выражение)
{
case const1: оператор[ы];
...
case constn: оператор[ы];
default: оператор[ы];
}
2.Моделирование списковых структур: однонаправленные и двунаправленные списки.
Однонаправленный список - это список, который имеет указатель на начало списка, при этом каждый елем. списка имеет указатель на следующий элем, а последний список принимает указатель NULL.
typedef struct snd /* структура элемента хранения */
{ float val; /* элемент списка */
struct snd *n ; /* указатель на элемент хранения */
} DL;
DL *p; /* указатель текущего элемента */
DL *dl; /* указатель на начало списка */
Двунаправленным списком если каждый элемент имеет указатель на предыдущий и последующий элементы го списка).
typedef struct ndd
{ float val; /* значение элемента */
struct ndd * n; /* указатель на следующий элемент */
struct ndd * m; /* указатель на предыдущий элемент */
} NDD;
NDD * dl, * p, * r;
3.Скобочные операторы: оператор вызова функции operator() и оператор индексирования [].
Перегрузка оператора вызова функции operator()
Перегрузка оператора состоит в изменении смысла оператора (например, оператора плюс (+), который обычно в C++ используется для сложения) при использовании его с определенным классом.
В отличие от оператора присвоения, оператор вызова функции operator () перегружается редко и не имеет оператора по умолчанию. Фактически сам по себе оператор довольно необычен. Рассмотрим обобщенный бинарный оператор @. Выражение а @ b транслируется в вызов функции: a.operator@(b)
структура: имя_типа operatorсимвол(список параметров);
Использование перегруженного оператора вызова функции для подддержки многомерных матриц
class A {
int value[10][10] ;
public:
int& operator( )(int, int);
};
Билет 34
1 Стиль оформления выражений
В общем случае логические и арифмитические выражения Любые операторы / знаки операций отделяются пробелами с обоих сторон
a=(*b)*c&2+10
следует писать
a = (*b) * c&2 + 10
Это способствует лучшей читаемости кода. Для этих же целей так же можно использовать скобки, которые к тому же гарантируют отсутствие ошибок приоритета операций. После выражения ставится точка с запятой
2 Сохранение в файле списковых структур, вычисление и восстановление смещений в структуре.
Чтобы сохранить список структ в файле, нужно последовательно записать в файл каждую стуктуру по отдельности. Например:
write (fd, start, sizeof ( struct some_struct ));
current = start->next;
while (current != NULL)
{
write (fd, current, sizeof ( struct some_struct ));
current = current->next;
}
Сначала мы записываем первую структуру, которая расположена по адресу start. Затем переходим к следующей (start->next), поместив ее адрес в переменную current. Далее следует цикл записи и перехода к следующему эллементу, условием выхода которого является достижение конца списковой стуктуры (current != NULL). Использование счетчиков в циклах является нежелательным.
Смещение члена структуры можно узнать с использованием макроса offsetof (type, field)..
#define offsetof(s, m) (size_t)&(((s *)0)-›m)
((s *)0) Приводит число ноль к указателю на структуру s. Эта строчка говорит компилятору, что по адресу 0 располагается структура, и мы получаем указатель на нее.
((s *)0)->m получает член m структуры s, компилятор будет думать, что этот член расположен по адресу 0 + смещение m
&(((s *)0)->m) вычисляем адрес члена m.
(size_t)&(((s *)0)->m) преобразовываем адрес члена m к целому числу.
3.Особенности перехода от «С» к С++
Переход от C Pure к C++ не должен вызывать проблем, т.к. любая конструкция, допустимая в обоих языках, должна в каждом из них обозначать одно и то же и приводить к одному и тому же поведению программы. Благодаря этому, программа, написанная на C Pure, будет работать и после сборки на C++-компиляторе. C++ содержит мнодество дополняющих отличий:
* ООП
* Дополнительные типы данных
* inline-функции
* Описатель volatile
* Если описана структура, класс, объединение (union) или перечисление (enum), её имя является именем типа.
* Пространства имён (namespace).
* Добавлены шаблоны (template)
* Перегрузка операторов и функций.
* Расширенные возможности по описантю функций.
* В дополнение к функциям malloc и free введены операторные функции operator new, operator new[], operator delete и operator delete
Билет 35
