- •Лабораторная работа №1 Тема: “Программы, использующие команды ветвления. Отладка программы“ Отладка программы
- •Часть 1 Ветвление в программе с помощью вложенных конструкций if-else Задание
- •Пример 1
- •Пример 2
- •Организация повторения программы
- •Выполнение программы в пошаговом режиме
- •Задание для самостоятельного выполнения
- •Часть 2 Ветвление в программе с помощью оператора switch
- •Задание для самостоятельного выполнения
- •Программа, которая проверяет, является ли число простым
- •Программа, которая проверяет, является ли число палиндромом
- •Часть 2 Программы, использующие рекуррентные соотношения
- •Программа, которая находит числа Фибоначчи в заданном диапазоне.
- •Программа, которая находит значение квадратного корня из заданного числа, используя рекуррентное соотношение:
- •Программа, которая вычисляет сумму ряда с заданной точностью.
- •Пример – программа, которая вычисляет сумму ряда для заданного количества слагаемых.
- •Задания для самостоятельного выполнения
- •Лабораторная работа № 3 Тема: “Программы, использующие вспомогательные функции”.
- •1. Программа, которая считывает координаты вершин треугольника на плоскости и находит все углы этого треугольника в градусах.
- •2. Программа, которая находит заданное количество чисел, содержащих цифру 3
- •3. Программа, которая находит на заданном отрезке натуральные числа, которые можно представить в виде суммы квадратов двух натуральных чисел.
- •Программа, которая находит первое автоморфное число справа от заданного.
- •6. Программа для вычисления биноминальных коэффициентов
- •Задания для самостоятельного выполнения
- •Лабораторная работа № 4 Тема: “Программы, использующие строки символов ”.
- •Программа, которая считывает строку символов и сортирует ее по возрастанию кодов символов
- •Программа перевода числа из десятичной системы счисления в двоичную
- •Первый вариант (с использованием указателя)
- •Второй вариант ( с использованием индексации)
- •Программа перевода числа из двоичной системы в десятичную
- •Программа перевода числа из 16-ой системы счисления в 2-ую.
- •Программа перевода числа из 2-ой системы счисления в 16-ую.
- •If (!strcmp(table[j].Bin,tmp)) // если strcmp() вернула 0, значит tmp совпала с I-ой строкой таблицы
- •Программа, которая выводит на экран треугольник Паскаля (треугольник биноминальных коэффициентов)
- •Задания для самостоятельного выполнения
- •Лабораторная работа № 5 Тема: “Программы, использующие файлы ”.
- •Программа, которая считывает имя файла, открывает его и подсчитывает количество скобок каждого вида, содержащихся в файле.
- •Программа, инвертирующая файл (переставляющая символы в обратном порядке)
- •Программа выводит на экран n-ую строку файла
- •Программа, которая переписывает текст из одного файла в другой, удаляя лишние пробелы между словами и делая ширину текста максимум 70 символов
- •5. Программа, которая считывает текст файла и создает новый файл, заменив во всем тексте заданное слово на новое (не изменяя деление на строки и количество пробелов между словами)
- •6. Программа, которая считывает данные для структуры Man из файла.
- •Программа создающая новый текстовый файл из двух данных, в котором 1-я строка –строка из первого файла, 2-я строка – строка из 2-го файла, 3-я строка – содержит общие символы первых 2-х строк.
- •Задания для самостоятельного выполнения
- •Лабораторная работа № 6 Тема: “Программы, использующие массивы ”.
- •Программа заполняет массив a(50) случайными целыми числами из диапазона [-20, 30] и упорядочивает его по возрастанию. Исходный и упорядоченный массивы выводятся на экран дисплея.
- •Программа, которая по заданным корням многочлена степени n восстанавливает все коэффициенты многочлена.
- •Программа считывает линейный массив из файла, выводит его на экран, и подсчитывает количество элементов массива, находит min и max элементы и их индексы.
- •Программа заполняет массив a[5][5] случайными целыми числами из диапазона [-3, 3] и находит произведение элементов, стоящих на побочной диагонали.
- •Программа считывает матрицу из файла, выводит ee на экран, сортирует элементы в каждом столбце и отсортированную матрицу записывает в файл.
- •Программа, сортирующая файл по длине строки методом быстрой сортировки.
- •Задания для самостоятельного выполнения
- •Лабораторная работа № 7 Тема: “Программы, использующие динамические структуры”.
- •Программа, которая создает очередь символов.
- •Программа, которая создает закольцованный список и затем последовательно удаляет из списка каждый m-й элемент до тех пор, пока не будут удалены все.
- •Программа, которая работает со стеком.
- •Программа, которая работает с деревом.
- •Задания для самостоятельного выполнения
Саровский государственный физико-технический институт
Факультет информационных технологий и электроники
Кафедра вычислительной и информационной техники
Касаткин С.С., Раткевич И.С., Травова Н.Н.
Лабораторный практикум
по курсу “Основы алгоритмизации” в среде Microsoft Visual Studio 2005
г. Саров
2008 г.
Саровский государственный физико-технический институт
Факультет информационных технологий и электроники
Кафедра вычислительной и информационной техники
Касаткин С.С.,Раткевич И.С., Травова Н.Н.
Лабораторный практикум
по курсу “Основы алгоритмизации” в среде Microsoft Visual Studio 2005
Утверждено:
на заседании кафедры ВИТ
Научно методическим Советом СарФТИ
г. Саров
2008 г.
УДК 681.3 Т 65 |
Одобрено Научно-методическим советом Саровского государственного физико-технического института |
Т 65 Касаткин Сергей Сергеевич, Раткевич Ирина Сергеевна, Травова Надежда Николаевна
Лабораторный практикум по курсу “Основы алгоритмизации” в среде Microsoft Visual Studio 2005
Данное пособие предназначено для студентов, изучающих курс “Основы алгоритмизации” и выполняющих практические задания, составляя программы, написанные на языке С++. Среда программирования, на которую ориентирован практикум – Microsoft Visual Studio 2005.
Практикум содержит множество примеров программ, решающих классические учебные задачи и иллюстрирующих основные приемы программирования на языке C++, и задания для самостоятельного выполнения. Программы сопровождаются необходимыми пояснениями, однако предполагается, что студенты параллельно слушают курс лекций или изучают самостоятельно по учебнику основы программирования на языке C++.
Рецензент: к.ф.-м.н. доцент Холушкин В.С.
Консультант Лебедев Петр Андреевич
Содержание
Типы данных С++ 7
Лабораторная работа №1 10
Тема: “Программы, использующие команды ветвления. Отладка программы“ 10
Отладка программы 10
Часть 1 11
Ветвление в программе с помощью вложенных конструкций if-else 11
Задание 11
Пример 1 14
Пример 2 15
Организация повторения программы 16
Выполнение программы в пошаговом режиме 17
Задание для самостоятельного выполнения 17
Часть 2 18
Ветвление в программе с помощью оператора switch 18
Задание для самостоятельного выполнения 19
Лабораторная работа №2 20
Тема: “Программы, использующие команды повторения (циклы). Рекуррентные соотношения“ 20
Часть 1 20
Программы, работающие с натуральными числами 20
1. Программа, которая находит наибольший общий делитель двух натуральных чисел m и n 20
2. Программа, которая проверяет, является ли число простым 21
3. Программа, которая проверяет, является ли число палиндромом 22
Часть 2 23
Программы, использующие рекуррентные соотношения 23
4. Программа, которая находит числа Фибоначчи в заданном диапазоне. 23
5. Программа, которая находит значение квадратного корня из заданного числа, используя рекуррентное соотношение: 24
6. Программа, которая вычисляет сумму ряда с заданной точностью. 25
7. Пример – программа, которая вычисляет сумму ряда для заданного количества слагаемых. 27
Задания для самостоятельного выполнения 27
Лабораторная работа № 3 30
Тема: “Программы, использующие вспомогательные функции”. 30
1. Программа, которая считывает координаты вершин треугольника на плоскости и находит все углы этого треугольника в градусах. 30
2. Программа, которая находит заданное количество чисел, содержащих цифру 3 31
3. Программа, которая находит на заданном отрезке натуральные числа, которые можно представить в виде суммы квадратов двух натуральных чисел. 32
4. Программа, которая находит первое автоморфное число справа от заданного. 34
5. Программа находит точки пересечения линий y= ax+b и y = c/x +d 35
6. Программа для вычисления биноминальных коэффициентов 37
Задания для самостоятельного выполнения 38
Лабораторная работа № 4 41
Тема: “Программы, использующие строки символов ”. 41
1. Программа, которая считывает строку символов и сортирует ее по возрастанию кодов символов 43
2. Программа перевода числа из десятичной системы счисления в двоичную 44
3. Программа перевода числа из двоичной системы в десятичную 46
4. Программа перевода числа из 16-ой системы счисления в 2-ую. 47
5. Программа перевода числа из 2-ой системы счисления в 16-ую. 48
6. Программа, которая выводит на экран треугольник Паскаля (треугольник биноминальных коэффициентов) 50
Задания для самостоятельного выполнения 52
Лабораторная работа № 5 55
Тема: “Программы, использующие файлы ”. 55
1. Программа, которая считывает имя файла, открывает его и подсчитывает количество скобок каждого вида, содержащихся в файле. 55
2. Программа, инвертирующая файл (переставляющая символы в обратном порядке) 56
3. Программа выводит на экран n-ую строку файла 58
4. Программа, которая переписывает текст из одного файла в другой, удаляя лишние пробелы между словами и делая ширину текста максимум 70 символов 59
5. Программа, которая считывает текст файла и создает новый файл, заменив во всем тексте заданное слово на новое (не изменяя деление на строки и количество пробелов между словами) 61
6. Программа, которая считывает данные для структуры Man из файла. 62
7. Программа создающая новый текстовый файл из двух данных, в котором 1-я строка –строка из первого файла, 2-я строка – строка из 2-го файла, 3-я строка – содержит общие символы первых 2-х строк. 65
8. Программа создаёт из двух файлов третий, в котором содержатся максимальные по длине слова из соответствующих строк исходных файлов, причём все слова длиннее 5-ти символов заключаются в квадратные скобки. 67
Задания для самостоятельного выполнения 70
Лабораторная работа № 6 73
Тема: “Программы, использующие массивы ”. 73
1. Программа заполняет массив A(50) случайными целыми числами из диапазона [-20, 30] и упорядочивает его по возрастанию. Исходный и упорядоченный массивы выводятся на экран дисплея. 73
2. Программа, которая по заданным корням многочлена степени n восстанавливает все коэффициенты многочлена. 74
3. Программа считывает линейный массив из файла, выводит его на экран, и подсчитывает количество элементов массива, находит min и max элементы и их индексы. 76
4. Программа заполняет массив A[5][5] случайными целыми числами из диапазона [-3, 3] и находит произведение элементов, стоящих на побочной диагонали. 78
5. Программа считывает матрицу из файла, выводит ee на экран, сортирует элементы в каждом столбце и отсортированную матрицу записывает в файл. 79
6. Программа, сортирующая файл по длине строки методом быстрой сортировки. 81
Задания для самостоятельного выполнения 84
Лабораторная работа № 7 87
Тема: “Программы, использующие динамические структуры”. 87
1. Программа, которая создает очередь символов. 87
2. Программа, которая создает закольцованный список и затем последовательно удаляет из списка каждый m-й элемент до тех пор, пока не будут удалены все. 88
3. Программа, которая работает со стеком. 90
4. Программа, которая работает с деревом. 91
Задания для самостоятельного выполнения 93
Типы данных С++
Концепция типа данных
Основная цель любой программы состоит в обработке данных. Данные различного типа хранятся и обрабатываются по-разному. В любом алгоритмическом языке каждая константа, переменная, результат вычисления выражения или функции должны иметь определенный тип.
Тип данных определяет:
внутреннее представление данных в памяти компьютера;
множество значений, которые могут принимать величины этого типа;
операции и функции, которые можно применять к величинам этого типа.
Исходя из этих характеристик, программист выбирает тип каждой величины, используемый в программе для представления реальных объектов. Обязательное описание типа позволяет компилятору проводить проверку допустимости различных конструкций программы. От типа величины зависят машинные команды, которые будут использоваться для обработки данных.
Все типы языка С++ можно разделить основные и составные. В языке С++ определенно шесть основных типов данных для представления целых (int, long), вещественных (float, double), символьных (char, wchar_t) и логических величин (bool). На основе этих типов программист может вводить описание составных типов. К ним относятся массивы, перечисления, функции, структуры, ссылки, указатели, объединения и классы. Существуют также четыре спецификатора типов: signed - знаковый, unsigned – без знаковый, short - короткий, long - длинный.
Ниже приведена таблица основных типов данных (Fundamental Types – по спецификации Microsoft).
Имя типа |
Размер в байтах |
Другое имя |
Диапазон значений |
int |
4 |
signed |
–2,147,483,648 ; 2,147,483,647 |
unsigned int |
4 |
unsigned |
0 ; 4,294,967,295 |
__int8 |
1 |
char |
–128 ; 127 |
unsigned __int8 |
1 |
unsigned char |
0 ; 255 |
__int16 |
2 |
short, short int, signed short int |
–32,768; 32,767 |
unsigned __int16 |
2 |
unsigned short, unsigned short int |
0 ; 65,535 |
__int32 |
4 |
signed, signed int, int |
–2,147,483,648 ; 2,147,483,647 |
unsigned __int32 |
4 |
unsigned, unsigned int |
0 ; 4,294,967,295 |
__int64 |
8 |
long long, signed long long |
–9,223,372,036,854,775,808 ; 9,223,372,036,854,775,807 |
unsigned __int64 |
8 |
unsigned long long |
0 ; 18,446,744,073,709,551,615 |
bool |
1 |
нет |
false или true |
char |
1 |
нет |
–128 ; 127 по умолчанию 0 to 255 при компиляции с ключём /J |
signed char |
1 |
нет |
–128 ; 127 |
unsigned char |
1 |
нет |
0 ; 255 |
short |
2 |
short int, signed short int |
–32,768 ; 32,767 |
unsigned short |
2 |
unsigned short int |
0 ; 65,535 |
long |
4 |
long int, signed long int |
–2,147,483,648 ; 2,147,483,647 |
unsigned long |
4 |
unsigned long int |
0 ; 4,294,967,295 |
long long |
8 |
нет (но эквивалентно __int64) |
–9,223,372,036,854,775,808 ; 9,223,372,036,854,775,807 |
unsigned long long |
8 |
нет (но эквивалентно unsigned __int64) |
0 ; 18,446,744,073,709,551,615 |
float |
4 |
нет |
3.4E +/- 38 (7 знаков) |
double |
8 |
нет |
1.7E +/- 308 (15 знаков) |
long double |
также как и double |
нет |
также как и double |
wchar_t |
2 |
__wchar_t |
0 ; 65,535 |
Лабораторная работа №1 Тема: “Программы, использующие команды ветвления. Отладка программы“ Отладка программы
Отладку программы выполняют для поиска логических ошибок в программе.
Перед отладкой необходимо откомпилировать программу (F7).
Отладка осуществляется с помощью пошагового выполнения программы и просмотра текущих значений переменных. Для просмотра текущего значения переменной нужно поставить курсор на строку, следующую за строкой с интересующей нас переменной, и поставить точку останова программы <F9>. Далее нажать кнопку <F5> для выполнения программы до данной строки. Значение переменной будет отображено на вкладке Locals в нижней части экрана. Можно также просто перетащить переменную на вкладку Watch.
Вкладки Locals и Watch
Команды отладчика:
<Ctrl> + <F10> - выполняет программу до строки, в которой находится курсор.
<F10> - выполняет один шаг программы (одну строку); подпрограммы выполняются как один шаг.
<F11> - если курсор стоит на строке, в которой выполняется вызов подпрограммы, то выполняется заход в подпрограмму.
<F5> - выполняет программу до той строки, где стоит точка останова программы, в случае если таких точек нет, программа выполняется полностью.
<F9> - поставить/снять точку останова программы
<Shift> + <F5> - останавливает отладку программы.
Эти клавиши необходимо нажимать, когда активно окно с текстом программы. Сделать нужное окно активным можно щелчком мыши в этом окне, или с помощью панели задач, или с помощью комбинации клавиш <Alt> + <Tab>.
Часть 1 Ветвление в программе с помощью вложенных конструкций if-else Задание
Запустите среду программирования Microsoft Visual Studio 2005.
Вы увидите стартовую страницу данной среды разработки. Далее создайте проект консольного приложения. Для этого выполните команду меню File|New|Project (или нажмите <Ctrl>+<Shift>+<N>). Затем выберите тип проекта (Project types:) Visual C++, если дерево доступных проектов еще не открылось нажмите левой клавишей мыши по значку «+» с лева от названия типа проекта. Теперь нажмите Win32, выберите из предоставленных шаблонов (Templates:) Win32 Console Application введите в поле Name: свою фамилию латинскими буквами. В поле Location: C:\Work (см. рисунок).
Создание нового консольного приложения
Перед вами появится окно мастера создания проектов (см. рисунок на следующей странице).
Нажмите кнопку Next>.
В следующем окне в поле Additional Options: установите флажок Empty project (см. рисунок).
Нажмите кнопку Finish.
В следующем окне щелкните правой клавишей мыши по папке Source Files на вкладке Solution Explorer, выберите пункт выпадающего меню Add|New Item…
Перед вами появится окно мастера Add New Item. В появившемся окне в разделе Categories: (находится слева) выберите Code (см. рисунок). Затем в разделе Templates: выберите C++ File (.cpp) и в поле Name введите имя файла: свою фамилию латинскими буквами.
Затем нажмите кнопку Add.
Набирая далее текст программы, периодически нажимайте <Ctrl>+<S>, при этом выполняется команда Save и сохраняется текущее состояние программы. Делать это необходимо во избежание потери результатов своей работы.