Первая программа
Перед тем как, процессор выполнить какое либо действие, он должен получить инструкцию для его выполнения в виде машинных кодов. Набор таких инструкций называется программой.
Авторы первых программ писали их в машинном (двоичном) коде. Теперь программы пишутся на каком либо языке высокого уровня (Pascal, Delphi, C, C++, C++ Builder, Visual C++). Затем специальная программа, называемая транслятором, переводит их машинный код, который и исполняется процессором. Все трансляторы делятся на два класса:
- интерпретаторы - трансляторы, которые переводят каждый оператор программы в машинный код и по мере перевода операторы выполняются процессором;
- компиляторы переводят все программу целиком и если перевод всей программы прошел без ошибок, то полученный двоичный код можно запускать на выполнение.
Особенности компиляции (перевода в машинный код) программ на языке С++ рассмотрим после написания первой программы.
Эта простая программа, появившаяся в первом издании книги «Язык программирования Си» Кернигана и Ритчи, обычно является первой программой большинства учебников Си. Она печатает сообщение «Hello, World!» на стандартном устройстве вывода (которым, как правило, является монитор (дисплей), но может быть и файл, какое-либо устройство или область в памяти, в зависимости от того, как отражается стандартное устройство вывода на данной платформе).
main() { printf("Hello, World!\n"); }Несмотря на то, что на большинстве современных компиляторов эта программа может быть скомпилирована, она порождает несколько предупреждений на компиляторах стандарта ANSI C. Кроме того, этот код не будет компилироваться, если компилятор следует стандарту C99, так как в этом случае тип int больше не подразумевается для случаев, когда тип в результате функции не указан (а оформление функции main вообще описано отдельно). Эти сообщения можно убрать, если внести в эту программу несколько небольших изменений:
#include <stdio.h>int main(void){ printf("Hello, World!\n"); return 0;}В первой строке программы расположена директива препроцессора #include, встретив которую, компилятор заменяет её на полный текст файла, на который она ссылается. В данном случае эта строка будет заменена стандартным заголовочным файлом stdio.h. Угловые скобки указывают компилятору искать файл stdio.h в каталоге стандартных заголовочных файлов.
Следующая строка является объявлением функции с именем main. Эта функция в программе Си является особенной, так как выполняется первой из написанных программистом при запуске программы. Слово int говорит, что функция main возвращает целое число. Фигурные скобки после функции main обозначают её определение.
Следующая строка «вызывает» функцию printf. Включаемый заголовочный файл stdio.h содержит информацию, описывающую то, как нужно вызывать эту функцию. В данном примере этой функции передаётся единственный аргумент, содержащий текстовую строку «Hello, World!\n». Последовательность \n транслируется в символ «новая строка», который при отображении соответственно обозначает разрыв строки. Функция printf возвращает значение типа int, которое возвращает число напечатанных символов (в этом примере возвращаемое значение игнорируется).
Выражение return заставляет программу прекратить выполнение функции (main в этом случае), возвращая вызвавшей функции значение, указанное после ключевого слова return (здесь 0). Так как текущая функция — это main, то вызывающим является код, который и запустил программу. Последняя фигурная скобка обозначает конец определения функции main. По стандарту C99, return 0 в main не обязательно (отсутствие return в main означает return 0;).
Обратите внимание что каждый оператор языка Си заканчивается символом ; (точкой с запятой). Это обязательно. Иначе компилятор выдаст вам ошибку.