- •Часть 1
- •Введение
- •1. Лабораторная работа № 1
- •Понятие ветвления
- •2. Типы данных
- •Операции
- •4. Константы
- •5. Выражение
- •6. Основные управляющие структуры
- •7. Программа на языке Си
- •8. Ввод и вывод данных
- •2. Лабораторная работа № 2
- •1. Понятие цикла
- •2. Циклические управляющие структуры
- •3. Схемы итерационного цикла
- •Контрольные вопросы
- •3. Лабораторная работа № 3
- •Методические указания
- •1.Понятие сложного типа
- •3.Применение массивов при решении задач
- •4.Рекомендации
- •Заключение
- •Библиографический список
- •Часть 1
- •394026 Воронеж, Московский просп., 14
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()
{
[< объявление >]
.
.
.
[< оператор >]
.
.
.
}
Комментарии
Текст на Си, заключенный в скобки /* и */, компилятором игнорируется. Комментарии служат двум целям: документировать текст программы и облегчить отладку. Если программа работает не так, как надо, то иногда оказывается полезным закомментировать часть кода ( т.е. вынести ее в комментарий ), заново скомпилировать программу и выполнить ее. Если после этого программа начнет работать правильно, то значит, закомментированный код содержит ошибку и должен быть исправлен.