Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

comp2009

.pdf
Скачиваний:
43
Добавлен:
07.06.2015
Размер:
14.99 Mб
Скачать

2. Практикум по программированию на языке Visual Basic For Application "

‘Добавление в файл

Private Sub CommandButton2_Click()

FilNum = FreeFile() Dim nbyte As Long

Open Fil For Random Access Read Write As FilNum Len

= Len(Trec)

nbyte = LOF(FilNum)

n = CInt(nbyte / Len(Trec))

Trec.Name = InputBox(“Введите фамилию”)

Trec.Code = n + 1

Put FilNum, n + 1, Trec

Close FilNum

End Sub

‘Чтение файла и вывод на экран

Private Sub CommandButton3_Click()

FilNum = FreeFile()

Open Fil For Random Access Read As FilNum Len =

Len(Trec)

Do While Not EOF(FilNum)

Get FilNum, , Trec

S = Str(Trec.Code) & “ “ & Trec.Name

ListBox1.AddItem (S)

Loop

End Sub

‘Создание папки для записи в нее файла

Private Sub CommandButton4_Click()

ChDrive “C”

On Error Resume Next MkDir “Lab”

ChDir “Lab”

End Sub

131

"Компьютерный практикум по информатике и программированию

3.Запускаем программу на выполнение

3.1.Создаем папку (щелчком на соответствующей кнопке).

3.2.Создаем файл. Вводим фамилии (в цикле), программа осуществляет вывод в файл с заданным именем каждой записи, например, рис. 2.21.

Рис. 2.21

4.Дополняем файл одной записью

5.Выводим содержимое файла с помощью компонента ListBox

(рис. 2.22):

Рис. 2.22

132

!

3. ПРАКТИКУМ ПО ПРОГРАММИРОВАНИЮ В СРЕДЕ

CODEGEAR DELPHI 2007 НА ЯЗЫКЕ OBJECT PASCAL

1.Данная часть содержит примеры решения задач по программированию на Object Pascal и порядок разработки программ. Предполагается, что материал, связанный с описанием среды и теории программирования на данном языке изучается в курсе дисциплины «Информатика» либо в специальных курсах по программированию, а также с использованием литературы (см. список Рекомендуемой литературы).

2.В части 4 настоящего учебника содержатся различные задания по программированнию, которые могут выполняться по вариантам.

3.1. Линейный алгоритм

Задание. Составить программу вычисления для заданных значений x, y, z арифметического выражения

u = tg2 (x + y ) – ey –z cosx2 + sinz2 .

1.Создать новый проект и изменить заголовок у главного окна. Переключиться в окно Object Inspector (клавишей F11), ввести в свойстве Caption элемента Form1 текст Линейный алгоритм — выполнил

Ф.И.О.

2.Разместить элементы управления TLabel, TEdit, TMemo, TButton как показано на рис. 3.1.

3.У элементов управления TEdit изменить в Object Inspector значения поля Text, введя любые числа, например, такие как на рис. 3.1. Обратить внимание, что на интерфейсе Windows дробная часть отделяется от целой знаком запятая, а в тексте программы знаком точка.

133

" Компьютерный практикум по информатике и программированию

Рис. 3.1

4.В элементе TMemo1 текст размещать не следует, потому, что он появляется в результате работы программы.

5.Установить свойство Caption кнопки TButton1, ввести текст Выполнить. Выполнить двойной щелчок левой кнопки мыши на кнопке TButton1 и перейти в режим редактирования. Вид окна редактирования показан на рис. 3.2. Обратить внимание, что в этом окне уже есть некоторое число строк программы. Их изменять и удалять не следует.

6.Найтиглавныйразделподключениямодулей(uses), послеStdCtrls ввести запятую и Math. Ввести текст программы. Обратить внимание, что текст

программы приведен полностью, но некоторые строки уже существуют.

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants,

Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, Math;

134

3. Практикум по программированию на языке Object Pascal "

Рис. 3.2.

type

TForm1 = class(TForm)

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Edit1: TEdit;

Edit2: TEdit;

Edit3: TEdit;

Memo1: TMemo; Button1: TButton;

procedure Button1Click(Sender: TObject); private

{Private declarations } public

{Public declarations }

end;

var

Form1: TForm1;

135

" Компьютерный практикум по информатике и программированию implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

var x,y,z,u:extended; // это раздел описаний пере-

менных begin

Memo1.Clear; // Очистка окна Memo1

Memo1.Lines.Add(‘Линейный алгоритм’); // Вывод текста в окно Memo1

x:=StrToFloat(Edit1.Text); // Считывание x y:=StrToFloat(Edit2.Text); // Считывание y z:=StrToFloat(Edit3.Text); // Считывание z u:=sqr(tan(x+y))-exp(y-z)*sqrt(cos(sqr(x))+sin(sq r(z))); // Расчет u по заданной формуле

Memo1.Lines.Add(‘При x=’+FloatToStr(x)); // Вывод

значения x

Memo1.Lines.Add(‘При y=’+FloatToStr(y)); // Вывод

значения y

Memo1.Lines.Add(‘При z=’+FloatToStr(z)); // Вывод

значения x

Memo1.Lines.Add(‘Значение u=’+FloatToStr(u)); //

Вывод значения u end;

end.

