Язык программирования С был создан в 1972 г. Деннисом Ритчи. В языке С сочетаются лучшие свойства языка ассемблера и языков высокого уровня. Наличие большого набора управляющих конструкций, возможность обработки сложных структур данных, присущие языкам высокого уровня, дополняются гибкими средствами ввода/вывода и работы с памятью, характерными для языка ассемблера.
Программа на С состоит из нескольких файлов двух типов: файлов заголовков (с расширением «.Ь») и файлов кодов (с расширением «.срр»).
Файлы заголовков содержат общие составные части программы, например, директивы препроцессора для подключения заголовочных файлов используемых библиотек языка, объявления типов, определяемых пользователем, определения именных констант, прототипы функций (заголовки функций без тела).
Файлы кодов содержат следующие составные части: определения функций (тексты функций), директивы препроцессора для
подключения файлов заголовков, объявления глобальных переменных. В одном из файлов кодов находится главная функция main(), с которой начинается выполнение программы.
Язык программирования Си. Урок 1. Базовая структура программы
Большим преимуществом языка С является его расширяемость, т.е. возможность внесения изменений в язык. Это достигается благодаря тому, что язык С содержит небольшое число операторов и большой набор различных библиотек функций.
Расширения языка можно разбить на несколько групп:
- • первая группа размещается в стандартной библиотеке;
- • расширения, относящиеся ко второй группе, поддерживаются конкретны м ком п и л ятором;
- • третья группа разрабатывается самими программистами и содержится в дополнительных библиотеках функций С.
Большинство функций, являющихся составной частью языка С (функции ввода-вывода, математические операции, операции работы со строками и т.д.), стандартизированы подкомитетом Американского национального института стандартов (ANSI). В зависимости от компилятора могут существовать различия в перечне доступных функций и в выполняемых ими действиях.
Общая структура программы на языке С представлена на рис. 5.1.
Итак, программа на языке С состоит из одного или нескольких модулей.
Модуль — это самостоятельно компилируемый файл (после компиляции он превращается в объектный модуль с расширением «obj»). В свою очередь модуль состоит из одной или нескольких
Рис. 5.1. Общая структура программы на языке С
функций, а также может включать команды препроцессора и описания глобальных данных, которые будут рассмотрены позже.
Модули одной программы неравноценны: один из них должен содержать функцию main(), а остальные — любые другие функции.
Модули объединяются в единый модуль при компоновке программы (выполняемый модуль «ехе»).
Функция — это самостоятельный фрагмент исходного текста программы, предназначенный для конкретной задачи. В языке С функции являются основными строительными блоками, из которых составляется программа. Функции позволяют избавиться от повторного программирования в случае частого выполнения одних и тех же действий. Функции состоят из операторов языка С.
Урок1. Структура программы на языке Паскаль
Алфавит языка программирования С основывается на множестве символов таблицы кодов ASCII и включает:
- • строчные и прописные буквы латинского алфавита;
- • цифры от 0 до 9;
- • символ подчеркивания «_»;
- • набор специальных символов:» <>, | [ | + — % / ;’: ? <> = !
- • прочие символы.
Составные части программы строятся с использованием базовых элементов языка — лексем, к которым относятся ключевые слова, идентификаторы, константы, символы операций и пунктуации.
Лексемы разделяются разделителями, к которым относятся:
- • пробельные символы (пробел, символы табуляции, символ новой строки, комментарии);
- • последовательности специальных символов. ; <>;
- • большинство символов операций, в зависимости от контекста.
Комментарии — это тексты, предназначенные для аннотирования программы. Существуют два способа обозначения комментария:
- • с символов // и до конца строки;
- • с символов /* и до символов */.
Предложения в С называются операторами. Оператор языка С состоит из выражений и может содержать вложенные операторы.
Источник: studme.org
Структура программы на языке С
Для того чтобы описать структуру программы, написанной на C, рассмотрим простейшую программу, выводящую на экран строку Hello, world.
В первой строке данной программы находится однострочный комментарий. В приведенном комментарии указано имя файла, в котором хранится исходный текст программы. В С комментарии могут быть заданы двумя способами. Для однострочных комментариев используют символы //, как в нашем примере.
Для многострочных комментариев можно использовать символы /*, */, между которыми и должен находится сам текст комментария. В тексте комментария могут содержаться любые символы, а вся последовательность символов эквивалентна символу пропуска (например, символу пробела). Комментарии одного типа не могут быть вложенными, однако можно использовать символы // для того, чтобы закомментировать символы /*… */, а символами /*…*/можно закомментировать //.
Во второй и третьей строке программы помещены команды препроцессора (директивы) #include. Данная декрктива позволяет подключить стандартные библиотеки функций используемого компилятора или оттранслированные модули, написанные самим программистом. Директива #include имеет два формата:
В первом случае имя_файла определяет текстовый (заголовочный) файл, содержащий прототипы (описания) той или иной группы стандартных для данного компилятора функций. Например, в нашем случае директива #include обеспечивает включение стандартных функций ввода даннях с клавитуры и вывода на экран. Если программист хочет использовать в своей программе такие стандартные функции как косинус (cos), синус (sin), степень числа (pow), то он должен использовать директиву #include , для использования функции ожидания ввода любого символа с клавиатуры без отображения на экране, то есть функции задержки экрана (getch) – директиву #include , функцию конкатенации строк (strcat)– директиву #include . Если в программе, например, используется функция cos (функция вычисления косинуса), но не указана директива #include , то на этапе компиляции возникнет ошибка. Ниже приведено функциональное значение основных заголовочных файлов:
math.h –математические функции;
ctype.h – функции проверки и преобразования символов;
stdio.h – функции ввода–вывода данных;
string.h, stdlib.h – функции для работы со строками;
alloc.h – функции для выделения и освобождения памяти;
conio.h – функции для работы с терминалом в текстовом режиме;
graphics.h – функции для работы с графикой.
Если имя_файла после директивы #include указано в кавычках, это означает, что используется не стандартный заголовочный файл, а файл, созданный самим программистом.
Четвертая строка программы является заголовком функции с именем main. Каждая программа должна содержать функцию с именем main, и работа программы начинается с выполнения этой функции. Перед именем main помещено служебное слово void – спецификатор типа, указывающий, что функция main в данной программе не возвращает никакого значения. Круглые скобки после main требуются в связи с синтаксисом заголовка любой функции и содержат список параметров. В нашем примере параметры не нужны и этот список пуст.
Тело любой функции в языке С – это заключенная в фигурные скобки последовательность описаний и операторов. Каждое описание и оператор заканчивается символом ‘;’. В данном примере в теле функции main нет явных описаний, а есть только один оператор
printf («nHello, worldn»);
В соответствии с информацией, содержащейся в файле stdio.h, printf является именем функции, который обеспечивает вывод информации на экран монитора. (Поэтому, если строка #include будет отсутствовать в программе, то имя printf будет воспринято как неизвестное на этапе компиляции программы). В нашем примере экран будет вывдена это строковая константа «nHello, worldn». Строковая константа в языке С –это последовательность символов, заключенная в двойные кавычки. В строке символ обратной косой черты ‘’, за которым следует другой символ, обозначает один специальный символ, в данном случае, ‘n’ является символом новой строки. Таким образом, выводимые символы в данном случае состоят из символа перевода строки, символов Hello, world и еще одного символа перевода строки.
Отметим, что обратная косая черта ‘’ позволяет не только записывать символы, не имеющего графического изображения и некоторые другие, но и выводить символьные константы, явно задавая их коды в восьмеричном или шестнадцатеричном виде. Последовательность литер, начинающаяся с символа ‘’ называют esc–последовательностями (ескейп–последовательностями). Их допустимые значения приведены в таблице 1.
Методы организации вывода и ввода данных будут подробно рассмотрены в главе 3.
Последняя строка программы представляет собой вызов функции gecth() – функции задержки экрана до нажатия пользователем любой клавиши.
Таблица 1. Допустимые ESC–последовательности
Изображение | Смысл |
a | Звуковой сигнал |
b | Возврат на шаг (забой) |
n | Перевод строки (новая строка) |
r | Возврат каретки |
t | Табуляция горизонтальная |
\ | Обратная косая черта () |
’ | Апостроф (‘) |
” | Двойная кавычка (“) |