Приклади проектів, з використанням команди розгалуження
Готуємося вивчати вказівку циклу. Проект "Одне слово у тексті чи декілька" з використанням вказівки пошуку у тексті пропуску.
procedure TForm1.Button1Click(Sender: TObject);
var t:string;
n,i,k:integer;
begin
t:=Edit1.Text;
n:=length(t);
i:=0;
if i<=n then
begin
if t[i]=' ' then k:=k+1;
i:=i+1;
end;
if k>= 1 Then Edit2.text:='У тексті декілька слів' Else Edit2.Text:='У тексті одне слово';
end;
1. Створити форму для ілюстрації ващого відношення до програмування. Скористатися RadioButton та відповідними малюнками. На початку у формі не буде здійснено жодного вибору та не виведено жодного зображення. Після натиснення на кнопку "Виберіть своє відношення до програмування" та здійснення такого вибору у формі появиться відповідне зображення.
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
RadioButton2.Checked:=false;
RadioButton1.Checked:=false;
RadioButton3.Checked:=false;
Image1.Visible:=false;
Image2.Visible:=false;
Image3.Visible:=false;
end;
procedure TForm1.RadioButton1Change(Sender: TObject);
begin
Image1.Visible:=false;
Image2.Visible:=true;
Image3.Visible:=false;
end;
procedure TForm1.RadioButton2Change(Sender: TObject);
begin
Image1.Visible:=true;
Image2.Visible:=false;
Image3.Visible:=false;
end;
procedure TForm1.RadioButton3Change(Sender: TObject);
begin
Image1.Visible:=false;
Image2.Visible:=false;
Image3.Visible:=true;
end;
Проект 2. Розміщення прямих (без детального дослідження). Обчислити кутові коефіцієнти прямих та перевірити випадок взаємного розміщення цих прямих. Скористатися формулами: k=(y2-y1)/(x2-x1) та умовами: якщо k1=k2, то прямі паралельні; інакше прямі перетинаються. У даному проекті не розглядався випадок співпадання прямих.
procedure TForm1.Button1Click(Sender: TObject);
var x1,y1,x2,y2,x3,y3,x4,y4,k1,k2:real;
begin
x1:=StrToFloat(Edit1.Text);
y1:=StrToFloat(Edit2.Text);
x2:=StrToFloat(Edit3.Text);
y2:=StrToFloat(Edit4.Text);
k1:=(y2-y1)/(x2-x1);
x3:=StrToFloat(Edit5.Text);
y3:=StrToFloat(Edit6.Text);
x4:=StrToFloat(Edit7.Text);
y4:=StrToFloat(Edit8.Text);
k2:=(y4-y3)/(x4-x3);
Edit9.Text:= floatToStr(k1);
Edit10.Text:= floatToStr(k2);
if k1=k2 then Edit11.Text:='Прямі паралельні або збігаються';
if k1*k2=1 then Edit11.Text:='Прямі перпендикулярні';
if k1<>k2 then Edit11.Text:='Прямі перетинаються';
end;
Проект 3. Чи поміститься круг у квадраті?
procedure TForm1.Button1Click(Sender: TObject);
var a,r,riz:real;
begin
a:=StrToFloat(Edit1.Text);
r:=StrToFloat(Edit2.Text);
if r<=a/2 then Edit3.Text:='Круг поміститься у квадраті'
else Edit3.Text:='Круг не поміститься у квадраті'
end;
Команда вибору і TMemo.
Проект "Розклад уроків"
procedure TForm1.Button1Click(Sender: TObject);
var n:integer;
begin
n:=StrToInt(Edit1.Text);
case n of
1:
begin
Memo1.Lines.Add('1. Інформатика');
Memo1.Lines.Add('2. Українська мова');
Memo1.Lines.Add('3. Алгебра');
Memo1.Lines.Add('4. Зарубіжна література');
end;
2:
begin
Memo1.Lines.Add('1. Фізика');
Memo1.Lines.Add('2. Хімія');
Memo1.Lines.Add('3. Географія');
Memo1.Lines.Add('4. Геометрія');
end;
3:
begin
Memo1.Lines.Add('1. Англійська мова');
Memo1.Lines.Add('2. Фізкультура');
Memo1.Lines.Add('3. Інформатика');
Memo1.Lines.Add('4. Біологія');
end;
6,7:Memo1.Lines.Add('Вихідний день');
end;
end;
Процедура очистки поля Memo:
procedure TForm1.Button2Click(Sender: TObject);
begin
Memo1.Lines.Clear;
end;
Використання випадкових чисел для перевірки навичок множення в межах 10.
Код:
var
Form1: TForm1;
x,y,d:integer;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.FormCreate(Sender: TObject);
begin
randomize; x:=random(8)+1; y:=random(8)+1; d:=x*y;
label1.Caption:=IntToStr(x); label3.Caption:=IntToStr(y); label5.Caption:='?';
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
x:=random(8)+1; y:=random(8)+1; d:=x*y;
label1.Caption:=IntToStr(x); label3.Caption:=IntToStr(y); label5.Caption:='?';
end;
procedure TForm1.Button2Click(Sender: TObject);
var t:integer;
begin
t:=StrToInt(Edit1.Text);
label5.Caption:=IntToStr(d);
if d=t then label7.Caption:='Правильно!' else label7.Caption:='Помилка';
end;
end.
Прості та вкладені розгалуження
Задача 96. Дано значення цілих величин x та y. Знайти: max(x, y)+min(x, y).
procedure TForm1.Button1Click(Sender: TObject);
var x,y,z,max,min:integer;
begin
x:=StrToInt(Edit1.Text);
y:=StrToInt(Edit2.Text);
if x>=y then max:=x else max:=y;
if x<=y then min:=x else min:=y;
z:=max+min;
Edit3.Text:= IntToStr(z); end;
Серйозні розважалки
Задача № 86 підручника Караванової. Т.П. "Основи алгоритмізації та програмування"
Чебурашка вирішив купити килим, щоб застелити кімнату, у якій він мешкав разом з Геною. Розміри їх прямокутної кімнати виявилися цілі числа а і b. Коли Чебурашка запитав у магазині, яких розмірів є квадратні килими в продажу, то продавець назвав йому ціле число с. яку кількість килимів треба придбати Чебурашці, щоб накрити максимальну площу кімнати? Килими не можна накладати і підгинати. Визначити, яка площа кімнати буде ненакритою килимами. Передбачити ситуацію, коли розміри килима перевищують розміри кімнати.
procedure TForm1.Button1Click(Sender: TObject);
var a,b,min,s,max:real;
k,c,n,m,k1,s1:integer;
begin
a:=StrToFloat(Edit1.Text); b:=StrToFloat(Edit2.Text); c:=StrToInt(Edit3.Text);
if a<=b then
begin
min:=a; max:=b
end;
if b<a then
begin
min:=b; max:=a
end;
s:=a*b; s1:=c*c;
Edit7.Text:=floatToStr(s); Edit8.Text:=IntToStr(s1);
if c>min
then
Edit6.Text:= 'Такий розмір килима не підходить'
else
Edit6.Text:= 'Такий розмір килима підходить';
if min>=c then
begin
n:=Round(max); k:=n div c; m:=Round(max); k1:=m div c;
Edit4.Text:=IntToStr(k+k1);
Edit5.Text:=FloatToStr(s-s1*k-s1*k1)
end
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
close
end;
Остання процедура передбачена на випадок виходу із програми, якщо розміри килимів, що є в магазині перевищують довжину меншої сторони кімнати, тобто килим не підходить.
Задача № 87.
procedure TForm1.Button1Click(Sender: TObject);
var a,k,s,s1:real;
k1,k2:integer;
begin
a:=StrToFloat(Edit1.Text);
k:=StrToFloat(Edit2.Text);
s:=StrToFloat(Edit3.Text);
s1:=a*a;
if s1/k<s then Edit4.Text:='Права порушені'
else Edit4.Text:='Права не порушено';
k1:=round(s1/s);
k2:=round(k-k1);
Edit5.Text:=IntToStr(k1);
if k>k1 then
Edit6.Text:=IntToStr(k2)
else Edit6.Text:='Є відьне місце'
end;
Задача № 88
procedure TForm1.Button1Click(Sender: TObject);
var a,s:real;
begin
a:=StrToFloat(Edit1.Text);
s:=StrToFloat(Edit2.Text);
if a*a<=s
then Edit3.Text:='Так, Іван Петрович врятує штани'
else Edit3.Text:='Ні, штани не вдасться врятувати'
end;
Задача № 90
procedure TForm1.Button1Click(Sender: TObject);
var a,b,c,s,sd,sb: real;
begin
a:=StrToFloat(Edit1.Text);
b:=StrToFloat(Edit2.Text);
c:=StrToFloat(Edit3.Text);
s:=a*b;
sd:=c*c;
sb:=s-c*c;
Edit4.Text:= floatToStr(sb);
if sb>=sd then Edit5.Text:='Не ошукана';
if sb<sd then Edit5.Text:='Oшукана';
If a<b then
begin
if (c=a) or (c<>b/2) then Edit6.Text:='Прямокутна форма';
if c=b/2 then Edit6.Text:='Квадратна форма'
end;
If b<a then
begin
if (c=b) or (c<>a/2) then Edit6.Text:='Прямокутна форма';
if c=a/2 then Edit6.Text:='Квадратна форма'
end;
end;
Проект "Мішень". Умова: якщо точка належить заштрихованій області, виводимо "Влучив" інакше "Не влучив"
procedure TForm1.Button1Click(Sender: TObject);
var x,y:real;
begin
x:=StrToFloat(Edit1.Text);
y:=StrToFloat(Edit2.Text);
if (x<=2) and (x>=-2) and (y<=2) and (y>=-2) Then Edit3.Text:='Вітаю, Ви влучили!' Else Edit3.Text:='Шкода, Ви не влучили';
end;
Створити проект для випадку (2)
Проект "Оцінки". Використовуючи вказівку If дослідіть рівень знань за обраною оцінкою у списку.
procedure TForm1.Button1Click(Sender: TObject);
var o:integer;
begin
If (RadioGroup1.ItemIndex=0) or (RadioGroup1.ItemIndex=1) or (RadioGroup1.ItemIndex=2) Then Edit1.Text:='Це початковий рівень';
If (RadioGroup1.ItemIndex=3) or (RadioGroup1.ItemIndex=4) or (RadioGroup1.ItemIndex=5) Then Edit1.Text:='Це середній рівень';
If (RadioGroup1.ItemIndex=6) or (RadioGroup1.ItemIndex=7) or (RadioGroup1.ItemIndex=8) Then Edit1.Text:='Це достатній рівень';
If (RadioGroup1.ItemIndex=9) or (RadioGroup1.ItemIndex=10) or (RadioGroup1.ItemIndex=11) Then Edit1.Text:='Це високий рівень';
end;
Задача 93. Щоб бути завжди чистою, людині необхідно х (24 < х < 50) шматків мила на рік. Якщо мити лише п'яти, то мила знадобиться у 12 разів менше, а якщо мити лише вуха - ще на один шматок менше. Скласти програму, яка за вибором користувача давала б відповідь, яку кількість шматків мила необхідно закупити на n років уперед, щоб: 1) митися повністю; 2) мити лише п'яти; 3) мити лише вуха; 4) мити п'яти і вуха.
Подумайте і створіть проект.
До наступної зустрічі!