Компиляция и запуск проекта
Для компиляции проекта надо выбрать в главном меню BuildBuildили нажать клавишу F7.
Visual C++ 6.0 откомпилирует исходные файлы и создаст соответствующие файлы с расширением .obj. Затем эти файлы соединяются в исполняемый файл. Весь процесс компиляции и создания исполняемого файла отображается в окне Output, вкладка Build. После компиляции файла его можно запустить.
Для запуска исполняемого файла надо выбрать в главном меню BuildExecute .exe или нажмите клавиши Ctrl+F5 . Если файл был создан, то он запустится. Для повторного запуска файла не нужно его снова компилировать. Но если в программу были внесены изменения, то перед запуском необходимо выполнить компиляцию. Выполняется именно файл с расширением .exe, а не текущий проект, т.е. в процессе запуска компиляции не происходит.
Отладка программы
Для отладки программы используется команда главного меню BuildStart Debug Step Into – отладка с заходом в функции, которая начинается с первой строки функции main или BuildStart Debug Run to Cursor – выполнение программы до курсора, т. е. отладка начинается с той строки, в которой установлен курсор. После выполнения этой команды выполнение программы происходит в режиме отладчика. Переход к следующей строке программы можно выполнять с помощью команды Step Into (F11) (с заходом во все вызываемые функции) или с помощью команды Step over (F10) (без захода в вызываемые функции). Выход из функции нижнего уровня выполняется командой Step Out (Shift+F11). Текущие значения переменных можно просматривать:
1) в специальных окнах Watch(отображает значения всех используемых переменных)иValue (отображает значения заданных пользователем переменных);
2) при наведении курсора мышки на переменную отображается текущее значение этой переменной.
Создание рабочего пространства для нескольких проектов
Несколько проектов можно объединить в одно рабочее пространство с помощью команды Project/Insert Project into Workspace. Активный проект, т. е. тот, который будет выполняться, устанавливается с помощью команды Project/Set Active Project.Активный проект надо отметить галочкой.
Лабораторная работа №1
Выполнение программы простой структуры. Вычисление выражений с использованием стандартных функций
1. Цель задания:
1) Выполнение простой программы в системе программирования VC++6.0
2) Приобретение навыков в записи выражений на языке C++ и использование стандартных функций.
Теоретические сведения
2.1.Структура программы на С++
Программа на языке Си имеет следующую структуру:
#директивы препроцессора
. . . . . . . . .
#директивы препроцессора
функция а ( )
операторы
функция в ( )
операторы
void main ( ) //функция, с которой начинается выполнение программы
операторы
описания
присваивания
функция
пустой оператор
составной
выбора
циклов
перехода
Директивы препроцессора управляют преобразованием текста программы до ее компиляции. Исходная программа, подготовленная на С++ в виде текстового файла, проходит 3 этапа обработки:
1) препроцессорное преобразование текста;
2) компиляция;
3) компоновка (редактирование связей или сборка).

