Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабораторная работа №1

.pdf
Скачиваний:
39
Добавлен:
27.03.2016
Размер:
654.97 Кб
Скачать

ТЕМА 1. ВИЗУАЛЬНОЕ ПРОГРАММИРОВАНИЕ

ЛАБОРАТОРНАЯ РАБОТА №1

Цель лабораторной работы: научиться использовать визуальные средства разработки программ в среде C++ Builder. Написать и отладить программу линейного алгоритма.

1.1. Интегрированная среда разработчика C++ Builder

Среда C++ Builder визуально реализуется в виде нескольких окон, одновременно раскрытых на экране монитора. Количество, расположение, размер и вид окон может меняться программистом в зависимости от его текущих нужд, что значительно повышает производительность работы. При запуске C++ Builder вы можете увидеть на экране картинку, подобную представленной на рис. 1.1.

Рис.1.1:

1- главное окно; 2 – основное меню; 3 – пиктограммы основного меню; 4 - окно инспектора объектов; 5 – окно текста программы;

6 - окно пустой формы; 7 – меню компонентов

Главное окно всегда присутствует на экране и предназначено для управления процессом создания программы. Основное меню содержит все необходимые средства для управления проектом. Пиктограммы облегчают доступ к наиболее часто применяемым командам основного меню. Через меню компонентов осуществляется доступ к набору стандартных сервисных программ среды C++ Builder, которые описывают некоторый визуальный элемент (компонент), помещенный программистом в окно формы. Каждый

компонент имеет определенный набор свойств (параметров), которые программист может задавать. Например, цвет, заголовок окна, надпись на кнопке, размер и тип шрифта и др.

Окно инспектора объектов (вызывается c помощью клавиши F11) предназначено для изменения свойств выбранных компонентов и состоит из двух страниц. Страница Properties (Свойства) предназначена для изменения необходимых свойств компонента, страница Events (События) – для определения реакции компонента на то или иное событие (например, нажатие определенной клавиши или щелчок по кнопке мыши).

Окно формы представляет собой проект Windows-окна программы. В это окно в процессе написания программы помещаются необходимые компоненты. Причем при выполнении программы помещенные компоненты будут иметь тот же вид, что и на этапе проектирования.

Окно текста программы предназначено для просмотра, написания и редактирования текста программы. В системе C++ Builder используется язык программирования C++. При первоначальной загрузке в окне текста программы находится текст, содержащий минимальный набор операторов для нормального функционирования пустой формы в качестве Windowsокна.

Программа в среде C++ Builder составляется как описание алгоритмов, которые необходимо выполнить, если возникает определенное событие,

связанное с формой (например, щелчок по кнопке мыши – событие OnClick, создание формы – OnCreate). Для каждого обрабатываемого в форме события с помощью страницы Events инспектора объектов в тексте программы организуется функция, между символами { и }, в которой программист записывает на языке С++ требуемый алгоритм.

Переключение между окном формы и окном текста программы осуществляется с помощью клавиши F12.

1.2. Структура программ C++ Builder

Программа в C++ Builder состоит из множества моделей, которые объединяются в один проект с помощью файла проекта (файл с расширением

.bpr). Файл проекта автоматически создается и обрабатывается средой C++ Builder и не предназначен для редактирования. Объявления классов, функций и переменных находятся в заголовочном файле (расширение .h), текст программы, написанный на языке C++, – в файле исходного текста (расширение .cpp).

Описание окона формы находится в файле с расширением .dfm. Файл проекта может быть только один, файлов с другими расширениями может быть несколько.

Внимание! Для того чтобы перенести проект на другой компьютер, необходимо переписать все файлы с расширениями: bpr, h, cpp, dfm.

При запуске программы на выполнение сначала препроцессор преобразует текст в соответствии с имеющимися директивами. После этого компилятор переводит все тексты в машинный код (расширение .obj), а

компоновшик объединяет все файлы в единый модуль (расширение .exe), который может быть запущен на выполнение.

Файл проекта имеет следующую типовую структуру:

//Директивы препроцессора

#include <vcl.h> #pragma hdrstop

