Си
Си (по-английски С) - это язык программирования, широко
распространенный среди системных программистов и разработчиков прикладных программ. Название языка Си соответствует третьей букве английского алфавита. Совпадение имеет свою историю. Один из языков, появившихся в *0-х годах, назывался AP* - язык программирования А (Эй). Так была занята первая буква алфавита. Во время работы над операционной системой *n*x был создан язык программирования В (Би). Следующая буква в
английском алфавите - С (Си).
Язык Си как инструментальный язык появился в процессе работы над
операционной системой Un*x. Работать над этой системой начал Кенон Томпсон в 1969 г. для микро-ЭВМ *D*-7 фирмы *EC. В 1972 году он вместе с Денисом Ритчи создал язык программирования Си. В нем сочетались лучшие свойства языка Ассемблер и языков высокого уровня. От Ассемблера были взяты гибкие и эффективные свойства работы с памятью, от языков высокого уровня - широкий набор управляющих конструкций, возможность работы со
сложными структурами, гибкие средства ввода-вывода.
Этот язык содержит набор конструкций и способов агрегатирования
данных. Он способен поддерживать технологию структурного
программирования и разработку модульных программ. Программы, написанные на языке Си, могут быть легко перенесены как на другой компьютер, так и в другую систему. Программы на языке Си получаются короче, чем на других языках программирования. При этом увеличивается их наглядность и ясность. По компактности и скорости выполнения программы на
языке Си приближаются к программам, написанным на языке Ассемблер.
Однако язык Си предъявляет достаточно высокие требования к
квалификации использующего его программиста. В связи с этим не рекомендуется использовать язык Си, чтобы начать знакомство с программированием (для первого знакомства с программированием лучше подходят Бейсик и Паскаль). В процессе изучения необходимо осторожно пользоваться не до конца изученными возможностями, правилами умолчания и
т.д.
Простейшая программа на языке Си выглядит так:
/* Моя первая программа */ /* 1 */
#INCLUDE<STDI*.X> /* 2 */
/* 3 * /
MAIN( )
{
PRINTF (”HEL*O, *RIEN*!”);
/* Здравствуй, Друг! */
}
/* 4 */
/* * * /
/* 6 */
/* 7 * /
Результат работы этой программы будет выглядеть таким: HELLO,
FRIEND!
Разберем эту программу подробнее. Первая строка содержит
комментарий, т.е. текст, который игнорируется компилятором и предназначается только для программистов. Комментарием в программе на Си является любая последовательность символов, заключенная между знаками /* */. Комментарии могут располагаться как на одной строке, так и на нескольких,
например:
/**********************
* Это тоже комментарий *
**********************/
Вторая строка содержит так называемую директиву препроцессора. В
отличие от других языков программирования обработка программы на Си осуществляется в два этапа: сначала программа обрабатывается препроцессором, т.е. некоторой программой, осуществляющей выполнение специальных директив. Затем она компилируется, т.е. обрабатывается программой, которая переводит текст программы с языка, понятного человеку, на язык машины. Оба эти этапа объединяются в одну программу и ее называют
компилятором.
Строки, содержащие директивы препроцессора, начинаются с символа #
(номера). Директива #NCLUDE осуществляет подстановку вместо себя текста, указанного в директиве файла (в данном случае файла с именем STDIO.*). Заключение имени файла в угловые скобки говорит о том, что поиск этого файла будет осуществляться в системном каталоге Си. В языке Си файлы с расширением .Х называются файлами-заголовками. Они содержат описание переменных, типов и т.д., которые пользуются многими программами. В данном случае в файле содержатся описания, необходимые для использования стандартной библиотеки ввода-вывода. Имя файла получилось от сокращения STA*DART INPUT-OUTPUT. Кроме включения файлов, процессор осуществляет еще подстановку значений, условную компиляцию и некоторые
другие действия.
Третья строка оставлена пустой для улучшения восприятия текста.
Четвертая строка содержит заголовок определения функции, в котором указывают имя функции (в нашем примере M*I*). В отличие от других языков программирования, в Си есть только один вид подпрограммы - функция. Даже основная программа тоже является функцией. Имя основной программы, т.е. той, с которой начинается выполнение в языке Си, должно быть обязательно *AIN. Поскольку у нас одна функция, то другого имени мы ей дать не можем. Скобки после имени указывают на то, что это - функция; внутри скобок описываются параметры. Поскольку в нашей программе параметров нет, то
скобки пустые, но они обязательно должны присутствовать.
Открывающаяся фигурная скобка в пятой строке говорит о том, что это
начало тела функции. Тело функции состоит только из одного оператора. Он выводит на экран сообщение «HELLO, *RIEND!». Поскольку нас не интересует значение, возвращаемое функцией, то мы его никак не используем, и оно
теряется. Заканчивается оператор точкой с запятой. Этот символ в языке Си, в
отличие от других языков программирования, не разделяет операторы, а
является частью оператора, поэтому точка с запятой здесь обязательна.
Закрывающаяся фигурная скобка в седьмой строке указывает на конец
тела функции, а в нашем случае и на конец программы.
Чтобы программу на языке Си можно было выполнить на компьютере, ее
сначала нужно обработать двумя программами: компилятором, который переведет написанный текст в машинные команды и проверит правильность написания программы; и сборщиком, который объединит программу с другими функциями и представит ее в форме, в которой она уже может быть запущена
на выполнение с помощью команд операционной системы.