- •Практикум
- •Г. Петропавловск-Камчатский
- •Введение
- •Задание №1. Операции ввода-вывода. Арифметические операции.
- •Int a;b;c; double X,
- •Int a,b,c; float a,b,c;
- •Float X; scanf (“%f”,X);
- •Задание №2. Операторы условного перехода if-case
- •Int main(int argc, char* argv[])
- •Найдите синтаксические и логические ошибки в инструкциях (если есть)
- •Задание №3. Оператор цикла for
- •Int main(int argc, char* argv[])
- •Задание №4. Одномерные и многомерные массивы
- •Задание №5. Алгоритмы поиска и сортировки данных
- •Найдите синтаксические и логические ошибки в инструкциях
- •Сформулируйте одной фразой, какое действие выполняет фрагмент:
- •Задание №6. Массивы символов
- •Int _tmain(int argc, _tchar* argv[])
- •Написать программу для решения задачи:
- •Написать программу для решения задачи:
- •Класс string
- •Функции работы со строками Задание №7. Функции
- •Void fill_screen (void)
- •Напишите функцию для:
- •Задание №1. Создание программ с использованием компонентов: tEdit, tButton, tLabel
- •Проектирование интерфейса приложения:
- •Программирование приложения
- •Void __fastcall tForm1::Edit1KeyPress(tObject *Sender, wchar_t &Key)
- •Void __fastcall tForm1::Button1Click(tObject *Sender)
- •Задание №2. Создание программ с использованием компонентов: tComboBox, tListBox
- •Задание №3. Создание программ с использованием компонента Timer
- •Создайте приложение «Угадай число»
- •Void __fastcall tForm1::Timer1Timer(tObject *Sender)
- •Void __fastcall tForm1::CheckBox1Click(tObject *Sender)
- •Void __fastcall tForm1::Button1Click(tObject *Sender)
- •Void __fastcall tForm1::Button2Click(tObject *Sender)
- •Задание для самостоятельного выполнения:
- •Задание №4. Написание программ для выполнения операций с файлами
- •Void __fastcall tForm1::Button1Click(tObject *Sender)
- •If (FileExists("meteo.Txt"))
- •Void __fastcall tForm1::Edit1KeyPress(tObject *Sender, wchar_t &Key)
- •Задание для самостоятельного выполнения:
- •Задание №5. Использование компонентов tRichEdit, tMainManu, tOpenDialog и др.
- •Проектирование интерфейса приложения
- •Программирование приложения
- •Void __fastcall tForm1::imOpenClick(tObject *Sender)
- •Void __fastcall tForm1::imSaveClick(tObject *Sender)
- •Void __fastcall tForm1::imToolBarClick(tObject *Sender)
- •Void __fastcall tForm1::AboutClick(tObject *Sender)
- •Задание для самостоятельного выполнения:
- •Задание №6. Работа с графикой. Вывод текста. Программа Приветствие
- •Напишите процедуру при изменении размера формы:
- •Void __fastcall tForm1::FormResize(tObject *Sender)
- •Void __fastcall tForm1::Button4Click(tObject *Sender)
- •Void __fastcall tForm1::Button1Click(tObject *Sender)
- •Void __fastcall tForm1::Button5Click(tObject *Sender)
- •Задание №8. Базы данных. Создание приложения Записная книжка
- •Создание базы данных.
- •Проектирование интерфейса приложения
- •Программирование приложения
- •Void __fastcall tForm1::BitBtn1Click(tObject *Sender)
- •Задание №9. Ежедневник
- •Void __fastcall tForm1::FormShow(tObject *Sender)
- •Void __fastcall tForm1::Button1Click(tObject *Sender)
- •Void __fastcall tForm1::Button3Click(tObject *Sender)
- •Задание №10. Будильник
- •Int cHour, cMinute;
- •Int alrHour, alrMinute;
- •Void __fastcall CreateTrayIcon (int n, AnsiString Tip);
- •Void __fastcall DeleteTrayIcon (int n);
- •Void __fastcall tForm1::CreateTrayIcon (int n, AnsiString Tip)
- •Void __fastcall tForm1::DeleteTrayIcon (int n)
- •Void __fastcall tForm1::Button1Click(tObject *Sender)
- •Void __fastcall tForm1::Timer1Timer(tObject *Sender)
- •Задание №11. Часы
- •Int ahr, amin, asec;
- •Void __fastcall tForm1::Timer1Timer(tObject *Sender)
- •Задание №12. Очистка диска
- •Void __fastcall tForm1::Button1Click(tObject *Sender)
- •Void __fastcall tForm1::Button2Click(tObject *Sender)
- •Задание для самостоятельного выполнения:
- •Рекомендуемая литература
Задание №11. Часы
Цель занятия: Научиться рисовать графические изображения на форме
Студенты должны знать: модули для работы с датой и временем
уметь: подключать модули для работы с датой и временем, программировать приложение Часы
Задание.
Выберите в меню Пуск – Программы - CodeGear RAD Studio2009 C++Builder 2009
Создание новое приложение (File – New – VCL Forms Application).
Проектирование интерфейса приложения.
Переименуйте название формы на Часы.
Добавьте компонент Timer1 на приложение.
Программирование приложения
Включите модули для работы с датой и временем, а также с математическими функциями после строки #include "Unit1.h"
#include "DateUtils.hpp"
#include "math.h"
Опишите переменные
int x0, y0;
Int ahr, amin, asec;
#define R 100
Напишите программный код в конструкторе формы:
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
TDateTime t;
ClientHeight=(R+30)*2; //задание размера формы в соответствии с размером циферблата
ClientWidth=(R+30)*2;
x0=R+30;
y0=R+30;
t=Now(); //текущее время
ahr=90-HourOf(t)*30-(MinuteOf(Today())/12)*6; //Определение положения стрелок
amin=90-MinuteOf(t)*6;
asec=90-SecondOf(Today())*6;
Timer1->Interval=1000; //период сигнала от таймера 1 секунда
Timer1->Enabled=true; //пуск таймера
}
Перейдите на модуль Unit1.h. Измените описание класса TForm1: добавьте описание двух процедур:
class TForm1 : public TForm
{
__published: // IDE-managed Components
TTimer *Timer1;
void __fastcall DrawClock(void);
void __fastcall Vector(int x0,int y0,int a,int l);
private: // User declarations
public: // User declarations
__fastcall TForm1(TComponent* Owner);
};
Напишите процедуру для рисования линии (стрелок):
void __fastcall TForm1::Vector(int x0,int y0,int a,int l)
{
#define TORAD 0.0174532 //коофициент перерасчёта угла из градусов в радианы
int x,y;
Canvas->MoveTo(x0,y0);
x=x0+l*cos(a*TORAD);
y=y0-l*sin(a*TORAD);
Canvas->LineTo(x,y);
}
Напишите процедуру для изображения стрелок:
void __fastcall TForm1::DrawClock(void)
{
TDateTime t;
Canvas->Pen->Color=clBtnFace; //стереть изображение стрелок
Canvas->Pen->Width=3
Vector(x0,y0,ahr,R-20); ; //часовую
Vector(x0,y0,amin,R-15); //минутную
Vector(x0,y0,asec,R-7); //секундную
t=Now();
ahr=90-HourOf(t)*30-(MinuteOf(t)%12)*6; //новое положение стрелок
amin=90-MinuteOf(t)*6;
asec=90-SecondOf(t)*6;
Canvas->Pen->Width=3; //нарисовать стрелки
Canvas->Pen->Color=clBlack;
Vector(x0,y0,ahr,R-20);
Canvas->Pen->Width=2;
Canvas->Pen->Color=clBlack;
Vector(x0,y0,amin,R-15);
Canvas->Pen->Width=1;
Canvas->Pen->Color=clYellow;
Vector(x0,y0,asec,R-7);
}
Напишите процедуру для прорисовки циферблата на событие onPaint для формы Form1:
void __fastcall TForm1::FormPaint(TObject *Sender) //прорисовка циферблата
{
int x, y;
int a;
int h;
TBrushStyle bs;
TColor pc;
int pw;
bs=Canvas->Brush->Style;
pc=Canvas->Pen->Color;
pw=Canvas->Pen->Width;
Canvas->Brush->Style=bsClear;
Canvas->Pen->Width=1;
Canvas->Pen->Color=clBlack;
a=0;
h=3;
while (a<360)
{
x=x0+R*cos(a*TORAD);
y=x0-R*sin(a*TORAD);
Form1->Canvas->MoveTo(x,y);
if ((a%30)==0)
{
Canvas->Ellipse(x-2,y-2,x+3,y+3);
x=x0+(R+15)*cos(a*TORAD);
y=x0-(R+15)*sin(a*TORAD);
Canvas->TextOut(x-5,y-7,IntToStr(h));
h--;
if (h==0)
h=12;
}
else
Canvas->Ellipse(x-1,y-1,x+1,y+1);
a=a+6;
}
Canvas->Brush->Style=bs;
Canvas->Pen->Width=pw;
Canvas->Pen->Color=pc;
DrawClock();
}
Напишите процедуру для сигнала от таймера: