Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Навроцкий, А. А. Основы_алгоритм_Программир_в_среде_VISUAL C++_Лаб_практикум_1_2_курсы_заоч.pdf
Скачиваний:
124
Добавлен:
16.03.2016
Размер:
1.06 Mб
Скачать

Министерство образования Республики Беларусь Учреждение образования

«Белорусский государственный университет информатики и радиоэлектроники»

Кафедра вычислительных методов и программирования

 

 

 

 

 

 

 

 

 

Р

 

 

 

 

 

 

 

 

И

 

 

 

 

 

 

 

У

 

 

А. А. Навроцкий, И. Н. Коренская, В. Л. Бусько

 

 

 

 

 

 

Г

 

 

 

 

ОСНОВЫ АЛГОРИТМИЗАЦИИ.

 

 

 

 

 

 

 

а

 

 

 

 

 

 

ПРОГРАММИРОВАНИЕБ

 

 

 

 

 

 

 

 

 

к

 

 

 

 

 

 

 

В СРЕДЕ VISUAL C++

 

 

 

 

 

 

Лабораторный пра тикум по курсу

 

 

 

 

 

 

 

 

т

 

 

 

 

 

 

«Основы алгори мизации и программирования»

 

 

для студентов 1 – 2-гоекурсов заочной формы обучения

 

 

 

 

 

о

 

 

 

 

 

 

 

 

всех специальностей БГУИР

 

 

 

 

 

 

и

 

 

 

 

 

 

 

л

 

 

 

 

 

 

 

б

 

 

 

 

 

 

 

и

 

 

 

 

 

 

 

 

Б

 

 

 

 

 

 

 

 

 

Минск БГУИР 2009

УДК 004.432.2(076) ББК 32.973.26-018.1я7

Н15

 

Р е ц е н з е н т :

 

 

 

Р

доцент кафедры информационных технологий автоматизированных систем

учреждения образования «Белорусский государственный университет

 

информатики и радиоэлектроники»,

 

И

 

 

 

 

 

кандидат технических наук О. В. Герман

 

 

 

 

 

 

У

 

 

 

 

Г

 

 

 

 

 

 

Б

 

 

 

 

 

 

а

 

 

 

 

 

к

 

 

 

 

 

 

е

 

 

 

 

 

 

Навроцкий, А. А.

 

 

 

 

 

 

Н15

и

 

 

 

 

 

 

Основы алг р тм тзации. Программирование в среде Visual C++ : лаб.

 

л

 

 

 

 

 

 

практикум по курсуо«Основы алгоритмизации и программирования» для

студ. 1 – 2-го курсов заоч. формы обуч. всех спец. БГУИР / А. А. Навроц-

кий, И. Н. Коренская, В. Л. Бусько. – Минск : БГУИР, 2009. – 48 с. : ил.

 

ISBN 978-985-488-474-5

 

 

 

 

 

 

 

Прбведено 11 лабораторных работ на языке С++ в среде Microsoft Visual Studio с

пр мерами выполнения; представлены индивидуальные задания; дана справочная ин-

иформация.

 

 

 

 

 

 

Б

 

 

 

 

УДК 004.432.2(076)

 

 

 

 

 

ББК 32.973.26-018.1я7

ISBN 978-985-488-474-5

© Навроцкий А. А., Коренская И. Н., Бусько В. Л., 2009

 

© УО «Белорусский государственный университет

 

информатики и радиоэлектроники», 2009

2

 

 

 

 

 

СОДЕРЖАНИЕ

 

 

 

 

 

Лабораторная работа №1

 

 

 

 

 

 

 

СРЕДА ПРОГРАММИРОВАНИЯ VISUAL C++.

 

 

 

 

 

 

ПРОГРАММИРОВАНИЕ ЛИНЕЙНЫХ АЛГОРИТМОВ .....................................

 

 

 

5

1.1. Консольный режим работы среды Visual С++ 6.0 ...............................

 

 

5

1.2. Функции библиотеки math.lib ...............................................................

 

 

 

 

 

6

1.3. Пример выполнения работы..................................................................

 

 

 

 

 

7

1.4. Индивидуальные задания ......................................................................

 

 

 

 

 

9

 

 

 

 

 

 

 

 

Р

 

Лабораторная работа №2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

И

 

ПРОГРАММИРОВАНИЕ РАЗВЕТВЛЯЮЩИХСЯ АЛГОРИТМОВ

.................

11

