Тема3. Циклические алгоритмы.

4А.Припишите к числу ***999 такие три цифры, чтобы полученное шестизначное число делилось на 13,17,19.

procedure TForm1.Button1Click(Sender: TObject);

var a,n, i :integer; нет

begin

for i:=100 to 999 do begin

n:=1000*i+999;

if ((n mod 13)=0) and ((n mod 17)=0) and ((n mod 19)=0) да

then

memo2.lines.add(inttostr(n));

end;

end;

 

procedure TForm1.Button2Click(Sender: TObject);

begin

memo2.clear;

end;

end.

 

// 1) – n:= 100000, 999999,1

// 2) if ((n mod 13)=0) and ((n mod 17)=0) and ((n mod 19)=0)

9В. Женщина шла на базар и разбила яйца, лежавшие у нее в корзине. Она сказала, что не знает сколько яиц было, но когда она брала по 2,3,4,5 и 6 яиц то оставалось в остатке одно. Когда же она брала по 7 яиц, то ничего не оставалось в остатке. Сколько яиц могло быть в корзине.

procedure TForm1.Button1Click(Sender: TObject);

var n:integer;

begin

n:=strtoint(edit1.Text);

for n:=1 to n do

if (n mod 2=1) and (n mod 3=1) and (n mod 4=1) and (n mod 5=1) and (n mod 6=1)

and (n mod 7=0)

then memo1.Lines.Add(inttostr(n))

end;

procedure TForm1.edit1onkeypress(Sender: TObject; var Key: Char);

begin

case key of

'0'..'9',#8:;

#13: button1.setfocus;

else key:=chr(0);

end;

end;

procedure TForm1.Button2Click(Sender: TObject); нет

begin

memo1.Clear;

end;

end. да

 

// 1) n:=1,500,1

// 2) if (n mod 2=1) and (n mod 3=1) and

(n mod 4=1) and (n mod 5=1) and (n mod 6=1)

 

Тема4. Массивы

