- •Часть 1
- •Практическое занятие 1. Работа в среде Microsoft Visual Studio
- •Проекты и решения
- •Создание консольного приложения
- •Отладка в Visual Studio
- •Отладка программ
- •Практическое занятие 3. Операции и выражения. Линейные программы Операции и выражения
- •Логические операции
- •Поразрядные (побитовые) операции
- •Практическое занятие 4. Разветвляющиеся алгоритмы
- •If (выражение) оператор_1 else оператор_2
- •Операции сравнения (отношения)
- •Тернарная (условная) операция
- •Выражение_1 ? выражение_2 : выражение_3
- •Практическое занятие 5. Организация циклов. Операторы цикла
- •Оператор while
- •Оператор do…while
- •Оператор for
- •Операторы передачи управления Оператор break
- •Оператор continue
- •Указатели
- •Инициализация указателей
- •Операции над указателями
- •Одномерные массивы
- •Практическое занятие 7. Двумерные массивы. Организация работы с динамической памятью Двумерные массивы
- •Динамические массивы
- •Практическое занятие 8. Структуры. Форматный ввод/вывод данных. Структуры в языке с
- •Форматный ввод/вывод данных в стиле языка с
- •Int printf(строка_форматир-я [, список_переменных]);
- •Int scanf(const char * строка_форматирования,
- •Практическое занятие 9. Функция. Способы передачи параметров в функцию.
- •Выход из функции
- •Прототип (описание, объявление) функции
- •Рекурсия
- •Передача параметров в функцию
- •Передача массивов в качестве параметров функции
- •Практическое занятие 10. Перегрузка функций. Шаблоны функций Перегрузка функций
- •Перегрузка и область видимости
- •Шаблоны функций
- •Прототип шаблона
- •Параметры шаблона, не являющиеся типами
- •Явная специализация шаблонной функции
- •Директива #include
- •Директива #define
- •Символических констант
- •Макроимён, управляющих условной компиляцией:
- •Препроцессорные операторы # и ##
- •Директива #undef
- •Директивы условной компиляции #if, #ifdef, #ifndef
- •Вспомогательные директивы
- •Практическое занятие 12. Поразрядные операции Операции с разрядами Машинное слово
- •Представление машинных слов в программе
- •Технология работы с машинными словами
- •Поразрядная операция и
- •Поразрядная операция или
- •Операция поразрядной инверсии
- •Поразрядная операция исключающее или
- •Операция сдвиг влево
- •Операция сдвиг вправо
- •Формы представления числовых данных Целое без знака
- •Представление отрицательных чисел Дополнительный код
- •Преобразование типов операндов в выражениях
- •Стандартные программные решения Преобразование типов операндов в выражениях
- •Подсчет количества единичных битов
- •Упаковка данных полями переменной длины
- •Машинная арифметика – целые произвольной точности
- •01000 Хххххххх 00011 ххх 10000 хххххххххххххххх 00000.
- •Практическое занятие 13. Пространства имен
- •Пространство имен std
- •Приложение 1. Простые алгоритмы сортировки одномерных массивов
- •Сортировка простыми обменами (пузырьковая)
- •Сортировка простыми вставками (прямого включения)
- •Приложение 2. Создание файла с результатами препроцессорной обработки в среде Visual Studio
- •Создание файла с результатами препроцессорной обработки из командной строки
- •Приложение 3. Использование генератора случайных чисел
- •Рекомендуемая литература
- •Содержание
Пространство имен std
Стандартная библиотека языка С++ пребывает в собственном пространстве имен std. По этой причине большинство программ содержат директиву
using namespace std;
Этот оператор открывает прямой доступ к функциям и классам, определенным внутри библиотеки, поэтому квалификатор std:: не нужен. Можно явно указывать квалификатор std:: .
Рассмотрим пример программы, в которой стандартная библиотека не включается в глобальное пространство имен.
// Листинг 13.4
#include<iostream>
// Применение явного квалификатора std::
int main()
{
setlocale(LC_CTYPE,"Russian");
int n;
std::cout << "Введите число: ";
std::cin>>n;
std::cout<<"Вы ввели "<<n<<std::endl;
return 0;
}
Здесь потоки cout, cin и манипулятор endl сопровождаются указанием квалификатора std::.
Задание. Написать на языке С++ программу, которая вычисляет и выводит на экран в виде таблиц значения функций F1(x) и F2(x) на интервале -2π≤x≤e с шагом dx, где π=3.14159265358979323846, e=2.71828182845904523536. Функции F1(x) и F2(x) выбираются согласно варианту. Значение dx вводится с клавиатуры. Включить функции F1 и F2, константы π и e в пространство имен Library. Программа должна состоять из трех модулей, содержащих интерфейсную часть, реализацию и клиентский код.
Вариант 1
Вариант 2
Вариант 3
Вариант 4
Вариант 5
Вариант 6
Вариант 7
Вариант 8
Вариант 9
Вариант 10
Вариант 11
Вариант 12
Вариант 13
Вариант 14
Вариант 15
Приложение 1. Простые алгоритмы сортировки одномерных массивов
Сортировка посредством прямого выбора
Пусть в массиве A содержится n элементов. Требуется отсортировать массив по возрастанию. Алгоритм сортировки посредством прямого выбора заключается в последовательных проходах по неотсортированным элементам массива и выбору при каждом проходе очередного минимального элемента из оставшихся. По массиву A необходимо выполнить n–1 проход. В 0-вом проходе выбирается наименьший элемент из A[0]…A[n–1], который меняется местами с A[0]. После этого неупорядоченными остаются элементы A[1]…A[n–1]. В следующем проходе просматривается эта неупорядоченная часть элементов массива, выбирается наименьший из них элемент и меняется местами с A[1]. В следующем проходе производится поиск наименьшего элемента в подмассиве A[2]…A[n–1]. Найденное значение меняется местами с A[2]. В результате выполнения n–1 прохода неупорядоченный фрагмент массива сокращается до одного элемента, который и является наибольшим.
В i-том проходе сканируется подмассив A[i]…A[n–1] и переменной minIndex присваивается индекс наименьшего элемента в этом подмассиве. Затем элементы A[i] и A[minIndex] меняются местами.
Рассмотрим сортировку по возрастанию посредством выбора на примере массива, содержащего пять целых чисел: 9, 3, 5, 10, 7. Упорядочим массив по возрастанию. Число элементов в массиве n = 5, проходов требуется n–1 = 4.
Исходный массив А:
0 |
1 |
2 |
3 |
4 |
9 |
3 |
5 |
10 |
7 |
0-проход: сканируется фрагмент A[0]…A[4],
minIndex = 1, A[0]↔A[1]
0 |
1 |
2 |
3 |
4 |
3 |
9 |
5 |
10 |
7 |
1-проход: сканируется фрагмент A[1]…A[4],
minIndex = 2, A[1] ↔A[2]
0 |
1 |
2 |
3 |
4 |
3 |
5 |
9 |
10 |
7 |
2-проход: сканируется фрагмент A[2]…A[4],
minIndex = 4, A[2] ↔A[4]
0 |
1 |
2 |
3 |
4 |
3 |
5 |
7 |
10 |
9 |
3-проход: сканируется фрагмент A[3]…A[4],
minIndex = 4, A[3] ↔A[4]
0 |
1 |
2 |
3 |
4 |
3 |
5 |
7 |
9 |
10 |
Массив A отсортирован по возрастанию.
