Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Tekhnologia_programmirovania.pdf
Скачиваний:
182
Добавлен:
08.04.2015
Размер:
1.76 Mб
Скачать

Средства разработки на C++ 35

Рис.22. Добавление выражений в окно просмотра

Нажав четыре раза F7, дойдем до строки с ошибкой. Нажмем в этот момент Ctrl+F7, появится окно, рис.23, в поле которого Watch Expression, можно ввести переменную или выражение для просмотра.

Введем сначала имя переменной b, а затем выражение 2 * 2. В окне просмотра увидим значение переменной и выражения, рис.24. Теперь очевидна причина ошибки – деление на нуль.

Пример с выражением 2*2 приведен, чтобы показать, что в окне просмотра могут вычисляться выражения и отображаться их значения.

Рис.25. Добавление выражений в окно просмотра

2.2. Система C++ Builder

Система C++ Builder позволяет разрабатывать самые сложные программы для операционной системы Windows с современным графическим интерфейсом. Она имеет богатую возможностями среду разработки, полное изучение которой требует много времени, поэтому здесь кратко рассмотрим только создание консольных приложений в среде C++ Builder версии 6. Компания Borland выпускает с сентября 2006 г. бесплатные варианты своих средств разработки под названием Turbo Explorer, которые обладают небольшими ограничениями, по сравнением с полными вариантами, но вполне годны для учебных целей. Среда разработки на языке C++ получила название Turbo CPP, ее интерфейс лишь немного модернизирован по сравнению с интерфейсом C++ Builder 6. Скачать Turbo Explorer можно с сайта www.turboexplorer.com.

Разработка консольных приложений

Консольные приложения выполняются в текстовом окне и управляются из командной строки без графического интерфейса. Их использования достаточно для изучения языка C++ как такового.

36 2

Рис. 26. Выбор типа вновь создаваемого элемента

При загрузке C++ Builder автоматически создается оконный проект, содержащий одно пустое окно (форму), которое можно использовать в качестве основы будущей программы. Для создания консольного приложения нужно выполнить команду меню File, New, Other…, в

диалоге New Items выбрать Console Wizard (рис. 26) и нажать OK.

Мастер создания консольного приложения предъявит диалог, на котором следует сделать настройки, показанные на рис.27.

Рис.27. Установка параметров консольного приложения

После нажатия кнопки OK в окне Console Wizard будет

предложено сохранить автоматически созданный оконный проект, о котором речь шла выше, рис.28. Здесь нужно нажать кнопку No.

Средства разработки на C++ 37

Рис.28. Предложение сохранить изменения в проекте

Система автоматически сгенерирует заготовку программы, состоящую из функции main, которая будет показана в окне программного кода, рис. 29. Здесь можно вводить и редактировать текст программы.

Рис. 29. Окно программного кода

Добавим в окно кода три строки, чтобы получилась следующая программа 3.

Программа 3. Hello

#include <iostream.h>

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

{

cout << "Hello, World!"; cin.get();

return 0;

}

38 2

Рис.30. Сохранение модуля кода

Сохраним проект командой File, Save Project As… . Сначала

откроется диалог сохранения модуля программного кода, рис.30. Здесь следует выбрать папку для размещения файлов проекта и дать модулю кода имя, например, UnHello.cpp. Приставка Un будет напоминать, что файл содержит модуль (Unit) кода, а слово Hello отражает назначение модуля. Проекты в C++ Builder состоят из несколько файлов, поэтому каждый проект целесообразно размещать в отдельной папке. В приводимом примере для программы создана папка Hello. После сохранения модуля кода будет предложено сохранить файл проекта под именем Project1.bpr. Назовем проект PrHello.bpr и сохраним его в той же папке Hello, что и модуль кода.

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

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

Project:

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

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

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

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

Средства разработки на C++ 39

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

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

ее окно закрывается.

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

Пошаговое выполнение (трассировку) программы можно производить командами меню 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. Только они необходимы при переносе программ с компьютера на

40 2

компьютер. Остальные файлы можно безболезненно удалять с диска, так как они при компиляции всякий раз создаются заново.

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

UnHello.cpp.

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

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

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

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

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

только один раз и в откомпилированном виде записываются на диск. Директива

#pragma hdrstop

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

Директива

#pragma argused

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

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, в пределах которой обнаружена данная неточность.

Средства разработки на C++ 41

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

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

#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

 

42 2

#include <iostream.h>

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

{

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

return 0;

}

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

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

Функцию Rus нельзя применять в цепочках печати вида: cout << Rus(”Здравствуй,” << Rus(” Мир!");

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

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

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

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

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