Складання програм з розгалуженням

Приклад1. Скласти програму, де потрібно ввести два цілі числа А, В. Менше замінити добутком цих чисел, більше їх сумою.
procedure TForm1.Button1Click(Sender: TObject);
var a,b,x,y:integer;
begin
a:=StrToInt(Edit1.Text);
b:=StrToInt(Edit2.Text);
if a>b then
begin
x:=a+b;
y:=a*b;
end
else
begin
x:=a*b;
y:=a+b;
end;
a:=x;
b:=y;
Edit3.Text:=IntToStr(a);
Edit4.Text:=IntToStr(b);
end;

Приклад2. Як приклад використання інструкції if розглянемо програму обчислення вартості послуг за Інтернет.
Як відомо, ціна за користування Інтернетом у вихідні дні нижча, ніж в звичайні. Програма, текст якої був приведений в лістингу нижче, запрошує тривалість користування Інтернетом і день тижня, а потім обчислює вартість послуги. Якщо день тижня — субота або неділя, то вартість зменшується на величину знижки. Ціна хвилини роботи в Інтернеті  і величина знижки задаються в тексті програми як константи.
Діалогове вікно програми Вартість розмови
Для введення початкових даних (тривалість роботи в Інтернеті , номер дня тижня) використовуються поля редагування, для виведення результату і тексту пояснення — текстові поля . В табл. “Компоненти форми додатку Вартість розмови” перераховані компоненти і вказано їх призначення, а табл. “Значення властивостей компонентів” приведені значення властивостей цих компонентів.
Табл. Компоненти форми додатку Вартість розмови
Компонент
Призначення
Edit1
Edit2
Для введення тривалості роботи в Інтернеті  в хвилинах
Для введення номера дня тижня
Label1, Label2
Для виведення тексту пояснення про призначення полів введення
Label3
Для виведення результату обчислення — вартості послуг
Button1
Для активізації процедури обчислення вартості послуг користування Інтернетом
Примітка
Тут і далі при описі форми додатку приводяться значення тільки тих властивостей компонентів, які використовуються в програмі. Значення решти властивостей, зокрема визначаючих розмір і положення компонентів, можуть бути залишені без зміни або змінені довільним чином, природно, в розумних межах (очевидно, що положення командної кнопки або поля редагування може бути вибрано в межах форми довільним чином).
Табл. Значення властивостей компонентів
Властивість
Значення
Form1 . Caption
Вартість роботи в Інтернеті
Edit1.Text
Edit2.Text
Label1 .Caption
Тривалість (хв.)
Label2 .Caption
Номер дня тижня
Label3 .Caption
Button1 . Caption
Обчислити
Примітка
В таблицях, що містять опис значень властивостей компонентів форми, вказується ім'я компоненту і через крапку — ім'я властивості. Наприклад, рядок таблиці Form1.Caption Плата за Інтернет означає, що під час створення форми додатку властивості Caption форми додатку треба привласнити вказане значення — текст "Плата за  Інтернет".
Програма проводить обчислення в результаті клацання на командній кнопці Обчислити. При цьому виникає подія onclick, яка обробляється процедурою TForm1.Button1Click.
Лістинг. Обчислення вартості користування інтернетом
Unit Inet;
interface
Windows, Messages, SysUtils, Classes
Graphics, Controls, Forms, Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Editl: TEdit; // поле введення тривалості роботи в Інтернеті
Edit2: TEdit; // поле введення номера дня тижня
Button1: ТВutton; // кнопка Обчислити
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
procedure ButtonlClick(Sender: TObject); private
/ Private declarations } public
{ Public declarations } end;
var
Form1: TForm1;
implementation
($R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
const
Cina =0.03; // ціна однієї хвилини роботи 0.03 грн.
DISCOUNT = 0.2; // знижка 20 відсотків
var
Time:Real; // тривалість роботи
Day:integer; // день тижня
Suma:real; // вартість послуг
Begin  // отримати початкові дані
Time:=StrToFloat(Editl.Text) ;
Day:=StrToInt(Edit2.Text);
// Обчислити вартість послуг
Suma:= Cina*Time;
// Якщо день субота або неділя, то зменшити // вартість на величину знижки
if (Day = 6) OR (Day = 7) then
Suma:=Suma*(1 - DISCOUNT);
// виведення результату обчислення
label3.caption:='До оплати '+ FloatToStr(Suma)+ ' грн.'; end;
end.
Проект «Вгадай число»
Завдання. Складіть програму «Вгадай число». Комп’ютер загадує випадкове число від 0 до 100. Користувач робить спробу вгадати число. Комп’ютер порівнює введене число і видає відповідь «мало» або «багато». Якщо користувач вгадав число, виводиться надпис «Ура! Ти вгадав число!»
1. Створіть проект. Розмістіть на формі елементи відповідно до приведеного прикладу. Задайте властивості компонент згідно таблиці
Властивість
Значення
Form1 . Caption
Вгадай число
Edit1.Text
Label1 .Caption
Ваша спроба
Label2 .Caption
Label3 .Caption
Ура! Ти вгадав число
Label3 .Visible
False
Button1 . Caption
Загадати нове число
Button2 . Caption
Перевірити
2. Для одержання випадкових чисел в Lazarus існує функція Random(k), яка повертає випадкове ціле число, що лежить у діапазоні від 0 до k. Наприклад, щоб отримати випадкове число від 0 до 100, необхідно записати оператор присвоєння: x:=Random(100). Для того, щоб при кожному запуску програми одержувати різні випадкові числа необхідно перед використанням функції Random використати процедуру Randomize
Отже, кнопці «Загадати нове число» відповідає процедура обробки події:
procedure TForm1.Button1Click(Sender: TObject);
begin
Randomize;
b:=Random(100);
Label2.Visible:=False;
Label3.Visible:=False;
Edit1.Clear;
Edit1.SetFocus;
end;
Змінну b потрібно описати як глобальну змінну, а саме перед початком виконавчої частини після слів var   Form1: TForm1;  b:integer;
3. Для кнопки перевірити потрібно записати такий код:
procedure TForm1.Button2Click(Sender: TObject);
var a:integer;
begin
Label2.Visible:=False;
a:=StrToInt(Edit1.Text);
if a=b then
begin
Label3.Visible:=True;
Label2.Visible:=False;
end
else
if not a>b then
begin
Label2.Visible:=True;
Label2.Caption:='МАЛО';
end
else
begin
Label2.Visible:=True;
Label2.Caption:='БАГАТО';
end;
end;
4. Збережіть проект. Запустіть програму на виконання.
Для того, щоб вгадати швидко число потрібно використати так званий метод «половинного ділення».

Комментариев нет:

Отправить комментарий