Изучение кода программы.




Рассмотрим код программы и познакомимся с некоторыми основами языка С.

/*

============================================================================

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.

 

 

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-04-27 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: