- •Введение
- •Общие указания к выполнению практических работ
- •Практическая работа №1
- •Теоретическая часть
- •Пример выполнения задания
- •Задание:
- •Спецификация программы:
- •Постановка задачи:
- •Блок-схема алгоритма программы
- •Варианты заданий
- •Контрольные вопросы
- •Практическая работа №2
- •Теоретическая часть
- •Методы стратегии ‘белого ящика’
- •Метод покрытия операторов
- •Метод покрытия решений (покрытия переходов)
- •1.3 Метод покрытия условий
- •1.4 Критерий решений (условий)
- •1.5 Метод комбинаторного покрытия условий
- •Порядок выполнения практической работы
- •Контрольные вопросы
- •Практическая работа №3
- •Теоретические часть
- •Задание 1
- •Задание 2
- •Контрольные вопросы
- •Практическая работа №6
- •Описание практической работы Теоретические сведения
- •Операторы обнаружения и обработки исключений
- •Задание 1
- •Задание 2
- •Задание 2
- •Контрольные вопросы
- •Практическая работа №8
- •Описание лабораторной работы Задание 1
- •Задание 2
- •Методы компонента tMemo
- •Задание 1
- •Задание 2
- •Задание 3
- •Контрольные вопросы
- •Практическая работа №10
- •Теоретическая часть
- •Класс Tstrings
- •Задание 1
- •Задание 2
- •Задание 3
- •Основные свойства компонента StringGrid
- •Описание лабораторной работы Задани 1
- •Задание 2
- •Задание 1
- •Контрольные вопросы
- •Практическая работа №13
- •Теоретическая часть
- •Описание лабораторной работы
- •Контрольные вопросы
- •Практическая работа №14
- •Теоретическая часть RadioGroup, RadioButton и GroupBox - группы радиокнопок
- •Свойства компонента CheckBox
- •Свойства компонента RadioButton
- •Button и BitBtn - управляющие кнопки
- •Свойства компонента BitBtn
- •Задание 1
- •Свойства компонента SpeedButton
- •Компонент UpDown
- •Описание лабораторной работы Задание 1
- •Задание 2
- •Задание 3
- •TrackBar и ScrollBar - ползунки и полосы прокрутки
- •Контрольные вопросы
- •Практическая работа №15
- •Теоретические сведения
- •Описание лабораторной работы Задание 1
- •Задание 2
- •Задание 3
- •Задание 4
- •Панели общего назначения — компоненты Panel, GroupBox, Bevel, Splitter
- •Задание 1
- •Задание 2
- •Компонент PageControl
- •Задание 3
- •Задание 4
- •Контрольные вопросы
- •Практическая работа №17
- •Теоретические сведения
- •Описание практическая работы Задание 1
- •Контрольные вопросы
- •Практическая работа №18
- •Теоретические сведения Компонент MainMenu - главное меню
- •Описание лабораторной работы Задание 1
- •Контрольные вопросы
- •Практическая работа №19
- •Теоретические сведения Стандартные диалоги и их фрагменты
- •Задание 1
- •Задание 2
- •Задание 3
- •Контрольные вопросы
- •Практическая работа №20
- •Теоретические сведения
- •I способ
- •II способ
- •Свойства компонента TreeViewl
- •Задание
- •Контрольные вопросы
- •Практическая работа №21
- •Теоретические сведения Компонент tImage
- •Задание 1
- •Ход выполнения
- •Задание 2
- •Ход выполнения
- •Задание 3
- •Задание 4
- •Задание 1
- •Задание 3
- •Задание 4
- •Контрольные вопросы
- •Практическая работа №23
- •Теоретические сведения
- •Практическая работа №24
- •Теоретические сведения Компонент построения графиков и диаграмм Chart
- •Свойства компонента Chart
- •Задание 1
- •Задание 2
- •Контрольные вопросы
- •Практическая работа №25
- •Прием перетаскиваемых объектов
- •Задание 1
- •Контрольные вопросы
Задание 2
Установите на форму компаненты Panel1, Timer1, Button1. Надпись на кнопке "Старт". Интервал таймера 500 мс.
TTime MyTime;//глобальная переменная void __fastcall TForm1::Button1Click(TObject *Sender) { //Сравниваются две строки
if(CompareStr(Button1->Caption,"Старт")==0) { MyTime = StrToTime("00:00"); Timer1->Enabled = true; Button1->Caption = "Стоп"; }
else { if(CompareStr(Button1->Caption,"Стоп")==0) { Timer1->Enabled = false; Button1->Caption = "Старт"; }; } }
void __fastcall TForm1::Timer1Timer(TObject *Sender) { TTime IncrementTime; IncrementTime = StrToTime("00:01"); MyTime = MyTime + IncrementTime; Panel1->Caption = TimeToStr(MyTime); }
Задание 3
Cоздадим бегущую строку. Определим строку, которую будем использовать в качестве бегущей, как глобальную переменную типа AnsiString.
Описать глобальную переменную нужно в заголовочном модуле формы (с расширением «.h»), а определить – в основном модуле формы (имеющим расширение «.cpp»).
Чтобы быстро открыть заголовочный модуль можно использовать сочетание клави Ctrl+F6.
Для описания глобальной переменной типа AnsiString нужно в заголовочный модуль (файл Name.h) дописать: extern AnsiString Str;
Для определения - в основном модуле (файл Name.cpp) вне функций написать:
AnsiString Str=”Это пример бегущей строки……….”;
Строка будет располагаться в окне редактирования Edit. Чтобы сделать строку бегущей, надо использовать таймер. Для этого на форме надо разместить компонент Timer и задать его свойства Interval = 100 Enabled = true.
В обработчик события OnTimer вставить операторы, осуществляющие циклический сдвиг строки:
void __fastcall TForm1::Timer1Timer (TObject *Sender)
{ Edit1->Clear();
if (!Str.IsEmpty())// Если строка не пуста
{ Edit1->Text = Str;
char first = Str[1];
for (int i=1; i < Str.Length(); i++) //Циклический сдвиг строки
Str[i] = Str[i+1]; //на один символ влево Str[Str.Length()] = first;} }
Теперь каждый раз по истечении 100 миллисекунд (0,1 сек) строка в окне редактирования Edit будет циклически сдвигаться влево, т.е. это будет бегущая строка.
Задание 4
Поместим на форму MyForm компоненты MyTimer, EditTimer, UpDownTime - связанный с компонентом EditTimer, LabelTime, Label1 - Caption = «Установка таймера», расположите его рядом с EditTimer, Label2 - Caption = «Текущее время», расположите его рядом с LableTime, MyProgressBar - отображает ход таймера, ButtonStart - для запуска таймера после его установки.
По истечению заданного времени появляется сообщение «Время вышло!». TMyForm *MyForm;
TProgressBar *MyProgressBar;
void__fastcall TMyForm::TMyForm(TComponent* Owner): Form(Owner)
{
MyProgressBar->Visible = false //до запуска таймера индикатор невидим
MyTimer->Enabled = false; //таймер еще не запущен
}
void __fastcall TMyForm::ButtonStartClick(TObject *Sender)
{
MyTimer->Enabled = true; //запуск таймера
MyProgressBar->Position = 0; //текущая позиция индикатора обнуляется
MyProgressBar->Max = UpDownTime->Position; //макс. Граница индикатора //соответствует заданному пользователем числу в EditTimer
MyProgressBar->Visible = true; //индикатор становится видимым
}
void __fastcall TMyForm::MyTimerTimer(TObject *Sender)
{
//отображение текущего времени в период работы таймера
LabelTime->Caption = Time().FormatString("tt");
//если текущая позиция индикатора меньше максимального значения
if(MyProgressBar->Position < MyProgressBar->Max)
{ MyProgressBar->Position++; //увеличиваем текущую позицию
if ((MyTimer->Enabled) & (StrToInt(EditTimer->Text)!=0))
//если таймер запущен и установлено его значение
EditTimer->Text=IntToStr(StrToInt(EditTimer->Text)-1);}//уменьшение времени
else //если время истекло
{ MyProgressBar->Visible =false;
MyTimer->Enabled = false;
ShowMessage("Время вышло!"); // вывод сообщения
LabelTime->Caption = "";} }
Контрольные вопросы
Для чего предназначен компонент Timer?
Назовите основные свойства компонента Timer.
Когда свойство компонента Timer Enabled устанавливается в true?
В каких случаях испольхуется компонент Timer?
Практическая работа №16
Тема: «Применение панелей общего назначения в интерфейсе пользователя».
Цель работы: Научиться использовать панели общего назначения в приложениях C++ Builder.
Время выполнения: подготовка – 5 мин; выполнение – 165 мин.; проверка – 10 мин; всего – 180 мин.
Описание практической работы
