Небольшая заметка о структуре программ на C++ и способах организации консольного вводавывода.
Структура программы
Программа на языке С++ состоит из функций, описаний и директив препроцессора. Одна из функций должна иметь имя main. Выполнение программы начинается с первого оператора этой функции. Простейшее определение функции имеет следующий формат:
1 2 3 |
тип возвращаемого значения имя ([ параметры ]){ операторы, составляющие тело функции } |
Как правило, функция используется для вычисления какого-либо значения, поэтому перед именем функции указывается его тип. Ниже приведены самые необходимые сведения о функциях:
- если функция не должна возвращать значение, указывается тип void:
- тело функции является блоком и, следовательно, заключается в фигурные скобки;
- функции не могут быть вложенными;
- каждый оператор заканчивается точкой с запятой (кроме составного оператора).
Пример структуры программы, содержащей функции main, fl и f2:
1 2 3 4 5 6 7 8 9 10 11 |
директивы препроцессора описания int main(){ операторы главной функции } int fl(){ операторы функции fl } int f2(){ операторы функции f2 } |
Программа может состоять из нескольких модулей (исходных файлов).
Несколько замечаний о вводе/выводе в C++
В языке С++ нет встроенных средств ввода/вывода — он осуществляется с помощью функций, типов и объектов, содержащихся в стандартных библиотеках. Используется два способа: функции, унаследованные из языка С, и объекты С++.
Основные функции ввода/вывода в стиле С:
int scanf (const char* format, … ) // ввод
int printf(const char* format, … ) // вывод
Они выполняют форматированный ввод и вывод произвольного количества величин в соответствии со строкой формата format. Строка формата содержит символы, которые при выводе копируются в поток (на экран) или запрашиваются из потока (с клавиатуры) при вводе, и спецификации преобразования, начинающиеся со знака %, которые при вводе и выводе заменяются конкретными величинами.
Пример программы, использующей функции ввода/вывода в стиле С:
#include
int main() {
int i;
printf("Введите целое числоп");
scanf("%d", &i);
printf("Вы ввели число %d, спасибо!", i);
return 0;
}
Первая строка этой программы — директива препроцессора, по которой в текст программы вставляется заголовочный файл, содержащий описание использованных в программе функций ввода/вывода (в данном случае угловые скобки являются элементом языка). Все директивы препроцессора начинаются со знака #.
Третья строка — описание переменной целого типа с именем i.
Функция printf в четвертой строке выводит приглашение «Введите целое число» и переходит на новую строку в соответствии с управляющей последовательностью n. Функция scanf заносит введенное с клавиатуры целое число в переменную i (знак & означает операцию получения адреса), а следующий оператор выводит на экран указанную в нем строку, заменив спецификацию преобразова-
ния на значение этого числа.
А вот как выглядит та же программа с использованием библиотеки классов С++:
#include
int main() {
int i;
cout << "Введите целое числоn"; cin >> i;
cout << "Вы ввели число " << i << ", спасибо!";
return 0;
}
Заголовочный файлсодержит описание набора классов для управления вводом/выводом. В нем определены стандартные объекты-потоки cin для ввода с клавиатуры и cout для вывода на экран, а также операции помещения в поток < < и чтения из потока >>.
Можно использовать оба способа организации вводавывода, но в одной программе смешивать их не рекомендуется.