Паскаль: область дії, модулі, структури, Детальна інформація

Паскаль: область дії, модулі, структури
Тип документу: Реферат
Сторінок: 10
Предмет: Комп`ютерні науки
Автор: Олексій
Розмір: 22.1
Скачувань: 950
writeln('задайте дріб (два цілих, друге не 0):'); readfr(a, b);

writeln('задайте дріб (два цілих, друге не 0):'); readfr(c, d);

plusfr(a, b, c, d, r1, r2);

writefr(r1, r2);

end.

А тепер почнемо уточнювати підпрограми. Процедура читання очевидна:

procedure readfr(var x, y : integer);

begin readln(x); readln(y) end;

Передбачається, що при виконанні програми користувач набере дві цілі сталі.

Процедура додавання повинна повертати результат додавання у вигляді нескоротного дробу. Нехай її параметри x1, y1, x2, y2 задають два дроби, що додаються, а x3, y3 – результат. Скорочення дробу задамо процедурою redufr. Її параметри-змінні задають дріб (скорочений спочатку і в результаті). Тоді додавання задається такою процедурою:

procedure plusfr(x1, y1, x2, y2 : integer; var x3, y3 : integer);

begin x3:=x1*y2+x2*y1; y3:=y1*y2;

redufr(x3, y3)

end;

Щоб скоротити дріб, треба його чисельник і знаменник розділити на їх найбільший спільний дільник (задача 4.5). Нехай його обчислення задає функція gcd, яку ми тут не уточнюємо. Тоді процедура скорочення redufr очевидна:

procedure redufr(var x1, y1 : integer);

var t : integer;

begin

t:=gcd(x1, y1);

x1:=x1 div t; y1:=y1 div t

end;

Нарешті, наведемо розташування наведених підпрограм у блоці програми. Функція gcd повинна бути записана перед процедурою redufr, оскільки в ній визивається. Так само ця процедура повинна бути записана перед процедурою plusfr. Взаємне розташування plusfr, writefr і readfr не має значення:



function gcd(x, y : integer) : integer; …

begin … end;

procedure redufr(var x1, y1 : integer); …

begin … gcd … end;

procedure plusfr(x1, y1, x2, y2 : integer; var x3, y3 : integer);

begin … redufr … end;

procedure readfr(var x, y : integer);

The online video editor trusted by teams to make professional video in minutes