В разделе Var переменные Num1, Num2 и CountR объявите как целочисленные перед разделом implementation.

Практическая работа №10

«Разработка проекта ТЕСТ ПО ФИЗИКЕ»

Постановка задачи Создать программу, выполняющую следующие действия. После запуска программы появляется изображение аналогичное рисунку. Пользователь, перемещаясь с помощью клавиш-стрелок по левому списку "Физических величин", выбирает любое слово, нажав клавишу Enter. Затем пользователь переходит в правый список "Названий физических величин" и выбирает соответствующее название ранее выбранной физической величины.  

Если выбрано правильное название величины, то под словом “ОЦЕНКА” появляется одобрительная реплика: Правильно, если выбрано неправильное слово, то - Ошибка. Снова можно выбрать физическую величину и найти ей правильное название до тех пор, пока не будет найдено соответствие всех
физических величин и их названий.

Новым в этой работе является: · взаимодействие двух списков ListBox на основе свойств Items и ItemIndex, · создание многострочных надписей в компоненте Label.

Общие положения

Delphi – интегрированная среда разработки ( IDE– Integrated Development Environment), используемая для создания и поддержки приложений, которые могут работать под любой 32 разрядной операционной системой типа Windows 95, 98, 2000, NT.

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

Это довольно легкая в изучении среда, и в то же время довольно сложная.

Delphi имеет пользовательский графический интерфейс, подобный Visual Basic и C++. На данный момент множество фирм приняло за стандарт данный интерфейс для собственных приложений.

Весь исходный текст программ на Delphi пишется на языке Object Pascal, практически ничем не отличающимся от принципов, заложенных в Turbo Pascal. Синтаксис, принцип модуля, процедуры, функции, все взято за основу.

Процесс написания приложения разделяется на две части:

Первая часть - программист располагает на окна своей программы необходимые элементы, позиционирует их, устанавливает нужные размеры, меняет свойства;

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

План разработки программы, №8

1. Открыть новый проект.
2. Разместить в форме компоненты в соответствии с рисунком и присвоить заголовки меткам. Обратите внимание, что заголовки меток Физическая величина и Название величины состоят из двух строк и отцентрированы.

Для вывода многострочных надписей в Label задайте:

Выделенный объект Вкладка окна Object Inspector Имя свойства/ Имя события Значение/Действие
Label1 Properties AutoSize (изменение размера в зависимости от текста в Caption) False
WordWrap (разрыв строки) True
Height Width Установить подходящие размеры
Alignment (выравнивание текста) taCenter

3. Установить кнопку выхода из программы:

Выделенный объект Вкладка окна Object Inspector Имя свойства/ Имя события Значение/Действие
BitBtn1   Properties   Caption &Выход
Kind bkCancel
Events BitBtn1Click Close;

4. Сохранить код программы и проект под именами, например, Unit8.pas и Pr8.dpr.

5. Запустить программу, затем закрыть окно проекта кнопкой Выход.
6. Выделить ListBox1, в Object Inspector найти свойство Items, справа от него нажать на кнопку с тремя точками. В появившемся окне встроенного редактора ввести физические величины, каждую на новой строке: Ватт

Ом
Вольт
Ампер

Сохраните набранный текст под именем Fiz1.txt. Для этого нажмите правую клавишу мыши и выберите режим Save. Для выхода из встроенного редактора нажмите клавишу OK.
7. Выделить Listbox2 и проделать с ним аналогичную работу, введя названия физических величин:

Напряжение
Сопротивление
Сила тока
Мощность

Сохраните набранный текст под именем Fiz2.txt.
8. Выполнить следующие действия:

Выделенный объект Вкладка окна Object Inspector Имя свойства/ Имя события Значение/Действие
ListBox1 Events OnKeyPress If key=#13 then Num1:=ListBox1.ItemIndex;
ListBox2 Events OnKeyPress If key=#13 then begin case ListBox2.ItemIndex of 0: Num2:= 2; 1: Num2:= 1; 2: Num2:= 3; 3: Num2:= 0; end; if Num1=Num2 then begin Label4.Caption:='Правильно'; CountR:=CountR+1 End Else Label4.Caption:= 'Ошибка'; If CountR=5 then ShowMessage(‘ Тест окончен! ‘ );