Рис. 2. Обработка С++ программы
После этих трех этапов формируется исполняемый код программы. Задача препроцессора – преобразование текста программы до ее компиляции. Правила препроцессорной обработки определяет программист с помощью директив препроцессора. Директива начинается с #.
#define — указывает правила замены в тексте.
#include – директива предназначена для включения в текст программы текста из каталога заголовочных файлов, поставляемых вместе со стандартными библиотеками. Каждая библиотечная функция C имеет соответствующее описание в одном из заголовочных файлов. Список заголовочных файлов определен стандартом языка. Употребление директивы include не подключает соответствующую стандартную библиотеку, а только позволяют вставить в текст программы описания из указанного заголовочного файла. Если используется заголовочный файл из стандартной библиотеки, то его имя заключают в угловые скобки. Если используется заголовочный файл, который находится в текущем каталоге проекта (он может быть создан разработчиком программы), то его имя заключается в кавычки. Подключение кодов библиотеки осуществляется на этапе компоновки, т. е. после компиляции. Хотя в заголовочных файлах содержатся все описания стандартных функций, в код программы включаются только те функции, которые используются в программе.
После выполнения препроцессорной обработки в тексте программы не остается ни одной препроцессорной директивы.
Программа представляет собой набор описаний и определений, и состоит из набора функций. Среди этих функций всегда должна быть функция с именем main. Без нее программа не может быть выполнена. Перед именем функции помещаются сведения о типе возвращаемого функцией значения (тип результата). Если функция ничего не возвращает, то указывается тип void: void main(). Каждая функция, в том числе и main, должна иметь список параметров. Список может быть пустым, тогда он указывается как(void) (слово void может быть опущено: ()).
За заголовком функции размещается тело функции. Тело функции – это последовательность определений, описаний и исполняемых операторов, заключенных в фигурные скобки. Каждое определение, описание или оператор заканчивается точкой с запятой.
Определения – вводят объекты (объект – это именованная область памяти, частный случай объекта – переменная), необходимые для представления в программе обрабатываемых данных. Примерами являются
const int y = 10 ; //именованная константа
float x ; //переменная
Описания – уведомляют компилятор о свойствах и именах объектов и функций, описанных в других частях программы.
Операторы – определяют действия программы на каждом шаге ее исполнения.
2.2. Элементы языка C/C++
1) Алфавит языка который включает
- прописные и строчные латинские буквы и знак подчеркивания;
- арабские цифры от 0 до 9;
- специальные знаки “{},| []()+-/%*.\’:;?=!#^
- пробельные символы (пробел, символ табуляции, символы перехода на новую строку).
2) Из символов формируются лексемы языка:
- Идентификаторы – имена объектов C/C++-программ. В идентификаторе могут быть использованы латинские буквы, цифры и знак подчеркивания. Прописные и строчные буквы различаются, например, PROG1, prog1 и Prog1 – три различных идентификатора. Первым символом должна быть буква или знак подчеркивания (но не цифра). Пробелы в идентификаторах не допускаются.
- Ключевые (зарезервированные) слова – это слова, которые имеют специальное значение для компилятора. Их нельзя использовать в качестве идентификаторов.
- Знаки операций – это один или несколько символов, определяющих действие над операндами. Операции делятся на унарные, бинарные и тернарную по количеству участвующих в этой операции операндов.
- Константы – это неизменяемые величины. Существуют целые, вещественные, символьные и строковые константы. Компилятор выделяет константу в качестве лексемы (элементарной конструкции) и относит ее к одному из типов по ее внешнему виду.
- Разделители – скобки, точка, запятая пробельные символы.
2.3. Константы в C/C++
Константа – это лексема, представляющая изображение фиксированного числового, строкового или символьного значения. Константы делятся на 5 групп:
- целые;
- вещественные (с плавающей точкой);
- перечислимые;
- символьные;
- строковые.
Компилятор выделяет лексему и относит ее к той или другой группе, а затем внутри группы к определенному типу по ее форме записи в тексте программы и по числовому значению.
Целые константы могут быть десятичными, восьмеричными и шестнадцатеричными.
| Название | Определение | Примеры |
| Десятичная константа | Последовательность десятичных цифр, начинающаяся не с 0, если это число не 0 | 8, 0, 192345 |
| Восьмеричная константа | Последовательность восьмеричных цифр, которым предшествует 0. | 026, 034, 017 |
| Шестнадцатеричная константа | Последовательность шестнадцатеричных цифр, которым предшествуют символы 0х или 0Х | 0хА, 0Х00F, 0х123 |
Вещественные константы могут иметь две формы представления: с фиксированной точкой и с плавающей точкой.
| Название | Вид | Примеры |
| Константы с фиксированной точкой | [цифры].[цифры] | 5.7, .0001, 41. |
| Константа с плавающей точкой | [цифры][.][цифры]E|e[+|-] [цифры] | 0.5е5, .11е-5, 5Е3 |
Перечислимые константы вводятся с помощью ключевого слова enum. Это обычные целые константы, которым приписаны уникальные и удобные для использования обозначения.
enum {one=1, two=2, three=3, four=4};
enum {zero,one,two,three};
enum {ten=10, three=3, four, five, six};
enum {Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday};
Символьные константы – это один или два символа, заключенные в апострофы. Символьные константы, состоящие из одного символа, имеют тип char и занимают в памяти один байт, символьные константы, состоящие из двух символов, имеют тип int и занимают два байта. Последовательности, начинающиеся со знака \, называются управляющими, они используются:
- для представления символов, не имеющих графического отображения, например:
\a – звуковой сигнал,
\b – возврат на один шаг,
\n – перевод строки,
\t – горизонтальная табуляция;
- для представления символов: \ , ’ , ? , ” ( \\, \’ ,\? ,\” );
- для представления символов с помощью шестнадцатеричных или восьмеричных кодов (\073, \0хF5);
Строковая константа – это последовательность символов, заключенная в кавычки. Внутри строк также могут использоваться управляющие символы. Например:
”\nНовая строка”,
”\n\”Алгоритмические языки программирования\””.
2.3. Типы данных в C++
Типы C++ можно разделить на простые и составные. К простым типам относят типы, которые характеризуются одним значением. В языке C++ определено 6 простых типов данных:
int (целый)
| целочисленные |
char (символьный)
wchar_t (расширенный символьный) (C++)
bool (логический) (C++)
| с плавающей точкой |
float (вещественный)
double (вещественный с двойной точностью)
Существует 4 спецификатора типа, уточняющих внутреннее представление и диапазон стандартных типов
short (короткий)
long (длинный)
signed (знаковый)
unsigned (беззнаковый)
| Тип данных | Определение | Размер | Диапазон |
| (signed) char | Значениями являются элементы конечного упорядоченного множества символов. Каждому символу ставится в соответствие число, которое называется кодом символа. | 1 байт | -128..127 |
| unsigned char | 0..255 | ||
| wchar_t | Значениями являются элементы конечного упорядоченного множества символов в кодировке Unicode | 2 байта | 0..65535 |
| (signed) int | Значениями являются целые числа. | 4 байта (для 32-разрядного МП) | –2147483648 … +2147483647. |
| (signed) long (int) | |||
| unsigned int | 0…+4294967 295. | ||
| unsigned long (int) | |||
| (signed) short int | 2 байта (для 32-разрядного МП) | –32768 … +32767 | |
| unsigned short int | 0 … 65536; | ||
| bool | Данные этого типа могут принимать значения true и false. | 1 байт | false, true |
| float | Значениями являются вещественные числа | 4 байта | 3.4Е-38..3.4Е+38 |
| double | 8 байт | 1.7Е-308 ..1.7Е+308 | |
| long double | 10 байт | 3.4Е-4932..1Е+4932 |
Переменные
Переменная в C++ – именованная область памяти, в которой хранятся данные определенного типа. У переменной есть имя и значение. Имя служит для обращения к области памяти, в которой хранится значение. Перед использованием любая переменная должна быть описана.
int a; float x;
Операции
В соответствии с количеством операндов, которые используются в операциях они делятся на унарные (один операнд), бинарные (два операнда) и тернарную (три операнда).
| Операция | Описание |
| Унарные операции | |
| ++ | Увеличение на единицу:префиксная операция — увеличивает операнд до его использования,постфиксная операция увеличивает операнд после его использования. |
| — | Уменьшение на единицу:префиксная операция — уменьшает операнд до его использования,постфиксная операция уменьшает операнд после его использования. |
| sizeof | вычисление размера (в байтах) для объекта того типа, который имеет операнд |
| — | Унарный минус |
| + | Унарный плюс |
| ! | Логическое отрицание (НЕ).В качестве логических значений используется 0 (false) — ложь и не 0 (true) — истина, отрицанием 0 будет 1, отрицанием любого ненулевого числа будет 0. |
| Получение адреса операнда | |
| * | Получение значения, находящегося по указанному адресу (разыменование) |
| new | Выделение памяти |
| delete | Освобождение памяти |
| (type) | Преобразование типа |
| Бинарные операции | |
| Мультипликативные | |
| * | умножение операндов арифметического типа |
| / | деление операндов арифметического типа (если операнды целочисленные, то выполняется целочисленное деление) |
| % | получение остатка от деления целочисленных операндов |
| Аддитивные | |
| + | бинарный плюс (сложение арифметических операндов) |
| — | бинарный минус (вычитание арифметических операндов) |
| Операции сравнения | |
| меньше, чем | |
| меньше или равно | |
| больше | |
| = | больше или равно |
| = | равно |
| != | не равно |
| Логические о | |
| конъюнкция (И) целочисленных операндов или отношений, целочисленный результат ложь(0) или истина( не 0) | |
| || | дизъюнкция (ИЛИ) целочисленных операндов или отношений, целочисленный результат ложь(0) или истина(не 0) |
| Тернарная | |
| ?: | Условная операцияв ней используется три операнда.Выражение1 ? Выражение2 : Выражение3;Первым вычисляется значение выражения1. Если оно истинно, то вычисляется значение выражения2, которое становится результатом. Если при вычислении выражения1 получится 0, то в качестве результата берется значение выражения3.Например:x |
| Присваивание | |
| = | присваивание |
| *= | умножение с присваиванием (мультипликативное присваивание) |
| /= | деление с присваиванием |
| %= | деление с остатком с присваиванием |
| += | сложение с присваиванием |
| -= | вычитание с присваиванием |
Приоритеты операций.
| Ранг | Операции |
| ( ) [ ] — . | |
| ! ~ — ++ —* (тип) sizeof тип( ) | |
| * / % (мультипликативные бинарные) | |
| + — (аддитивные бинарные) | |
| = (отношения) | |
| == != (отношения) | |
| (конъюнкция «И») | |
| || (дизъюнкция «ИЛИ») | |
| ?: (условная операция) | |
| = *= /= %= -= = ^= |= = (операция присваивания) | |
