Darmowe Forum
Kwiecień 27, 2024, 13:26:13 *
Witamy, Gość. Zaloguj się lub zarejestruj.
Czy dotarł do Ciebie email aktywacyjny?

Zaloguj się podając nazwę użytkownika, hasło i długość sesji
Aktualności: Forum zostało uruchomione!
 
   Strona główna   Pomoc Zaloguj się Rejestracja  
Strony: [1]
  Drukuj  
Autor Wątek: Funkcje -deklaracja  (Przeczytany 3441 razy)
admin
Administrator
Ekspert
*****
Wiadomości: 821


Email
« : Styczeń 30, 2012, 10:27:28 »

Funkcja jest fragmentem kodu umieszczonym w programie. W przeciwieństwie do procedury funkcja zwraca wartość!!!!

Procedura wymienia dane z wywołującym poprzez listę parametrów, nie daje jednak możliwości zwrócenia pojedynczej wartości (liczby). Dlatego w Pascalu wprowadzono pojecie funkcji. Jest ona rodzajem procedury, która po wywołaniu zwraca obliczoną przez siebie wartość.

Function nazwa(lista_parametrów):typ_wyniku;
{deklaracje stałych i zmiennych typów}
Begin
{treść funkcji, i przypisanie}
nazwa:=obliczona_wartość_wyniku;
End;

Przykład 1.
Program a1;
uses crt,dos;
Var c, d:real;
function suma:real;
begin
suma:=c+d;
end;

