Язык Си в примерах/Простейшая программа «Hello World»: различия между версиями

Содержимое удалено Содержимое добавлено
Использованы <code /> (были: <tt />); оформление, пробелы, разрывы строк.
Исправления, дополнения; упомянуты запуск из командного интерпретатора и использование «getchar»; объяснен недостаток «getch».
Строка 6:
<big><source lang="c">
#include <stdio.h>
 
int main (/*Не писать сюда "void", если вы не работаете с микроконтроллерами*/)
int main (void)
{
printf ("Hello, World!\n");
getch();/*Ожидание нажатия любой клавиши, используем функцию чтобы увидеть выводимое сообщение*/
return 0;
}
Строка 18:
#include <stdio.h>
</source></big>
означает «включи файл <code>stdio.h</code>». В этом файле определяются''объявляются'' функции, связанные с вводом и выводом данных.
 
Аббревиатура STDIO означает «STanDard Input/Output Library». Буква «h» после точки означает «header», то есть заголовочный файл.
В заголовочных файлах описано,обычно какиеобъявляются предоставляемые соответствующими им библиотеками функции, предоставляеттипы соответствующаяданных, ими библиотекаопределения препроцессора.{{ref|include}}.
 
Далее идёт функция <code>main</code>. Она начинается с объявления
Строка 27:
int main (void)
</source></big>
что значит: «функция с именем <code>main</code>, которая возвращает целое число (число типа <code>int</code> от англ. {{lang|en|[[wikt:integer#integer numberI (существительное)|integer]]}}) и у которой нет аргументов <code>(void)</code>»
 
<small>В качестве варианта, [[w:C11|стандарт]] допускает определение функции <code>main</code> как функции двух аргументов (<code>int argc</code> и <code>char *argv[]</code> — имена, разумеется, могут быть произвольными), что используется для получения доступа к ''аргументам командной строки'' из программы. В данном случае, эта возможность не требуется, поэтому функция определена как безаргументная (что также явно разрешено стандартом.)</small>
Слово <code>void</code> можно переводить как «ничто». Далее открываются фигурные скобки и идёт описание этой функции, в конце фигурные скобки закрываются. Функция <code>main</code> — эта главная функция вашей программы, именно она начинает выполняться, когда ваша программа запускается.
 
СловоАнглийское <code>слово {{lang|en|[[wikt:void</code>#существительное|void]]}} можно переводитьперевести как «ничто». Далее открываются фигурные скобки и идёт описание этой''тело'' функции, в конце фигурные скобки закрываются. Функция <code>main</code> — эта главная функция вашей программы, именно онас начинаетнее выполняться,начинается когдавыполнение ваша программа запускаетсяпрограммы.
Между фигурных скобок находится ''тело функции'', в котором описана последовательность действий, производимых данной функцией — логика функции. Наша функция производит одно единственное действие:
 
Между фигурных скобок находится ''телоТело функции'', в которомсвою очередь, описанаопределяет последовательность действий, производимыхвыполняемых данной функцией — логикалогику функции. Наша функция производитвыполняет одно единственное действие:
<big><source lang="c">
printf ("Hello, world!\n");
</source></big>
 
Это действие, в свою очередь, есть вызов функции <code>printf</code> изстандартной библиотеки <code>stdio</code>. В результате выполнения этой функции, на [[w:Стандартные потоки#Стандартный вывод|стандартный вывод]] (которым, скорее всего, окажется экран или окно на экране) печатается текст <code>Hello, world!</code>. Обратите внимание на комбинацию <code>"\n"</code> — она задаёт специальный символ, который в действительности является командой текстовому терминалу: «перейти на следующую строку». Таких специальных символов несколько, все они записываются с помощью символа [[w:Обратная косая черта|обратной косой черты]] <code>\</code> (символ backslash) (см. [[Базовые понятия языка Си/Специальные символы]], [[Язык Си в примерах../ASCII коды символов]]).
 
Затем идёт команда <code>return 0;</code>, которая завершает выполнение функции и возвращает значение 0.
Функция <code>main</code> должна возвращать 0, если выполнение прошло успешно.
 
Окружение, в котором запускается программа, как правило можно настроить так, что вывод программы будет оставаться на экране после ее выполнения неограниченно долго. Проще всего это обеспечить вызывая программу из [[w:Интерпретатор командной строки|командного интерпретатора]] (который, в свою очередь, может быть запущен в окне [[w:Эмулятор терминала|эмулятора терминала]]) или (в зависимости от системы) окна [[w:Cmd.exe|Cmd.exe]]. При запуске непосредственно из графического окружения, перед завершением функции <code>main</code> командой <code>return</code> можно добавить функцию, ожидающую ввода пользователя, например — <code>getchar</code> (также объявленную в уже используемом <code>stdio.h</code>):
<source lang="c">
getchar ();
</source>
 
<small>В некоторых руководствах для этой же цели используется функция <code>getch</code>. Однако, эта функция (в отличие от <code>getchar</code>) не является частью стандартной библиотеки и, к тому же, зависима от платформы. Так, в некоторых системах использование <code>getch</code> требует включения файла <code>curses.h</code> и предшествующего вызова функции <code>initscr</code>. В других системах, однако, <code>getch</code> может быть объявлена в <code>conio.h</code>, и выполнение <code>initscr</code> — не требуется.</small>
 
== Примечания ==