Методичка по лабораторным Delphi. Протокол 11 Зав кафедрой А. А. Прихожий содержание лабораторная работа 1
Скачать 0.58 Mb.
|
Задания:
ЛАБОРАТОРНАЯ РАБОТА №3. КОМПИЛЯЦИЯ, ОТЛАДКА И ВЫПОЛНЕНИЕ ПРОГРАММ. КОМПОНЕНТЫ ПАНЕЛИ ADDITIONAL. Теоретические сведения Для управления выполнением программ используются следующие команды пункта меню Run:
Точка контрольного останова определяет оператор в программе, перед выполнением которого программа прервет работу, и управление будет передано среде Delphi. Точка останова задается с помощью опции View/DebugWindows/ Breakpoints. Легче просто щелкнуть левой кнопкой мыши в левом углу строки, на которой вы хотите установить точку прерывания. Наблюдать за состоянием переменной или выражения можно с помощью специального окна, вызываемого опцией View/DebugWindows/Watches. Изменить текущее значение переменной можно с помощью окна Evaluate/Modify, вызываемого нажатием <Ctrl-F7>. В строке Expressionследует написать имя переменной, нажать кнопку Modifyи вывести новое значение в строке NewValue. Рассмотрим задачу подсчета среднего балла каждого студента, отдельно среднего балла юношей и девушек, общего среднего балла. Исходной информацией является: фамилия, пол, оценки каждого студента. Фамилия вводится в окне однострочного редактора. Пол задается с помощью компонента TRadioGroup. Оценки вводятся в таблицу. Признак расчета задается с помощью компонента TRadioGroup. Ход работы
Const nn=20; mm=5; //Максимальное количество студентов =20. // Максимальное количество экзаменов =5. pp: array [0..1] of string[1] = ('m', 'g'); //Массив, содержащий половой признак. var Form1:TForm1; n: integer; f: array [1..nn] of string [30]; p: array [1..nn] of string [1]; a: array [1..nn, 1..mm] of real; ss: array [1..nn] of real; //n – текущий номер студента. Количество студентов; //f – массив фамилий; //p – массив для идентификации пола; //a – массив оценок; //ss – массив для среднего балла студентов; Implementation {$R *.DFm} procedure TForm1.BitBtn1Click(Sender: TObject); // Обработчик кнопки «Записать». Осуществляет ввод фамилии и пола. // Переносит значения фамилии в фиксированный столбец таблицы. begin n:= n+1; f[n]:= Edit1.Text; p[n]:= pp[RadioGroup1.ItemIndex]; StringGrid1.Cells[0,n]:=f[n]; Edit1.SetFocus; Edit1.Clear; end; procedure TForm1.FormActivate(Sender:TObject); // Обработчик для задания значений фиксированной строки // таблицы. Обнуление начального значения номера студента. begin n:=0; Edit1.SetFocus; With StringGrid1 do Begin Cells[1,0]:= 'Физика'; Cells[2,0]:= 'Математ.'; Cells[3,0]:= 'История'; Cells[4,0]:= 'Иностр.яз.'; Cells[5,0]:= 'Средний балл'; End; end; procedure TForm1.StringGrid1SetEditText(Sender: TObject; ACol, ARow: integer; const Value:string); //Событие возникает при завершении редактирования // ячейки (ACol, ARow). В параметре Value обработчик // получает результат вывода или редактирования текста. var b: real; j:byte; //b – вещественное значение строки редактирования. //j – параметр цикла для текущего номера столбца матрицы a. begin With StringGrid1 do Begin If Value = ' ' then Exit; //Если ничего не введено, то выйти из процедуры //Начало защищенного блока. Try b:=StrToFloat(Value) Except ShowMessage('Не верный символ! '); b:=0; end; //Конец защищенного блока. //Игнорировать неверно введенную оценку. If (b<1) or (b>5) then begin Cells[ACol,ARow]:= ' '; Exit; end; Cells[ACol,ARow]:= Value;//Отразить оценку в таблице. a[ARow,ACol]:=b; //Записать оценку в массив. //Далее подсчет среднего балла. ss[ARow]:=0; for j:=1 to 4 do ss[ARow]:=ss[ARow] + a[ARow,j]; ss[ARow]:= ss[ARow]/4; //Отобразить средний балл в 5-ом столбце таблицы. Cells[5,ARow]:= FormatFloat('##.##', ss[ARow]) End; End; Расчет среднего балла: procedure TForm1.RadioGroup2Click(Sender: TObject); // Событие возникает при смене признака расчета var S:real; k, i: byte; begin S:=0; k:=0; With RadioGroup2 do Begin Case ItemIndex of 0: begin // Расчет среднего балла юношей for i:= 1 to n do if p[i] = 'm' then begin S:=S + ss[i] ; k:=k + 1 end; if k=0 then S:=0 else S:=S/k; end; 1: begin // Расчет среднего балла девушек for i:= 1 to n do if p[i] = 'g' then begin S:=S + ss[i] ; k:=k + 1 end; if k=0 then S:=0 else S:=S/k; end; 2: begin // Расчет общего среднего балла for i:= 1 to n do S:=S + ss[i] ; if n=0 then S:=0 else S:=S/n; end; end; end; // Вывод результата в окно редактора Edit2.Text := FormatFloat('##.##',S); end; end; 5. Обратите внимание на то, что у компонента StringGrid1 существует обработчик OnClick. Он равен обработчику OnClick для RadioGroup2. Установлен он выбором из списка событий, который открывается при щелчке по правой части строки инспектора событий. Компиляция и отладка приложения.
Задания:
ЛАБОРАТОРНАЯ РАБОТА №4 ГЛАВНОЕ МЕНЮ ФОРМЫ. ВСПОМОГАТЕЛЬНОЕ МЕНЮ. СТАНДАРТНЫЕ КНОПКИ. ВИЗУАЛЬНЫЕ КОМПОНЕНТЫ СТАНДАРТНЫХ ДИАЛОГОВ WINDOWS – ИНТЕРФЕЙСА. Теоретические сведения Любое современное приложение имеет меню. Меню обеспечивает стандартный и удобный доступ к функциям приложения и структурирует их в однородные группы. Главное меню формы определяет компонент класса TMainMenu. На форму можно поместить сколько угодно объектов этого класса, но отображаться в полосе меню в верхней части формы будет только тот из них, который указан в свойстве Menu формы. Выполнение целой группы операций, наиболее часто используемых приложениями, обеспечивается стандартными диалогами. К ним относятся диалоги открытия и сохранения файлов, печати документов, установки параметров шрифта и т.д. В составе Delphi имеется набор компонентов, инкапсулирующих стандартные системные диалоги. Они размещены на странице Dialogs палитры компонентов. Сами компоненты являются не визуальными, но обеспечивают появление соответствующих диалогов при вызове из меню или панели инструментов приложения. Вызов диалоговой формы во время работы приложения осуществляется методом Execute, возвращающим результат логического типа. Если пользователь, например, выбрал файл и нажал кнопку ОК, то функция возвращает True. |