Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
яву_кисо_delphi(1)(1).doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
1.26 Mб
Скачать

Лабораторная работа №5 Циклические вычислительные процессы

  1. Цель лабораторной работы

Целью лабораторной работы является приобретение практических навыков программирования циклических вычислительных процессов обработки одномерных массивов.

  1. Условия: в массиве, состоящем из 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.Тренировочные вопросы к защите:

  1. Что содержит компонент ТStringGrid?

  2. В чем значение фиксированной части таблицы строк?

  3. Главное свойство StringGrid?

  4. В записи Cells [2,5] какое значение имеет номер строки, номер столбца?

  5. Какие элементы свойства Options необходимо определить, чтобы можно было редактировать ячйки таблицы? обходить ячейки по клавише ТАВ?

  6. Какая функция используется для преобразования символьного значения в числовой формат?

  7. Какая функция используется для преобразования числа в символьное представление?