- •Часть 2
- •Лабораторная работа № 6. Программирование циклических вычислительных процессов. Итерационные циклы
- •Отладка модулей проекта
- •Отладка синтаксических ошибок
- •Отладка логических ошибок
- •Итерационные циклы
- •Текст модуля UnIterate
- •Пример создания приложения
- •Сохранение проекта
- •Размещение компонентов на Форме
- •6.4. Выполнение индивидуального задания
- •Лабораторная работа № 7. Программирование с использованием строк
- •Краткие теоретические сведения
- •7.1.1. Символьные типы
- •7.1.2. Строковые типы
- •7.1.3. Процедуры и функции для работы со строками
- •Применение компонентов ListBox и ComboBox для работы со строками
- •7.3. Пример создания приложения
- •7.3.1. Сохранение проекта
- •7.3.2. Размещение компонентов на Форме
- •7.3.3. Создание процедуры-обработчика события активизации Формы FormActivate.
- •7.3.4. Создание процедуры-обработчики события ComboBox1KeyPress
- •7.3.5. Создание процедуры-обработчики события нажатия клавиши «мыши» ComboBox1Click
- •7.3.6. Работа с приложением
- •7.4. Текст модуля UnStr
- •7.5. Выполнение индивидуального задания
- •С использованием записей
- •8.1. Краткие теоретические сведения
- •8.2. Пример создания приложения
- •8.2.1. Указания по созданию приложения
- •8.2.2. Размещение компонентов по Форме
- •8.2.3.Создание процедур обработки событий FormCreate и ButtonClick
- •8.2.4. Работа с приложением
- •8.2.5. Текст модуля UnZap
- •8.3. Выполнение индивидуального задания
- •Лабораторная работа № 9. Програмирование с использованием файлов
- •9.1. Краткие теоретические сведения
- •9.2. Пример создания приложения
- •9.2.1. Указания по созданию приложения
- •9.2.2.Размещение компонентов по Форме.
- •9.2.3.Создание процедур обработки событий
- •9.2.4. Текст модуля UnFile
- •9.2.5. Работа с приложением
- •9.3. Выполнение индивидуального задания
- •Лабораторная работа № 10. Программирование с использованием функций и процедур. Процедурные типы. Создание модулей
- •10.1. Краткие теоретические сведения
- •10.1.1. Объявление и описание функций и процедур
- •10.1.2. Различные варианты передачи параметров в функции и процедуры
- •10.1.3. Процедурные типы
- •Текст модуля UnFancProc
- •Текст модуля UnModul
- •Выполнение индивидуального задания
- •Лабораторная работа № 11. Программирование с использованием динамических структур данных
- •11.1. Краткие теоретические сведения
- •11.1.1. Указатели
- •11.2. Использование динамических переменных
- •Пример создания приложения
- •11.3.1. Сохранение проекта
- •Размещение компонентов на Форме
- •11.3.3. Создание процедуры обработки событий FormCreate
- •Текст модуля UnDinMas
- •11.5. Выполнение индивидуального задания
- •Лабораторная работа № 12. Программирование с использованием средств для построения и отображения графиков
- •12.1. Методика построения графиков с помощью компонента tChart
- •12.2. Пример написания программы
- •12.2.1. Настройка формы
- •12.2.2. Работа с компонентом tChart
- •12.2.3. Написание программы обработчика события создания формы
- •12.2.4. Написание программ обработчика событий нажатия на кнопки
- •12.3. Модуль программы построения и отображения графиков
- •12.4. Выполнение индивидуального задания
- •Приложение 1 п1. Свойства и методы компонентов п1.1. Общие свойства компонентов
- •2. Компоненты страницы standard
- •3. Компоненты страницы additional
- •4. Компоненты страницы dialogs
- •П2. Простые типы данных языка object pascal
- •П3. Процедуры и функции для работы со строками
- •Литература
8.2.3.Создание процедур обработки событий FormCreate и ButtonClick
Двойным нажатием клавиши «мыши» на Форме и на кнопках Button1, Button2, Button3 создайте соответствующие процедуры обработки событий. Используя текст модуля UnZap, внимательно наберите операторы этих процедур.
8.2.4. Работа с приложением
Закончив создание приложения, сохраните его с помощью пунктов меню File | Save All... Выполните приложение. Проанализируйте результаты. В случае необходимости откорректируйте приложение, снова сохраните его аналогичным образом. Выполните приложение и проанализируйте результаты. После каждой корректировки следует выполнять сохранение приложения с помощью пунктов File | Save All…
8.2.5. Текст модуля UnZap
Unit UnZap;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids;
type
TForm1 = class(TForm)
StringGrid1: TStringGrid;
StringGrid2: TStringGrid;
Memo1: TMemo;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
StringGrid3: TStringGrid;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
type // Создание типа данных "запись"(record), имя типа - zap
zap=record
nzach :integer;
fio:string[20];
mat,fiz,inf:integer;
srb:extended;
end;
var
MZap:array[1..9] of zap; // объявление массива записей
procedure TForm1.FormCreate(Sender: TObject);
var
i:integer;
begin
with StringGrid1 do
begin // занесение информации в ячейки StringGrid1
Cells[0,0]:='№ п/п';
Cells[1,0]:='№ зачетной книжки';
Cells[2,0]:='Фамилия';
Cells[3,0]:='Математика';
Cells[4,0]:='Физика';
Cells[5,0]:='Информатика';
for i:=1 to 9 do
Cells[0,i]:=IntToStr(i);
Cells[1,1]:='223254';Cells[2,1]:='Первый Н.П.'; Cells[3,1]:='3'; Cells[4,1]:='4';
Cells[5,1]:='4';
Cells[1,2]:='233254';Cells[2,2]:='Второй А.Н.'; Cells[3,2]:='5'; Cells[4,2]:='5';
Cells[5,2]:='5';
Cells[1,3]:='123754'; Cells[2,3]:='Третий Н.П.'; Cells[3,3]:='4'; Cells[4,3]:='5';
Cells[5,3]:='4';
Cells[1,4]:='216254';Cells[2,4]:='Четвертый Н.П.';Cells[3,4]:='3'; Cells[4,4]:='3';
Cells[5,4]:='2';
Cells[1,5]:='329270';Cells[2,5]:='Пятый Н.П.';Cells[3,5]:='5'; Cells[4,5]:='4';
Cells[5,5]:='5';
Cells[1,6]:='290176';Cells[2,6]:='Шестой Н.П.'; Cells[3,6]:='5'; Cells[4,6]:='3';
Cells[5,6]:='4';
Cells[1,7]:='218425';Cells[2,7]:='Седьмой Н.П.';Cells[3,7]:='3';Cells[4,7]:='2';
Cells[5,7]:='4';
Cells[1,8]:='223054';Cells[2,8]:='Восьмой Н.П.';Cells[3,8]:='2';Cells[4,8]:='2';
Cells[5,8]:='4';
Cells[1,9]:='219325';Cells[2,9]:='Девятый Н.П.';Cells[3,9]:='5';Cells[4,9]:='5';
Cells[5,9]:='4';
for i:=1 to 9 do
with MZap[i] do
begin // формирование полей массива записей
nzach:=StrToInt(Cells[1,i]);
fio:=Cells[2,i];
mat:=StrToInt(Cells[3,i]);
fiz:=StrToInt(Cells[4,i]);
inf:=StrToInt(Cells[5,i]);
end;
end;
end;
{ Сортировка записей в порядке убывания среднего балла}
procedure TForm1.Button1Click(Sender: TObject); var
i,j: integer;
rab: zap; // Рабочая переменная для обмена значениями двух элементов
// массива при сортировке
begin
for i:=1 to 9 do
with StringGrid1,MZap[i] do
begin // формирование полей массива записей при нажатии Button1
nzach:=StrToInt(Cells[1,i]);
fio:=Cells[2,i];
mat:=StrToInt(Cells[3,i]);
fiz:=StrToInt(Cells[4,i]);
inf:=StrToInt(Cells[5,i]);
srb:=(mat+fiz+inf)/3 // Расчет среднего балла
end;
for i:=2 to 9 do // Сортировка массива записей по убыванию среднего
//балла
for j:=9 downto i do // методом пузырька
if MZap[j-1].srb<MZap[j].srb then
begin
rab:=MZap[j-1];
MZap[j-1]:=MZap[j];
MZap[j]:=rab;
end;
with StringGrid2 do // Очистка ячеек StringGrid2
for i:=0 to 9 do
for j:=0 to 9 do
Cells[j,i]:=' ';
with StringGrid2 do
begin // Пересылка заголовков столбцов в первую строку
//StringGrid2
Cells[0,0]:='№ п/п';
Cells[1,0]:='№ зачетной книжки';
Cells[2,0]:='Фамилия';
Cells[3,0]:='Математика';
Cells[4,0]:='Физика';
Cells[5,0]:='Информатика';
Cells[6,0]:='Средний балл';
for i:=1 to 9 do
with MZap[i] do
begin // Занесение информации в остальные ячейки
//StringGrid2
Cells[0,i]:=IntToStr(i); // из рассортированного массива Mzap
Cells[1,i]:=IntToStr(nzach);
Cells[2,i]:=fio;
Cells[3,i]:=IntToStr(mat);
Cells[4,i]:=IntToStr(fiz);
Cells[5,i]:=IntToStr(inf);
Cells[6,i]:=floatToStrF(srb,ffFixed,5,2);
end;
end;
end;
{ Вывод списка неуспевающих студентов}
procedure TForm1.Button2Click(Sender: TObject); var
i,j:integer;
begin
for i:=1 to 9 do
with StringGrid1,MZap[i] do
begin // Занесение данных в массив записей
nzach:=StrToInt(Cells[1,i]);
fio:=Cells[2,i];
mat:=StrToInt(Cells[3,i]);
fiz:=StrToInt(Cells[4,i]);
inf:=StrToInt(Cells[5,i]);
srb:=(mat+fiz+inf)/3
end;
with StringGrid3 do // Очистка ячеек StringGrid3
for i:=0 to 9 do
for j:=0 to 9 do
Cells[j,i]:=' ';
with StringGrid3 do
begin // Занесение заголовков столбцов в первую строку StringGrid3
Cells[0,0]:='№ п/п';
Cells[1,0]:='№ зачетной книжки';
Cells[2,0]:='Фамилия';
Cells[3,0]:='Математика';
Cells[4,0]:='Физика';
Cells[5,0]:='Информатика';
Cells[6,0]:='Средний балл';
j:=0;
for i:=1 to 9 do //Занесение только данных о неуспевающих студентах в
// StringGrid3
with MZap[i] do
if (mat=2) or (fiz=2) or (inf=2) then
begin
j:=j+1;
Cells[0,j]:=IntToStr(j);
Cells[1,j]:=IntToStr(nzach);
Cells[2,j]:=fio;
Cells[3,j]:=IntToStr(mat);
Cells[4,j]:=IntToStr(fiz);
Cells[5,j]:=IntToStr(inf);
Cells[6,j]:=floatToStrF(srb,ffFixed,5,2);
end;
end;
end;
{ Определение наибольшего и наименьшего номеров зачетных книжек}
procedure TForm1.Button3Click(Sender: TObject);
var
i, min, max, k, l: integer;
begin
for i:=1 to 9 do
with StringGrid1,MZap[i] do
begin // Занесение данных в массив записей при нажатии кнопки Batton3
nzach:=StrToInt(Cells[1,i]);
fio:=Cells[2,i];
mat:=StrToInt(Cells[3,i]);
fiz:=StrToInt(Cells[4,i]);
inf:=StrToInt(Cells[5,i]);
srb:=(mat+fiz+inf)/3
end;
max:=MZap[1].nzach; k:=1; // занесение № первой зачетки в ячейку max
min:=MZap[1].nzach; l:=1; // занесение № первой зачетки в ячейку min
for i:=1 to 9 do // Поиск максимального и минимального № зачеток
with MZap[i] do // и номеров в массиве их обладателей
begin
if MZap[i].nzach>max then
begin
max:=nzach;
k:=i;
end;
if MZap[i].nzach<min then
begin
min:=nzach;
l:=i;
end;
end;
Memo1.Lines.Add('РЕЗУЛЬТАТ'); // Занесение результатов в Memo поле
Memo1.Lines.Add(#13#10+'Наибольший № зачетки '+IntToStr(max)+' имеет '+MZap[k].fio);
Memo1.Lines.Add(#13#10+'Наименьший № зачетки '+IntToStr(min)+' имеет '+MZap[l].fio);
end;
end.
