- •Министерство образования и науки украины
- •Лабораторная работа № 1
- •Ход работы
- •Требования к отчетам
- •Отчёт должен содержать
- •Вопросы для контроля и самостоятельной работы
- •Лабораторная работа №2
- •Символы типа
- •Ход работы
- •Вопросы для контроля и самостоятельной работы
- •Лабораторная работа №3 Разработка программ со скалярными типами данных (2 часа)
- •Теоретические сведения
- •Ход работы
- •Контрольные вопросы для подготовки и самостоятельной работы
- •Лабораторная работа №4 Разработка программ с циклическими вычислительными процессами
- •Теоретические сведения
- •Алгоритм работы оператора цикла for ():
- •Ход работы
- •Контрольные вопросы для подготовки и самостоятельной работы
- •Лабораторная работа №5 Разветвляющийся вычислительный процесс с различными логическими условиями: оператор if... Else, условная операция (?:), оператор switch, оператор break, оператор goto (2 часа)
- •Теоретические сведения
- •Условная тернарная операция (?:)
- •Оператор варианта switch
- •Ход работы
- •Контрольные вопросы для подготовки и самостоятельной работы
- •Лабораторная работа №6 Операции с, их приоритеты и использование. Преобразование типов (4 часа)
- •Теоретические сведения
- •Приоритет операций и порядок выполнения (ассоциативность)
- •Преобразование типов
- •(Новый_тип) операнд
- •Ход работы
- •Контрольные вопросы для подготовки и самостоятельной работы
- •Лабораторная работа №7
- •Синтаксис определения функций в с
- •Использование локальных и глобальных переменных в функциях. Вызов функции
- •Ход работы
- •Требования к содержанию отчёта приведены в лабораторной работе №1. Контрольные вопросы для подготовки и самостоятельной работы
- •Лабораторная работа №8 Разработка программ с указателями (2 часа)
- •Теоретические сведения
- •Основные операции с указателями
- •Указатели и целые величины
- •Динамическое размещение указателей в памяти
- •Ход работы
- •Требования к содержанию отчёта приведены в лабораторной работе №1. Контрольные вопросы для подготовки и самостоятельной работы
- •Лабораторная работа №9 Массивы. Селективная обработка массивов
- •Теоретические сведения
- •Ход работы
- •Требования к содержанию отчёта приведены в лабораторной работе №1
- •Контрольные вопросы для подготовки и самостоятельной работы
- •Лабораторная работа №10
- •Ход работы
- •Контрольные вопросы для подготовки и самостоятельной работы
- •Лабораторная работа №11
- •Контрольные вопросы для подготовки и самостоятельной работы
- •Лабораторная работа № 12
- •Ход работы
- •Контрольные вопросы для подготовки и самостоятельной работы
- •Лабораторная работа № 13
- •Ход работы
- •Контрольные вопросы для подготовки и самостоятельной работы
- •Лабораторная работа № 14
- •Ход работы
- •Контрольные вопросы для подготовки и самостоятельной работы
- •Лабораторная работа № 15 Использование указателей для работы с составными типами данных (2часа)
- •Теоретические сведения
- •Ход работы
- •Контрольные вопросы для подготовки и самостоятельной работы
- •Лабораторная работа № 16
- •Указатели как параметры функции
- •Ход работы
- •Контрольные вопросы для подготовки и самостоятельной работы
- •Лабораторная работа №17
- •Ход работы
- •Контрольные вопросы для подготовки и самостоятельной работы
- •Лабораторная работа № 18
- •Использование администратора проектов
- •Lab18.Cpp- Основной файл проекта
- •Ход работы
- •Контрольные вопросы для подготовки и самостоятельной работы
- •Лабораторная работа № 19
- •Доступ к пикселям
- •Графические примитивы
- •Ход работы
- •Контрольные вопросы для подготовки и самостоятельной работы
- •Лабораторная работа №20 Разработка программ с использованием классов (2 часа)
- •Теоретические сведения
- •Объявление и определение класса
- •Тело класса
- •Использование класса
- •Инкапсуляция. Управление доступом к членам класса
- •Классы памяти для объектов
- •Использование данных-членов класса
- •Ход работы
- •Требования к содержанию отчёта приведены в лабораторной работе №1. Контрольные вопросы для подготовки и самостоятельной работы
- •Лабораторная работа №21
- •Инициализация объектов класса
- •Деструкторы
- •Вызов деструкторов
- •Ход работы
- •Контрольные вопросы для подготовки и самостоятельной работы
- •Лабораторная работа №22 Использование наследования для создания иерархии классов (2 часа)
- •Теоретические сведения
- •"Друзья" классов (friend)
- •Ход работы
- •Контрольные вопросы для подготовки и самостоятельной работы
- •Лабораторная работа №23 Использование виртуальных и указателей для работы с объектами классов (2 часа)
- •Теоретические сведения
- •Виртуальные базовые классы
- •Виртуальные деструкторы
- •Ход работы
- •Литература
- •Выходные данные
Ход работы
Изучить теоретические сведения.
В соответствии с индивидуальным заданием разработать алгоритм решения задачи. Объявить комбинированные типы, массивы структур, указатели на структуру. Использовать указатели в качестве членов структуры, а также для доступа к членам структуры и работы с ними. Объявить объединение и выполнить работу с объединением с использованием указателей. Результаты инициализации, изменения членов комбинированных типов вывести на экран.
Разработать и набрать программу на компьютере, устранить ошибки.
Получить результат.
Оформить отчет.
Подготовиться к защите лабораторной работы, изучив контрольные вопросы по данной теме.
Требования к содержанию отчёта приведены в лабораторной работе №1.
Индивидуальное задание к лабораторной работе №15 взять из работы №3.
Контрольные вопросы для подготовки и самостоятельной работы
Можно ли использовать указатели в качестве данных-членов структур?
Можно ли использовать массивы и структуры в качестве данных-членов структур (вложенные объявления)?
Можно ли использовать в качестве вложенных структуры объявляемого (своего) типа, а также указатели на структуры своего типа?
Как объявить указатель на структуру, массив указателей на структуры? Существуют ли различные варианты объявления?
Можно ли использовать typedef для объявления типа структуры?
Как получить доступ к элементу структуры с помощью указателя?
Как осуществляется доступ к данным-членам структуры при использовании массива указателей на структуры?
Можно ли использовать различные классы памяти применительно к переменным структурного типа?
Обязательно ли указывать ключевое слово struct при объявлении структурного типа, переменных структурного типа?
Можно ли хранить адрес структуры в самой структуре?
Лабораторная работа № 16
Использование указателей для работы с функциями
(2 часа)
Цель работы: выработать практические навыки в написании программ с функциями и в использование указателей для работы с функциями.
Теоретические сведения
С позволяет использовать указатели на базовые типы, на массивы и структуры как параметры передаваемые в функцию и возвращаемые из функции, а также указатели на функции. Общий синтаксис для объявления указателя на структуру как параметры функции:
[const ]тип*имя указателя
При объявлении функции имя указателя как формального параметра может не указываться аналогично другим видам формальных параметров.
Ключевое слово const предохраняет данные от изменения данных в структуре функции, тогда как отсутствие ключевого слова const позволяет функции изменять значения данных, т.к. при использовании указателей в теле функции известны физические адреса переменных.
Пример использования указателей на различные типы данных как параметры функции.
int funct (float*, int*); // передача указателей на тип float и на тип int
struct Мyst
{
//члены;
};
void loadMy(Myst*pmy); // передача указателя рmу на тип структур типа Муst.
В примере объявлена структура типа Myst и объявлена функция loadMy() . Функция имеет формальный параметр-указатель pmy на тип Мyst.
Вызов функции funct() и fn():
Float*pf; int*pl;
Int a = funct(pf, pl); fn(pf);
Объявление указателя на функцию аналогично объявлению функций, с которыми он будет использоваться. Например
void (* pfunc) (int, int);
Объявлен указатель pfunc на функцию, которая требует два параметра типа int и не возвращает значения (void). Типы и количество параметров, а также тип возвращаемого значения должны создать. Для использования указателя объявим функцию
void f1 (int, int);
Присвоим указателю адрес функции
pfunc= f1;
и осуществим её вызов
(*pfunc)(2,4);