> For the complete documentation index, see [llms.txt](https://op-al.gitbook.io/s-30-voprosy-i-dop.-voprosy/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://op-al.gitbook.io/s-30-voprosy-i-dop.-voprosy/2.-struktura-programmy.-primer-prostoi-programmy..md).

# 2. Структура программы. Пример простой программы.

### Пример простой программы <a href="#primer-prostoi-programmy" id="primer-prostoi-programmy"></a>

```c
#include <stdio.h>
int main (void) /* простая программа */
{
    int num; //определить переменную с именем num
    num = 1; //присвоить значение переменной num
    
    printf ("Я простой ");
    printf ("компьютер.\n");
    printf ("Моей любимой цифрой является %d, так как она первая.\n", num);
    
    return 0;
}

Я простой компьютер.
Моей любимой цифрой является 1, так как она первая.
```

### Директивы препроцессора и заголовочные файлы <a href="#direktivy-preprocessora-i-zagolovochnye-faily" id="direktivy-preprocessora-i-zagolovochnye-faily"></a>

Перед компиляцией препроцессором выполняется предварительная обработка над исходным кодом. Директива include (включить файлы) сообщает компилятору о необходимости включения информации, хранящейся в некотором файле.

Файл stdio.h является встроенным, он содержит информацию о функциях ввода и вывода. Файл, содержимое которого добавляется препроцессором в исходный текст в месте директивы, называется заголовочным

:star: \<lib.h> - подключение стандартных библиотек, заголовки, включенные в реализацию, "math.h" - подключение любых других.

:star: Во избежание повторов при включении многих библиотек можно использовать

```cpp
#ifndef
//or
#pragma once
```

### Функция main(). **Заголовок функции** <a href="#funkciya-main-.-zagolovok-funkcii" id="funkciya-main-.-zagolovok-funkcii"></a>

int main(void) – объявление функции main().

Программа на С всегда начинается с выполнения функции main (). Круглые скобки идентифицируют main () как имя функции. Возвращаемый тип функции определен как int и указывает на то, что функция возвращает целое число. В круглых скобках содержится информация, передаваемая в функцию, (void) говорит о том, что main() не принимает аргументов.

### Комментарии

Комментарии существенно облегчают понимание программы. Все, что находится между открывающей (/\*) и закрывающей (\*/) последовательностями, компилятор игнорирует. Для однострочных комментариев можно использовать символы //

:star: Существует третий вид комментариев /\*\* \*/ - его используют для документаций

### Скобки, тела и блоки

Все функции С используют фигурные скобки для обозначения начала и конца своего тела, а также внутри функций для организации операторов в блоки.

### Объявления

```
int num; - оператор объявления
```

В примере объявляются два аспекта: в функции имеется переменная num, которая с помощью int объявлена как целочисленная. Компилятор применяет эту информацию, чтобы выделить в памяти для переменной num пространство подходящего размера.

Точка с запятой в конце строки показывает, что данная строка является оператором. Слово int представляет собой ключевое слово языка С, обозначающее один из базовых типов данных С. (Ключевые слова – слова, используемые для построения языковых конструкций, и их нельзя применять в других целях). Слово num является идентификатором.

Таким образом, объявление соединяет конкретный идентификатор с конкретной ячейкой в памяти компьютера и при этом устанавливает тип данных, которые будут там храниться. В С все переменные должны быть объявлены до применения (однопроходный компилятор)

### Присваивание

```
num = 1; - оператор присваивания
```

Предшествующая строка объявления зарезервировала в памяти компьютера место для переменной num, а строка с оператором присваивания сохранила значение 1 в этой ячейке.

### Функция printf()

```c
printf(“Я простой “); - вызов/обращение к функции
printf (“компьютер. \n”);
printf(“Моей любимой цифрой является %d, так как она первая. \n”, num);
```

Во всех этих строках используется стандартная функция printf(). То что содержится внутри скобок называется аргументом функции – это информация, передаваемая из функции main() в функцию printf()

Printf() рассматривает все, что помещено в двойные кавычки и выводит этот текст на экран. Комбинация \n – символ новой строки (управляющая последовательность – представление символов, которые невозможно ввести с клавиатуры \t \b \v). Комбинация %d – спецификатор формата, указывающий где и как должно быть введено значение переменной num (% показывает место, d показывает, что переменная должна выводиться как тип данных int)

### Оператор возврата

```cpp
return 0;
```

Является завершающим оператором программы. Состоит из ключевого слова return, за котором следует возвращаемое значение (тип данных которого соответствует возвращаемому типу функции, указанному в заголовке) и точка с запятой.

### Структура простой программы на си <a href="#struktura-prostoi-programmy-na-si" id="struktura-prostoi-programmy-na-si"></a>

Программа на языке Си состоит из:

1. Директив препроцессора (макросов)
2. Объявления структур
3. Объявления функций (прототипов функций)
4. Объявления глобальных переменных (плохо!)
5. Определения функций (как минимум одной - main() )

В нашем примере использовался оператор объявления, определяющий имя и тип переменной, оператор присваивания, устанавливающий значение переменной, три оператора вывода (операторы вызова функции), в каждом из которых вызывалась функция printf(), и оператор возврата.
