- •Экзамен 374 Предварительные рассуждения Вступительное слово
- •Исторические факты
- •Начнем!
- •Проба пера
- •Открытие сохраненного проекта
- •Вывод данных
- •Типы данных
- •Хороший стиль программирования
- •Переменные и константы
- •Практический пример
- •Ввод данных
- •Например:
- •Пример:
- •Арифметические операции с числами
- •Литералы
- •Некоторые примеры
- •Домашнее задание
- •Напишите программу, которая вводит число из трех цифр, разделяет число на отдельные цифры и печатает их отдельно друг от друга с тремя пробелами между ними. Преобразование типов
- •Перечисляемые типы
- •Типичная ошибка
- •Хороший стиль программирования
- •Типичная ошибка
- •Выражения
- •Оператор if
- •Структура программы
- •Логические операции
- •Структура множественного выбора switch
- •Практический пример
- •Цикл for
- •Практический пример
- •Цикл do-while
- •Домашнее задание
- •Вызов функции
- •Прототипы функций
- •Разбор программы
- •Область видимости
- •Аргументы по умолчанию
- •Встраивание
- •Перегрузка функций
- •Учебный пример перегруженных функций. Иллюстрация перегрузки
- •Результат работы программы
- •Практические примеры
- •Домашнее задание
- •Примеры домашней работы урока 1 Пример №1
- •Как работает программа
- •Пример №2
- •Как работает программа
- •Примеры домашних работ на создание функций Пример №1
- •Как работает программа
- •Пример №2
- •Как работает программа
- •Массивы
- •Объявление массивов
- •Примеры использования массивов
- •Программа 1
- •Программа 2
- •Обратите внимание!
- •Типичная ошибка программирования
- •Типичная ошибка программирования
- •Программа 3
- •Типичная ошибка программирования
- •Замечание по технике программирования
- •Программа 4
- •Программа 5
- •Программа нахождения минимального и максимального элементов массива
- •Сортировка массивов
- •Домашнее задание
- •Что такое указатели?
- •За кулисами...
- •Как работать с указателями?..
- •Зачем нужны указатели?
- •Указатели и Массивы.
- •Примеры задач
- •Пример 1
- •Пример 2
- •Пример 3
- •Указатели - аргументы функций.
- •Ссылочные параметры
- •Примеры решения задач
- •Домашнее задание
- •Операторы свободной памяти new и delete
- •Функции работы со строками из библиотеки обработки строк
- •Пример 1.
- •Пример2
- •Пример 3
- •Пример задачи на новый материал
- •Домашнее задание
- •Двухмерные массивы, как частный случай многомерных массивов
- •Программа.
- •Результаты работы программы.
- •Многомерные динамические массивы
- •Пример на многомерные динамические массивы
- •Домашнее задание
- •Рекурсия
- •Рекурсии или итерации
- •Указатели на функции
- •Пример №1
- •Результат выполнения программы:
- •Пример №2
- •Результат выполнения программы
- •Пример №3
- •Результаты выполнения программы
- •Определения структур
- •Пример #1 на использование структур
- •Пример #2 на использование структур
- •Оператор указателя на структуру
- •Домашнее задание
- •Тест по c Группа ___________________ф. И. О. ______________________
- •Объектно-ориентированное программирование.
- •Наследование (Inheritance).
- •Инкапсуляция (Encapsulation).
- •Определение класса
- •Конструкторы и деструкторы Инициализация объектов класса: конструкторы
- •Основное назначение конструкторов - инициализация объектов.
- •Использование конструкторов с аргументами по умолчанию
- •Если параметры не передаются конструктору, в определении объекта не нужно включать пустые круглые скобки.
- •Использование деструкторов
- •Когда вызываются конструкторы и деструкторы.
- •Домашнее задание
- •Конструктор копирования
- •Синтаксис конструктора копирования
- •Памятка
- •Пример использования конструктора копирования.
- •Перегруженные конструкторы
- •Экскурс в историю
- •Послесловие к примеру
- •Маленькое замечание
- •Домашнее задание
- •Создание класса ''строка''
- •Перегрузка операций.
- •Общие принципы перегрузки операторов.
- •Преобразования, определяемые классом
- •Пример строкового класса с перегруженными операторами
- •Домашнее задание
- •Дружественные функции (Friend Functions)
- •Пример строкового класса с перегруженными операторами и дружественными функциями
- •Перегрузка операторов new и delete
- •Перегрузка оператора индексирования
- •Класс вектор. Часть1.
- •Класс вектор. Часть 2.
- •Класс вектор. Часть 3.
- •Домашнее задание
- •Наследование (Inheritance). Часть 1.
- •Наследование (Inheritance). Часть 2.
- •Множественное наследование (multiple inheritance)
- •Пример множественного наследования
- •Домашнее задание
- •Статические члены данных
- •Раннее и позднее связывание
- •Виртуальные функции
- •Пример.
- •Абстрактные классы
- •Виртуальный базовый класс
- •Практический пример
- •Домашнее задание
- •Потоки ввода-вывода.
- •Iostream.H: stream - поток, "I" - сокр. Input - ввод, "o" - сокр. Output - вывод.
- •Предопределенные потоки.
- •Операции помещения в поток и извлечения из потока.
- •Файловый ввод-вывод с применением потоков.
- •Конструкторы файловых потоков.
- •Функции для открытия и закрытия файлов.
- •Функции для обмена с потоками.
- •Часто применяемые функции потока.
- •Ввод/вывод массива в/из файл(-а).
- •Практический пример: перекодировка файла.
- •Домашнее задание
- •Немного о файлах...
- •И снова файлы...
- •Пример "Телефонная книга"
- •Файл abonent.H
- •Форматирование данных при обменах с потоками.
- •Состояние потока.
- •Использование аргументов командной строки.
- •Ввод/вывод в с.
- •Домашнее задание
- •Определение шаблонов функций
- •Переопределение шаблонов функций
- •Шаблоны классов
- •Шаблонный класс вектор
- •Шаблонный класс вектор
- •Шаблонный класс вектор
- •Введение
- •Обработка исключительных ситуаций
- •Практический пример
- •Программа
- •Домашнее задание
- •Экзамен
Домашнее задание
Напишите программу, которая определяет, принадлежит ли точка заданной области. При реализации используйте механизм указателей на функции, каждая из которых определяет принадлежность точки какой-то одной области, то есть одна функция описывает квадрат, другая ромб, третья окружность и так далее. Интерфейс пользователя оформите в виде текстового меню.
Создайте структуру, описывающую точку в двумерной системе координат (x,y). С помощью этой структуры задайте две точки. Будет ли прямая, проходящая через эти точки параллельна оси ординат? Оси абсцисс?
Создайте структуру, описывающую точку в трехмерной системе координат (x,y,z). Найдите расстояние между двумя точками.
Расстояние между точками — √((x1−x2)2 + (y1−y2)2 + (z1−z2)2).
Создайте структуру Время с элементами Часы, Минуты. Сохраните в ней введенное пользователем с клавиатуры время в американском формате (например, 5:30PM). (Т.е. для того чтобы сохранить время, Вам придется преобразовать его к формату часы:минуты, например, 17:30). Выведите результат на экран.
Создайте структуру, описывающую дробь. Реализуйте арифметические операции с дробями:
сумму
разность
частное
произведение
Напишите информационную систему "Сотрудники". Организуйте ввод данных, поиск сотрудника по фамилии, вывод информации о всех сотрудниках, указанного возраста.
Напишите информационную систему "Телефонная книга". Организуйте ввод данных, поиск телефона по фамилии, вывод информации о всех абонентах телефонной сети, фамилия которых начинается на указанную букву.
На этой неделе у Вас консультация, поэтому урока и домашнего задания не будет.
Желаем успехов в Вашей подготовке!
Тест по c Группа ___________________ф. И. О. ______________________
Вопрос 1. Отметьте правильное использование оператора cout: |
|
a) сout << “Hello world!!!\\\”; |
d) cout << ‘Hello world!!! \n’; |
b) cout << “Hello “ << “world!!!”<< “\\\n”; |
e) cout << Hello world!!!\n; |
c) cout >> “Hello “ << “world!!! \\n”; |
|
Вопрос 2. Отметьте тот вызов функции, который не содержит синтаксических ошибок: |
|
a) my_func(int& a, int b); |
d) my_func(&x, y); |
b) void my_func(a, b); |
e) my_func(i) |
c) my_func(++&x, y); |
|
Вопрос 3. Если int А[3] ={1,3}; то после выполнения int с = (++*(A+2))++; |
|
a) c = 0 |
d) c = 4 |
b) c = 1 |
e) c = 6 |
c) c = 2 |
|
Вопрос 4. Что выведется на экран после выполнения следующего фрагмента кода: |
|
int *p = new int, *q = new int; *p = 255; *q = 128; delete p; p = q; *p = 64; cout << “*p = “ << *q << “ *q = “ << *p; delete p; |
|
a) *p = 128 *q = 64 |
d) ошибка на этапе компиляции |
b) *p = 64 *q = 64 |
e) ошибка на этапе выполнения |
c) *p = 128 *q = 128 |
|
Вопрос 5. Чему будет равно z после выполнения следующего фрагмента кода? |
|
int z = 1, y; for( y=-1; y++ < 2; y-- ) z += y++; cout << z; |
|
a) z = 0 |
d) z = 3 |
b) z = 1 |
e) z = 4 |
c) z = 2 |
|
|
|
Вопрос 6. Исходя из приведенного ниже кода, как можно присвоить ячейке памяти, на которую указывает p значение y+1? |
|
char y = 'A'; char *ptrY; |
|
a) ptrY = &y + 1; |
d) *ptrY = y + 1; |
b) *ptrY = &y + 1; |
e) *ptrY = *y + 1; |
c) ptrY = (char *)(y + 1); |
|
Вопрос 7. Чему будет равно значение x? |
|
double x; x = 17 % 3 + 1 % 2; |
|
a) 0 |
d) 3 |
b) 1 |
e) 4 |
c) 2 |
|
Вопрос 8. Для следующего фрагмента программы укажите возможный прототип функции f(): |
|
float *x = new float(5); float y[] = {4.6, 8, *x}; f(*x, y); |
|
a) void f(float*, float*); |
d) void f(float, float); |
b) void f(float*, float); |
e) ошибка компиляции |
c) void f(float, float*); |
|
Вопрос 9. Что будет выведено на экран в результате выполнения следующего фрагмента кода? |
|
char buffer[] = "0123456789"; char *ptr = buffer; ptr += 5; cout<<1+ptr++<<endl ; cout<<++ptr[ptr – buffer - 5]<<endl ; |
|
a) 6789 7 |
d) 789 9 |
b) 6789 8 |
e) 789 8 |
c) 6789 9 |
|
|
|
Вопрос 10. Что будет выведено на экран в результате выполнения следующего фрагмента кода? |
|
cout << "What output \\0\0n do \you\ expect\?"; |
|
a) What output \\0\0n do \you\ expect? |
d) What output \0 |
b) What output \\0\0 do \you\ expect? |
e) ошибка компиляции |
c) What output \\0\0 |
|
Вопрос 11. Чему будет равно значение переменной z после выполнения следующего фрагмента кода? |
|
int x = -1, y; for(y = 10; y > 5; --y) ++x; int z = y * ++x; |
|
a) 0 |
d) 30 |
b) 20 |
e) ошибка компиляции |
c) 25 |
|
|
|
Вопрос 12. Чему будет равно значение переменной z после выполнения следующего фрагмента кода? |
|
int a[] = { 3, 5, 3.4, 67.6, 55, -40.64, -1 }; int *b = &a[6]; int z = *(b - 3); |
|
a) –1 |
d) 67.6 |
b) 55 |
e) 3.4 |
c) 67 |
|
Вопрос 13. Укажите правильные вызовы функции func(): |
|
void func(int * a, double * d) { } |
|
a) int i, *ptr1=&i; double pi, *ptr2=π func(*ptr1, *ptr2); |
d) int i, *ptr1=&i; double pi, *ptr2=π func( ptr1, ptr2); |
b) int i; double pi; func(*i, *pi); |
e) int i; double pi; func( &a, &pi); |
c) int i, *ptr1=&i; double pi, *ptr2=π func( &ptr1, &ptr2); |
|
Вопрос 14. Что будет выведено на экран в результате выполнения следующей программы? |
|
#include <iostream.h> void Swap(int *x, int& y) { int temp; temp = *x; *x = y; y = temp; } void main() { int x = 4, y = 9; Swap(x,y); cout << x << “ ” << y; } |
|
a) 4 4 |
d) 9 9 |
b) 4 9 |
e) ошибка компиляции |
c) 9 4 |
|
Вопрос 15. Определите значение переменной ref. |
|
int i = -7; int& ref = i; int *p = &++ref; *p += i /3; |
|
a) –9 |
d) –7.6666666 |
b) –8 |
e) ошибка компиляции |
c) –7 |
|
Вопрос 16. Чему будет равно значение переменной x после выполнения следующего фрагмента кода? |
|
int x = 1, i =- 4; do{ x+=i; } while((i += 2) < 4); |
|
a) –5 |
d) 1 |
b) –3 |
e) 3 |
c) –1 |
|
Вопрос 17. Для массива int a[2][3] укажите правильные объявления указателя на массив: |
|
a) int **p; |
d) void *p[3]; |
b) int *p[3]; |
e) void *p; |
c) int (*p)[3]; |
|
Вопрос 18. Чему будет равно значение переменной i после выполнения следующего фрагмента кода? |
|
for(int i = 1 ; i > -5; I--) { if(i % 3) i--; if(i % 2) break; else i--; } |
|
a) –4 |
d) –1 |
b) –3 |
e) 0 |
c) –2 |
|
Вопрос 19. Чему будет равно значение переменной i после выполнения следующего фрагмента кода? |
|
int i = -3, a = -3; while(a-i) a = i++; |
|
a) –3 |
d) 4 |
b) 0 |
e) не определено |
c) 3 |
|
Вопрос 20. Чему будет равно значение переменной i после выполнения следующего фрагмента кода? |
|
enum Season{Winter = 7, Spring = 6, Summer, Autumn}; int i = Summer; cout << i; |
|
a) 0 |
c) не определено |
b) 2 |
d) ошибка на этапе компиляции |
c) 7 |
|