Рассмотрим код программы и познакомимся с некоторыми основами языка С.
/*
============================================================================
Name: HelloWorld.c
Author:
Version:
Copyright: Your copyright notice
Description: Hello World in C, Ansi -style
============================================================================
*/
#include <stdio.h>
#include <stdlib.h>
int main (void) {
puts ("!!!Hello World!!!"); /* prints!!!Hello World!!! */
return EXIT_SUCCESS;
}
- комментарий /* - начало комментария */ - завершение комментария
также возможен однострочный комментарий
// вся строка за символами // является комментарием
Упражнение 1. Попробуйте изменить комментарий (перенести символы завершения комментария выше или ниже по тексту).
Сохраните файл.
Нажмите кнопку “Build” (компилировать) выделена красным на рисунке.
В консоли появились ошибки.
Вывод – невнимательная расстановка знаков комментария может привести к ошибкам.
В eclipse, однако, ошибиться с комментариями достаточно сложно т.к. есть подсветка синтаксиса и комментарии выделяются отличительным цветом. А также возможные ошибки компиляции подчеркиваются до компиляции.
Упражнение 2. Замените комментарий вида /*… */ на построчный комментарий //. Скомпилируйте и запустите программу.
Далее идут 2 похожих строчки:
#include <stdio.h>
#include <stdlib.h>
Знак # обозначает команду препроцессора.
Препроцессор языка С выполняется до компиляции.
Команда #include <...> полностью копирует содержимое указанного файла в файл, в котором указана эта директива, в месте вызова директивы.
Удерживая Ctrl нажмите левой кнопкой мыши на команде
#include <stdio.h>
В редакторе открылся файл stdio.h. В файле stdio.h собраны объявления функций и переменных для работы с вводом/ выводом. Все содержимое файла командой #include <stdio.h> мы добавили в свою программу.
Тоже самое проделали с файлом stdlib.h,в котором также собраны объявления переменных и функций, занимающиеся выделением памяти, контролем процесса выполнения программы, преобразованием типов и другие.
Закройте файл stdio.h нажатием на крестик рядом с именем файла в окне редактора.
Рассмотрим строки:
int main (void) {
puts ("!!!Hello World!!!"); /* prints!!!Hello World!!! */
return EXIT_SUCCESS;
}
Любая программа на языке С начинается с функции main. Синтаксис написания функции main
int main (void) { // объявление
// тело функции
}
Чтобы понять, что означает объявление функции int main (void) необходимо знать о основных типах данных языка С, эти вопросы мы рассмотрим позднее.
Обычно вся программа разработчика происходит в теле функции main.
Программа выполняется сверху вниз по коду.
В данном случае программа состоит из двух строчек.
puts ("!!!Hello World!!!");
где puts – имя функции из стандартной библиотеки ввода/вывода языка С,
("!!!Hello World!!!") аргумент функции.
Функция puts выводит на дисплей строку, записанную в аргументе функции.
Заметим, что каждое законченное действие на языке С должно завершаться символом «; ».
Правило хорошего стиля программирования: Один символ «; » на строку кода.
Следующая строчка программы
return EXIT_SUCCESS;
return одно из ключевых слов языка С. Программист не может использовать ключевые слова в качестве имен переменных функций и т.д.
Оператор return производит возврат значения из функции.
В данном случае возвращается значение EXIT_SUCCESS из функции main.
Подведите курсор к словам EXIT_SUCCESS.
Появилось окошечко Macro Expantion (Просмотр Макросов). В окошечке на писано 0.
Удерживая Ctrl нажмите на слова EXIT_SUCCESS.
В редакторе открылся файл stdlib.h и мы видим конструкцию
#define EXIT_SUCCESS 0
#define EXIT_FAILURE 1
Как было сказано выше, знак # обозначает команду препроцессора. Команда препроцессора #define определяет идентификатор и последовательность символов, которая будет подставляться вместо идентификатора каждый раз, когда он встретится в исходном файле. Идентификатор называется именем макроса, а сам процесс замены — макрозаменой [1]. В общем виде директива выглядит таким образом:
#define ИМЯ_МАКРОСА последовательность_символовТ.е. вместо EXIT_SUCCESS в программе после работы препроцессора будет стоять 0.
Можно отметить, что команда #define один из способов задания констант в программе.
Заметим также, что символ «; »
Правило хорошего стиля программирования: Константы и макросы, заданные командой #define,обозначаются ЗАГЛАВНЫМИ_БУКВАМИ.
Использование именованных констант вместо чисел, также является правилом хорошего стиля программирования. А также позволяет при необходимости быстрее модернизировать программу.
Правило хорошего стиля программирования: В коде программы не должно быть «магических чисел», числа должны быть представлены именованными константами.
Упражнение 3
Закомментируйте строку:
// #include <stdlib.h>
Сохраните файл. Скомпилируйте программу.
В окне консоли появилась ошибка
..\src\HelloWorld.c:17: error: 'EXIT_SUCCESS' undeclared (first use in this function)
Которая говорит о том, что программа не знает переменную 'EXIT_SUCCESS'.
Объясните природу этой ошибки.
Исправьте ошибку.
Отладчик.
Для работы с отладчиком изменим код приложения.
В функции main добавим строки:
int main (void) {
int a = 5;
int b = -6;
int c = a + b;
puts ("!!!Hello World!!!"); /* prints!!!Hello World!!! */
return EXIT_SUCCESS;
}
Нажмите кнопку отладить (выделена сиреневым цветом). Появится окно о смене вида IDE (перспективы). Поставим галочку, нажмите yes.
Внешний вид среды изменился.
Данный набор окон предназначен для работы с отладчиком Debugger. От английского слова bug – ошибка, debug – поиск ошибок.
В этом режиме можно ставить точки останова в программе, выполнять пошаговые действия, просматривать значения переменных.
Программа остановила выполнение на первой строчке функции main.
В окне Variables (Переменные) появились переменные объявленные в функции. Указывается тип переменной, а также значения. Мы видим, что в первый момент в переменных находится «мусор». Поэтому важно указывать значение переменной при объявлении.
Правило хорошего стиля программирования: Всегда присваивайте значение переменной при объявлении.
Чтобы установить точку останова необходимо 2 раза щелкнуть на полях рядом со строкой кода (на сиреневом участке рисунка). Для пошаговой отладки используются кнопки со стрелками (выделены зеленым). Для переключения между режимом отладки и режимом программирования используются кнопки в верхнем правом углу (выделены красным).
Используя кнопку пошаговой отладки step over (F6) пройдите все строчки программы и понаблюдайте за изменением переменных в окне Variables (Переменные). Используя кнопки завершения отладки (выделены синим) завершите отладку. Сначала нажмите красный квадрат, затем 2 крестика.
Перейдите в режим программирования нажав С/С++ в правом верхнем углу.
Чтобы посмотреть клавиши управления меню help-> Key Assist или сочетание клавиш Ctrl+Shift+L.