netlib.narod.ru | < Назад | Оглавление | Далее > |
Единственный способ выучить новый язык программирования — это писать на нем программы. При изучении любого языка первой, как правило, предлагают написать приблизительно следующую программу:
Напечатать слова Hello world
Вот первое препятствие, и чтобы его преодолеть, вы должны суметь где-то создать текст программы, успешно его скомпилировать, загрузить, запустить на выполнение и разобраться, куда будет отправлен результат. Как только вы овладеете этим, все остальное окажется относительно просто.
Си-программа, печатающая «Hello world», выглядит так:
#include <stdio.h> main() { printf ("Hello world\n"); }
Как запустить эту программу, зависит от системы, которую вы используете. Так, в операционной системе UNIX необходимо поместить исходный текст программы в файл с именем, заканчивающимся символами .c, например в файл hello.c, который затем компилируется с помощью команды
cc hello.c
Если вы все сделали правильно — не пропустили где-либо знака и не допустили орфографических ошибок, то компиляция пройдет «молча» и вы получите файл, готовый к исполнению и названный a.out. Если вы теперь запустите этот файл на выполнение командой
a.out
программа напечатает
Hello world
В других системах правила запуска программ на выполнение могут быть иными; чтобы узнать о них, поговорите со специалистами.
Теперь поясним некоторые моменты, касающиеся самой программы. Программа на Си, каких бы размеров она не была, состоит из функций и переменных. Функции содержат инструкции, описывающие вычисления, которые необходимо выполнить, а переменные хранят значения, используемые в процессе этих вычислений. Функции в Си похожи на подпрограммы и функции Фортрана или на процедуры и функции Паскаля. Приведенная программа — это функция с именем main. Обычно вы вольны придумывать любые имена для своих функций, но main — особое имя: любая программа начинает свои вычисления с первой инструкции функции main. Это означает, что каждая программа должна в каком-то месте содержать функцию с именем main.
Обычно функция main для выполнения своей работы пользуется услугами других функций; одни из них пишутся самим программистом, а другие берутся готовыми из имеющихся в его распоряжении библиотек. Первая строка программы:
#include <stdio.h>
сообщает компилятору, что он должен включить информацию из стандартной библиотеки ввода-вывода. Эта строка встречается в начале многих исходных файлов Си-программ. Стандартная библиотека описана в главе 7 и приложении В.
Один из способов передачи данных между функциями состоит в том, что вызывающая функция передает список значений, называемых аргументами. Этот список помещается в круглых скобках после имени функции. В нашем примере main определена как функция, которая не ждет никаких аргументов, на что указывает пустой список аргументов ( ).
#include <stdio.h> Включение информации о стандартной библиотеке main() Определение функции с именем main не получающей никаких аргументов { Инструкции main заключаются в фигурные скобки printf("hello, world\n"); main вызывает библиотечную функцию printf для печати строки символов } \n представляет символ перехода на новую строку
Первая программа на Си
Составляющие функцию инструкции заключаются в фигурные скобки { }. Функция main содержит только одну инструкцию
printf("Hello world\n");
Чтобы вызвать функцию необходимо указать ее имя, после которого следует список аргументов, заключенный в круглые скобки. Таким образом, приведенная выше строка — это вызов функции printf с аргументом "Hello world\n". Функция printf — это библиотечная функция, которая в данном случае напечатает последовательность символов, заключенную в двойные кавычки.
Последовательность символов в двойных кавычках, такая как "Hello world\n", называется символьной строкой или строковой константой. Пока что в качестве аргументов для printf и других функций мы будем использовать только символьные строки.
В Си комбинация \n внутри строки символов обозначает символ перехода на новую строку и при печати вызывает переход к левому краю следующей строки. Если вы удалите \n (стоит поэкспериментировать), то обнаружите, что печать не закончится переходом на новую строку. Символ перехода на новую строку следует указывать в аргументе функции printf явным образом. Если вы попробуете что-нибудь вроде
printf("Hello world ");
компилятор выдаст сообщение об ошибке.
Функция printf никогда не вставляет символ перехода на новую строку автоматически, так что одну строку можно напечатать по частям с помощью нескольких вызовов функции printf. Нашу первую программу можно написать так:
#include <stdio.h> main() { printf("Hello "); printf("world"); printf("\n"); }
В результате ее выполнения будет напечатана та же строка, что и раньше.
Обратите внимание, что \n обозначает только один символ. Такие особые комбинации символов, начинающиеся с обратной наклонной черты, и называемые управляющими последовательностями, широко применяются для обозначения трудно представимых или невидимых символов. Среди прочих в Си имеются символы \t, \b, \", \\, обозначающие соответственно табуляцию, возврат на один символ назад («забой» последнего символа), двойную кавычку и саму наклонную черту. Полный список таких символов представлен в параграфе 2.3.
Упражнение 1-1 |
Выполните программу, печатающую «Hello world», в вашей системе. Поэкспериментируйте, удаляя некоторые части программы, и посмотрите, какие сообщения об ошибках вы получите. |
Упражнение 1-2 |
Выясните, что произойдет, если в строковую константу в аргументе функции printf вставить управляющую последовательность \x, где х — символ, не входящий в представленный выше список. |
netlib.narod.ru | < Назад | Оглавление | Далее > |