Podstawy Informatyki - Laboratorium
Politechnika Świętokrzyska, Wydział Elektrotechniki, Automatyki i Informatyki
Turbo Pascal
Instrukcja laboratoryjna nr 4
Opracował: dr inż. Grzegorz Słoń
Procedury i funkcje
(na przykładzie operacji na tablicach jedno i dwuwymiarowych)
Napisać (z wykorzystaniem programowania strukturalnego) program wprowadzający n liczb całkowitych do tablicy jednowymiarowej a, a następnie wyświetlający je na ekranie monitora po 5 liczb w wierszu.
program z4_1;
var a: array[1..50] of integer;
n: integer;
{----------}
procedure Czytaj;
var i:integer;
begin
for i:=1 to n do
begin
write(i,' liczba: '); readln(a[i]);
end;
end;
{----------}
procedure Drukuj;
var i:integer;
begin
for i:=1 to n do
begin
write(a[i]:5,' ');
if i mod 5 = 0 then writeln;
end;
writeln;
end;
{----------}
begin
write('Ile bedzie liczb?: '); readln(n);
Czytaj;
writeln;
writeln('Wprowadzono nastepujace liczby:');
Drukuj;
readln;
end.
Uzupełnić program z punktu 1 o:
definicję typu tablicowego;
przekazywanie wartości zmiennych poprzez argumenty procedur.
program z4_2;
type tab1_i = array[1..50] of integer;
var a: tab1_i;
n: integer;
{----------}
procedure Czytaj(k: integer; var x: tab1_i);
var i:integer;
begin
for i:=1 to k do
begin
write(i,' liczba: '); readln(x[i]);
end;
end;
{----------}
procedure Drukuj(k: integer; x: tab1_i);
var i:integer;
begin
for i:=1 to k do
begin
write(x[i]:5,' ');
if i mod 5 = 0 then writeln;
end;
writeln;
end;
{----------}
begin
write('Ile bedzie liczb?: '); readln(n);
Czytaj(n,a);
writeln;
writeln('Wprowadzono nastepujace liczby:');
Drukuj(n,a);
readln;
end.
Dopisać do programu z punktu 2 funkcję wyznaczającą średnią arytmetyczną wszystkich elementów tablicy a.
deklaracja funkcji:
function S_a(n: integer; a: tab1_i): real;
var i,s: integer;
begin
s:=0;
for i:=1 to n do
s:=s+a[i];
if n>0 then S_a:=s/n
else S_a:=s;
end;
uzupełnienie części głównej programu:
writeln('Srednia arytmetyczna = ',S_a(n,a):4:2);
Uzupełnić program z punktu 3 o funkcje i procedury realizujące następujące zadania:
wyznaczanie średnich: geometrycznej i harmonicznej;
przepisanie do jednowymiarowej tablicy b tych elementów tablicy a, które są dokładnie dwa razy większe od średniej arytmetycznej i wyświetlenie zawartości tablicy b na ekranie monitora;
wyznaczenie procentowego udziału liczb parzystych w tablicy a;
odnalezienie i wyświetlenie na ekranie monitora indeksów (numerów) tych elementów tablicy a, których wartości są równe wartości minimalnej;
wyznaczenie iloczynu elementów tablicy a mniejszych od średniej arytmetycznej elementów dodatnich.
Napisać (z wykorzystaniem programowania strukturalnego) program wprowadzający liczby rzeczywiste do tablicy dwuwymiarowej a o wymiarach (m × n), a następnie wyświetlający zawartość tej tablicy na ekranie monitora .
program z4_4;
type tab2_r = array[1..10,1..10] of real;
var a: tab2_r;
m,n: integer;
{----------}
procedure Czytaj(m,n: integer; var x: tab2_r);
var nr_w,nr_k:integer;
begin
for nr_w:=1 to m do
begin
writeln(nr_w,' wiersz:');
for nr_k:=1 to n do
begin
write('Element [',nr_w,',',nr_k,'] = ');
readln(x[nr_w,nr_k]);
end;
end;
end;
{----------}
procedure Drukuj(m,n: integer; x: tab2_r; tytul: string);
var i,j:integer;
begin
writeln(tytul);
for i:=1 to m do
begin
for j:=1 to n do
write(x[i,j]:7:2,' ');
writeln;
end;
end;
{----------}
begin
writeln('Podaj wielkosc tablicy:');
write('Liczba wierszy m = '); readln(m);
write('Liczba kolumn n = '); readln(n);
Czytaj(m,n,a);
writeln;
Drukuj(m,n,a,'Zawartosc tablicy A:');
readln;
end.
Uzupełnić program z punktu 5 o procedurę przepisującą z tablicy a do jednowymiarowej, n - elementowej tablicy b wartości maksymalne z kolejnych kolumn tablicy a.
uzupełnienie deklaracji typów:
tab1_r = array[1..10] of real;
uzupełnienie deklaracji zmiennych:
b: tab1_r;
uzupełnienie deklaracji procedur i funkcji:
{----------}
function Max(m,nr_k:integer; a:tab2_r): real;
var i: integer;
wynik: real;
begin
wynik:=a[1,nr_k];
for i:=2 to m do
if a[i,nr_k] > wynik then wynik:=a[i,nr_k];
Max:=wynik;
end;
{----------}
procedure Tworz_b(m,n:integer; a:tab2_r; var b:tab1_r);
var i,j: integer;
begin
for j:=1 to n do
b[j]:=Max(m,j,a);
end;
{----------}
procedure Drukuj1_r(k:integer; x:tab1_r; tytul:string);
var i: integer;
begin
writeln(tytul);
for i:=1 to k do
write(x[i]:7:2,' ');
writeln;
end;
{----------}
uzupełnienie części głównej programu:
Tworz_b(m,n,a,b);
Drukuj1_r(n,b,'Wartosci maksymalne w kolumnach (tablica B):');
Uzupełnić program z punktu 6 o procedury lub funkcje:
usuwające z tablicy a podany wiersz bądź kolumnę;
obliczające iloczyn skalarny dwóch wskazanych wierszy bądź kolumn tablicy a.
Napisać (z wykorzystaniem programowania strukturalnego) program wprowadzający liczby całkowite do kwadratowej tablicy dwuwymiarowej a o wymiarach (n × n), a następnie wykonujący następujące zadania:
wyznaczenie średniej arytmetycznej wszystkich elementów;
obliczenie iloczynu skalarnego liczb leżących na obu przekątnych;
obliczenie sum elementów leżących powyżej i poniżej głównej przekątnej;
przepisanie liczb do tablicy dwuwymiarowej b z jednoczesną zamianą miejscami wierszy i kolumn;
wskazanie kolumny i wiersza o najmniejszej wartości średniej arytmetycznej.
str. 4/4 Turbo Pascal - Instrukcja nr 4
Turbo Pascal - Instrukcja nr 4 str. 3/4