- •Часть 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. Использование генератора случайных чисел
- •Рекомендуемая литература
- •Содержание
ЯЗЫК ПРОГРАММИРОВАНИЯ C++
Практикум для слушателей
по специальности «Информационная безопасность телекоммуникационных систем»
Часть 1
УК №
М о с к в а 2014
Практическое занятие 1. Работа в среде Microsoft Visual Studio
Microsoft Visual Studio (MVS) – это интегрированная среда разработки (Integrated Development Environment – IDE) корпорации Microsoft для создания, документирования, запуска и отладки программ, написанных на различных языках программирования. MVS – мощный инструмент, который позволяет разрабатывать сложные программные комплексы, имеющие множественные типы взаимодействия с пользователем в виде различных диалоговых окон, панелей инструментов, меню, кнопок, списков и т.п. Эти программы обеспечивают графический пользовательский интерфейс (GUI) и называются оконными приложениями (или Windows-приложениями).
Наряду с оконными приложениями MVS также позволяет создавать консольные приложения. Консольное приложение представляет собой символьно-ориентированную программу командной строки, которая взаимодействует с пользователями посредством клавиатуры и экрана.
Проекты и решения
Проект (project) – это контейнер, предназначенный для размещения и группировки файлов приложения. Это может быть консольное приложение, оконное приложение, либо приложение некоторого другого типа, обычно состоящее из одного или более исходных файлов, содержащих код, а также ряда вспомогательных файлов. Все файлы проекта сохраняются в папке проекта, а детальная информация о проекте – в XML-файле с расширением .vcproj, который находится в этой же папке. Папка проекта, в свою очередь, содержит другие папки, используемые для сохранения файлов, полученных в результате компиляции и компоновки проекта.
Решение (solution) – это виртуальный контейнер высшего уровня, представляющий механизм для объединения программ и других ресурсов (текстовых документов, диаграмм проектов и т.д.), которые предназначены для решения определенной проблемы, связанной с обработкой данных. Решению соответствует папка, в которой собрана информация об одном или более проектах в виде папок, вложенных в папку решения. Решение не может содержать внутри себя другие решения. При создании проекта новое решение создаётся автоматически (если только проект не добавляется к уже существующему решению). Когда создано решение с проектом, позднее к этому же решению можно добавлять другие проекты. Группирование проектов в одно решение позволяет работать с ними в одном экземпляре MVS.
Папка проекта получает имя, указанное при его создании, и будет содержать все файлы, составляющие проект. Если не задать иного, то папка решения получит то же имя, что и папка проекта, и будет содержать папку проекта, а также файлы, описывающие решение:
- файл с расширениями .sln, содержащий информацию о проектах, входящих в решение;
- файл с расширениями .suo, содержащий установки, выбранные пользователем для решения;
- файл с расширением .ncb, содержащий данные Intellisense для решения (Intellisense – это средство, обеспечивающее автоматическое завершение и вывод конструкций исходного кода в окне редактора).
Компиляцией программы называется преобразование компилятором (входящим в состав VisualStudio) исходного текста программы, написанного на языке программирования (например, на С или С++), в объектный файл.
Объектный файл (object file, объектный модуль) – файл с промежуточным представлением отдельного модуля программы, полученный в результате обработки исходного кода компилятором. Объектный файл содержит в себе особым образом подготовленный (бинарный) код, который обрабатывается компоновщиком.
Компоновщик – редактор связей (link editor, linker) – программа, которая производит компоновку проекта (принимает на вход один или несколько объектных модулей и собирает по ним готовый исполняемый файл).
Исполняемый (исполнимый) файл (executable file, исполнимый модуль) – это файл, который готов к непосредственному исполнению компьютером.
В процессе создания исполняемого файла программы на С/С++ можно выделить два этапа: компиляцию и компоновку (рис.1.1). Исходный текст программы содержится в файле *.cpp. Препроцессор, выполнив соответствующие директивы, сформирует полный текст программы – единицу трансляции (translation unit). Компилятор создаст объектный файл, выбрав (по умолчанию) для него имя *.obj. Компоновщик дополнит программу библиотечными функциями и построит исполняемый модуль с именем *.exe, который можно запускать на исполнение.
Рис. 1.1 Схема подготовки исполняемого модуля
Если в ходе компиляции или компоновки не обнаруживаются ошибки в исходном тексте программы, то процесс формирования исполняемого файла происходит автоматически.
Файлы, создаваемые в результате сборки консольного приложения в MVS:
.exe – исполняемый файл программы (создаётся только в случае успешной компиляции и компоновки);
.obj – объектные файлы, генерируемые компилятором и содержащие машинный код исходных файлов программы (используются компоновщиком вместе с библиотечными файлами для создания исполняемого файла .exe);
.ilk – файл, используемый компоновщиком при перестройке проекта (он позволяет компоновщику инкрементно связывать объектные файлы, сгенерированные компилятором из модифицированного исходного кода в существующий исполняемый файл .exe; благодаря этому нет необходимости заново выполнять всю компоновку при каждом изменении программы);
.pdb – файл с отладочной информацией, используемой при выполнении программы в режиме отладки (в этом режиме можно динамически инспектировать информацию, генерируемую исполняющейся программой);
.idb – файл, содержащий информацию, необходимую для перестройки всего решения.
Создание исходного файла с программой на языке C++, его компиляция и запуск из командной строки
Для открытия окна Командная строка VisualStudio нажмите кнопку Пуск, последовательно выберите пункты: Все программы, MicrosoftVisualStudio, VisualStudioTools (Средства VisualStudio), VisualStudioCommandPrompt (Командная строка VisualStudio).
Для запуска текстового редактора Блокнот в командной строке введите имя запускаемого файла (notepad) и нажмите клавишу <Enter> (ВВОД).
В открывшемся окне редактора Блокнот создайте текст программы:
// Листинг 1.1
#include <iostream>
using namespace std;
int main() {
cout << "My first program!\n";
return 0;
}
В меню Файл текстового редактора выберите пункт Сохранить как. Допустим, файл с программой должен иметь имя pr1.cpp и находиться в папке C:\Cprograms. В окне Сохранить как перейдите на диск C: и откройте папку Cprograms. В поле Имя_файла введите pr1.cpp, в поле Тип_файла установите Все файлы и нажмите кнопку Сохранить.
Для перехода в папку Cprograms в командной строке введите: cd \Cprograms и нажмите <Enter>. Для компиляции программы запустите компилятор cl, для этого в командной строке введите: cl pr1.cpp и нажмите <Enter>.
Если в программе содержатся ошибки, компилятор выдаст соответствующие сообщения. Например, если не поставить символы “;”в конце строк с операторами функции main(), будут выведены следующие сообщения об ошибках в строках с номерами 5 и 6:
Если программа откомпилирована без ошибок, продолжаем.
Для вывода на экран содержимого папки Cprograms в командной строке ведите команду dir и нажмите клавишу <Enter>.
В папке Cprograms находятся три файла: pr1.cpp – файл с текстом программы, pr1.obj – объектный файл, pr1.exe – исполняемый файл.
Чтобы запустить программу pr1.exe, введите её имя pr1 и нажмите клавишу <Enter>.
На экране отображается результат работы программы:
Примечание: Компилятор cl распознаёт не только расширение .cpp файлов с текстами программ на языке С++, а также расширения .cc и .cxx.
