
- •Курск - 2003
- •Интегрированная среда Delphi
- •Цель лабораторной работы
- •Информационные материалы
- •Главное окно
- •Окно редактора кода
- •Окно дерева объектов
- •Окно браузера
- •Лабораторная работа №2 Основы визуального программирования
- •Лабораторная работа №3 Линейные вычислительные процессы
- •Лабораторная работа №4 Итерационные вычислительные процессы
- •Лабораторная работа №5 Циклические вычислительные процессы
- •Лабораторная работа №6 Обработка строковых данных
- •Лабораторная работа №7 Обработка одномерных массивов
- •Лабораторная работа №8 Обработка матриц
- •Лабораторная работа № 9 Программирование операций с матрицами
- •Лабораторная работа №10 Программирование файловых операций
- •Лабораторная работа №11 Графические средства Delphi
- •Библиография
Лабораторная работа №5 Циклические вычислительные процессы
Цель лабораторной работы
Целью лабораторной работы является приобретение практических навыков программирования циклических вычислительных процессов обработки одномерных массивов.
Условия: в массиве, состоящем из 16 элементов, в каждой паре элементов выполнить условие Аj > Аj+1.
3. Используемые компоненты и их свойства
№ |
Имя компонента |
Настраивае мые свойства
|
Значение |
Комментарии |
1 |
2 |
3 |
4 |
5 |
1 |
Form1 (форма) |
BorderIcons
Caption Menu OnCreate (Стр.Events)
|
{biSystem- Menu} {biMinimize} Massive MainMenu1 Form1Create |
Системное меню
Кнопка инициализации Заголовок формы Главное меню формы Событие формы (возникает при создании окна, но до его появления на экране) |
2 |
Label1 (метка) |
Caption
|
Введите массив |
Надпись |
3 |
Label2 (метка) |
Caption
|
Полученный массив |
Надпись |
4 |
BRun (кнопка, Button) |
Name Caption OnClick (Стр.Events) |
BRun Выполнить BRunClick
|
Имя компонента Надпись Событие компонента (щелчок мыши) |
5 |
BClose (кнопка, Button) |
Name Caption OnClick |
BClose Выход BCloseClick
|
Имя компонента Надпись Событие компонента (щелчок мыши) |
6 |
Button1 (кнопка) |
Caption OnClick |
Очистить Button1Click |
Надпись Событие компонента |
7
|
StringGrid1 (таблица строк)
|
ColCount RowCount ScrollBars Option
Option |
17 1 ssNone goTabs
goEditing
|
Количество столбцов Количество строк Полосы прокрутки – нет Перемещение по клеткам таблицы по TAB (Shift + TAB) Разрешено редактирова- ние ячейки (щелчок мыши или F2,завершение по Enter или при щелчке по другой ячейке) |
8 |
StringGrid2 |
ColCount RowCount ScrollBars |
17 1 ssNone |
Количество столбцов Количество строк Полосы прокрутки – нет |
9 |
MainMenu1 |
Name |
MainMenu1 |
Имя компонента Описание структуры меню и свойств см. лаб. №4 |
На форме размещен компонент TStringGrid. Он предназначен для создания таблиц, в ячейках которой произвольные текстовые строки. Таблица делится на две части – фиксированную и рабочую. Фиксированная для показа заголовков столбцов/рядов (FixedCols, FixedRows). Рабочая – остальная часть таблицы. Свойством компонента является Cells – двухмерный массив ячеек, каждая из которых может содержать произвольный текст. Ячейка определяется парой чисел – номером столбца и номером ряда (строки), на пересечении которых она находится (нумерация начинается с нуля). Рабочая часть может полностью не умещаться целиком в пределах окна компонента, в этом случае в него автоматически помещаются нужные полосы прокрутки. При прокрутке рабочей области фиксированная область не исчезает, но меняется ее содержимое. Размеры таблицы (ColCount и RowCount) могут изменяться как на этапе разработки программы, так и в ходе ее работы.
4.Форма задания
5.Текст программы.
unit UMain5;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, StdCtrls, Menus;
type
TForm1 = class(TForm)
BRun: TButton;
BClose: TButton;
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
MRun: TMenuItem;
N4: TMenuItem;
MExit: TMenuItem;
N3: TMenuItem;
N5: TMenuItem;
About1: TMenuItem;
Label1: TLabel;
StringGrid1: TStringGrid;
StringGrid2: TStringGrid;
Label2: TLabel;
Button1: TButton;
procedure BCloseClick(Sender: TObject);
procedure About1Click(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure BRunClick(Sender: TObject);
procedure StringGrid1KeyPress(Sender: TObject; var Key: Char);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses UAbout;
{$R *.dfm}
procedure TForm1.BCloseClick(Sender: TObject);
begin
Close;
end;
procedure TForm1.About1Click(Sender: TObject);
begin
Application.CreateForm(TForm2, Form2);
end;
procedure TForm1.N3Click(Sender: TObject);
begin
ShowMessage('В массиве, состоящем из 16 элементов'+
' в каждой паре элементов выполнить условие : Aj > Aj + 1 .' );
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
StringGrid1.Cells[0,0]:=' A:';
StringGrid2.Cells[0,0]:=' B:';
end;
procedure TForm1.BRunClick(Sender: TObject);
const
N=16;
var
A : array [1..N] of Integer;
i : Integer;
buf : Integer;
begin
{Input Massive}
for i:=1 to N do
if Length(StringGrid1.Cells[i,0])<>0
then A[i]:=StrToInt(StringGrid1.Cells[i,0])
else A[i]:=0;
{Making}
i:=1;
While i<N+1 do
begin
if A[i]<A[i+1] then
begin
buf:=A[i];
A[i]:=A[i+1];
A[i+1]:=buf;
end ;
i:=i+2;
end;
{Output Massive}
for i:=1 to N do
StringGrid2.Cells[i,0]:=IntToStr(A[i]);
end;
procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char);
begin
case Key of
#8,'0'..'9','-':;
#13 :
if StringGrid1.Col < StringGrid1.ColCount-1
then StringGrid1.Col:=StringGrid1.Col+1
else BRun.SetFocus;
else Key:=chr(0);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
begin
for i:=1 to 16 do
begin
StringGrid2.Cells[i,0]:='';
StringGrid1.Cells[i,0]:='';
end;
end;
end.
6. Комментарии к тексту программы
Объявленный класс TForm 1 содержит компоненты, описанные выше.
Процедура BCloseClick закрывает форму. Закрыть можно, щелкнув по кнопке ВЫХОД, или выбрав опцию пункта меню МЕНЮ.
Процедура About1Click позволяет отобразить на экране форму Form2, содержащую рекламную информацию. Закрытие Form2 осуществляется кнопкой ОК. В основной форме Form1 необходимо указывать имя модуля (см. Uses UAbout;).
Процедура N3 Click выводит окно сообщения на форму. Окно сообщения содержит условия задания и закрывается щелчком по кнопке ОК, имеет стандартную форму.
Процедура FormCreate формирует до появления формы на экране некоторые ее элементы, в данном случае в клетки таблицы строк заносятся имена массивов А и В.
Процедура StringGrid1KeyPress выполняется при вводе исходных данных в клетки таблицы, обеспечивая форматированный ввод ( ‘0’..’9’, ‘-‘), а при нажатии клавиши Enter в случае, если не заполнили все ячейки массива А, то переход к заполнению следующей; иначе передать фокус ввода кнопке BRun (BRun:- SetFocus). Свойство StringGrid1.Col – содержит номер столбца сфокусированной ячейки.
Процедура BRunClick реализует действия, определенные заданием. При формировании массива А необходимо преобразование из символьного представления в численное (StrToInt), а при выводе на экран результирующего массива обратное преобразование (IntToStr).
Процедура Button1Click – очистка строк таблицы 1 и таблицы 2.
7.Содержание отчета
задание;
описание свойств используемых компонентов и форм;
текст программы с комментариями;
результат вычислений.
8.Тренировочные вопросы к защите:
Что содержит компонент ТStringGrid?
В чем значение фиксированной части таблицы строк?
Главное свойство StringGrid?
В записи Cells [2,5] какое значение имеет номер строки, номер столбца?
Какие элементы свойства Options необходимо определить, чтобы можно было редактировать ячйки таблицы? обходить ячейки по клавише ТАВ?
Какая функция используется для преобразования символьного значения в числовой формат?
Какая функция используется для преобразования числа в символьное представление?