Единственный способ освоить новый языкпрограммирования - писать на нем программы. Первая програм-ма, которая должна быть написана, - одна для всех языков:напечатать слова : HELLO, WORLD. Это - самый существенный барьер; чтобы преодолеть его,вы должны суметь завести где-то текст программы, успешно егоскомпилировать, загрузить, прогнать и найти, где оказаласьваша выдача. Если вы научились справляться с этими техничес-кими деталями, все остальное сравнительно просто. Программа печати "HELLO, WORLD" на языке "C" имеет вид: MAIN () { PRINTF("HELLO, WORLD\N"); } Как пропустить эту программу - зависит от используемойвами системы. В частности, на операционной системе "UNIX" выдолжны завести исходную программу в файле, имя которогооканчивается на ".C" , например, HELLO.C , и затем скомпили-ровать ее по команде CC HELLO.C Если вы не допустили какой-либо небрежности , такой какпропуск символа или неправильное написание, компиляция прой-дет без сообщений и будет создан исполняемый файл с именема.OUT . Прогон его по команде A.OUT приведет к выводу HELLO, WORLD На других системах эти правила будут иными; проконсуль-тируйтесь с местным авторитетом. Упражнение 1-1 --------------- Пропустите эту программу на вашей системе. Попробуйтене включать различные части программы и посмотрите какие со-общения об ошибках вы при этом получите. Теперь некоторые пояснения к самой программе. Любая"C"-программа, каков бы ни был ее размер, состоит из однойили более "функций", указывающих фактические операциикомпьютера, которые должны быть выполнены. Функции в языке"C" подобны функциям и подпрограммам фортрана и процедурамPL/1, паскаля и т.д. В нашем примере такой функцией являетсяMAIN. Обычно вы можете давать функциям любые имена по вашемуусмотрению, но MAIN - это особое имя; выполнение вашей прог-раммы начинается сначала с функции MAIN. Это означает, чтокаждая программа должна в каком-то месте содержать функцию сименем MAIN. Для выполнения определенных действий функцияMAIN обычно обращается к другим функциям, часть из которыхнаходится в той же самой программе, а часть - в библиотеках,содержащих ранее написанные функции. Одним способом обмена данными между функциями являетсяпередача посредством аргументов. Круглые скобки, следующиеза именем функции, заключают в себе список аргументов; здесьмаIN - функция без аргументов, что указывается как (). Опе-раторы, составляющие функцию, заключаются в фигурные скобки{ и }, которые аналогичны DO-END в PL/1 или BEGIN-END в ал-голе, паскале и т.д. Обращение к функции осуществляется ука-занием ее имени, за которым следует заключенный в круглыескобки список аргументов. здесь нет никаких операторов CALL,как в фортране или PL/1. Круглые скобки должны присутство-вать и в том случае, когда функция не имеет аргументов.Строка PRINTF("HELLO, WORLD\N"); является обращением к функции, которое вызывает функциюс именем PRINTF и аргуметом "HELLO, WORLD\N". Функция PRINTFявляется библиотечной функцией, которая выдает выходные дан-ные на терминал (если только не указано какое-то другое мес-то назначения). В данном случае печатается строка символов,являющаяся аргументом функции. Последовательность из любого количества символов, зак-люченных в удвоенные кавычки "...", называется 'символьнойстрокой' или 'строчной константой'. Пока мы будем использо-вать символьные строки только в качестве аргументов дляPRINTF и других функций. Последовательность \N в приведенной строке являетсяобозначением на языке "C" для 'символа новой строки', кото-рый служит указанием для перехода на терминале к левому краюследующей строки. Если вы не включите \N (полезный экспери-мент), то обнаружите, что ваша выдача не закончится перехо-дом терминала на новую строку. Использование последователь-ности \N - единственный способ введения символа новой строкив аргумент функции PRINTF; если вы попробуете что-нибудьвроде PRINTF("HELLO, WORLD "); то "C"-компилятор будет печатать злорадные диагностическиесообщения о недостающих кавычках. Функция PRINTF не обеспечивает автоматического переходана новую строку, так что многократное обращение к ней можноиспользовать для поэтапной сборки выходной строки. Наша пер-вая программа, печатающая идентичную выдачу, с точно такимже успехом могла бы быть написана в виде MAIN() { PRINTF("HELLO, "); PRINTF("WORLD"); PRINTF("\N"); } Подчеркнем, что \N представляет только один символ. Ус-ловные 'последовательности', подобные \N , дают общий и до-пускающий расширение механизм для представления трудных дляпечати или невидимых символов. Среди прочих символов в языке"C" предусмотрены следующие: \т - для табуляции, \B - длявозврата на одну позицию, \" - для двойной кавычки и \\ длясамой обратной косой черты. Упражнение 1-2 --------------- Проведите эксперименты для того, чтобы узнать что прои-зойдет, если в строке, являющейся аргументом функции PRINTFбудет содержаться \X, где X - некоторый символ, не входящийв вышеприведенный список.