//Подключение файлов форм и файлов ресурсов

USEFORM("Unit1.cpp", Form1);

//Главная программа

WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)

{

Application->Initialize(); //Инициализация

//Создание объектов форм

Application->CreateForm(__classid(TForm1), &Form1); Application->CreateForm(__classid(TForm2), &Form2); Application->Run(); //Выполнение программы

}

Заголовочный файл имеет следующую структуру:

//Директивы препроцессора

#ifndef Unit1H #define Unit1H

//--------------------------------------------------------------

-------------

#include <Classes.hpp> #include <Controls.hpp> #include <StdCtrls.hpp> #include <Forms.hpp>

//Объявление класса формы class TForm1 : public TForm

{

//Компоненты, размещенные на форме

__published: //IDE-managed Components

TLabel *Label1; TEdit *Edit1; TMemo *Memo1; TButton *Button1;

private: //User declarations

//Объявления функций, типов переменных, доступных //только в данном модуле

public: //User declarations

//Объявления функций, типов, переменных, доступных //в данном и в других модулях

__fastcall TForm1(TComponent* Owner); };

extern PACKAGE TForm1 *Form1;

//Объявления функций, типов, переменных, которые //не включаются в данный класс

#endif

Файл текста программы имеет следующую структуру:

// Директивы препроцессора

#include <vcl.h> //Подкл. заголовочного файла библиотеки VCL #pragma hdrstop //Установки компилятора

#include "Unit1.h" //Подключение заголовочного файла

#pragma package(smart_init) #pragma resource "*.dfm"

TForm1 *Form1; //Объявление объекта формы

//--------------------------------------------------------------

//Вызов конструктора формы

__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner)

{

}

Занаие №1. Написание программы «Тригонометрия»

Цель работы: написать программу для расчета значений тригонометрических функций.

Для создания формы использовать компоненты: Button – для инициирования вычислений; Label – для подписей;

Edit – для ввода исходных данных;

RadioGroup – для выбора тригонометрической функции; ComboBox– для выбора единицы измерения угловой величины; CheckBox – для включения режима округления результата; ListBox – для вывода результатов вычислений в виде списка.

Компоновка формы программы представлена на рисунке 1.

Рисунок 1 – Рекомендуемая компоновка формы

Рекомендации для выполнения лабораторной работы:

1)Запустите C++ Builder. При запуске автоматически создается новый проект. Для создания нового проекта, в случае если он не создался автоматически или вы его закрыли, выполнить команду меню File / New /Application.

2)Сохраните проект в свою рабочую папку, выполнив команду меню File / Save Project As. Будет сохранено несколько файлов проекта.

3)На панели компонентов выберите вкладку Standard. На ней располагаются необходимые компоненты:

Button

ComboBox

 

 

Label

CheckBox

 

 

Edit

ListBox

 

 

RadioGroup

 

 

 

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

При создании объект RadioGroup1 не содержит ни одного варианта выбора и по умолчанию выглядит так, как показано на рисунке 2. Настройка этого объекта будет рассмотрена позднее.

Рисунок 2 – Внешний вид объекта RadioGroup1 без настроек

4) Измените подпись формы. Для этого нужно выбрать форму (щелкнуть по заголовку формы) и в окне свойств объекта во вкладке Properties изменить значение свойства Caption. Вместо подписи Form1 введите «Тригонометрия».

Рисунок 3 – Свойство формы Caption (подпись)

5) Измените подписи объектов Label1 и Label2 в соответствии с рисунком 1. Для этого выберите каждый объект Label и в окне свойств объекта во вкладке Properties изменить значение свойства Caption.

6)Уберите текст из объектов Edit1 (по умолчанию в поле Edit1 находится надпись, совпадающая с именем компонента, т.е. «Edit1»). Для этого выберите объект Edit и в окне свойств объекта во вкладке Properties очистите значение свойства Text.

7)Объект Edit1 предназначен для ввода исходных числовых данных, необходимых для расчета значения функции. Для того чтобы пользователь не

смог ввести буквы или другие символы, которые могут вызвать ошибку при расчетах, необходимо создать фильтр клавиш клавиатуры. Для этого необходимо выбрать объект Edit1 и в окне свойств объекта открыть вкладку

