Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МВ_Прог_1курс_2часть.doc
Скачиваний:
8
Добавлен:
09.09.2019
Размер:
1.02 Mб
Скачать

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ

ХАРКІВСЬКИЙ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ РАДІОЕЛЕКТРОНІКИ

МЕТОДИЧНІ ВКАЗІВКИ

ДО ЛАБОРАТОРНИХ ТА ПРАКТИЧНИХ

РОБІТ З ДИСЦИПЛІНИ

"Програмування"

Харків 2007

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ

ХАРКІВСЬКИЙ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ РАДІОЕЛЕКТРОНІКИ

МЕТОДИЧНІ ВКАЗІВКИ

ДО ЛАБОРАТОРНИХ ТА ПРАКТИЧНИХ

РОБІТ З ДИСЦИПЛІНИ

"програмування"

для студентів денної форми навчання спеціальності

_______________________

Відповідальний за випуск Путятін Є.П.

ЗАТВЕРДЖЕНО

кафедрою інформатики.

Протокол № від

Харків 2007

Методичні вказівки до лабораторних та практичних робіт з дисципліни “Програмування” для cтудентів денної форми навчання спеціальності ___________ /Упоряд.: В.А. Любченко, О.В. Яковлева, Д.О. Руденко  Харкiв: ХНУРЕ, 2007.  ___ с.

Упорядники: В.А. Любченко

О.В. Яковлева

Д.О. Руденко

Рецензент С.С. Танянський, доц. каф. ЕОМ

ЗМІСТ

1 Директиви препроцесора. Багатомодульне програмування 7

2 Потокові класи мови С++ 18

3 Файлові потоки мови С 42

4 Перегрузка операцій 56

5 Основи розробки класів у мові С++ 62

6 Наслідування, поліморфізм, інкапсуляция 81

ВСТУП

В наш час персональні комп’ютери мають широке застосування в 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++ та же цель достигается применением директивы

#pragma once.

Директива #error

Директива #error вызывает во время компиляции сообщение об ошибке.

#error сообщение_об_ошибке

Пример. Обеспечение правильности параметров компиляции.

#if !defined(__cplusplus)

#error Этот файл должен компилироваться в режиме С++

#endif

Сообщение может содержать идентификаторы макросов, которые будут расширены препроцессором. Директива обычно применяется, когда не был определен необходимый макрос.

Директива #line

С помощью директивы #line можно изменить внутренний счетчик строк компилятора и имя компилируемого файла. Она имеет следующий вид

#line номер_строки ["имя_файла"]

Директива #pragma

Директива #pragma позволяет влиять на процесс и результат компиляции. Вот несколько опций для компилятора Visual C++.

  • #pragma hdrstop — предписывает компилятору не включать дальнейшую информацию в прекомпилируемый заголовок;

  • #pragma once — предписывает компилятору лишь однажды включать данный заголовочный файл в программу;

#pragma warning — выборочно разрешает или подавляет предупреждающие сообщения.

1.3 Порядок виконання роботи

Вивчити директиви препроцесорної обробки. Ознайомитися з правилами створювання макросами та класичними помилками програмістів-початківців. Перед початком виконання лабораторної роботи розібрати наведений приклад. Особливу увагу приділити механізму підключення модулю до основної програми.

1.4 Контрольні запитання та завдання

1.5 Завдання

Ввід-вивід елементів масиву та вирішення завдання оформити у вигляді макросів та розмістити їх в окремому модулі.

1.6 Варіанти завдань

Вариант 1

В одномерном массиве, состоящем из вещественных элементов, вычислить:

1) сумму отрицательных элементов массива;

2) произведение элементов массива, расположенных между максимальным и минимальным элементами.

Упорядочить элементы массива по возрастанию.

Вариант 2

В одномерном массиве, состоящем из вещественных элементов, вычислить:

1) сумму положительных элементов массива;

2) произведение элементов массива, расположенных между максимальным по модулю и минимальным по модулю элементами.

Упорядочить элементы массива по убыванию.

Вариант 3

В одномерном массиве, состоящем из целых элементов, вычислить:

1) произведение элементов массива с четными номерами;

2) сумму элементов массива, расположенных между первым и последним нулевыми элементами.

Преобразовать массив таким образом, чтобы сначала располагались все положительные элементы, а потом — все отрицательные (элементы, равные 0, считать положительными).

Вариант 4

В одномерном массиве, состоящем из вещественных элементов, вычислить:

1) сумму элементов массива с нечетными номерами;

2) сумму элементов массива, расположенных между первым и последним отрицательными элементами.

Сжать массив, удалив из него все элементы, модуль которых не превышает 1. Освободившиеся в конце массива элементы заполнить нулями.

Вариант 5

В одномерном массиве, состоящем из вещественных элементов, вычислить:

1)  максимальный элемент массива;

2) сумму элементов массива, расположенных до последнего положительного элемента.

Сжать массив, удалив из него все элементы, модуль которых находится в интервале [ , ]. Освободившиеся в конце массива элементы заполнить нулями.

Вариант 6

В одномерном массиве, состоящем из вещественных элементов, вычислить:

1) минимальный элемент массива;

2) сумму элементов массива, расположенных между первым и последним положительными элементами.

Преобразовать массив таким образом, чтобы сначала располагались все элементы, равные нулю, а потом — все остальные.

Вариант7

В одномерном массиве, состоящем из целых элементов, вычислить:

1) номер максимального элемента массива;

2) произведение элементов массива, расположенных между первым и вторым нулевыми элементами.

Преобразовать массив таким образом, чтобы в первой его половине располагались элементы, стоявшие в нечетных позициях, а во второй половине — элементы, стоявшие в четных позициях.

Вариант 8

В одномерном массиве, состоящем из вещественных элементов, вычислить:

1) номер минимального элемента массива;

2) сумму элементов массива, расположенных между первым и вторым отрицательными элементами.

Преобразовать массив таким образом, чтобы сначала располагались все элементы, модуль которых не превышает 1, а потом — все остальные.

Вариант 9

В одномерном массиве, состоящем из вещественных элементов, вычислить:

1) максимальный по модулю элемент массива;

2) сумму элементов массива, расположенных между первым и вторым положительными элементами.

Преобразовать массив таким образом, чтобы элементы, равные нулю, располагались после всех остальных.

Вариант 10

В одномерном массиве, состоящем из целых элементов, вычислить:

1) минимальный по модулю элемент массива;

2) сумму модулей элементов массива, расположенных после первого элемента, равного нулю.

Преобразовать массив таким образом, чтобы в первой его половине располагались элементы, стоявшие в четных позициях, а во второй половине — элементы, стоявшие в нечетных позициях.

Вариант 11

В одномерном массиве, состоящем из вещественных элементов, вычислить:

1) номер минимального по модулю элемента массива;

2) сумму модулей элементов массива, расположенных после первого отрицательного элемента.

Сжать массив, удалив из него все элементы, величина которых находится в интервале [ , ]. Освободившиеся в конце массива элементы заполнить нулями.

Вариант 12

В одномерном массиве, состоящем из вещественных элементов, вычислить:

1) номер максимального по модулю элемента массива;

2) сумму элементов массива, расположенных после первого положительного элемента.

Преобразовать массив таким образом, чтобы сначала располагались все элементы, целая часть которых лежит в интервале [ , ], а потом — все остальные.

Вариант 13

В одномерном массиве, состоящем из вещественных элементов, вычислить:

1) количество элементов массива, лежащих в диапазоне от до ;

2) сумму элементов массива, расположенных после максимального элемента. Упорядочить элементы массива по убыванию модулей элементов.

Вариант 14

В одномерном массиве, состоящем из вещественных элементов, вычислить:

1) количество элементов массива, равных 0;

2) сумму элементов массива, расположенных после минимального элемента.

Упорядочить элементы массива по возрастанию модулей элементов.

Вариант 15

В одномерном массиве, состоящем из вещественных элементов, вычислить:

1) количество элементов массива, больших С;

2) произведение элементов массива, расположенных после максимального по модулю элемента.

Преобразовать массив таким образом, чтобы сначала располагались все отрицательные элементы, а потом — все положительные (элементы, равные 0, считать положительными).

Вариант 16

В одномерном массиве, состоящем из вещественных элементов, вычислить:

1) количество отрицательных элементов массива;

2) сумму модулей элементов массива, расположенных после минимального по модулю элемента.

Заменить все отрицательные элементы массива их квадратами и упорядочить элементы массива по возрастанию.

Вариант 17

В одномерном массиве, состоящем из целых элементов, вычислить:

1) количество положительных элементов массива;

2) сумму элементов массива, расположенных после последнего элемента, равного нулю.

Преобразовать массив таким образом, чтобы сначала располагались все элементы, целая часть которых не превышает 1, а потом — все остальные.

Вариант 18

В одномерном массиве, состоящем из вещественных элементов, вычислить:

1) количество элементов массива, меньших ;

2) сумму целых частей элементов массива, расположенных после последнего отрицательного элемента.

Преобразовать массив таким образом, чтобы сначала располагались все элементы, отличающиеся от максимального не более чем на 20%, а потом — все остальные.

Вариант 19

В одномерном массиве, состоящем из вещественных элементов, вычислить:

1) произведение отрицательных элементов массива;

2) сумму положительных элементов массива, расположенных до максимального элемента.

Изменить порядок следования элементов в массиве на обратный.

Вариант 20

В одномерном массиве, состоящем из вещественных элементов, вычислить:

1) произведение положительных элементов массива;

2) сумму элементов массива, расположенных до минимального элемента.

Упорядочить по возрастанию отдельно элементы, стоящие на четных местах, и элементы, стоящие на нечетных местах.

Вариант 21

В одномерном массиве, состоящем из вещественных элементов, вычислить:

1) сумму отрицательных элементов массива;

2) количество элементов массива больше первого элемента;

Изменить порядок следования элементов в массиве на обратный.

Вариант 22

В одномерном массиве, состоящем из вещественных элементов, вычислить:

1) обнулить все отрицательные элементы массива расположенные на четных местах;

2)  подсчитать количество ненулевых элементов массива;

Отсортировать все ненулевые элементы по возрастанию.

Вариант 23

В одномерном массиве, состоящем из целых элементов, вычислить:

1) максимальный по модулю элемент массива;

2) сумму всех элементов массива, расположенных после максимального по модулю.

Отсортировать элементы массива стоящие после максимального по модулю.

Вариант 24

В одномерном массиве, состоящем из вещественных элементов, вычислить:

1) номер максимального элемента массива;

2) произведение элементов массива, расположенных между первым и вторым отрицательными элементами.

Преобразовать массив таким образом, чтобы сначала располагались все элементы, модуль которых не превышает 5, а потом — все остальные.

Вариант 25

В одномерном массиве, состоящем из целых элементов, вычислить:

1) сумму положительных элементов массива;

2) произведение элементов массива, расположенных между первым четным и последним нечетным элементами.

Упорядочить элементы массива по возрастанию.

Вариант 26

В одномерном массиве, состоящем из целых элементов, вычислить:

1) произведение положительных элементов массива;

2) сумму элементов массива, расположенных между максимальным по модулю и последним четным элементами.

Упорядочить элементы массива по убыванию.

Вариант 27

В одномерном массиве, состоящем из целых элементов, вычислить:

1) произведение элементов массива с четными номерами;

2) сумму элементов массива, расположенных между первым и последним нулевыми элементами.

Преобразовать массив таким образом, чтобы сначала располагались все положительные элементы, а потом — все отрицательные (элементы, равные 0, считать положительными).

Вариант 28

В одномерном массиве, состоящем из целых элементов, вычислить:

1) номер максимального по модулю элемента массива;

2) произведение элементов массива, расположенных между первым и последним нулевыми элементами.

Переставить максимальный по модулю элемент с первым.

Вариант 29

В одномерном массиве, состоящем из вещественных элементов, вычислить:

1) минимальный положительный элемент массива;

2) сумму элементов массива, расположенных между первым положительным и последним отрицательным элементами.

Переставить местами минимальный положительный элимент с последним отрицательным.

Вариант 30

В одномерном массиве, состоящем из вещественных элементов, вычислить:

1) количество элементов массива, равных 0;

2) количество элементов массива, расположенных после минимального элемента.

Упорядочить элементы массива по убыванию модулей элементов.