Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lab_rab_pascal_delphi.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
6.06 Mб
Скачать

Лабораторна робота №4. Тема: Процедури та функції. Рекурсивні функції. Відкриті масиви

Мета роботи: Навчитися використовувати власні процедури та функції при створенні програм. Оволодіння практичними навиками роботи з процедурами: процедури без параметрів, з параметрами, відкриті масиви; функціями і рекурсією.

Хід роботи

  1. Запустіть програму TURBO PASCAL.

  2. Використання процедур без параметрів та з параметрами.

    1. Створіть програму з використанням процедури без параметрів. Задача: банк виплачує р % річних. В яку суму перетвориться внесок величиною Х0, встановлений на n років? В програмі дві процедури. Перша має ім'я Initialize і служить для введення початкових даних, друга — Calculate, служить для обчислення суми, яку шукають і виводу результату, який визначається по відомій в теорії відсотків формулі «складних відсотків»: Хn0*(1 + 0,01р)n. Заголовки процедур містять тільки їхні імена.

Program Bank;

var X0: real; {початкова сума}

n : Byte; {термін внесення}

Procedure Initialize;

begin

Write ('Введіть суму внеску '); ReadLn(X0);

Write ('Введіть термін внеску '); ReadLn(n);

end;

Procedure Calculate;

Const p=8; {відсоток річних}

var Xn: real;

begin

Xn:=X0*Exp(n*Ln(1+0.01*p));

Write ('Сума складе: ',Xn:10:3 );

ReadLn;

end;

{Основна програма}

BEGIN

Initialize;

Calculate;

END.

    1. Створіть програму з використанням процедури з параметрами. Задача: заповнити масив розмірністю 9*5, виконати над кожним елементом масиву вказану арифметичну дію та вивести всі елементи, які менші нуля.

program stepen;

const row=9;

column=5;

var i, j: word;

а,b: array[1..row,1..column] of real;

{Процедура піднесення в раціональний степінь від′ємних і додатніх чисел}

procedure degree(x: real; n,m: byte; var rez: real);

begin

if x>0 then rez:=exp(n/m*ln(x));

if x<0 then

if m mod 2 = 0 then rez:=exp(n/m*ln(abs(x)))

else rez:=-exp(n/m*ln(abs(x)));

if x=0 then rez:=0;

end;

{процедура для виводу горизонтальної лінії}

procedure gorline;

var k:integer;

begin

write('|');

for k:=1 to 30 do write('-');

write('|');writeln;

end;

{процедура для виводу від′ємних чисел}

procedure vivod(n,m: word; x: real);

begin

if x>=0 then exit;

writeln('| ',n,' | ',m,' | ',x:5:3,' |');

gorline;

end;

{ Основна програма. Введення чисел в двовимірний масив a[row,column]}

begin

writeln('Введення початкового масиву по рядках через пробіл');

writeln('в кінці рядка натисніть ENTER');

for i:=1 to row do

begin

write('рядок з номером ',i,': ');

for j:=1 to column do read(а[i,j]);

writeln;

end;

{Від кожного елемента беремо корінь 5-го ступеня}

for i:=1 to row do

for j:=1 to column do degree(а[i,j],1,5,b[i,j]);

writeln('вивід отриманого масиву чисел по рядках');

for i:=1 to row do

begin

write('рядок з номером ',i,': ');

for j:=1 to column do write(b[i,j]:5:3,' ');

writeln;

end;

writeln('виведення від′ємних елементів масиву');

gorline;

writeln('| рядок  | стовпець | елемент |');

gorline;

for i:=1 to row do

for j:=1 to column do vivod(i, j, a[i,j]);

end.

    1. Виконайте завдання свого варіанту з лабораторної роботи №3 (п.4) з використанням процедури з параметрами (масив: [1..4,1..4], заповніть використовуючи генератор випадкових чисел та виведіть його на екран аналогічно попередній програмі).

  1. Використання процедур. Робота з відкритими масивами. Задача: Створіть 2 масиви за допомогою генератора випадкових чисел, відсортуйте їх і виведіть на екран.

program pr;

procedure inpm(var m:array integer);

var i:integer;

begin

writeln('вводимо елементи масиву');

for i:=0 to high(m) do

begin m[i]:=random(100);

write(m[i]:4)

end; writeln;

end;

procedure sortm(var m:array integer);

var i,j,buf,n:integer;

begin

n:=high(m);

for i:=1 to n do

for j:=n downto i do

if m[j]<m[j-1] then

begin buf:=m[j];

m[j]:=m[j-1];

m[j-1]:=buf;

end;

end;

procedure outm(var m:array integer);

var i:integer;

begin

for i:=0 to high(m) do write(m[i]:4);

writeln;

end;

{основна програма}

var m1:array[1..10] integer;

m2:array[1..15] integer;

m_res:array[1..25] integer;

begin

randomize;

writeln('мас м1'); inpm(m1); sortm(m1); outm(m1);

writeln('мас м2'); inpm(m2); sortm(m2); outm(m2);

end.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]