2.1. Логические операции и операции сравнения .....................................

 

 

 

11

 

 

 

 

 

 

У

 

 

2.2. Оператор условной передачи управления if.......................................

 

 

 

11

2.3. Оператор множественного выбора switch

..........................................

 

 

 

11

 

 

 

 

 

Г

 

 

 

2.4. Пример выполнения работы................................................................

 

 

 

 

 

12

 

 

 

 

Б

 

 

 

 

2.5. Индивидуальные задания ....................................................................

 

 

 

 

 

12

Лабораторная работа №3

 

 

 

 

 

 

 

ПРОГРАММИРОВАНИЕ ЦИКЛИЧЕСКИХ АЛГОРИТМОВ ............................

 

 

14

 

 

 

 

а

 

 

 

 

 

3.1. Оператор цикла с параметром for .......................................................

 

 

 

 

 

14

 

 

 

 

 

 

 

 

 

 

3.2. Оператор цикла с предусловием while................................................

 

 

 

 

14

 

 

 

 

 

 

 

 

 

 

3.3. Оператор цикла с постусловием do.....................................................

 

 

 

 

 

14

3.4. Операторы перехода

 

 

 

 

 

14

 

 

 

т

 

 

 

 

 

 

3.5. Отладка программы .............................................................................

 

 

 

 

 

15

3.6. Пример выполнения ................................................................рабо ы

 

 

 

 

 

15

3.7. Индивидуальные задания ....................................................................

 

 

 

 

 

16

Лабораторная работа №4

 

 

 

 

 

 

 

 

и

 

 

 

 

 

 

 

ПРОГРАММИРОВАНИЕ С ИСПОЛЬЗОВАНИЕМ

 

 

 

 

 

л

 

 

 

 

 

 

 

ОДНОМЕРНЫХ МАССИВОВо..............................................................................

 

 

 

 

 

17

4.1. Одномерные статические .....................................................массивы

 

 

 

 

 

17

б

 

 

 

 

 

 

 

 

 

4.2. Пример выполнения ................................................................работы

 

 

 

 

 

18

4.3. Индивидуальные задания ....................................................................

 

 

 

 

 

19

Лабораторная ра ота №5

 

 

 

 

 

 

 

УКАЗАТЕЛИ. ПРОГРАММИРОВАНИЕ С ИСПОЛЬЗОВАНИЕМ

 

 

ДИНАМИЧЕСКИХи

ДВУМЕРНЫХ ...............................................МАССИВОВ

 

 

 

 

20

5.1. Объявление указателя..........................................................................

 

 

 

 

 

20

Б5.2. Операции над указателями..................................................................

 

 

 

 

 

20

5.3. Создание двумерного ..................................динамического массива

 

 

 

21

5.4. Пример выполнения ................................................................работы

 

 

 

 

 

21

5.5. Индивидуальные задания ....................................................................

 

 

 

 

 

23

3

Лабораторная работа №6

 

 

 

 

 

 

 

 

ПРОГРАММИРОВАНИЕ С ИСПОЛЬЗОВАНИЕМ СТРОК...............................

 

 

24

6.1. Объявление строк.................................................................................

 

 

 

 

 

 

 

24

6.2. Функции для работы со строками

.......................................................

 

 

 

24

6.3. Пример выполнения работы................................................................

 

 

 

 

 

25

6.4. Индивидуальные задания ....................................................................

 

 

 

 

 

26

Лабораторная работа №7

 

 

 

 

 

 

 

 

ПРОГРАММИРОВАНИЕ С ИСПОЛЬЗОВАНИЕМ .......................СТРУКТУР

Р

27

7.1. Объявление структур

 

 

 

 

 

27

 

 

 

 

 

 

7.2. Пример выполнения работы................................................................

 

 

 

 

 

27

7.3. Индивидуальные задания ....................................................................

 

 

 

И

28

Лабораторная работа №8

 

 

 

 

 

 

 

 

 

 

У

 

30

ПРОГРАММИРОВАНИЕ С ИСПОЛЬЗОВАНИЕМ .......................ФУНКЦ Й

 

8.1. Объявление функции

...........................................................................

 

 

 

 

 

 

30

8.2. Передача параметров...........................................................................

 

 

 

 

 

 

31

 

8.2.1. Передача параметров по значению...........................................

 

 

 

31

 

 

 

 

 

Б

 

 

 

31

 

8.2.2. Передача параметров по ссылке ...............................................

 

 

 

 