7.Запустить программу можно, нажав Run в главном меню Run или клавишу F9. При этом происходит трансляция и, если нет ошибок, компоновка программы и создание единого загружаемого файла с расширением .exe.

8.Работа с программой происходит следующим образом. Нажмите (щелкните мышью) кнопку Выполнить. В окне Memo1 появляется результат. Измените исходные значения x, y, z в окнах Edit и снова нажмите кнопку Выполнить — появятся новые результаты. Завершить работу программы можно, нажав или Program Reset в главном меню Run, или кнопку закрытия на форме.

136

3.Практикум по программированию на языке Object Pascal "

3.2.Разветвляющийся алгоритм

При создании программ в CodeGear Delphi 2007 для организации разветвлений часто используются компоненты в виде кнопок-переключате- лей. Состояние такой кнопки (включено/выключено) визуально отражается на форме. Компонент TCheckBox организует кнопку независимого переключателя, с помощью которой пользователь может указать свое решение типа да/нет. В программе состояние кнопки связано со значением булевской переменной, которая проверяется с помощью оператора if. Компонент TRadiogroup организует группу кнопок — зависимых переключателей. При нажатии одной из кнопок группы все остальные кнопки отключаются. В программу передается номер включенной кнопки (0, 1, 2, ...), который анализируется с помощью оператора case.

Задание. Ввести три числа x, y, z. Вычислить по усмотрению u = = sin(x) или u = cos(x), или u = tg(x). Найти максимальное из трех чи-

сел: max(u, y, z).

1. Создать форму по образцу рис. 3.3. Используемые компоненты: Label1, Label2, Label3 — для отображения текста Введите значение x, y, z соответственно; Edit1, Edit2, Edit3 — для ввода числовых значений x, y, z соответственно, причем дробная часть отделяется запятой; Memo1 — для вывода результатов; Button1 — для выполнения вычислений.

Рис. 3.3

137

"Компьютерный практикум по информатике и программированию

2.Обратить внимание, что используются компоненты CheckBox1 и RadioGroup1. Для того, чтобы задать строки в компоненте RadioGroup1 нужно выбрать в инспекторе объектов свойство Items, появится строчный редактор списка заголовков кнопок. Набрать три строки с текстом: в первой строке — sin(x), во второй — cos(x + y), в третьей — tan(x – y + z), нажать ОК. После этого на форме внутри окаймления появится три кноп- ки-переключателя с введенными надписями.

3.Ввести текст программы, выполняющийся по нажатию кнопки Button1 (текст процедуры) и добавить Math в раздел модулей uses. Обра-

тить внимание, что текст программы приведен полностью, но некоторые строки уже существуют.

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants,

Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, Math;

type

TForm1 = class(TForm) Label1: TLabel;

Label2: TLabel;

Label3: TLabel; Edit1: TEdit; Edit2: TEdit; Edit3: TEdit;

RadioGroup1: TRadioGroup;

CheckBox1: TCheckBox; Memo1: TMemo; Button1: TButton;

procedure Button1Click(Sender: TObject); private

{Private declarations } public

{Public declarations }

end;

138

3. Практикум по программированию на языке Object Pascal "

var

Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject); var x,y,z,u,max:extended;

st:string[20]; begin

Memo1.Clear;

st:=’’;

x:=StrToFloat(Edit1.Text);

y:=StrToFloat(Edit2.Text);

z:=StrToFloat(Edit3.Text);

// Проверка номера нажатой кнопки и выбор соот-

ветствующей ей функции

case RadioGroup1.ItemIndex of

0:begin u:=sin(x);st:=RadioGroup1.Items. ValueFromIndex[0];end;

1:begin u:=cos(x+y);st:=RadioGroup1.Items. ValueFromIndex[1];end;

2:begin u:=tan(x-y+z); st:=RadioGroup1.Items. ValueFromIndex[2];end;

end;

Memo1.Lines.Add(‘При x= ‘+FloatToStr(x));

Memo1.Lines.Add(‘При y= ‘+FloatToStr(y)); Memo1.Lines.Add(‘При z= ‘+FloatToStr(z)); Memo1.Lines.Add(‘Рассчитано u= ‘+ st +’ = ‘+FloatToStr(u));

// Проверка состояния кнопки CheckBox1 if CheckBox1.Checked then

begin // Нахождение максимального из трех чисел if (x>=y) and (x>=z) then max:=x else

if (y>=x) and (y>=z) then max:=y else if (z>=x) and (z>=y) then max:=z;

139

" Компьютерный практикум по информатике и программированию

Memo1.Lines.Add(‘Максимальное из х,y,z = ‘+FloatToStr(max));

end;

end;

end.

4. Вид выполняемой программы приведен на рис. 3.4.

Рис. 3.4

3.3. Циклический алгоритм

n

Задание 1. Вычислить значение функции S = 2i(n -1,5i ), для

i=1

n — целого числа, выводя промежуточные результаты при суммировании.

1. Создать форму по образцу рис. 3.5. Используемые компоненты: Label1 — для сообщения о вводе числа повторов цикла; Label2 — для сообщения о промежуточных итогах; Edit1 — для ввода числа повторов цикла; Memo1 — для вывода результатов; Label3 — сообщение о результате суммирования; Edit2 — для вывода результата суммирования.

140

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]