
Лабораторная работа № 1
Интегрированная среда разработки C++Builder
На рис. 1 показан C++Builder сразу после запуска. То, что вы видите — это интегрированная среда разработки (IDE), включающая в себя четыре основных элемента. Наверху находится главное окно. Оно содержит обычную линейку меню, инструментальную панель (слева) и палитру компонентов (многостраничная панель справа).
Рис. 1 C++Builder с пустой формой
Правее инспектора объектов располагается конструктор форм. При запуске C++Builder конструктор отображает пустую форму. Форма — это центральный элемент визуального программирования. Она может представлять главное окно программы, дочернее окно, диалоговую панель. На ней вы размещаете различные элементы управления (типичный и самый распространенный — командная кнопка), называемые визуальными компонентами. Существуют также и невизуальные компоненты, например, таймеры и компоненты связи с базами данных. В инспекторе объектов вы сопоставляете событиям компонентов написанные вами процедуры обработки. Это, по существу, и есть визуальное программирование, базирующееся на компонентной модели.
Наконец, под конструктором форм находится окно редактора кода (на рисунке оно почти полностью закрыто формой).
Окно редактора кода, показанное на рис. 2, является основным рабочим инструментом программиста. Его функции не ограничиваются редактированием исходного текста программы.
Нужно сказать, что почти все инструментальные окна C++Builder являются стыкуемыми окнами. Вы, наверное, не раз встречались в различных программах со стыкуемыми инструментальными панелями. Их масса в Microsoft Word, в котором я пишу этот текст. Такая панель может быть плавающей, а может быть состыкована с главным окном программы. В этом случае она становится обычной инструментальной линейкой.
При первоначальном запуске C++Builder к левой стороне редактора кода пристыковано окно обозревателя классов. Это не просто инструмент просмотра структуры классов. При некотором навыке можно использовать его с большой выгодой, поскольку он позволяет автоматически вводить в описание класса новые элементы (функции, данные и свойства).
Рис. 2. Окно редактора кода с обозревателем классов
В редакторе можно открывать сразу несколько файлов исходного кода. При этом он cтановится многостраничным окном с закладками. Надписи на закладках отражают имена
файлов.
В C++Builder, как и во многих других современных программах, многие операции реализуются через контекстные меню, которые вызываются нажатием правой кнопки в том или ином окне.
Поэкспериментируйте с различными контекстными меню; посмотрите, какие имеются пункты в контекстном меню редактора. Многое понятно и без всяких объяснений, а если непонятно, вы можете при открытом меню нажать F1 для вызова справки C++Builder.
Hello World
По традиции изучение любого языка программирования начинается с того, что новичку предлагают написать программу, которая выводит на экран слова “Hello World”. Мы не будем отступать от этой традиции и покажем, как реализовать такую программу в C++Builder. Мы составим даже две программы; одну — с выводом на консоль, а другую — с графическим интерфейсом пользователя (GUI), т. е. настоящее приложение Windows.
Hello World — консольное приложение
Консольное приложение Windows похоже на программу DOS, но только внешне. Оно работает в “окне MS-DOS”, которое на самом деле в 32-битных системах Windows таковым не является. Консольное приложение — 32-битное, и запустить его в обычной 16-битной DOS невозможно. Однако, подобно примитивной программе DOS, оно ориентировано на символьный ввод-вывод, что делает консольные приложения полезными при изучении стандартных функций и конструкций языка С.
Чтобы создать в C++Builder консольное приложение, выполните следующие действия:
-
В
ыберите в главном меню File | New| Other - появится многостраничная диалоговая панель New Items.
На странице New выберите Console Wizard, нажмите ОК и в следующей панели выберите C++ с установкой флажка «Use VCL», после чего нажмите ОК.
На экране появится заготовка головной Си-программы:
Примечание. Левое окно (обозреватель классов) можно закрыть.
-
Выберите в главном меню File | Save Project as... и сохраните файлы проекта в отдельном каталоге. Рекомендуется задавать осмысленные имена как для Си-модуля (первое имя), так и для файла проекта (второе имя). Имя файла проекта будет присвоено exe-модулю программы.
Итак, мы получили заготовку головной Си-программы:
#include <vcl.h>
#pragma hdrstop
#pragma argsused
int main(int argc, char* argv[ ])
{
return 0;
}
Модифицируйте код так, чтобы он выглядел следующим образом (строчки, которые требуется добавить, выделены жирным шрифтом):
#include <vcl.h>
#include <stdio.h>
#include <conio.h>
#pragma hdrstop
#pragma argsused
int main(int argc, char* argv[ ])
{
printf("Hello World! \n");
getch() ;
return 0;
}
-
Сохраните измененный файл (File Save в главном меню) и нажмите кнопку Run на инструментальной панели (кнопка с зеленой стрелкой). C++Builder компилирует исходный файл, произведет компоновку исполняемого файла и запустит программу. На экране должно появиться окно:
-
Если вы нажмете любую клавишу на клавиатуре, программа завершится, окно закроется.
-
Закройте проект (File | Close All в главном меню).
Вот и все — консольное приложение готово и работает. Для этого вам потребовалось ввести вручную четыре строки кода на С. Первые две из них — директивы препроцессора #include, включающие в исходный код два заголовочных файла стандартной библиотеки. Файл stdio.h содержит прототипы общеупотребительных функций буферизованного ввода-вывода (мы здесь использовали функцию prinf() — форматируемый вывод на консоль). Файл соnio.h необходим потому, что для ожидания нажатия клавиши мы применили низкоуровневую функцию ввода символа getch(), при этом символ, возвращаемый функцией, мы игнорировали.
Функция main () присутствует в каждой программе C и является ее входной точкой. Именно этой функции передается управление после загрузки и инициализации программы.
Остальные директивы препроцессора (#pragma) мы будем изучать позже. Они здесь не имеют принципиального значения, и их можно было бы удалить. Но это привело бы к выдаче предупреждений при компиляции.
Hello World — приложение gui
Выполните такие действия:
-
Создайте новый проект, выбрав в меню File | New Application (это эквивалентно выбору значка Application в диалоге New Items). При этом будет открыт конструктор форм с новой, пустой формой. Инспектор объектов будет показывать ее свойства.
-
Выберите в левой колонке страницы Properties свойство Caption. Замените его значение (в правой колонке) на “Hello World”. Обратите внимание, что этот текст сразу же появляется в строке заголовка формы.
Теперь разместите на форме необходимые компоненты — две командных кнопки и метку, в которой будет отображаться требуемый текст.
-
Откройте в палитре компонентов главного окна C++Builder страницу Standard (она открыта по умолчанию) и выберите в ней компонент Button (значок, изображающий командную кнопку). После этого щелкните кнопкой мыши в том месте формы, где должен находиться верхний левый угол компонента. Кнопка будет помещена на форму; вокруг нее будут находиться черные маркеры, которые позволяют изменять размер кнопки с помощью мыши и, кроме того, служат признаком активного (выбранного) компонента формы. Перемещать компонент по форме можно, поместив курсор внутрь компонента и держа нажатой левую кнопку мыши(ЛКМ).
-
В инспекторе объектов измените свойство Caption кнопки на “Выход”, аналогично тому, как это было сделано для самой формы. Введенный текст задает надпись на кнопке. (По умолчанию это Buttonl.). Выберите в палитре компонентов значок Label (буква А) и также поместите компонент метки на форму:
-
Выделите Label1 и выберите в инспекторе объектов ее свойство Font. Если нажать маленькую кнопку с многоточием в правой колонке инспектора, появится обычный диалог выбора шрифта, в котором можно задать желаемую гарнитуру, размер и цвет шрифта текста. Выберем крупный красный шрифт:
-
К данному моменту мы практически завершили то, что называют этапом визуального проектирования программы. Теперь нужно написать программный код, который будет решать требуемую задачу, в данном случае — вывод (по команде) на экран строки текста “Hello World” (вместо названия метки Label1).
-
Выберите на форме кнопку и перейдите в инспекторе объектов на страницу событий (Events).
-
Дважды нажмите кнопку мыши на событии OnClick; C++Builder создаст заготовку процедуры обработки ButtonlClick() и установит курсор редактора кода внутри нее. Введите строку кода, чтобы функция выглядела так:
void _fastcall TFormI::Button1Click(TObject *Sender)
{
Close () ;
}
Вернитесь из редактора кода на форму,
нажав кнопку
.
Для формы также перейдите в инспекторе объектов на страницу событий (Events) и
cделайте двойной щелчок по полю события OnCreate - C++Builder создаст заготовку процедуры обработки этого события и установит курсор внутри нее. Введите строку кода
void __fastcall TForm1::FormCreate(TObject *Sender)
{
Label1->Caption = “Hello World !” ;
}
-
При желании измените размер формы (как это делается с обычным окном) и сохраните файлы проекта.
-
Осталось только скомпилировать и запустить программу. Нажмите на инструментальной панели C++Builder кнопку с зеленой стрелкой (Run). Если при компиляции возникают ошибки, значит вы, скорее всего, сделали где-то опечатку; другие проблемы маловероятны.
Вот и все. После загрузки программы в окне будет выведена строка сообщения. Кнопка «Выход» завершает работу программы, закрывая ее главное окно (его можно закрыть и системной кнопкой в правом верхнем углу — это то же самое). Ниже показана запущенная программа.
Как видите, процесс визуального проектирования пользовательского интерфейса идейно очень прост. Вы берете из палитры очередной компонент, размещаете его на форме, подгоняете положение, размер, устанавливаете различные свойства с помощью инспектора объектов. После размещения всех необходимых компонентов следует этап собственно программирования, т. е. написания кода на C++ для различных событий. Обратите внимание — в визуально спроектированном приложении C++Builder любой написанный вами код так или иначе вызывается из некоторой процедуры обработки события.
Cтроки кода, которые мы ввели в обработчики событий, достаточно понятны. Первая просто вызывает функцию закрытия формы Close (), вторая присваивает свойству Caption расположенной на форме метки требуемую символьную строку.
Примечание. Разумеется, вывод текстовой строки «Hello Word» можно было выполнить и без метки
Label1, создав, например, окно вывода сообщения оператором:
ShowMessage(“Hello World”);