- •Чердынцева м.И.
- •В среде Code::Blocks
- •Содержание
- •Введение
- •1 Работа в среде code::blocks
- •2 Проекты, содержащие один модуль
- •Создание проекта
- •3 Проект, состоящий из нескольких файлов
- •Сохранение проекта
- •Открытие существующего проекта
- •4 Использование отладчика
- •4.1 Подготовка программы к отладке
- •4.2. Поиск ошибки в программе с помощью отладчика
- •5 Вопросы для повторения
- •6 Упражнения по программированию
1 Работа в среде code::blocks
В методических указаниях рассматриваются приемы разработки и отладки программы в интегрированной среде разработки Code::Blocks. Описание ориентировано на версию 1.0 в сборке от ноября 2006 года.
Окно IDE Code::Blocks при запуске выглядит, как показано на рисунке 1.
Рисунок 1
Для работы необходимо или создать новый проект, или открыть существующий. Проект – это набор файлов: заголовков, текстов программ, ресурсов, установок, конфигураций.
2 Проекты, содержащие один модуль
Создание проекта
Для создания нового проекта необходимо в меню выбрать команду File–New–Project.
Появляющееся после этого диалоговое окно предназначено для определения шаблона создаваемого проекта. Решение задач будет рассматриваться для консольных приложений. Поэтому среди предлагаемых шаблонов используем шаблон Console Application. После выбора соответствующей шаблону пиктограммы следует нажать на кнопку “Go”.
Создание шаблона предполагает выполнение последовательности шагов под управлением мастера. Первое окно, представленное на рисунке 2, предназначено для определения имени проекта и его местоположения.
Рисунок 2
В процессе ввода имени создаваемого проекта и выбора каталога для расположения файлов проекта, будет меняться информация в окнах Project filename и Resulting filename – эти окна служат для контроля ввода. Следует отметить, что в процессе работы в указанном каталоге будут создаваться различные файлы, в том числе и исполнимые файлы с расширением exe. Это следует учесть при выборе каталога для размещения проекта. Например, в учебных компьютерных классах может быть запрещено сохранение исполнимых файлов на сетевых дисках и системных дисках персональных компьютеров.
После определения имени и положения проекта мастер предлагает выбрать используемый компилятор и конфигурацию проекта, как показано на рисунке 3. Можно использовать параметры, предлагаемые по умолчанию.
Рисунок 3
Последний шаг в определении создаваемого файла – выбор используемого языка программирования – представлен на рисунке 4.
Для завершения работы с мастером создания проектов необходимо нажать кнопку Finish.
Созданный новый проект добавляется к рабочему пространству (Workspace) Code::Blocks, состояние которого отображается в специальном окне менеджера (Management). Проект содержит папку исходных модулей (Sources), в ней находится один файл с исходным модулем с именем main.cpp. При создании непустого проекта в него всегда помещается файл, содержащий функцию main() и ему дается имя main.cpp.
Рисунок 4
Если посмотреть папку C:\Temp, то в ней будет расположена папка нового созданного проекта C:\Temp\Program1. В этой папке находятся два файла: файл проекта – Program1.cbp; и файл main.cpp.
Чтобы увидеть содержимое файла main.cpp достаточно щелкнуть на нем в окне менеджера. При этом в рабочей области Code::Blocks появится вкладка, на которой будет представлен этот файл, доступный для редактирования (рисунок 5).
Создаваемый для консольных приложений файл main.cpp содержит готовую к выполнению программу “Hello world!”. Текст этой программы выглядит следующим образом:
#include <iostream>
int main()
{
std::cout << "Hello world!" << std::endl;
return 0;
}
Рисунок 5
Первая строка содержит директиву препроцессора:
#include <iostream>
В языке С++ определены специальные файлы заголовков (header), которые содержат информацию, необходимую компилятору. Директива препроцессора #include сообщает о том, какой заголовочный файл должен быть включен в исходный текст программы.
Подключение файла <iostream> необходимо для того, чтобы можно было использовать для вывода объект cout. Наиболее просто организовать ввод–вывод в программах на С++ используя стандартные потоковые объекты cin и cout. Эти объекты связаны со стандартными устройствами консольного ввода и вывода – клавиатурой и дисплеем.
Поскольку имена cin и cout в приводимой программе не описаны, необходимо указать пространство имен, в котором они определены. Для всех стандартных имен языка C++ пространство имен называется std.
При обращении к объектам, объявленным в этом пространстве, имя пространства имен может быть указано явно. Для этого используется операция расширения области видимости ::. Такой способ удобно использовать, если к какому-то пространству имен потребуется одно–два обращения. В противном случае, чтобы не загромождать текст программы лучше выносить определение используемого пространства имен оператор using namespace.
Тогда текст программы “Hello World” будет выглядеть так:
#include <iostream>
using namespace std;
int main()
{
cout << "Hello world!" << std::endl;
return 0;
}
Выполнение программы на С++ всегда начинается с вызова функции с именем main(). Эта же функция должна вернуть управление операционной системе после своего завершения и сообщить код возврата. В случае аварийного завершения операционной системе будет сообщено ненулевое целочисленное значение – код ошибки (код возврата). Естественно предположить, что в случае безошибочной работы нужно возвратить признак нормального завершения 0. Именно поэтому в заголовке функции main() указано, что возвращаемый ею результат должен быть целого типа. А последним оператором тела функции main()является оператор возврата:
return 0;
Чтобы проверить работоспособность программы Hello World, выполним ее. Для этого нужно последовательно провести компиляцию, компоновку и выполнение. Сделать это можно через команду меню Build – Build and run, или нажав клавишу F9, или выбрав соответствующую пиктограмму на кнопочной панели Compiler Toolbar , приведенной на рисунке 6.
Рисунок 6
Выбрав любой из вышеперечисленных способов запуска программы, можно увидеть в окне Messages–Build log сообщения о последовательном выполнении всех этапов. В этом же окне будут выдаваться и сообщения об ошибках. Поскольку программа не содержит ошибок, для ее выполнения будет открыто подчиненное окно выполнения консольного приложения. Как показано на рисунке 7, выполнение программы заключается в выводе строки “Hello world!”. Результат вывода виден в первой строке окна выполнения. Ниже выдается сообщение о том, что процесс выполнения программы завершен с кодом возврата 0 и время, затраченное на выполнение. В последней строке выводится подсказка о том, что для закрытия окна выполнения консольного приложения и возврата в среду Code::Blocks необходимо нажать любую клавишу.
Упражнение. Измените текст программы, так как было показано выше, вынеся определение используемого пространства имен. Проверьте, что результат выполнения не изменится.
Если теперь открыть папку, в которой располагается проект (C:\Temp\Program1), то можно увидеть, что в ней появился исполнимый файл program1.exe. Кроме этого должна появиться одна из папок \obj\Release или \obj\Debug , в которой находится файл с именем main.o – это объектный модуль программы.
Рисунок 7
При создании проекта были выбраны две предлагаемые конфигурации – для отладки (Debug) и для реализации (Release). Они отличаются тем, что при создании конфигурации Debug в код объектного модуля вставляется дополнительная информация, которая может понадобиться отладчику. В код для реализации эта информация не добавляется. Чтобы получить объектный модуль для отладчика следует переключить конфигурацию (Build target) с Release на Debug как показано на рисунке 6.
Если сравнить размеры полученных объектных файлов, то можно увидеть, насколько отладочная информация увеличивает размер объектного модуля.
Когда не нужно запускать программу на выполнение, то компиляцию и компоновку можно выполнить, используя команду Build (Ctrl-F9) или выбрать соответствующую кнопку на панели Compiler Toolbar (рисунок 6). Уже готовую к выполнению программу можно запустить командой Run (Ctrl-F10) или соответствующей кнопкой на панели.
Поскольку каждая законченная программа будет содержать, по крайней мере, все вышеперечисленные модули и файлы, для каждого проекта формируется отдельный каталог. Следует учитывать, что просто собрать нужные файлы и разместить их в соответствующих каталогах – это не значит создать проект. Описание проекта хранится в файле с расширением cbp. Это текстовый файл, содержимое которого можно просмотреть в любом редакторе. Однако создавать или править содержимое файла проекта вручную не рекомендуется.
Рассмотрим еще раз окно для работы с проектом на рисунке 5. Окно разделено на несколько панелей, каждая из которых может быть скрыта или выведена на экран через пункты меню View. Размеры и положение панелей может быть изменено по желанию.
В панели Management представлена информация об открытых в рабочем пространстве проектах. Если в рабочем пространстве открыто несколько проектов одновременно, то следует внимательно следить за тем, какой из проектов является в данный момент активным. Именно для него будут выполняться команды Build и Run. Чтобы переключиться на другой проект, нужно сделать его активным, используя команду контекстного меню Activate project. Ненужные в данный момент проекты лучше закрыть.
Панель Open file list содержит список файлов открытых в панели редактора. Файлы, входящие в проект проще всего открыть двойным щелчком на их имени. Если нужны другие файлы, они открываются командой меню File–Open.
Панель редактора является основной рабочей областью, в которой каждый открытый файл представляется на отдельном листе–закладке. Имя листа совпадает с именем открытого файла.
Панель Messages содержит несколько вкладок для отображения различных сообщений. На вкладке Build log выдается информация о процессе компиляции и построения исполнимого модуля программы. Если в процессе компиляции или компоновки возникают ошибки, они отражаются на вкладке Build messages.
