Структура программы C++

Программа на языке С/С++ состоит из:
  1. Директив процессора
  2. Описаний
  3. Функций
Главная функция носит имя main и должна быть обязательно.
Общую структуру программы на языке С/С++ можно представить следующим образом:
директивы препроцессора //1
описание глобальных переменных //2
тип_результата main (параметры) //3
{
тело главной функции
}
тип_результата F1 (параметры 1) {
тело функции F1;
}
тип_результата F2 (параметры 2) {
тело функции F2;
}
тип_результата FN (параметры N) {
тело функции FN;
}
view raw Struct.cpp hosted with ❤ by GitHub
Директивы препроцессора – определяют действия по преобразованию программы перед компиляцией, а также включают инструкции, которым компилятор следует во время компиляции;
Объявления – описания переменных, функций, структур, классов и типов данных;
Описание функций, выполняемых в проекте. В языке С++ существует только один вид подпрограмм – подпрограмма-функция.
Функция состоит из заголовка и тела функции.
Заголовок состоит из:
  1. Типа результата, возвращаемого функцией;
  2. Имени функции;
  3. Списка параметров, необходимых для выполнения функции.
Тело функции заключается в операторные скобки {}, и содержит описание локальных данных и операторы функции.
тип_результата имя_функции (параметры)
{
описание данных;
оператор1;
оператор2;
оператор3;
операторN;
}
view raw Func.cpp hosted with ❤ by GitHub
где, тип_результата – это тип того значения, которое функция должна вычислить (если функция не должна возвращать значение, указывается тип void);
имя_функции – имя, с которым можно обращаться к этой функции;
параметры – список её аргументов (может отсутствовать).
Точка с запятой (;) является разделителем между описаниями и операторами.

Директивы процессора

Понятие препроцессора является одним из ключевых в языке С++.
Препроцессор – это программа, действующая как фильтр на этапе компиляции.
Исходная программа => Препроцессор => Расширенная исходная программа => Компилятор
Перед тем, как попасть на вход компилятора, исходная программа проходит через препроцессор.

Основному тексту программы предшествуют директивы препроцессора (preprocessor directive), которые начинаются с символа решётки #, не являются выражением языка С++ (и потому не заканчивается точкой с запятой).

Команды (директивы) препроцессора представляют собой инструкции, записанные в исходном тексте программы, используемые для того, чтобы облегчить модификацию программ и сделать их независимыми от особенностей различных реализаций компилятора.
Например:
#include <имя_файла>
view raw Include.cpp hosted with ❤ by GitHub
Директивы могут быть записаны в любом месте исходного файла, но их действие распространяется только от точки программы, в которой они записаны, до конца исходного файла.
Файлы, которые появляются в директивах, обычно заканчиваются на .h, что означает файл заголовков (header file). Файлы заголовков содержат объявления констант, переменных и функций, необходимы для работы программы.
#include <stdio.h> /*функции стандартного ввода-вывода*/
#include <conio.h> /*функции консольного ввода-вывода*/
#include <math.h> /*стандартные математические функции*/
view raw Include.cpp hosted with ❤ by GitHub

Директива #include

Директива препроцессора #include позволяет включать в текст программы, написанной программистом, тексты других программ.
Эта директив имеет две формы записи:
#include <имя_включаемого_файла>
#include “имя_включаемого_файла”
view raw Include.cpp hosted with ❤ by GitHub
В случае, когда имя_включаемого_файла (файла включений) записывается в угловых кавычках, то поиск этого файла осуществляется в стандартных системных каталогах (каталоге подключаемых файлов (include directory), то есть в месте, где компьютерная система хранит все доступные для использования файлы заголовков).
Например:
#include <stdio.h> //фрагмент на С
или
#include <iostream> //фрагмент на С++
view raw Include.cpp hosted with ❤ by GitHub
Если же имя_включаемого_файла указано в кавычках, то сначала поиск осуществляется в текущем каталоге и лишь затем в системных.
#include “file2.h” //Файл, содержащий объявления переменных и типов,
//созданных программистом и используемых в программе
#include “file2.cpp” //Файл, содержащий, например, объявления или описания функций, //используемых в текущем модуле(файле)
view raw Include.cpp hosted with ❤ by GitHub
Имя_включаемого_файла может также содержать полный путь для его поиска, что наблюдается редко, так как это предполагает жёсткую связь программы с конфигурацией файловой системы конкретной ЭВМ.
Пример:
#include <stdio.h> /* функции стандартного ввода-вывода */
#include <conio.h /* функции консольного ввода-вывода */
#include <math.h>/* стандартные математические функции */
#include <iostream> // потоковый ввод/вывод
view raw Ex.cpp hosted with ❤ by GitHub

Директивы #define, #undef

Директива препроцессора #define позволяет заменять все вхождения указанного идентификатора какой-то определенной последовательностью символов.
Удобно использовать для объявления и определения констант, когда одно и то же значение (например, длина массива) используется в разных местах программы.
#define идентификатор последовательность символов
view raw Def.cpp hosted with ❤ by GitHub
Например:
#define lin_arr 40
void main(void) {
int arr[lin_arr], i;
for (i=0; i<lin_arr; i++)
arr[i]=i+1;
}
view raw DefineEx.cpp hosted with ❤ by GitHub
В результате препроцессорной обработки получится сле­дующий текст программы:
void main(void)
{
int arr[40], i;
for (i=0; i<40; i++)
arr[i]=i+1;
}
Изменив значение lin_arr на любое другое только в директиве #define, автоматически изменятся и длина массива, и условие окончания цикла.
Также удобно использовать директиву #define для опре­деления и описания функций (func - функция, выбирающая ми­нимальное из двух чисел):
/* Фрагмент на С */ // Изменения на C++
#include <stdio.h> //#include <iostream>
#define func(a,b) a<b ? a : b
void main(void)
{
. . .
printf("%f",func(9,4.5)); //cout<<func(9,4.5);
}
view raw DefineFunc.cpp hosted with ❤ by GitHub
На экран будет выведено: 4.5
Директива #undef отменяет действие идентификаторов, определенных директивой #define:
#undef идентификатор
view raw Undef.cpp hosted with ❤ by GitHub
Например:
#define s d
s = 10;
#undef s
s = 5;
view raw UndefEx.cpp hosted with ❤ by GitHub
После препроцессорной обработки фрагмент будет иметь вид:
d=10;
s = 5;
view raw UndefAfter.cpp hosted with ❤ by GitHub

Комментарии

Популярные сообщения