- •Введение
- •Структура программы на языке Си
- •Директивы препроцессора
- •Константы
- •Переменные
- •Арифметические выражения
- •Операция присваивания
- •Ввод информации с клавиатуры и вывод на экран
- •Логические выражения
- •Операторы управления
- •Оператор условного перехода if
- •Оператор выбора варианта
- •Перечисляемый тип данных
- •Циклы
- •Оператор цикла while
- •Оператор цикла do-while
- •Оператор цикла for
- •Локальные и глобальные переменные
- •Переменные с индексами (массивы)
- •Примеры обработки одномерных массивов
- •Многомерные массивы
- •Массивы и указатели
- •Арифметические и логические операции с указателями
- •Обработка массивов с помощью указателей
- •Обработка массивов переменной размерности
- •Обработка матриц переменной размерности
- •Обработка текстовой информации
- •Стандартные строки языка С++
- •Пример 1. Определение длины строки.
- •Пример 2. Копирование одной строки в другую
- •Пример 3. Исключение из строки символа.
- •Пример 4. Вставка в строку символа
- •Пример 5. Проверка правильности расстановки скобок.
- •Строки типа string
- •Массивы указателей
- •Указатели на функции
- •Сводная таблица форм объявления указателей
- •Преобразование типов
- •Ссылки
- •Структуры
- •Объединения
- •Файлы
- •Чтение файла в матрицу
- •Чтение файла в структуру
- •Функции для обработки произвольных полей структур
- •Связные списки
- •Контейнерные классы
- •Стеки
- •Рекурсия
- •Вопросы для самопроверки
- •Литература
167
Вопросы для самопроверки
1.Почему не рекомендуется подсчитывать размер структуры вручную?
2.Какие преимущества и недостатки имеют массивы по сравнению со связными списками?
3.Какая обязательная операция должна быть в составе рекурсивной процедуры?
4.Почему при объявлении массивов рекомендуется размерность задавать с помощью директивы препроцессора #define?
5.Какими способами можно обрабатывать матрицы по диагоналям?
6.Чем отличается объявление массива от объявления указателя?
7.В чем различие между выражениями *pt + 1 и *(pt + 1)?
8.Почему транслятор языка C++ не допускает использования имени массива (без индексов) с левой стороны от знака равенства?
9.Почему операция получения адреса не может применяться к выражениям?
10.Почему вычитание указателей имеет смысл, а сложение нет?
11.Каким способом массивы обрабатываются быстрее: с помощью индексов или с помощью указателей?
12.Почему для определения объема памяти для объекта программы рекомендуется использовать оператор sizeof?
13.Почему строки символов лучше обрабатывать с помощью указателей, а не с помощью индексов?
14.Какова длина строки символов "Это строка"?
15.Почему массивы указателей желательно применять для обработки текстов?
16.Какова длина указателя на функцию?
168
17.Для чего предназначены указатели на функции?
18.В каких случаях не может быть открыт файл?
19.Почему желательно описывать параметры функций по прототипу?
20.Что такое препроцессорная обработка?
21.В чем преимущество задания констант с помощью директивы препроцессора #define?
22.Чем отличаются записи: 5 и '5'?
23.Чем отличается деление целых чисел от деления чисел с плавающей точкой?
24.Что такое поразрядная логическая операция И, и для чего она может применяться?
25.Что такое поразрядная логическая операция ИЛИ, и для чего она может применяться?
26.Почему нельзя ввести с клавиатуры константу перечисляемого типа данных?
27.Можно ли запрограммировать итерационный процесс с помощью оператора цикла for?
28.Почему оператор цикла do - while наиболее подходит для программирования итерационных процессов?
29.Какое отличие оператора const_cast от static_cast?
30.Для чего предназначен оператор reinterpret_cast?
31.Что такое «контейнерный класс»?
32.Чем отличаются стандартные строки языка С++ от строк типа string?
33.В каких случаях применяются явные преобразования типов?
34.Какая разница в передаче параметров в функцию с помощью указателей и по ссылке?
35.Что такое итератор?
169
36.Какая особенность имеется в объявлении итераторов?
37.В каких случаях вместо итератора можно использовать индекс?
38.Какая проблема существует при написании универсальных программ для обработки структур?
39.Какая разница между записями const char *ptr и char const *ptr?
40.Какие проблемы существуют при считывании файла в структуру?
Литература
1.Чернов Э.А. Разработка консольных приложений в среде Visual С++ 2008: Методические указания. МАДИ. М., 2009. (электронная версия).
2.Международный стандарт по языку программирования С++ ISO/IEC 14882.
3.Давыдов В. Г. Технологии программирования С++. СПб.: БХВПетербург. 2005г. 772с., ил.
4.Липман С., Лажойе Ж. Весь С++ от азов до совершенства, 3-е изд./Пер. с англ. –СПб.: «Невский диалект», М.: ДМК Пресс, 2007 г. – 1104с., ил.
5.Прата С. Язык программирования С++. Лекции и упражнения. 5- е изд.: Пер. с англ. – М.: ООО «И. Д. Вильямс». 2007г. 1184с.
6.Чернов Э.А. Программирование на языке Си: Учебное пособие.
Ч.1/МАДИ. М., 1993.
7.Чернов Э.А. Программирование на языке Си: Учебное пособие.
Ч.2/МАДИ. М., 1996.