- •Часть 1 11
- •Часть 2 18
- •Часть 1 21
- •Часть 2 24
- •Лабораторная работа №1 Тема: “Программы, использующие команды ветвления. Отладка программы“ Отладка программы
- •Часть 1 Ветвление в программе с помощью вложенных конструкцийif-else Задание
- •Пример 1
- •Пример 2
- •Организация повторения программы
- •Выполнение программы в пошаговом режиме
- •Задание для самостоятельного выполнения
- •Часть 2 Ветвление в программе с помощью оператораswitch
- •Задание для самостоятельного выполнения
- •Лабораторная работа №2
- •Программа, которая проверяет, является ли число простым
- •Программа, которая проверяет, является ли число палиндромом
- •Часть 2 Программы, использующие рекуррентные соотношения
- •Программа, которая находит числа Фибоначчи в заданном диапазоне.
- •Программа, которая находит значение квадратного корня из заданного числа, используя рекуррентное соотношение:
- •Программа, которая вычисляет сумму рядас заданной точностью.
- •Пример – программа, которая вычисляет сумму рядадля заданного количества слагаемых.
- •Задания для самостоятельного выполнения
- •Лабораторная работа № 3 Тема: “Программы, использующие вспомогательные функции”.
- •1. Программа, которая считывает координаты вершин треугольника на плоскости и находит все углы этого треугольника в градусах.
- •2. Программа, которая находит заданное количество чисел, содержащих цифру 3
- •3. Программа, которая находит на заданном отрезке натуральные числа, которые можно представить в виде суммы квадратов двух натуральных чисел.
- •Программа, которая находит первое автоморфное число справа от заданного.
- •6. Программа для вычисления биноминальных коэффициентов
- •Задания для самостоятельного выполнения
- •Лабораторная работа № 4 Тема: “Программы, использующие строки символов ”.
- •Программа, которая считывает строку символов и сортирует ее по возрастанию кодов символов
- •Программа перевода числа из десятичной системы счисления в двоичную
- •Первый вариант (с использованием указателя)
- •Программа перевода числа из двоичной системы в десятичную
- •Программа перевода числа из 16-ой системы счисления в 2-ую.
- •Программа перевода числа из 2-ой системы счисления в 16-ую.
- •Программа, которая выводит на экран треугольник Паскаля (треугольник биноминальных коэффициентов)
- •Задания для самостоятельного выполнения
- •Лабораторная работа № 5 Тема: “Программы, использующие файлы ”.
- •Программа, которая считывает имя файла, открывает его и подсчитывает количество скобок каждого вида, содержащихся в файле.
- •Программа, инвертирующая файл (переставляющаясимволыв обратном порядке)
- •Программа выводит на экран n-ую строку файла
- •Программа, которая переписывает текст из одного файла в другой, удаляя лишние пробелы между словами и делая ширину текста максимум 70 символов
- •5. Программа, которая считывает текст файла и создает новый файл, заменив во всем тексте заданное слово на новое (не изменяя деление на строки и количество пробелов между словами)
- •6. Программа, которая считывает данные для структуры Man из файла.
- •Задания для самостоятельного выполнения
- •Лабораторная работа № 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
Организация повторения программы 17
Выполнение программы в пошаговом режиме 17
Задание для самостоятельного выполнения 17
Часть 2 18
Ветвление в программе с помощью оператора switch 18
Задание для самостоятельного выполнения 19
Лабораторная работа №2 21
Тема: “Программы, использующие команды повторения (циклы). Рекуррентные соотношения“ 21
Часть 1 21
Программы, работающие с натуральными числами 21
Часть 2 24
Программы, использующие рекуррентные соотношения 24
Задания для самостоятельного выполнения 28
Лабораторная работа № 3 31
Тема: “Программы, использующие вспомогательные функции”. 31
Задания для самостоятельного выполнения 39
Лабораторная работа № 4 42
Тема: “Программы, использующие строки символов ”. 42
Задания для самостоятельного выполнения 53
Лабораторная работа № 5 56
Тема: “Программы, использующие файлы ”. 56
Задания для самостоятельного выполнения 71
Лабораторная работа № 6 74
Тема: “Программы, использующие массивы ”. 74
Задания для самостоятельного выполнения 85
Лабораторная работа № 7 88
Тема: “Программы, использующие динамические структуры”. 88
Задания для самостоятельного выполнения 94
Типы данных С++
Концепция типа данных
Основная цель любой программы состоит в обработке данных. Данные различного типа хранятся и обрабатываются по-разному. В любом алгоритмическом языке каждая константа, переменная, результат вычисления выражения или функции должны иметь определенный тип.
Тип данных определяет:
внутреннее представление данных в памяти компьютера;
множество значений, которые могут принимать величины этого типа;
операции и функции, которые можно применять к величинам этого типа.
Исходя из этих характеристик, программист выбирает тип каждой величины, используемый в программе для представления реальных объектов. Обязательное описание типа позволяет компилятору проводить проверку допустимости различных конструкций программы. От типа величины зависят машинные команды, которые будут использоваться для обработки данных.
Все типы языка С++ можно разделить основные и составные. В языке С++ определенно шесть основных типов данных для представления целых (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 to255 при компиляции с ключём /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 |