- •Методичні вказівки
- •1 Директивипрепроцесора. Багатомодульне програмування
- •1.1 Мета роботи
- •1.2 Вказівки щодо організації самостійної роботи студентів
- •1.3 Порядок виконання роботи
- •1.4 Контрольні запитання та завдання
- •1.5 Завдання
- •1.6 Варіанти завдань
- •1.7 Контрольний приклад
- •2.1 Мета роботи
- •2.2 Вказівки щодо організації самостійної роботи студентів
- •2.3 Порядок виконання роботи
- •2.4 Контрольні запитання та завдання
- •2.5 Завдання
- •2.6 Варіанти завдань
- •2.7 Контрольний приклад
- •3 Файлові потоки мови с
- •3.1 Мета роботи
- •3.2 Вказівки щодо організації самостійної роботи студентів
- •Ввод и вывод символов
- •Ввод и вывод строк
- •Ввод и вывод записей
- •Управление указателем файла
- •Состояние потока
- •Форматированный вывод
- •Форматированный ввод
- •Другие функции форматного ввода и вывода
- •Примеры
- •3.3 Порядок виконання роботи
- •3.4 Контрольні запитання та завдання
- •3.5 Завдання
- •3.6 Варіанти завдань
- •3.7 Контрольний приклад
- •4 Перегрузка операцій
- •4.1 Мета роботи
- •4.2 Вказівки щодо організації самостійної роботи студентів
- •4.3 Порядок виконання роботи
- •5.1 Мета роботи
- •5.2 Вказівки щодо організації самостійної роботи студентів Классы и объекты
- •Инкапсуляция
- •Конструктор
- •Деструктор
- •Указатели на объекты
- •Операции new и delete
- •5.3 Порядок виконання роботи
- •5.4 Контрольні запитання та завдання
- •5.5 Завдання
- •5.6 Варіанти завдань
- •5.7 Контрольний приклад
- •6 Наслідування, поліморфізм, інкапсуляция
- •6.1 Мета роботи
- •6.2 Вказівки щодо організації самостійної роботи студентів
- •Наследование
- •Уровни доступа
- •Виртуальные функции
- •Механизм работы виртуальных функций
- •Полиморфизм
- •Множественное наследование
- •6.3 Порядок виконання роботи
- •6.4 Контрольні запитання та завдання
- •6.5 Завдання
- •6.6 Варіанти завдань
- •6.7 Контрольний приклад
- •Рекомендована література
- •61166 Харків, просп. Леніна, 14.
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
ХАРКІВСЬКИЙ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ РАДІОЕЛЕКТРОНІКИ
Методичні вказівки
ДО ЛАБОРАТОРНИХ ТА ПРАКТИЧНИХ
РОБІТ З ДИСЦИПЛІНИ
"Програмування"
Харків 2007
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
ХАРКІВСЬКИЙ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ РАДІОЕЛЕКТРОНІКИ
МЕТОДИЧНІ ВКАЗІВКИ
ДО ЛАБОРАТОРНИХ ТА ПРАКТИЧНИХ
РОБІТ З ДИСЦИПЛІНИ
"програмування"
для студентів денної форми навчання спеціальності
_______________________
Відповідальний за випуск Путятін Є.П.
ЗАТВЕРДЖЕНО
кафедрою інформатики.
Протокол № від
Харків 2007
Методичні вказівки до лабораторних та практичних робіт з дисципліни “Програмування” для cтудентів денної форми навчання спеціальності ___________ /Упоряд.: В.А. Любченко, О.В. Яковлева, Д.О. Руденко Харкiв: ХНУРЕ, 2007. ___ с.
Упорядники: В.А. Любченко
О.В. Яковлева
Д.О. Руденко
Рецензент С.С. Танянський, доц. каф. ЕОМ
ЗМІСТ
ВСТУП 5
1 Директиви препроцесора. Багатомодульне програмування 6
2 Потокові класи мови С++ 17
3 Файлові потоки мови С 41
4 Перегрузка операцій 55
5 Основи розробки класів у мові С++ 61
6 Наслідування, поліморфізм, інкапсуляция 80
РЕКОМЕНДОВАНА ЛІТЕРАТУРА 106
ВСТУП
В наш час персональні комп’ютери мають широке застосування в pізноманітних галузях людської діяльності. Все це неможливо без знань мов програмування і тому таку актуальність надбав лозунг “Програмування – друга грамотність”.
Головною метою даних методичних вказівок є допомога студентам в оволодінні практичними навичками у підготовці та розв’язанні задач найбільш розповсюдженою мовою програмування С++, а також придбанні початкових знань в складній сучасній системі програмування VISUAL C ++.
Цикл лабораторних робіт передбачає активну самостійну роботу студентів. Кожна робота виконується студентом особисто, згідно з варіантом завдання, номер якого повиненвідповідати порядковому номеру студента в журналі академгрупи.
Для виконання роботи необхідно: опрацювати теоретичний матеріал, дати відповіді на контрольні запитання, які надаються в цих методичних вказівках, розробити схему алгоритму, скласти програму свого варіанту завдання та розв’язати його на персональному комп’ютері (ПК), оформити звіт і захистити його.
Звіт повинен мати: номер лабораторної роботи, назву та мету роботи, завдання, схему алгоритму (в деяких випадках – короткий опис алгоритму), роздрук-лістинг тексту програми та результати її розв’язання, аналіз одержаних результатів і висновок щодо роботи.
Правила техніки безпеки забороняють студентам вмикати або вимикати ПК, розкривати будь-яке обладнання, знімати захисні щити, а також доторкатись до струмопровідних частин обладнання.
1 Директивипрепроцесора. Багатомодульне програмування
1.1 Мета роботи
Отримати практичні навички застосування директив препроцесора, насамперед у створенні макросів, умовної компіляції, створенні багатомодульного проекту.
1.2 Вказівки щодо організації самостійної роботи студентів
Директивы препроцессора начинаются с символа “#” и выполняются во время 1-й фазы компиляции. Результат выполнения затем компилируется, но может быть выведен в stdoutили в файл при помощи опций компилятора.
Директива #include
Эта директива предписывает препроцессору поместить на ее место содержимое другого файла. Синтаксис директивы
#include <имя_файла>
или
#include "имя_файла".
Если имя_файла не является полным именем, в первом случае поиск происходит только в пределах специфицированных каталогов включаемых файлов. Во втором случае сначала просматривается текущий каталог.
Директива #define
Директива #define определяет подстановку в тексте программы. Она используется для определения:
- символических констант:
#define имя текст__подстановки
(все вхождения имени заменяются на текст подстановки);
- макросов, которые выглядят как функции, но реализуются подстановкой их текста в текст программы:
#define имя (параметры текст_полстановки;
- символов, управляющих условной компиляцией. Они используются вместе с директивами #i fdef и #i fndef. Формат:
#define имя Примеры:
#define VERSION I
#define VASIA "Василий Иванович"
#define MAX(х,у) ((x)>(y) ? (x) : (y))
Имена рекомендуется записывать прописными буквами, чтобы зрительно отличать их от имен переменных и функций. Параметры макроса используются при макроподстановке, например, если в тексте программы используется вызов макроса y = MAX(suml,. sum2); он будет заменен на
у = ((suml)>(sum2)? (suml):(sum2));
Отсутствие круглых скобок может привести к неправильному порядку вычисления, поскольку препроцессор не оценивает вставляемый текст с точки зрения синтаксиса. Например, если к макросу #deflne sqr(x) (х*х) обратиться как sqr(y+l), в результате подстановки получится выражение (у+1*у+1).
Директивы #undef удаляет объявленную макроподстановку
Условная компиляция
Можно избирательно компилировать части файла. Синтаксис директивы условной компиляцииследующий:
#if выражение_1
// эта часть файла компилируется, если выражение_1 истинно
#elif выражение_2
// эта часть файла компилируется, если выражение_1 ложно, а
// выражение_2 истинно
...
#else
// эта часть файла компилируется, когда все выражения ложны
#endif
Директивы #elif и #else могут быть опущены.
Пример.Простое исключение секции кода.
#if 0
// исключенная секция кода
#endif
Значения выражений в директивах #if и #elif должны быть целыми константами. В выражениях нельзя использовать операцию sizeof.
В качестве выражения в директивах #if и #elif можно использовать оператор defined . Он проверяет, был ли определен макрос.
Пример.Выбор между секциями кода.
#if defined(DEBUGGING)
space = 1000;
#else
space = 10;
#endif
Директивы #ifdef и #ifndef являются сокращением для директив
#if defined и #if !defined соответственно.
Пример.Предотвращение многократной трансляции заголовочного файла sample.h.
#ifndef __SAMPLE_H__
#define __SAMPLE_H__
// здесь содержание файла
#endif
Если файл sample.h окажется многократно включенным в исходный код программы, то при таком “обрамлении” его содержимого будет оттранслировано лишь первое вхождение заголовочного файла.
Замечание.В Visual C++ та же цель достигается применением директивы
#pragmaonce.
Директива #error
Директива #error вызывает во время компиляции сообщение об ошибке.
#error сообщение_об_ошибке
Пример.Обеспечение правильности параметров компиляции.
#if !defined(__cplusplus)
#error Этот файл должен компилироваться в режиме С++
#endif
Сообщение может содержать идентификаторы макросов, которые будут расширены препроцессором. Директива обычно применяется, когда не был определен необходимый макрос.
Директива #line
С помощью директивы #line можно изменить внутренний счетчик строк компилятора и имя компилируемого файла. Она имеет следующий вид
#line номер_строки ["имя_файла"]
Директива #pragma
Директива #pragma позволяет влиять на процесс и результат компиляции. Вот несколько опций для компилятора Visual C++.
#pragma hdrstop— предписывает компилятору не включать дальнейшую информацию в прекомпилируемый заголовок;
#pragma once— предписывает компилятору лишь однажды включать данный заголовочный файл в программу;
#pragma warning— выборочно разрешает или подавляет предупреждающие сообщения.