8.2.3. Передача параметров по указателю..........................................Г

 

 

32

8.3. Перегрузка функций

 

 

а

 

 

 

32

 

 

 

 

 

 

 

8.4. Указатель на функцию.........................................................................

к

 

 

 

 

33

8.5. Пример выполнения работы................................................................

 

 

 

 

 

33

 

 

е

 

 

 

 

 

34

8.6. Индивидуальные задания ....................................................................

 

 

 

 

 

Лабораторная работа №9

 

 

 

 

 

 

 

 

ПРОГРАММИРОВАНИЕ С ИСПОЛЬЗОВАНИЕМ ..........................ФАЙЛОВ

 

35

9.1. Организация рабо ы с файлами..........................................................

 

 

 

 

35

 

ыпо

 

 

 

 

 

 

 

35

9.2. Функции для рабо ы с файлами..........................................................

 

 

 

 

9.3. Пример в лнения рабо ы................................................................

 

 

 

 

 

37

 

и

 

 

 

 

 

 

 

 

9.4. Индив дуальныетзадания ....................................................................

 

 

 

 

 

41

 

л

 

 

 

 

 

 

 

 

Лабораторная работа №10

 

 

 

 

 

 

 

 

СОРТИРОВКА ПО КЛЮЧУ ОДНОМЕРНЫХ ........МАССИВОВ СТРУКТУР

43

10.1. Сортировка массивов.........................................................................

 

 

 

 

 

 

43

и

 

 

 

 

 

 

 

43

 

10.1.1. Метод пузырька

.....................................................................

 

 

 

 

 

Б

10.1.2. Сортировка выбором .............................................................

 

 

 

 

43

б10.1.3. Сортировка вставками

 

 

 

 

44

 

 

 

 

 

10.2. Индивидуальные задания ..................................................................

 

 

 

 

 

44

Лабораторная работа №11

 

 

 

 

 

 

 

 

ПОИСК ПО КЛЮЧУ В ОДНОМЕРНОМ МАССИВЕ ....................СТРУКТУР

 

45

11.1. Поиск в массиве .................................................................................

 

 

 

 

 

 

 

45

 

11.1.1. Линейный поиск (метод полного .........................перебора)

 

45

 

11.1.2. Двоичный (бинарный) поиск ................................................

 

 

 

45

11.2. Индивидуальные задания ..................................................................

 

 

 

 

 

46

Литература ..............................................................................................................

 

 

 

 

 

 

 

47

4

 

 

 

 

 

 

 

 

 

Лабораторная работа №1

СРЕДА ПРОГРАММИРОВАНИЯ VISUAL C++. ПРОГРАММИРОВАНИЕ ЛИНЕЙНЫХ АЛГОРИТМОВ

1.1. Консольный режим работы среды Visual С++ 6.0

Программа, создаваемая в среде Visual C++, всегда оформляется в виде от- дельного проекта. Проект (project) – это набор взаимосвязанных исходных

файлов ,

предназначенных для решения определенной задачи, компиляция и

компоновка

 

 

Р

 

 

 

проект

входят

 

 

 

 

,

которые

 

 

У

 

 

выбрать в главном меню File – New;

 

 

в открывшемся окне (закладка Projects) выбрать тип создаваемогоИпроекта

в поле Project Name ввести имя проекта

БГ

;

 

в поле Location ввести имя папки, в которой будет размещен проект, и

полный путь к ней

к

 

 

 

. П п у т кже можно выбрать с помо-

щью диалогового окна Choose Directory,адля чего надо щелкнуть мышью по

кнопке

;

е

 

 

 

щелкнуть мышью по кнопке ОК;

 

 

 

 

 

т

 

 

-

 

ио

 

 

в открывшемся окне мас ера приложений Win32 Console Application –

Step

 

 

 

 

 

екте) щелкнуть мышью по кнопке ОК.

 

 

 

 

б

 

 

 

 

Для ра оты с консольным приложением необходимо создать новый или

и

файл с кодом программы.

 

 

добавить существующийл

 

 

Для создания нового файла необходимо:

 

 

 

выбрать File – New;

 

 

 

 

в открывшемся окне (закладка Files) выбрать тип файла

 

;

Бв поле File name ввести имя файла:

(желательно, чтобы вво-

димое имя совпадало с именем проекта);

щелкнуть мышью по кнопке ОК.

Для добавления в проект существующего файла с кодом программы необходимо:

скопировать имеющийся файл (расширение cpp) в рабочую папку проекта;

5

в окне Workspace (закладка ) щелкнуть правой кнопкой мыши по папке ;

в раскрывшемся меню выбрать пункт , в диалоговом окне

указать добавляемый файл и щелкнуть мышью по кноп-

ке ОК.

В папке проекта, как правило, размещены несколько файлов и одна вло- женная папка. Файлы имеют следующее назначение:

файл с расширением dsw (например my_lab1.dsw) – файл проекта, кото-

рый объединяет все входящие в проект файлы;

 

 

И

 

 

 

файл с расширением cpp (например my_lab1.cpp) – файл кода програм-

мы.

 

 

У

Р

 

 

 

 

 

 

Г

 

 

 

1.2. Функции библиотеки math.lib

 

 

Функции для расчета математических выражений находятся в библиотеке

 

 

Б

 

 

 

math.lib (подключение библиотеки: #include <math.h>). Все аргументы в три- гонометрических функциях задаются в радианах. Параметры и аргументы всех остальных функций имеют тип double (кроме abs(x)).

Математическая

Функция

 

 

а

Описание

 

функция

 

библиотеки

 

 

 

 

 

 

 

math.lib

 

 

 

 

 

 

 

 

 

к

 

 

 

 

 

 

 

 

 

 

|x|

 

 

 

 

аbs(x)

 

 

Вычисление абсолютного значения (толь-

 

 

 

 

 

 

ко для целых чисел!)

|x|

 

 

 

 

fаbs(x)

е

 

 

 

 

 

 

 

Вычисление абсолютного значения x

x

 

 

 

 

sqrt(x)

тy)

Вычисление квадратного корня из x

xy

 

 

 

 

