Всем привет. Начнем наш первый урок. Начинать изучение программирования с вывода информации «Привет, Мир» стала уже традицией. И мы так же поступим.
Создадим файл main1.c где вам удобно, например на рабочем столе. Откройте файл в текстовом редакторе. Наберите следующий код (советую вам не копировать, а написать вручную, чтобы лучше запомнить):
/*Наша первая программа на Си*/
#include
int main () {
puts ("Hello, World!");
return 0;
}
Теперь давайте рассмотрим каждую строку по отдельности. Здесь в первой строке комментарий помещенная в скобки /* */. При компиляции компилятор не обращает внимания на комментарии. Комментарии используется что бы не забыть что за программа или какую функцию выполняет. Так же комментарии используются в случаи если над проектом работают и другие лица кроме вас.
Компилятор — это программа которая переводит исходный код понятный человеку, в код понятный машине (компьютеру). Процесс перевода называется компиляция.
А вторая строка это препроцессорная директива которая подключает библиотеку
int main () — это тело программы с которой начинаются все программы на Си. В программе не может быть более одной функции main.
puts и return — это операторы которые описаны в
Ну давайте скомпилируем же нашу программу. Для этого сохраните внесенные изменения. Откройте терминал (Ctrl+Alt+T). Выполните следующую команду:
gcc -o [имя выходного файла] '[путь к компилируем файлу]'
Запускаем:
./[имя выходного файла]
Например:
gcc -o prog '/home/ubuntuforlife/Рабочий стол/main.c'
Запуск:
./prog
Увидим следующий результат:
Hello, World!
Поздравляю, вы написали и скомпилировали первую программу.
Попробуйте заменить оператор puts на printf.
/*Меняем puts на printf*/
#include
int main () {
printf ("Hello, World!");
return 0;
}
Сохраните и скомпилируйте. Результат будет тем же. Но эти два оператора отличаются, и чем же рассмотрим в дальнейшем.
Теперь проведем небольшой эксперимент. Удалим из исходника (это файл с кодом программы, в нашем случаи main.c) препроцессорную директиву #include и скомпилируем любую из наших двух программ. В первом случаи результат не изменится, а во втором вылетит ошибка:
nadir@nadir-VGN-TT1RVN-X:~$ gcc -o prog '/home/nadir/Рабочий стол/main.c' /home/nadir/Рабочий стол/main.c: В функции «main»: /home/nadir/Рабочий стол/main.c:3:5: предупреждение: несовместимая неявная декларация внутренней функции «printf» [по умолчанию включена] nadir@nadir-VGN-TT1RVN-X:~$
Так зачем нам нужен заголовочный файл
int main ()
{
puts ("Hello,","ubuntuforlife.ru");
return 0;
}
И второй вариант:
#include
int main ()
{
puts ("Hello,","ubuntuforlife.ru");
return 0;
}
В первом случаи все пройдет без ошибок, но на экран будет выведен текст только из первых кавычек. Вторых кавычек быть не должно, это ошибка. Но компилятор нам этого не «сказал».
А во втором случаи компилятор прервал процесс из-за ошибки в исходном коде:
nadir@nadir-VGN-TT1RVN-X:~$ gcc -o prog '/home/nadir/Рабочий стол/main.c' /home/nadir/Рабочий стол/main.c: В функции «main»: /home/nadir/Рабочий стол/main.c:5:5: ошибка: слишком много аргументов в вызове функции «puts» nadir@nadir-VGN-TT1RVN-X:~$
Так что не забывайте подключать библиотеку. А что касается оператора printf то без библиотеки его никак не получится скомпилировать.