Ahoj, mohl by mě někdo prosím vysvětlit procedury a funkce .
Zkoušel jsem různé stránky na netu a vůbec to nechápu, jsem absolutně bezradný :-(((.
Fórum › Pascal
Procedury a funkce
je to prakticky to same akorat procedura nevraci zadnou hodnotu...
vysledek procedury tudiz nemuzes do neceho priradit..
u funkce to jde.. napriklad funkce jsou ord(), pred(), succ()
function neco( a: integer) : integer;
begin
...
neco := 2*a;
end;
function je klicove slovo.. neco je nazev funkce, uvnitr zavorky jsou veskere predavane parametry.. a za zavorkou je navratovy typ;
no a na nacitani cisel slouzi napriklad readln(integerpromenna1, integerpromenna2);
Možná v tom hledáš něco složitého, ale složité to není. Zkusím napsat jinak to, co už psal KIIV. Ve tvém kódu je:
read(a,b);
write(c);
read je funkce, kterou voláš se dvěma parametry (a, b), write voláš s jedním parametrem (c) neboli předáváš té funkci hodnotu, se kterou má pracovat. V případě write to znamená, že jí předáváš hodnotu uloženou v proměnné c, kterou ta funkce write zpracovává - vypíše. Když bude c := 15, tak write(c) vypíše 15.
A s funkcemi, které si tvoříš sám je to stejné:
function neco( a: integer) : integer;
begin
neco := 2*a;
end;
neboli máš funkci neco, která přijmá jeden parametr (a) typu integer a funkce vrací hodnotu integer. Funkce dělá to, že vynásobí parametr a, což je i návratová hodnota funkce (to, co funkce vrací zpět do programu, kde byla volána). A použití funkce neco v programu je například následující:
c:= neco(b);
neboli funkce něco se volá s hodnotou uloženou v parametru b. Řekněme, že b := 10;, takže se zavolá neco s hodnotou 10, funkce neco ji vynásobí 2 a vrací výsledek (20). Do c se ukládá návratová hodnota funkce neboli v tomto případě je to těch 20. Kdyby b bylo 150, tak c je 300 atd.
Nevzdávej boj s neživou hmotou :smile1: .
Pozor, že Read a Write jsou procedury a ne funkce.
Procedura se volá jako příkaz. Např.: writeln(x);
Funkce se volá jako výraz. Např.: y:=sin(x);
V některých případech (s povolenou rozšířenou syntaxí) se dá funkce volat i jako příkaz (třeba když nepotřebujeme návratovou hodnotu funkce, jenom nějaký její "vedlejší účinek" - např. Readkey). Ale tím není zpočátku nutné se zabývat.
Obecná definice procedury bez parametrů:
PROCEDURE jméno;
BEGIN
příkaz1;
příkaz2;
...
příkazN;
END;
a s parametry (např.):
PROCEDURE jméno(parametr1:typ1; parametr2,parametr3:typ2);
BEGIN
příkaz1;
příkaz2;
...
příkazN;
END;
Příklad:
program pokus;
procedure VypisCislo(x:integer);
Begin
writeln('Cislo je: ',x);
End;
var bla:integer;
BEGIN
bla:=100;
vypiscislo(bla); {vypise "Cislo je: 100"}
readln; {pocka na stisk enteru, aby se dal precist vysledek}
END.
Moje stránka.
To Mircosoft :
Dík, už mě to funguje mám to takhle :
function neco( a: integer) : integer;
begin
neco := 2*a;
end;
var b,c:integer;
begin
read(b);
c:= neco(b);
write(c);
readln;
begin
readln;
end;
end.
Jen mě vrtá hlavou proč je v tý funkci proměnná a, z klávesnice čtu přeci jenom b.
a je formální parametr té funkce, čili v podstatě lokální proměnná, kterou sis nadefinoval v té závorce a na kterou se uvnitř funkce odkazuješ a říkáš, co se s ní má dělat. Při volání funkce se do této proměnné vloží skutečný parametr, zde hodnota proměnné b.
Stejně dobře jako neco(b) bys mohl volat i neco(c). Prostě cokoli, co má kompatibilní typ (třeba i neco(30), 30 je taky číslo typu integer).
Moje stránka.
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Procedury a funkce — založil Tomas
Funkce a procedury — založil kozomelec
Úkol na procedury a funkce — založil Malirka
čas vykonání procedury/funkce — založil Ed
Moderátoři diskuze