- •Процюк в.Р. Ваврик т.О.
- •Лінійні програми
- •2 Програми з розгалуженням
- •Питання для самоперевірки
- •3 Циклічні програми з регулярною зміною аргумента
- •4 Циклічні програми з регулярною зміною аргумента, які містять розгалуження
- •5 Ітераційні циклічні процеси
- •6 Одновимірні масиви
- •7 Циклічні програми з накопиченням суми або добутку
- •Р исунок 7.3 – Результат виконання програми
- •8 Вкладені цикли
- •9 Двовимірні масиви, сортування масивів
- •10 Процедури
- •11 Підпрограми-функції
- •12 Обробка текстів
- •Р исунок 12.2 – Інтерфейс програми.
- •13 Файли
- •2 .1. Програма з використанням файлу послідовного доступу мовою gw Basic
- •14. Розв’язання системи лінійних алгебраїчних рівнянь методом гаусса
- •15 Розв’язання системи алгебраїчних рівнянь методом простої ітерації або методом зейля
- •16 Числове інтегрування
- •17 Розвязання диференційних рiвнянь
- •18 Інтерполяція функцій
Р исунок 7.3 – Результат виконання програми
Програма мовою Delphi
Опис форми.
Відкриваємо нову форму і на цій формі створюємо такі елементи:
Таблиця 7.2 - Елементи керування і їх властивості
Елемент (Name) |
Властивість |
Значення |
Label1 |
Caption |
Результати |
Label2 |
Caption |
Сума S |
Label3 |
Caption |
Добуток не нул. Елем. |
Label4 |
Caption |
Кількість нул. Елем. |
Memo1 |
Line |
Вхідні дані |
Button1 |
Caption |
Обчислити |
Button2 |
Caption |
Вихід |
В результаті наша форма буде мати
вигляд:
Рисунок 7.4 – Інтерфейс програми
Код програми матиме вигляд:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
Tform1 = class(Tform)
Memo1: Tmemo;
Button1: Tbutton;
Button2: Tbutton;
Label1: Tlabel;
Label2: Tlabel;
Label3: Tlabel;
Label4: Tlabel;
procedure FormCreate(Sender: Tobject);
procedure Button1Click(Sender: Tobject);
procedure Button2Click(Sender: Tobject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: Tform1;
s,d: real;
n,i: integer;
a: array [1..7] of real;
implementation
{$R *.DFM}
procedure Tform1.FormCreate(Sender: Tobject);
begin
for i:=1 to 7 do
begin
a[i]:=StrToFloat(InputBox(‘Масив’,’A[‘+IntToStr(i)+’]’,’1’));
Memo1.Lines.Add(‘A[‘+IntToStr(i)+’]=’+FloatToStr(a[i]));
end;
end;
procedure Tform1.Button1Click(Sender: Tobject);
begin
s:=0;
d:=1;
n:=0;
for i:=1 to 7 do
begin
s:=s+a[i];
if a[i]=0 then n:=n+1
else d:=d*a[i];
end;
Label2.Caption:=’Сума S=’+Format(‘%5.6s’,[FloatToSTr(s)]);
Label3.Caption:= ‘Добуток не нул. Елем.=’+Format(‘%5.8s’,[FloatToSTr(d)]);
Label4.Caption:=’Кількість нул. Елем.= ‘+Format(‘%5s’,[FloatToSTr(n)]);
end;
procedure Tform1.Button2Click(Sender: Tobject);
begin
close;
end;
end.
Рисунок 7.5 – Результат виконання програми
Пояснення до програм
Особливість програм з накопиченням суми або добутку полягає в тому, що формування суми чи добутку проводиться в циклі. Перед заголовком циклу, символ 3, рис.7.1, змінній, в якій накопичується сума, присвоюється нуль (S=0), а змінній для добутку – одиниця (D=1). Обчислення добутку проводиться при хибності умови A(I)=0, символ 6. Структура програми являє собою цикл з параметром, який є індексом масиву, і містить розгалуження. Очевидно, що цикл можна організувати за допомогою оператора циклу чи оператора умовного переходу. Також можуть бути використані циклічні структури з передумовою чи післяумовою.
Питання для самоперевірки.
1.Яка структура алгоритму накопичення суми?
2.Яка структура алгоритму накопичення добутку?
3.Чому змінній, в якій накопичується добуток, перед його обчисленням присвоюють одиницю?
4.Яка структура алгоритму знаходження парних чисел; чисел кратних трьом, п’яти?
5.Побудуйте розгалуження за допомогою логічного умовного оператора.
6.Як побудувати програму накопичення суми і добутку, користуючись циклічними структурами з передумовою, з післяумовою?