В разделе 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. |
«Разработка проекта ТЕСТ ПО ГЕОГРАФИИ»
Постановка задачи
|
В зависимости от правильности ответов на тест, который состоит из нескольких разделов (в свою очередь в разделе может быть несколько вопросов), подсчитывается результат и выставляется оценка по каждому разделу.
Новыми в этой программе являются: · использование в проекте нескольких форм и организация вызова этих форм, · использование шаблона формы Tabbed pages из окна New Items вкладки Forms, · компонента MainMenu (главное меню формы), · компонента Memo (многострочный текстовый редактор), · компонента Image (графический объект) со страницы палитры компонентов Additional, · компонента PageControl (набор панелей с закладками). |
План разработки, №10
2. Создать титульную форму
2.1. Дать название форме Тест по Географии.
|
2.3. Разместить в форме компонент Image (графический объект), который находится на странице палитры компонентов Additional.
Выделить Image, в Object Inspector найти свойство Picture, справа от него нажать на кнопку с тремя точками. В появившемся окне встроенного редактора Picture Editor нажать кнопку Load, которая вызывает появление окна для выбора заголовка графического файла. Выбранная картинка появится вначале в служебном окне, и если пользователь подтвердит (нажав кнопку OK), то картинка появится и в окне формы.
2.4. Разместить в форме кнопку Выход, обеспечивающую прекращение выполнения задачи.
2.5. Разместить в форме кнопку Продолжить. Пока не задаем действия, которые будут выполняться по нажатию этой кнопки.
2.6. Сохранить форму под именем, например, F_Titul.pas и проект – Pr_Test.dpr.