Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие 300094.doc
Скачиваний:
2
Добавлен:
30.04.2022
Размер:
342.53 Кб
Скачать

7. Программа на языке Си

Простая программа – это программа с управляющей структурой, обладающей следующими особенностями:

1) имеется только один вход и один выход,

2) через каждый узел программы проходит путь от входа к выходу структуры.

Структурные схемы простых программ при программировании ветвлений:

а)

б ) в)

где fi – функциональный узел, который может иметь а), б), в) структуры.

Программа на языке Си состоит из одной или более функций. Одна из этих функций – главная, она имеет имя main. Операционная система передает управление в программу пользователя на функцию с этим именем и тем самым начинается выполнение программы. Функция main вызывает другие функции программы. Кроме функций программа может содержать директивы препроцессору, указания компилятору, объявления и определения.

Директивы препроцессора используют для того, чтобы облегчить модификацию программы. Директива - это инструкция препроцессору языка Си. Препроцессор обрабатывает исходную программу перед ее компиляцией.

Текст программы на языке Си может быть разделен на несколько исходных файлов. Исходный файл – это текстовый файл, который содержит либо всю программу, либо ее часть. Исходный файл не обязательно должен содержать выполняемые операторы. Удобно размещать определения переменных в одном файле, а в других файлах использовать эти переменные путем их объявления. Каждый исходный файл компилируется отдельно, а затем связывается с другими компоновщиком программ. Отдельные исходные файлы можно объединить в один исходный файл, компилируемый как единое целое, используя директиву препроцессора – include.

Директива include

Синтаксис: #include < имя пути >

Эта директива включает содержимое исходного файла <имя пути> в компилируемый исходный текст, содержащий директиву include. Имя пути – это имя файла.

Появление директив

#include <файл_1>

#include "файл_2"

...

#include <файл_n>

приводит к тому , что препроцессор подставляет на место этих директив тексты файлов файл_1, файл_2 , ... , файл_n соответственно.

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

Директива define

Синтаксис: #define < идентификатор > < текст >

Директива #define заменяет все вхождения < идентификатора > в исходном файле на < текст >. Этот процесс называется макроподстановкой. <Текст> представляет собой набор лексем, таких как ключевые слова, константы, идентификаторы или выражения. С помощью макроса можно задавать именованные константы, что облегчает модификацию программы.

Например, директива

#define pi 3.1415926

связывает идентификатор pi со значением 3.1415926. Если мы захотим изменить значение константы, например, задать ее с меньшей точностью, достаточно изменить только директиву, а не все операторы, где используется pi.

Объявления

Объявление переменной задает ей имя и атрибуты.

Объявление функции задает ее имя, тип результата и атрибуты формальных параметров.

Объявление типа позволяет создать собственный тип данных, либо задавая новое имя некоторому базовому типу, либо составному типу.

Определения

Определение переменной, кроме задания ее имени и атрибутов, приводит к выделению для нее памяти, а также задает начальное значение переменной ( явно или неявно).

Определение функции специфицирует тело функции, которое представляет собой составной оператор или блок, кроме этого задает ей имя, тип результата, атрибуты формальных параметров.

Определение типа совпадает с понятием объявление типа.

В простейшем случае синтаксис определения функции:

< идентификатор > ( ) < тело функции >

Тело функции представляет собой составной оператор или блок. Он содержит операторы, которые определяют действие этой функции, и, если необходимо, объявления и/или определения переменных, используемых в этих операторах.

В простейшем случае главная функция имеет следующий вид:

main()

{

[< объявление >]

.

.

.

[< оператор >]

.

.

.

}

Комментарии

Текст на Си, заключенный в скобки /* и */, компилятором игнорируется. Комментарии служат двум целям: документировать текст программы и облегчить отладку. Если программа работает не так, как надо, то иногда оказывается полезным закомментировать часть кода ( т.е. вынести ее в комментарий ), заново скомпилировать программу и выполнить ее. Если после этого программа начнет работать правильно, то значит, закомментированный код содержит ошибку и должен быть исправлен.