Begin
clrscr;
write(‘podaj  a =’);readln (c);
write ('podaj b= ‘);readln (d);
write(’suma liczb wynosi  ‘,suma:0:3);
readkey;
End.

-------------------------- nowa wersja z wprowadzonymi argumentami funkcji -----------------
program a1;
uses crt,dos;
var c,d :real;
function suma(a,b:real):real;
begin
suma:=a+b;
end;

begin clrscr;
write('podaj a= ');readln(c);
 write('podaj b= ');readln(d);
 write('suma liczb wynosi ',suma(c,d):0:3);
 readkey;
end.
« Ostatnia zmiana: Styczeń 30, 2012, 11:11:38 wysłane przez admin » Zapisane
admin
Administrator
Ekspert
*****
Wiadomości: 821


Email
« Odpowiedz #1 : Styczeń 30, 2012, 11:15:07 »

Zadanie 1. Napisać program któy prosi o podanie dwóch liczb a następnie podanie działania na tych liczbach (+, -,*, /). Wybranie określonego działania uruchamia odpowiednią funkcję która oblicza wynik. Następnie wynik jest wyświetlany na ekranie.

program blizniak;
uses crt, dos;
var a:char;
b,c:real;
function dziel(a,b:real):real;
var v:real;
begin
if b<>0 then begin v:=a/b; dziel:=v;end else write('Blad!!!!!!!');
end;
function suma(a,b:real):real;
begin
suma:=a+b;
end;
function roznica(a,b:real):real;
begin
roznica:=a-b;
end;
function iloczyn(a,b:real):real;
begin
iloczyn:=a*b;
end;

begin clrscr;
write('podaj pierwsza liczbe: ');readln(b);
  write('podaj druga liczbe: ');readln(c);
  write('podaj znak dzialania: ');readln(a);

case a of
'+':write(suma(b,c):0:2);
'-' : write(roznica(b,c):0:2);
'*':write(iloczyn(b,c):0:2);
'/' :write(dziel(b,c):0:2)
else write('zly znak');  end;
readkey;
end.
-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
program blizniak;
uses crt, dos;
var a:char;
b,c:real;
function dziel(a,b:real):real;
var v:real;
begin
if b<>0 then begin v:=a/b; dziel:=v;end else write('Blad!!!!!!!');
end;
function suma(a,b:real):real;
begin
suma:=a+b;
end;
function roznica(a,b:real):real;
begin
roznica:=a-b;
end;
function iloczyn(a,b:real):real;
begin
iloczyn:=a*b;
end;
function srednia(a,b:real):real;
begin
srednia:=(a+b)/2;
end;

begin clrscr;
write('podaj pierwsza liczbe: ');readln(b);
  write('podaj druga liczbe: ');readln(c);
  write('podaj znak dzialania: ');readln(a);

case a of
'+':write(suma(b,c):0:2);
'-' : write(roznica(b,c):0:2);
'*':write(iloczyn(b,c):0:2);
'/' :write(dziel(b,c):0:2);
's': write(srednia(b,c):0:2)
else write('zly znak');  end;
readkey;
end.
« Ostatnia zmiana: Styczeń 30, 2012, 12:21:27 wysłane przez admin » Zapisane
admin
Administrator
Ekspert
*****
Wiadomości: 821


Email
« Odpowiedz #2 : Luty 06, 2012, 08:31:54 »

Zadanie 2. Napisz program w którym zadeklarowano funkcję suma, zwracającą sumę liczb od 1 do podanej z klawiatury (algorytm sumowania ma znajdować się w funkcji).

program asx;
uses crt,dos;
var x:integer;

function suma (a:integer):integer;
var x,y:integer;
begin  y:=0;
for x:=1 to a do
y:=y+x;
suma:=y;
end;

begin
clrscr; write('Podaj liczbe: ');readln(x);
write('suma liczb= ',suma(x));
readkey;

end.
« Ostatnia zmiana: Luty 06, 2012, 09:39:46 wysłane przez admin » Zapisane
admin
Administrator
Ekspert
*****
Wiadomości: 821


Email
« Odpowiedz #3 : Luty 06, 2012, 12:08:33 »

Zadanie 3. Sprawdź czy Twój pesel jest prawdziwy.

program asd;
uses crt,dos;
var x:word;
s:string;
a,b,c,d,e,f,g,h,i,j,k:char;
a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,y,z:integer;
begin
clrscr; write('Podaj PESEL :');readln(s);
a:=s[1];b:=s[2];c:=s[3];d:=s[4];e:=s[5];f:=s[6];g:=s[7];h:=s[8];
i:=s[9];j:=s[10];k:=s[11];

val(a,a1,x);
val(b,b1,x);
val(c,c1,x);
val(d,d1,x);
val(e,e1,x);
val(f,f1,x);
val(g,g1,x);
val(h,h1,x);
val(i,i1,x);
val(j,j1,x);
val(k,k1,x);

y:=1*a1+3*b1+7*c1+9*d1+1*e1+3*f1+7*g1+9*h1+1*i1+3*j1;
y:=y mod 10;
if y=0 then z:=0 else z:=10-y;
if z=k1 then write('Prawda') else write('Falsz');
readkey;
end.
Zapisane
admin
Administrator
Ekspert
*****
Wiadomości: 821


Email
« Odpowiedz #4 : Luty 13, 2012, 09:31:20 »

Zadanie 4. Program obliczający iloraz z dóch podanych liczb. Dzielenie wykonywane jest przez funkcję dziel.

program almodovagirypitowianowicz;
uses crt,dos;
var a,b:real;

function dziel(var x: real; y:real): real;
begin
dziel:=x/y;
end;



begin
  clrscr;
  write(' Podaj wartosc dzielnej:= ');readln(a); clrscr;

  repeat
   write(' Podaj wartosc dzielnika:= ');readln(b);
   if b=0 then begin clrscr ;writeln('Wprowadzon wartosc zeroooooo!');end;
   until b<>0;
   write(a:0:2,' / ', b:0:2,' = ',dziel(a,b):0:2);
   readkey;

end.
Zapisane
Strony: [1]
  Drukuj  
 
Skocz do:  

Powered by SMF 1.1.11 | SMF © 2006-2008, Simple Machines LLC | Sitemap

Polityka cookies
Darmowe Fora | Darmowe Forum

zaburzenia imindel tdw fastkillers wladca-smokow