Тема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