Выполнение и отладка программы — КиберПедия 

Типы сооружений для обработки осадков: Септиками называются сооружения, в которых одновременно происходят осветление сточной жидкости...

Архитектура электронного правительства: Единая архитектура – это методологический подход при создании системы управления государства, который строится...

Выполнение и отладка программы

2018-01-03 152
Выполнение и отладка программы 0.00 из 5.00 0 оценок
Заказать работу

Компиляция и сборка программы выполняется командами меню Project:

Compile Unit (комбинация клавиш Alt+F9) – компиляция модуля, создается объектный файл UnHello.obj;

Make PrHello (или Ctrl+F9) – сборка программы из откомпилированных модулей;

Build PrHello – сборка программы с перекомпиляцией всех модулей.

После выполнения команд Make или Build создается исполняемая программа PrHello.exe, имя которой совпадает с именем проекта.

Для запуска программы нужно выполнить команду Run, Run или нажать клавишу F9. При выполнении рассматриваемой программы будет создано текстовое окно, в которое выведутся результаты работы, рис.18. После нажатия клавиши Enter работа программы завершается и ее окно закрывается.

Рис.18. Работа консольного приложения

Пошаговое выполнение (трассировку) программы можно производить командами меню Run:

Step over или F8 – выполнение одной строки программы без захода в функции;

Run, Trace into или F7 – выполнение одной строки программы с заходом в функции, вызываемые в выполняемой строке;

Run, Go to cursor или F4 – выполнение программы до точки расположения курсора;

Run, Program reset или Ctrl+F2 – выход из режима отладки;

Add Watch или Ctrl+F5 – добавление переменной или выражения для просмотра.

Окно для наблюдения за переменными и выражениями выводится командой View, Debug Windows, Watches или Ctrl+Alt+W.

Файлы проекта

В состав проекта для программы 3 войдут файлы:

UnHello.cpp – файл с программным кодом;

PrHello.bpr – файл с описанием проекта;

UnHello.obj – файл, содержащий машинные команды (объектный);

PrHello.exe – рабочая программа.

Кроме этого, автоматически будут созданы файлы:

PrHello.bpf – текстовый файл с описанием проекта;

PrHello.res – двоичный файл ресурсов проекта;

PrHello.tds – двоичный файл c отладочной информацией;

*.~cp, *.~bpr, *.~h – резервные копии соответствующих файлов.

Основными файлами являются файлы: *.bpr, *.bpf, *.res, *.cpp, *.h. Только они необходимы при переносе программ с компьютера на компьютер. Остальные файлы можно безболезненно удалять с диска, так как они при компиляции всякий раз создаются заново.

В программу могут входить несколько cpp-файлов. Тот из них, который содержит функцию main, называют головным модулем проекта. В рассматриваемом примере головным модулем является файл UnHello.cpp.

Автоматическая генерация кода

Из рассмотренного примера видно, что стандартные элементы программного кода C++ Builder генерирует автоматически, в частности, создает простейший вариант главной функции программы main. Также автоматически выполняются действия по созданию файла проекта, нужно только правильно сохранять проект.

В исходный код включаются директивы препроцессора, которые рационализируют процесс создания программы. Рассмотрим их.

В программу часто входят весьма большие заголовочные файлы, многократная перекомпиляция которых не нужна и занимает много времени. Если в настройках среды в диалоге Project, Options, вызываемом командой меню Project, Options…, выбран переключатель Use pre-compiled headers, то заголовочные файлы компилируются только один раз и в откомпилированном виде записываются на диск. Директива

#pragma hdrstop

завершает список заголовочных файлов, подлежащих предварительной компиляции.

Директива

#pragma argused

подавляет вывод предупреждения о том, что аргументы функции, следующей за этой директивой, не используются. Если удалить (или закомментировать) эту директиву (рис. 16), компилятор выдаст предупреждение о том, что нигде не используются аргументы функции main:

[C++ Warning] UnHello.cpp(16): W8057 Parameter 'argc' is never used

[C++ Warning] UnHello.cpp(16): W8057 Parameter 'argv' is never used

Здесь 16 – номер последней строки функции main, в пределах которой обнаружена данная неточность.

Особенности ввода и вывода

Попытаемся напечатать приветствие по-русски.

#include <iostream.h>

int main(int argc, char* argv[])

{

cout << "Здравствуй, Мир!";

cin.get();

return 0;

}

Программа выведет:

╟фЁртёЄтєщ, ╠шЁ!

Непонятный набор символов вместо русских букв выводится потому, что при вводе текста программы и при ее выполнении используются разные кодовые таблицы с различной кодировкой русских букв. Windows-программы, в том числе и C++ Builder, используют кодовую таблицу 1251, исполняется же консольная программа в текстовом окне, где применяется кодовая таблица 866 операционной системы DOS. Чтобы правильно отображать русские буквы при работе программы, необходимо делать перекодировку из кодовой таблицы 1251 в кодовую таблицу 866. Для этого можно применять функцию

bool CharToOem(char* in, char* Buff);

которая переводит строку символов in в строку Buff, используя кодировку, принятую в среде исполнения программы. В нашем случае средой выполнения программы является окно DOS, поэтому будет использована соответствующая кодировка русских букв. Для доступа к функции
CharToOem в программу нужно включить заголовочный файл windows.h.

Напишем вспомогательную функцию Rus для упрощения преобразования:

#include <windows.h> // Для доступа к CharToOem

char Buff[500]; // Буфер для преобразованной строки

char* Rus(char* in) // Функция для преобразования русских букв

{

CharToOem(in, Buff); // Функция CharToOem преобразует строку in

return Buff; // в строку Buff, используя кодировку DOS

}

#pragma hdrstop

#pragma argsused

#include <iostream.h>

int main(int argc, char* argv[])

{

cout << Rus("Здравствуй, Мир!");

cin.get();

return 0;

}

Эта программа, как и ожидалось, напечатает:

Здравствуй, Мир!

Функцию Rus нельзя применять в цепочках печати вида:

cout << Rus(”Здравствуй,” << Rus(” Мир!");

так как в этом случае будет напечатано:

Здравствуй, Здравствуй,

Для печати нескольких строк по-русски каждую строку можно выводить отдельным оператором:

cout << Rus(”Здравствуй,”;

cout << Rus(” Мир!");

В дальнейшем дополнительно не будем обговаривать, как организовывать вывод на русском языке.

 

 



Поделиться с друзьями:

Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ - конструкции, предназначен­ные для поддерживания проводов на необходимой высоте над землей, водой...

Состав сооружений: решетки и песколовки: Решетки – это первое устройство в схеме очистных сооружений. Они представляют...

Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...

Адаптации растений и животных к жизни в горах: Большое значение для жизни организмов в горах имеют степень расчленения, крутизна и экспозиционные различия склонов...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.011 с.