- •ЛАБОРАТОРНАЯ РАБОТА №1
- •1.1. Консольный режим работы среды Visual С++ 6.0
- •1.2. Функции библиотеки math.lib
- •double x, y,
- •1.3. Пример выполнения работы
- •#include <iostream.h>
- •#include <math.h>
- •int main ()
- •b = 1+x * fabs(y - tan(z));
- •1.4. Индивидуальные задания
- •ЛАБОРАТОРНАЯ РАБОТА №2
- •2.1. Логические операции и операции сравнения
- •2.2. Оператор условной передачи управления if
- •3. Вложенная форма:
- •if (логическое_выражение_1) оператор_1;
- •2.3. Оператор множественного выбора switch
- •switch (переменная_выбора)
- •2.4. Пример выполнения работы
- •#include <iostream.h>
- •#include <math.h>
- •int main()
- •double x, y, s;
- •cout << "Vvedite x: ";
- •cout << "Vvedite y: ";
- •double f_xy = fabs(x*y);
- •s = fabs(cos(x)) + log(y);
- •cout << "1 vetv. Result = " << s << endl;
- •cout << "2 vetv. Result = " << s << endl;
- •s = sqrt(fabs(x)) + 2*tan(y);
- •cout << "3 vetv. Result = " << s << endl;
- •return 0;
- •2.5. Индивидуальные задания
- •3.1. Оператор цикла с параметром for
- •тело цикла;
- •3.2. Оператор цикла с предусловием while
- •тело цикла;
- •3.3. Оператор цикла с постусловием do
- •тело цикла;
- •while (условие);
- •3.4. Операторы перехода
- •3.5. Отладка программы
- •3.6. Пример выполнения работы
- •#include <iostream.h>
- •#include <iomanip.h>
- •#include <math.h>
- •int main()
- •cout << "Vvedite a, b, h, k:" << endl;
- •cout << setw(15) << x << setw(15) << s << endl; // Вывод таблицы
- •return 0;
- •3.6. Индивидуальные задания
- •ЛАБОРАТОРНАЯ РАБОТА №4
- •4.1. Одномерные статические массивы
- •тип имя_массива [размер];
- •a[i+1]=temp;
- •if (a[i]<0) // Если найден отрицательный элемент, то
- •while(i<n && j<m) {
- •while(i<n) {
- •while(j<m) {
- •4.2. Пример выполнения работы
- •#include <iostream.h>
- •#include <math.h>
- •int main()
- •int a[10], i, n, min, imin, max, imax;
- •cout << "Vvedite a[" << i << "]= " ;
- •cout << a[i] << " " ;
- •cout << endl;
- •else
- •return 0;
- •4.3. Индивидуальные задания
- •ЛАБОРАТОРНАЯ РАБОТА №5
- •5.1. Объявление указателя
- •тип *имя_указателя;
- •5.2. Операции над указателями
- •5.3. Создание двумерного динамического массива
- •5.4. Пример выполнения работы
- •5.5. Индивидуальные задания
- •6.1. Объявление строк
- •сhar имя_строки [размер];
- •6.2. Функции для работы со строками
- •6.3. Пример выполнения работы
- •#include <string.h>
- •#include <stdio.h>
- •int main()
- •else
- •return 0;
- •6.4. Индивидуальные задания
- •7.1. Объявление структур
- •struct имя
- •тип_элемента_1 имя_элемента_1;
- •тип_элемента_2 имя_элемента_2;
- •тип_элемента_n имя_элемента_n;
- •имя_структуры.имя_поля
- •указатель_на_структуру–>имя_поля
- •7.2. Пример выполнения работы
- •int main ()
- •{ char fio[40];
- •char ngr[7];
- •double sb;
- •cin >> mstud[i].otc[j];
- •mstud[i].sb += mstud[i].otc[j] / 4.; // Вычисление
- •cout << endl;
- •strc stemp;
- •if (mstud[i].sb < mstud[j].sb
- •mstud[i] = mstud[j];
- •mstud[j] =stemp;
- •cout << mstud[i].fio << " " << mstud[i].ngr << " "
- •<< mstud[i].sb << endl;
- •return 0;
- •7.3. Индивидуальные задания
- •ЛАБОРАТОРНАЯ РАБОТА №8
- •ПРОГРАММИРОВАНИЕ С ИСПОЛЬЗОВАНИЕМ ФУНКЦИЙ
- •8.1. Объявление функции
- •тип_возвращаемого_значения имя_функции (список_параметров)
- •тело функции
- •тип параметра имя параметра
- •int Sum (int, double, char);
- •return выражение;
- •8.2. Передача параметров
- •8.3. Перегрузка функций
- •#include <iostream.h>
- •#include <conio.h>
- •int main()
- •cout << Sum(5, 3) << endl;
- •cout << Sum(5, 3, 11) << endl;
- •cout << Sum(mas, 6) << endl;
- •return 0;
- •int Sum(int a, int b) // Функция суммирования двух чисел
- •return a+b;
- •int Sum(int a, int b, int c) // Функция суммирования трех чисел
- •return a+b+c;
- •int Sum(int a[], int n) // Функция суммирования элементов массива
- •return s;
- •8.4. Указатель на функцию
- •double y (double x, int n)
- •double (*fun) (double, int);
- •8.5. Пример выполнения работы
- •#include <iostream.h>
- •#include <math.h>
- •#include <iomanip.h>
- •typedef double (*uf)(double, int);
- •int main()
- •void Tabl (double a, double b, double h, uf fun)
- •for (double x=a; x < b+h/2; x+=h)
- •cout << setw(8) << x << setw(15) << sum << endl;
- •double Y (double x, int k)
- •double s = 2;
- •8.6. Индивидуальные задания
- •9.1. Организация работы с файлами
- •FILE *указатель на файл;
- •9.2. Функции для работы с файлами
- •FILE *fopen (const char *имя_файла,
- •const char *режим_открытия);
- •int fcloseall (void);
- •int putc (int символ, FILE * указатель_на _файл);
- •int getc (FILE * указатель_на _файл);
- •int feof (FILE * указатель_на _файл);
- •int fputs (const char * строка, FILE * указатель_на _файл);
- •int *fprintf (FILE * указатель_на _файл,
- •const char * управляющая_строка);
- •int *fscanf (FILE * указатель_на _файл,
- •const char * управляющая_строка);
- •void rewind (FILE * указатель_на _файл);
- •int ferror (FILE * указатель_на _файл);
- •size_t fwrite (const void * записываемое_данное,
- •size_t fread (void * считываемое_данное,
- •int fileno (FILE * указатель_на _файл);
- •long filelength (int дескриптор);
- •9.3. Пример выполнения работы
- •typedef struct
- •char fio[30];
- •} TStudent;
- •int main()
- •while (true)
- •switch (Menu())
- •case 3: Spisok(); break;
- •case 7: return 0;
- •default: puts("Viberite pravilno!");
- •puts ("Press any key to continue");
- •cout << "VIBERITE:" << endl;
- •if ((fl = fopen(name,"wb")) == NULL)
- •if ((fl = fopen(name,"rb+")) == NULL)
- •fwrite (&stud[i], sizeof(TStudent), 1, fl);
- •fclose (fl);
- •if ((fl = fopen (name,"rb")) == NULL)
- •TStudent std;
- •while (true)
- •stud[nst] = std;
- •fclose(fl);
- •cout << stud[i].fio << endl;
- •char namet[30];
- •FILE *ft;
- •if ((ft = fopen (namet,"w")) == NULL)
- •char s[80];
- •strcpy (s, stud[i].fio);
- •fclose(ft);
- •9.4. Индивидуальные задания
- •ЛАБОРАТОРНАЯ РАБОТА №10
- •10.1. Сортировка массивов
- •imin = i;
- •if (a[imin] > a[j])
- •imin = j;
- •t = a[imin];
- •a[imin] = a[i];
- •void S_Vst (int a[], int n)
- •10.2. Индивидуальные задания
- •ЛАБОРАТОРНАЯ РАБОТА №11
- •ПОИСК ПО КЛЮЧУ В ОДНОМЕРНОМ МАССИВЕ СТРУКТУР
- •11.1. Поиск в массиве
- •return -1;
- •while (i<j)
- •11.2. Индивидуальные задания
- •ЛИТЕРАТУРА
Министерство образования Республики Беларусь Учреждение образования
«Белорусский государственный университет информатики и радиоэлектроники»
Кафедра вычислительных методов и программирования
А. А. Навроцкий, И. Н. Коренская, В. Л. Бусько
ОСНОВЫ АЛГОРИТМИЗАЦИИ
ИПРОГРАММИРОВАНИЯ
ВСРЕДЕ VISUAL C++
Лабораторный практикум по курсу «Основы алгоритмизации и программирования» для студентов 1 – 2-го курсов заочной формы обучения всех специальностей БГУИР
Минск БГУИР 2009
УДК 004.432.2 (076) ББК 32.973.26-018.1я7
Н 15
Р е ц е н з е н т : доцент кафедры ИТАС БГУИР,
кандидат технических наук О.В. Герман
Навроцкий, А. А.
Н 15 Основы алгоритмизации и программирования в среде Visual C++ : лаб. практикум по курсу «Основы алгоритмизации и программирования» для студ. 1 – 2-го курсов всех спец. БГУИР / А. А. Навроцкий, Коренская И. Н. – Минск :
БГУИР, 2008. – 48 с.: ил.
ISBN 978-985-488-
Приведены 11 лабораторных работ на языке С++ в среде Microsoft Visual Studio с примерами выполнения; представлены индивидуальные задания; дана справочная информация.
УДК 004.432.2 (076) ББК 32.973.26-018.1я7
© Навроцкий А. А., Коренская И. Н., 2009
ISBN 978-985- - © УО «Белорусский государственный университет информатики и радиоэлектроники», 2009
3
СОДЕРЖАНИЕ |
|
Лабораторная работа №1 ............................................................................................ |
6 |
Среда программирования Visual C++. Программирование линейных алгоритмов |
|
........................................................................................................................................ |
6 |
1.1. Консольный режим работы среды Visual С++ 6.0 ................................ |
6 |
1.2. Функции библиотеки math.lib ................................................................. |
7 |
1.3. Пример выполнения работы.................................................................... |
8 |
1.4. Индивидуальные задания ...................................................................... |
10 |
Лабораторная работа №2 .......................................................................................... |
12 |
Программирование разветвляющихся алгоритмов................................................ |
12 |
2.1. Логические операции и операции сравнения...................................... |
12 |
2.2. Оператор условной передачи управления if........................................ |
12 |
2.3. Оператор множественного выбора switch............................................ |
12 |
2.4. Пример выполнения работы.................................................................. |
13 |
2.5. Индивидуальные задания ...................................................................... |
13 |
Лабораторная работа №3 .......................................................................................... |
15 |
Программирование циклических алгоритмов........................................................ |
15 |
3.1. Оператор цикла с параметром for ......................................................... |
15 |
3.2. Оператор цикла с предусловием while ................................................. |
15 |
3.3. Оператор цикла с постусловием do ...................................................... |
15 |
3.4. Операторы перехода............................................................................... |
15 |
3.5. Отладка программы................................................................................ |
15 |
3.6. Пример выполнения работы.................................................................. |
16 |
3.6. Индивидуальные задания ...................................................................... |
17 |
Лабораторная работа №4 .......................................................................................... |
18 |
Программирование с использованием одномерных массивов............................. |
18 |
4.1. Одномерные статические массивы....................................................... |
18 |
4.2. Пример выполнения работы.................................................................. |
19 |
4.3. Индивидуальные задания ...................................................................... |
20 |
Лабораторная работа №5 .......................................................................................... |
21 |
Указатели. Программирование с использованием динамических двумерных |
|
массивов...................................................................................................................... |
21 |
5.1. Объявление указателя............................................................................ |
21 |
5.2. Операции над указателями.................................................................... |
21 |
5.3. Создание двумерного динамического массива................................... |
22 |
5.4. Пример выполнения работы.................................................................. |
22 |
5.5. Индивидуальные задания ...................................................................... |
24 |
Лабораторная работа №6 .......................................................................................... |
25 |
Программирование с использованием строк.......................................................... |
25 |
6.1. Объявление строк................................................................................... |
25 |
6.2. Функции для работы со строками......................................................... |
25 |
6.3. Пример выполнения работы.................................................................. |
26 |
6.4. Индивидуальные задания ...................................................................... |
27 |
Лабораторная работа №7.......................................................................................... |
28 |
Программирование с использованием Структур................................................... |
28 |
7.1. Объявление структур............................................................................. |
28 |
7.2. Пример выполнения работы................................................................. |
28 |
7.3. Индивидуальные задания...................................................................... |
29 |
Лабораторная работа №8.......................................................................................... |
31 |
Программирование с использованием функций.................................................... |
31 |
8.1. Объявление функции............................................................................. |
31 |
8.2. Передача параметров............................................................................. |
32 |
8.2.1. Передача параметров по значению................................................... |
32 |
8.2.2. Передача параметров по ссылке........................................................ |
32 |
8.2.3. Передача параметров по указателю.................................................. |
32 |
8.3. Перегрузка функций.............................................................................. |
33 |
8.4. Указатель на функцию.......................................................................... |
34 |
8.5. Пример выполнения работы................................................................. |
34 |
8.6. Индивидуальные задания...................................................................... |
35 |
Лабораторная работа №9.......................................................................................... |
36 |
Программирование с использованием файлов...................................................... |
36 |
9.1. Организация работы с файлами........................................................... |
36 |
9.2. Функции для работы с файлами........................................................... |
36 |
9.3. Пример выполнения работы................................................................. |
38 |
9.4. Индивидуальные задания...................................................................... |
42 |
Лабораторная работа №10........................................................................................ |
44 |
Сортировка по ключу одномерных массивов структур........................................ |
44 |
10.1. Сортировка массивов .......................................................................... |
44 |
10.1.1. Метод пузырька ................................................................................ |
44 |
10.1.2. Сортировка выбором........................................................................ |
44 |
10.1.3. Сортировка вставками...................................................................... |
45 |
10.2. Индивидуальные задания.................................................................... |
45 |
Лабораторная работа №11........................................................................................ |
46 |
Поиск по ключу В одномерном массиве структур................................................ |
46 |
11.1. Поиск в массиве................................................................................... |
46 |
11.1.1. Линейный поиск (метод полного перебора) .................................. |
46 |
11.1.2. Двоичный (бинарный) поиск........................................................... |
46 |
11.2. Индивидуальные задания.................................................................... |
47 |
Литература................................................................................................................. |
48 |
5
ЛАБОРАТОРНАЯ РАБОТА №1
СРЕДА ПРОГРАММИРОВАНИЯ VISUAL C++. ПРОГРАММИРОВАНИЕ ЛИНЕЙНЫХ АЛГОРИТМОВ
1.1. Консольный режим работы среды Visual С++ 6.0
Программа, создаваемая в среде Visual C++, всегда оформляется в виде отдельного проекта. Проект (project) – это набор взаимосвязанных исходных файлов, предназначенных для решения определенной задачи, компиляция и компоновка которых позволяет получить выполняемую программу. В проект входят как файлы, непосредственно создаваемые программистом, так и файлы, которые автоматически создает и редактирует среда программирования.
Для создания нового проекта необходимо:
•выбрать в главном меню File – New;
•в открывшемся окне (закладка Projects) выбрать тип создаваемого проекта
;
•в поле Project Name ввести имя проекта ;
•в поле Location ввести имя папки, в которой будет размещен проект, и
полный путь к ней . Папку также можно выбрать, используя диалоговое окно Choose Directory, для чего надо щелкнуть мышью по
кнопке ;
•щелкнуть мышью по кнопке ОК;
•в открывшемся окне мастера приложений Win32 Console Application –
Step 1 of 1 выбрать (пустой проект) и щелкнуть по кнопке
;
• в открывшемся окне New Project Information (информация о новом проекте) щелкнуть мышью по кнопке ОК.
Для работы с консольным приложением необходимо создать новый или добавить существующий файл с кодом программы.
Для создания нового файла необходимо:
•выбрать File – New;
•в открывшемся окне (закладка Files) выбрать тип файла ;
•в поле File name ввести имя файла: (желательно, чтобы вводимое имя совпадало с именем проекта);
•щелкнуть мышью по кнопке ОК.
Для добавления в проект существующего файла с кодом программы необходимо:
• скопировать имеющийся файл (расширение cpp) в рабочую папку проекта;