Цель работы: Ознакомиться с некоторыми расширениями языка С, позволяющими перейти к объектно-ориентированному программированию С++.
1. Порядок выполнения работы.
1. Ознакомьтесь с теоретическими сведениями.
2. Разберите работу программ 1,2,3. В программе 3 обратите внимание на время выполнения первого и второго цикла.
3. Разберите работу программы 4.
Что изменится, если изменить на swap(void *item1,void *item2)?
4. Разберите работу программы 5.
Что если из последней строки программы убрать перацию приведения типов (double)?
Что если добавить определение функции?
float noName(int first) {
return(float) first*first;
}
5. Разберите работу программы 6.
Что если изменить имя второй функции на noName1, а вторую строку функции main на noName1(100.0)?
Что будет, если параметру х в noName1 присвоить значение по умолчанию равное 15, а остальным не присваивать значений по умолчанию?
6. Выполните индивидуальное задание.
2. Индивидуальные задания.
В программах использовать стандартные потоки ввода-вывода.
1. Составить программу, в которой задается размер числового массива, вводятся данные в массив и рассчи-тывается их среднее арифметическое и дисперсия.
2. Написать функцию, которая получает по ссылке координаты левого верхнего и правого нижнего углов и символ, которым рисуется рамка по координатам углов.
3. Написать функцию, которая по ссылке получает символьную строку из программы и подсчитывает частоту появления букв латинского алфавита в этой строке символов. Окончание строки — Enter.
Другие символы игнорировать. Количество букв вернуть в вызывающую программу и вывести на экран.
4. Составить свою функцию сравнения двух строк символов, получающую в качестве параметров ссылки на строки и возвращающую 1,если строки одинаковы, или 0, если строки различны.
5. Составить свою функцию выделения подстроки, получающую ссылку на строку и номера символов начала и конца подстроки.
6. Составить свою функцию для копирования строки. Передается ссылка на строку-источник и ссылка на строку-результат.
7. Мистер Браун, человек со странностями, всегда читает справо налево. Составить функцию, облегчающую диалог с мистером Брауном, для которой передается ссылка на введенную строку и выводится на экран реверсированная строка. Например: ввод "Галина", вывод "анилаГ".
8. Составить программу, в которой в массив переменной длины, определяемой пользователем, вводятся числовые данные с клавиатуры, а затем сортируются в функции сортировки и записываются в файл.
9. Составить программу, которая читает определенное количество данных из файла в массив переменной длины. Размерность массива задается с клавиатуры.
10. Составить программу, которая формирует список группы студентов (ФИО, адрес, возраст, телефон) и записывает на диск в файл. Количество записей вводится с клавиатуры. Использовать динамически выделяемую память под массив.
11. Определить угол (в градусах) между положением стрелок в начале суток и ее положением в h-часов, m-минут, s-секунд. Ввод времени осуществлять в основной программе и передавать по ссылке в функцию.
12. Определить h-количество часов, m-минут прошедших от начала суток до того момента, когда часовая стрелка повернулась на f-градусов. Написать несколько перегруженных функций для разного ввода параметра (в градусах, в виде строки, в радианах).
3. Отчет по работе
· Название работы и ее цель;
· Ответы на поставленные вопросы в порядке проведения работы;
· Листинг разработанной и отлаженной программы индивидуального задания.
4. Вопросы по лабораторной работе
1. Операции выделения и освобождения памяти в С++. Отличия в создании динамических и статических массивов.
2. Ошибки при распределении памяти.
3. Обработка ошибок при распределении памяти.
4. Указатели. Определение, инициализация и использование указателей в программе. Указатель со значением NULL. Указатель на void.
5. Определение и инициализация ссылки в программе. В чем различие между ссылкой и указателем? Операции над ссылкой.
6. Константы. Преимущества использования const.
7. Перегружаемые функции. Каким образом компилятор определяет какая из перегруженных функций вызывается в данный момент в программе.
8. Использование значений формальных параметров по умолчанию в функции. Правила назначений параметров по умолчанию.
9. inline-функции. Отличие inline-функций от простых функций.
10. Перечисления. Использование перечислений в программе.
11. Стандартные потоки ввода/вывода. Использование их в программе.