В разделе Var переменные Num1, Num2 и CountR объявите как целочисленные перед разделом implementation.

Задание для самостоятельного выполнения, №8

  Задание Подсказка
Списки ListBox1 и ListBox2 сделать поочередно доступными после нажатия клавиши Enter. В Object Inspector свойству Enabled компонента ListBox2 придать значение False, а в процедуру KeyPressed, относящуюся к ListBox1, включить строки: ListBox2.Enabled := True; ListBox1.Enabled := False; Form1.ActiveControl := ListBox2;
Выполнить проект так, чтобы при правильном выборе названия физической величины слово в левом списке исчезало. В процедуру KeyPressed, относящуюся к ListBox2, там, где обрабатывается правильный ответ, включить: ListBox1.Items.Delete(Num1); ListBox1.Items.Insert(Num1, ‘’);
Расширить количество физических величин до 10. Внести необходимые изменения в программу.  

9. Сохранить проект окончательно, запустить и протестировать его.

  u Листинг программы, №8 nit Unit7; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons; type TForm1 = class(TForm) Label1: TLabel; Label2: TLabel; ListBox1: TListBox; ListBox2: TListBox; Label3: TLabel; BitBtn1: TBitBtn; Label4: TLabel; BitBtn2: TBitBtn; procedure BitBtn1Click(Sender: TObject); procedure ListBox1KeyPress(Sender: TObject; var Key: Char); procedure ListBox2KeyPress(Sender: TObject; var Key: Char); procedure BitBtn2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; c,r,num1,num2:integer; implementation {$R *.DFM} procedure TForm1.BitBtn1Click(Sender: TObject); begin Close end; procedure TForm1.ListBox1KeyPress(Sender: TObject; var Key: Char); begin If (Key=#13) and (Form1.ListBox1.Items.Strings[Form1.1ListBox1.ItemIndex]<>'') Then begin num1:=form1.listbox1.itemindex; form1.ListBox1.Enabled:=False; form1.ListBox2.Enabled:=True; form1.ActiveControl:=Listbox2 end end; procedure TForm1.ListBox2KeyPress(Sender: TObject; var Key: Char); begin if key=#13 then begin case form1.ListBox2.ItemIndex of 0:num2:=2; 1:num2:=4; 2:num2:=7; 3:num2:=0; 4:num2:=3; 5:num2:=1; 6:num2:=6; 7:num2:=8; 8:num2:=5; 9:num2:=9; end; if num1=num2 then begin form1.Label4.Caption:='Верно!'; r:=r+1 end else form1.Label4.Caption:='Ошибка!'; c:=c+1; form1.ListBox1.Items.Delete(num1); form1.ListBox1.Items.Insert(num1,''); if c=10 then showmessage('Тест окончен. Оценка:'+ inttostr (r div 2 + ord(r div 2<1))+' (правильных ответов: '+inttostr(r)+')'); form1.ListBox1.Enabled:=0=0; form1.ListBox2.Enabled:=0=0; form1.ActiveControl:=listbox1 end end; procedure TForm1.BitBtn2Click(Sender: TObject); begin c:=0; r:=0; num1:= -1; num2:= -1; form1.ListBox1.Items.LoadFromFile('fiz1.txt'); end; end.  
Содержание файла 'fiz1.txt'   Содержание файла 'fiz2.txt'
Вольт Ньютон Метр Ватт Джоуль Вебер Кулон Герц Секунда Ампер   Длина Работа Частота Напряжение Мощность Сила Заряд Время Индуктивность Сила тока
         

 


«Разработка проекта ТЕСТ ПО ИНФОРМАТИКЕ»

Постановка задачи

Создать программу, выполняющую следующие действия.

После запуска программы появляется изображение аналогичное рисунку 16. Пользователь по своему усмотрению выбирает один из переключателей в группе. В зависимости от правильности ответов появляется одно из сообщений "Плохо", "Удовлетворительно", "Хорошо", "Отлично".

 

Новым в этой работе являются: · группа переключателей RadioGroup на странице палитры компонентов Standard, · оператор вывода сообщений ShowMessage.

План разработки программы, №9

1. Открыть новый проект.
2. Разместить в форме компоненты в соответствии с рисунком и присвоить заголовки меткам и панелям

 

3. Выполнить следующие действия:

Выделенный объект Вкладка окна Object Inspector Имя свойства/ Имя события Значение/Действие
Label1 Properties Caption Первая советская вычислительная машина
Label2 Properties Caption Основоположник алгебры логики
Label3 Properties Caption Объем блока начальной загрузки
Label4 Properties Caption Автор первого счетного устройства
Label5 Properties Caption Энергозависимая память
RadioGroup1 Properties Caption Удалить заголовок
Columns
Items Вызвать String List Editor, дважды щелкнув мышкой рядом со свойством Items. Ввести 5 строк: Урал-1 М-20 ЭВ-60 МЭСМ БЭСМ Введенный текст сохранить в файле t1.txt.
RadioGroup2 Properties Caption Удалить заголовок
Columns
Items Ввести 4 строки: Лейбниц Буль Нейман Паскаль Введенный текст сохранить в файле t2.txt.
RadioGroup3 Properties Caption Удалить заголовок
Columns
Items Ввести 4 строки: 1024 байт 512 байт 1.5 Кбайт 2 Кбайт Введенный текст сохранить в файле t3.txt.
RadioGroup4 Properties Caption Удалить заголовок
Columns
Items Ввести 4 строки: Бэббидж Паскаль Нейман Лавлейс Введенный текст сохранить в файле t4.txt.
RadioGroup5 Properties Caption Удалить заголовок
Columns
Items Ввести 3 строки: ПЗУ ОЗУ Внешняя Введенный текст сохранить в файле t5.txt.

4. Сохранить проект под именем, например, Unit8.pas и Pr8.dpr.
5. Для суммирования набираемых пользователем баллов выполните следующие действия:

Выделенный объект Вкладка окна Object Inspector Имя свойства/ Имя события Значение/Действие
RadioGroup1 Events OnClick sum:=0; If RadioGroup1.ItemIndex=3 Then sum:=Sum+1; Пояснение: Индекс первого переключателя равен 0. Правильный ответ содержит переключатель с меткой МЭСМ, имеющий индекс 3.

Целочисленную переменную sum необходимо объявить в разделе Var перед разделом implementation.
6. Вставить в обработчик событий RadioGroup2.OnClick, RadioGroup3.OnClick, RadioGroup4.OnClick, RadioGroup5.OnClick аналогичные коды, с учетом правильных ответов, но без обнуления переменной sum, так как оно необходимо лишь один раз перед началом суммирования.
7. Выведем на контрольную панель итоговое сообщение в зависимости от набранной суммы баллов.

Выделенный объект Вкладка окна Object Inspector Имя свойства/ Имя события Значение/Действие
RadioGroup5 Events OnClick Case sum of 0..2: Panel1.Caption:='Плохо!'; 3: Panel1.Caption:='Удовлетворительно!'; 4: Panel1.Caption:='Хорошо!'; 5: Panel1.Caption:='Отлично!'; end;

8. Вывести сообщение об окончании тестирования, добавив в обработчик событий RadioGroup5.OnClick код:

ShowMessage('Конец теста');

9. Сохранить проект окончательно, запустить и протестировать его.

Задание для самостоятельного выполнения, №9

  Задание Подсказка
Для контроля правильности работы программы вывести на панель набранную пользователем сумму баллов. Заголовку соответствующей панели (или метки) присвоить значение IntToStr(sum).
Запустите программу и убедитесь, что верная сумма баллов получается лишь при последовательном выборе переключателей сначала из RadioGroup1, затем из RadioGroup2 и т.д. Если порядок нарушен, то результат может быть неверным. Чтобы этого не случилось, вставьте дополнительную кнопку и сделайте подсчет баллов только после ее нажатия  
Сделайте возможным повторный запуск программы.  
Для наглядности вывести результат разным цветом. В оператор Case при выводе результата задать свойству Font.Color выбранный цвет. Например: Panel1.Font.Color:=clRed;
Усовершенствуйте программу, введя в раздел описания массив констант с номерами правильных ответов, а в программе только сравнивайте индекс переключателя со значением константы.  

Листинг программы, №9

unit unit8; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, ExtCtrls; type TForm1 = class(TForm) Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; RadioGroup1: TRadioGroup; RadioGroup2: TRadioGroup; RadioGroup3: TRadioGroup; RadioGroup4: TRadioGroup; RadioGroup5: TRadioGroup; Label6: TLabel; Panel1: TPanel; BitBtn1: TBitBtn; Button1: TButton; BitBtn2: TBitBtn; procedure Button1Click(Sender: TObject); procedure BitBtn2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; type T1 = array[0..4, 0..4] of byte; const otv:T1=((0,0,0,1,0),(0,1,0,0,0),(0,1,0,0,0),(0,1,0,0,0),(1,0,0,0,0)); var Form1: TForm1; sum :integer; implementation {$R *.DFM} procedure TForm1.Button1Click(Sender: TObject); begin sum:=otv[0,RadioGroup1.ItemIndex]+otv[1,RadioGroup2.ItemIndex]+ otv[2,RadioGroup3.ItemIndex]+otv[3,RadioGroup4.ItemIndex]+ otv[4,RadioGroup5.ItemIndex]; case sum of 0..2:begin Panel1.Font.Color:=$000000; Panel1.Caption:=IntToStr(sum)+' баллов.Плохо!'; end; 3: begin Panel1.Font.Color:=$0000FF; Panel1.Caption:=IntToStr(sum)+' баллов.Удолетворительно!'; end; 4: begin Panel1.Font.Color:=$00FF00; Panel1.Caption:=IntToStr(sum)+' баллов.Хорошо!'; end; 5:begin Panel1.Font.Color:=$FF0000; Panel1.Caption:=IntToStr(sum)+' баллов.Отлично!'; end; end; end; procedure TForm1.BitBtn2Click(Sender: TObject); begin RadioGroup1.ItemIndex:= -1; RadioGroup2.ItemIndex:= -1; RadioGroup3.ItemIndex:= -1; RadioGroup4.ItemIndex:= -1; RadioGroup5.ItemIndex:= -1; Panel1.Caption:=''; end; end.

 


«Разработка проекта ТЕСТ ПО ГЕОГРАФИИ»

Постановка задачи

Разработал студент группы 2А1 Смирнов Иван
Создать проект, состоящий из нескольких форм: титульной формы, формы меню, формы помощи и формы непосредственно теста.
В зависимости от правильности ответов на тест, который состоит из нескольких разделов (в свою очередь в разделе может быть несколько вопросов), подсчитывается результат и выставляется оценка по каждому разделу.

 

Новыми в этой программе являются: · использование в проекте нескольких форм и организация вызова этих форм, · использование шаблона формы Tabbed pages из окна New Items вкладки Forms, · компонента MainMenu (главное меню формы), · компонента Memo (многострочный текстовый редактор), · компонента Image (графический объект) со страницы палитры компонентов Additional, · компонента PageControl (набор панелей с закладками).

План разработки, №10

2. Создать титульную форму

2.1. Дать название форме Тест по Географии.

Разработал студент группы 2А1 Смирнов Иван
2.2. Разместить в форме метки в соответствии с рисунком и присвоить заголовки им.
2.3. Разместить в форме компонент Image (графический объект), который находится на странице палитры компонентов Additional.
Выделить Image, в Object Inspector найти свойство Picture, справа от него нажать на кнопку с тремя точками. В появившемся окне встроенного редактора Picture Editor нажать кнопку Load, которая вызывает появление окна для выбора заголовка графического файла. Выбранная картинка появится вначале в служебном окне, и если пользователь подтвердит (нажав кнопку OK), то картинка появится и в окне формы.

2.4. Разместить в форме кнопку Выход, обеспечивающую прекращение выполнения задачи.

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

2.6. Сохранить форму под именем, например, F_Titul.pas и проект – Pr_Test.dpr.