pow(x,

Возведение x в степень y

sin(x)

 

 

 

sin(x)о

 

Вычисление синуса x

sh(x) = (ex−ex)/2

 

sinh(x)

 

Вычисление синуса гиперболического x

cos(x)

 

 

и

 

 

Вычисление косинуса x

 

 

 

cos(x)

 

 

ch(x) = (ex+ex)/2

 

cosh(x)

 

Вычисление косинуса гиперболического x

tg(x)

 

 

л

 

 

Вычисление тангенса x

 

 

 

 

tan(x)

 

 

tgh(x)

б tanh(x)

 

Вычисление тангенса гиперболического x

arccos(x)

 

 

 

acos(x)

 

Вычисление значения арккосинуса x

 

и

 

 

atan(x)

 

Вычисление значения арктангенса x

arctg(x)

 

 

 

 

arctg(Бx/y)

 

 

 

atan2(x,y)

 

Вычисление значения арктангенса двух ар-

ex

 

 

 

 

 

 

 

гументов x и y

 

 

 

 

 

exp(x)

 

 

Вычисление экспоненты числа x

ln(x)

 

 

 

 

log(x)

 

 

Вычисление натурального логарифма x

lg10(x)

 

 

 

log10(x)

 

Вычисление десятичного логарифма x

6

Математическая

Функция

 

 

 

 

Описание

 

 

 

 

 

функция

 

библиотеки

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

math.lib

 

Функция возвращает действительное зна-

Округление

 

 

 

 

 

 

 

ceil(x)

 

 

 

 

чение, соответствующее наименьшему це-

к большему

 

 

 

 

 

 

 

 

 

 

 

лому числу, которое больше или равно x

 

 

 

 

 

 

 

 

 

 

Округление

 

 

 

 

 

 

Функция возвращает действительное зна-

 

floor(x)

 

 

 

чение, соответствующее наибольшему це-

к меньшему

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Р

 

 

 

 

 

 

 

 

 

лому числу, которое меньше или равно x

 

Остаток

 

 

 

 

 

 

 

Функция возвращает действительное зна-

 

 

fmod(x,y)

 

чение, соответствующее остатку от цело-

от деления x на y

 

 

 

 

 

 

численного деления x на y

И

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Например:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

double x, y,

 

 

 

 

 

 

 

Г

 

2

 

3

double z = exp(1)+exp(x*x)+exp(2*pow(x,3));

 

 

// z = e + ex

 

+ e2x

 

 

 

 

 

 

 

 

 

 

 

 

Б

У

x

y4+ 4 x

 

double z1 = pow (x, pow (y, 4+pow (x, 1/4.)));

 

 

// z1 =

 

 

 

 

double z2 = fmod( 5, 2);

 

 

 

// или z2 = 5%2;

=> z2 = {5/2} = 1

double z3 = ceil (5.6);

 

 

а

 

 

 

 

 

 

 

 

 

 

 

 

// => z3 = 6

 

 

 

 

 

 

 

 

 

double z4 = ceil (-5.1);

 

к

 

 

 

 

 

 

 

 

 

 

 

 

 

// => z4 = -5

 

 

 

 

 

 

 

 

 

double z5 = floor (5.6);

е

 

// => z5 = 5

 

 

 

 

 

 

 

 

 

double z6 = floor (-5.6);

 

// => z6 = -6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1.3. Прим р выполнения работы

 

 

 

 

 

 

 

 

 

Написать программу вычисления линейного арифметического выражения

 

 

 

и

h =

x2 y

+ ey−1

 

+10 × 3 x - ln(z)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

т1+ x

y - tgz

 

 

 

 

 

 

 

 

 

 

 

 

 

 

л

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

при x = 2,45;

y =о– 0,423·10-2; z = 1,232·103.

 

 

Ответ: h = 6,9465.

 

б

 

 

 

 

Код программы

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

#include <iostream.h>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

#include <math.h>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Б

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

int main ()

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

{ и

 

 

 

 

 

 

 

 

 

// Начало главной функции

 

 

double x, y, z, a, b, c, h;

 

 

 

 

// Объявление переменных

 

 

 

cout << "Vvedite x: ";

 

 

 

 

 

 

// Ввод значений x, y и z

 

 

 

cin >> x;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

cout << "Vvedite y: ";

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

cin >> y;

cout << "Vvedite z: "; cin >> z;

7

a = pow(x, 2*y) + exp(y-1);

 

// Вычисление выражения

b = 1+x * fabs(y - tan(z));

 

 

c = 10 * pow(x, 1/3.) - log(z);

 

 

h = a / b + c;

 

 

cout << "Result h= " << h << endl;

// Вывод результата

return 0;

// Завершение выполнения программы

}

 

// Конец главной функции

Замечания:

1. Для ввода значений переменных x, y и z необходимо набрать с клавиа-

туры:

(x = 2,45);

 

Р

2.45

 

–0.423e-2

(y = –0,423·10-2);

И

1.232e3

(z = 1,232·103).

2. В языке С++ при вычислении арифметических выражений происходит

 

 

У

 

автоматическое приведение типов, следовательно, при делении целого значе-

ния на целое, результат будет целым числом. НапримерГ, при вычислениии «1/3»

результат будет равен нулю, так как целая часть вычисленного выражения рав-

на нулю. Для получения результата, имеющегоБдробную часть, необходимо,

чтобы один из операндов имел действ тельный тип.

Для вычисления можно

использовать функцию явного прив дения т , а для констант достаточно по-

 

 

 

 

 

 

ипа

 

 

 

ставить точку после числа, наприм р, или «1/3.», или «1./3.», или «1./3».

Например:

 

 

 

 

к

 

 

 

 

 

 

е

 

 

 

 

int s, n;

 

 

// Явное приведение типа

double sr = static

cast<double> (s) / n;

 

 

 

 

 

 

 

3

 

double y = pow (x, 3/4.);

 

// y = 4 x3 = x

 

 

 

4

 

 

 

т

 

 

 

 

 

3. Язык C чувств телен к регистру букв, т. е. прописные и строчные буквы

 

 

 

о

 

 

 

 

 

 

воспринимаются как разные символы.

 

 

 

 

Например:

иcount, Count, COUNT разные идентификаторы.

4. П выводе информации для перехода на новую строку применяется ма-

 

л

 

 

 

 

 

 

 

б

 

 

 

 

 

 

 

 

ри

 

 

 

 

 

 

 

 

 

нипулятор (функция управления выводом) endl или \n’, для выравнивания вы- водБмой нформации \t(вставляет символ табуляции).

5. Главная функция int main () автоматически вызывается при запуске про- граммы и возвращает операционной системе по окончании значение 0 (return 0;).

Для компиляции, компоновки и запуска программы на выполнение ис- пользуются следующие пункты подменю Build:

Compile (Ctrl+F7) компиляция выбранного файла. Результаты компиля- ции выводятся в окно Output.

Build (F7) компоновка проекта. Компилируются все файлы, в которых произошли изменения с момента последней компоновки.

8