4А.Найти номер максимального элемента таблицы a[1..10]. (Глобальное объявление:

Var form1: tform1;

a:array[1..10] of integer

max, i, k :integer;

procedure TForm1.Button1Click(Sender: TObject);

begin

max:=a[i-1];

for i:=2 to 10 do

if a[i]>max then

begin

max:=a[i]; нет

k:=i;

end; да

label1.caption:=inttostr(max);

label2.caption:=inttostr(k);

end;

// 1) for i:=2 to 10 do

If a[i]>max then

Кнопка Random для задач 4А и 9А:

procedure TForm1.Button2Click(Sender: TObject);

begin

randomize;

for i:=1 to 10 do

begin

a[i]:=random(100); ( в задаче 9А добавим -10, для отрицательных чисел)

stringgrid1.cells[i-1,0]:=inttostr(a[i]);

end;

end;

end.(? Блок схема)

 

9А.Найти сумму третьего и шестого положительных элементов одномерного массива.

procedure TForm1.Button1Click(Sender: TObject);

var i,k:integer;

begin

randomize;

for i:=1 to 25 do

begin

a[i]:=random(20)-10;

stringgrid1.Cells[i-1,0]:=inttostr(a[i]);

end;

end;

procedure TForm1.Button2Click(Sender: TObject); нет да

var i,k,l:integer;

begin

k:=1;

for i:=1 to 25 do begin

if (a[i]>0) then

begin

b[k]:=a[i];

k:=k+1;

end;

stringgrid2.cells[k-1,0]:=inttostr(b[k]);

begin

for l:=1 to k do begin

n:=b[3]+b[6];

label1.caption:=inttostr(n);

end;

end;

end;

end;

procedure TForm1.Button3Click(Sender: TObject); // очиста ячеек в стинг гриде 2 для конечных цифр

var

m, n: Integer;

begin

with StringGrid2 do

for m := 0 to ColCount - 1 do

for n := 0 to RowCount - 1 do

Cells[m, n] := '';

end;

end.

//1)- n:=1,25,1 2) - a[i]>0 3) - l:=1,k,1

Тема5. Строки и файлы.

4В.Ввести фамилию, имя и отчество как одно данное строкового типа. Определить сколько букв «а» есть в фамилии. (для исходной информаций нужно создать файл input.txt и output.txt).

procedure TForm1.Button2Click(Sender: TObject);

begin

if opendialog1.Execute then

memo1.Lines.LoadFromFile(opendialog1.FileName);

end;

procedure TForm1.Button3Click(Sender: TObject);

begin

if savedialog1.execute then

memo1.Lines.SaveToFile(savedialog1.filename+'.txt');

end;

procedure TForm1.Button1Click(Sender: TObject);

var n,i,k:integer;s:string;

begin

assignfile(f1,'input.txt');

assignfile(f2,'output.txt');

reset(f1);

read(f1,s);

rewrite(f2); да

k:=0;

for i:=1 to length(s) do

begin нет

if ((s[i]='а') or (s[i]='А')) then

k:=k+1;

end;

writeln(f2,k);

memo2.lines.add(inttostr(k));

closefile(f1);

closefile(f2);

end;

end.

// 1) – i:=1,length(s),1

// 2) – if ((s[i]='а') or (s[i]='А'))

9С.Составить программу, удаляющую в файле текст после первой точки. (для исходной информаций нужно создать файл input.txt и output.txt).

procedure TForm1.Button1Click(Sender: TObject);

var i,c:integer;s:string;

begin

assignfile(f1,'input.txt');

assignfile(f2,'output.txt');

reset(f1);

read(f1,s);

rewrite(f2);

for i:=1 to length(s) do

begin

if (s[i]='.') then

delete(s,i,c);

c:=length(s)-i;

end;

writeln(f2,s);

memo2.Lines.add(s);

closefile(f1); да

closefile(f2);

end;

procedure TForm1.Button2Click(Sender: TObject);

begin нет

if opendialog1.Execute then

memo1.Lines.LoadFromFile(opendialog1.FileName);

end;

procedure TForm1.Button3Click(Sender: TObject);

begin

if savedialog1.execute then

memo1.Lines.SaveToFile(savedialog1.filename+'.txt');

end;

end.

//1) – i:=1,length(s),1

//2) – if (s[i]='.')

 

Тема6. Графика

4В. Нарисовать 100 линий, расходящихся в разные места, начиная с центра экрана.

procedure TForm1.Button1Click(Sender: TObject);

var

i:integer;

x,y:real;

begin

for i:= 1 to 100 do // 1)

begin

x:=Image1.Width div 2+(Image1.Width div 2)*sin(i/2);//2)

y:=Image1.Height div 2+(Image1.Height div 2)*cos(i/2);//3)

with Image1.Canvas do

begin

MoveTo(Image1.Width div 2, Image1.Height div 2); //4)

LineTo(round(x),round(y)); // 5)

end;

end;

end;

end.

9С.Создать титульный лист и построить график кубической параболы.

function f(x:real):real;

begin

f:=x*x*x;

end;

procedure TForm1.Button1Click(Sender: TObject);

var

x1, x2, y1, y2, x, y, dx, mx, my : real;

l, b, w, h, x0, y0: integer;

begin

l := 10;

b := Form1.image1.ClientHeight - 20;

h := Form1.image1.ClientHeight - 40;

w := Form1.image1.Width - 40;

x1 := 0;

x2 := 5;

dx := 0.01;

y1 := f(x1);

y2 := f(x1);

x := x1;

repeat

y := f(x);

if y < y1 then y1 := y; //2)

if y > y2 then y2 := y;//3)

x := x + dx;

until (x >= x2); //1)

my := h / abs(y2 - y1);

mx := w / abs(x2 - x1);

x0 := l;

y0 := b - Abs(Round(y1 * my));

with form1.Canvas do

begin

MoveTo(l, b); LineTo(l, b - h);

MoveTo(x0, y0); LineTo(x0 + w, y0);

x := x1;

repeat

y := f(x);

Pixels[x0 + Round(x * mx), y0 – Round(y * my)] := clRed;

x := x + dx;

until (x >= x2);//4)

end;

end;

procedure TForm1.formresize(Sender: TObject);

begin

form1.image1.Canvas.FillRect(Rect

(0, 0, ClientWidth, ClientHeight));

end;

end.

end;

end;

end.

 

 

Выводы:

Мы научились создавать программы на Delphi, интерфейс программ, изучили разные алгоритмы необходимые для решения разных типов задач. Ознакомились с такими элементами как: button, edit, memo, stringgrid, label, opendialog, savedialog. А так же ознакомились с их свойствами такими как: caption, text, lines. Научились блокировать кнопки, путем создания onkeypress, и использовать showmessage. Останавливать программу(halt), переходить с формы на форму( form(номер).show), очищать memo( memo(номер memo).clear). Так же мы научились пользоваться таким

графическим элементом Delphi как canvas.

 

Список используемой литературы:

1.Культин Н.Б. Delphi в задачах и примерах. – СПб.: БВХ - Петербург, 2004.-299 с.:ил.

2. Симонович С., Ессеев Г., Алексеев А. Общая информатика. – М.: АСИ-ПРЕСС; Инфорком Пресс, 1998,592 с.

3.Хомоненко А.Д. Самоучитель Delphi.-2-е изд., перераб. и доп./А.Д. Хомоненко, В.Э. Гофман. – СПб.БХВ-Петербург, 2008.-576с.:ис. +CD-ROM

4. Поисковая система Google