Events («События»). В появившемся списке найти событие

OnKeyPress («по нажатию клавиши») и сделать двойной щелчок левой кнопкой мыши по пустому полю. В появившейся заготовке функции написать код фильтра клавиш:

Данный код фильтрует нажатия всех клавиш на клавиатуре кроме цифровых от 0 до 9, запятой и BackSpase (код клавиши 8). Теперь нажатие ненужных нам клавиш будет игнорироваться.

8) Объект ComboBox1 представляет собой выпадающий список и будет использоваться для выбора единиц измерения угла (исходной величины). Для заполнения списка необходимо в окне свойств объекта во вкладке Properties найти свойство Items и щелкнуть левой кнопкой мыши на кнопке с тремя точками (рисунок 4).

Рисунок 4 – Список свойств объекта ComboBox1

В появившемся окне (рис. 5) перечислить единицы измерения.

Рисунок 5 – Окно редактора списка

Для выбора варианта из списка в объекте ComboBox используется свойство ItemIndex. Это же свойство позволяет программе отслеживать выбранный вариант в процессе ее работы. Так для выбора первого варианта (единица измерения градусы) нужно задать значение свойства ItemIndex = 0 (рис. 4).

Для задания стиля объекта используется свойство Style. По умолчанию значением свойства Style является csDropDown. При таком стиле пользователь может не только выбирать значения из списка, но и осуществлять ввод в окно объекта ComboBox. Поскольку программа будет работать только с заранее заданным набором единиц измерения необходимо запретить ручное редактирование списка значений ComboBox1. Для этого нужно поменять значение свойства Style на csDropDownList. Объект ComboBox со значением свойства Style равным csDropDownList не допускает редактирования и, значит, пользователь просто не сможет указать неправильные данные.

9) Для объекта RadioGroup1 зададим подпись, для этого изменим значение его свойства Caption на «Функция». Для того чтобы создать список вариантов для переключения необходимо найти в списке свойств объекта RadioGroup1 свойство Items и щелкнуть левой кнопкой мыши на кнопке с тремя точками (рисунок 6).

Рисунок 6 – Список свойств объекта RadioGroup1

В появившемся окне (рис. 7) перечислить все функции.

Рисунок 7 – Окно редактора списка вариантов

Для выбора одного из вариантов в объекте RadioGroup используется свойство ItemIndex. Это же свойство позволяет программе отслеживать выбранный вариант. Так для выбора первой функции нужно задать значение свойства ItemIndex = 0 (рис. 6). В результате проделанных операций объект

RadioGroup1 будет содержать 4 пункта, первый из которых будет отмечен точкой (рис. 8).

Рисунок 8 – Настроенный объект RadioGroup

10)Измените подписи объекта CheckBox1 для этого выберите объект CheckBox1 и в окне свойств объекта во вкладке Properties изменить значение свойства Caption. В программе отслеживание состояния CheckBox (отмечен галочкой или нет) осуществляется с помощью свойства Checked. Если галочка стоит, то это свойство будет иметь значение true.

11)Измените подписи кнопок Button1, Button2, Button3, редактируя для этого свойство Caption во вкладке Properties для каждой кнопки в соответствии с рисунком 1.

12)Объект ListBox1, расположенный на форме будет использоваться для вывода результатов вычисления. В дополнительной настройке, в данной программе, он не нуждается.

13)Для реализации расчета в программе необходимо добавить функцию обработки нажатия кнопки Button1. Для этого необходимо дважды щелкнуть по объекту Button1 и в появившейся заготовке функции написать программный код расчета (рисунок 9).

По тексту программного кода даны комментарии, пошагово описывающие последовательность действий. Для возможности использования тригонометрических функций и функции округления ceil (округление до целых) необходимо подключить модуль math.h (в начале кода

программы)

14) Для очистки списка результатов (ListBox1) создайте функцию обработки нажатия кнопки Button2, дважды щелкнув на нее левой кнопкой мыши:

15) Для выхода из программы создайте функцию обработки нажатия кнопки Button3: