Procedury a funkce – Pascal – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Procedury a funkce – Pascal – Fórum – Programujte.comProcedury a funkce – Pascal – Fórum – Programujte.com

 

xy30000
Newbie
21. 1. 2010   #1
-
0
-

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ý :-(((.

Nahlásit jako SPAM
IP: 81.19.35.–
KIIV
~ Moderátor
+43
God of flame
21. 1. 2010   #2
-
0
-

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()

Nahlásit jako SPAM
IP: 80.250.1.–
Program vždy dělá to co naprogramujete, ne to co chcete...
xy30000
Newbie
21. 1. 2010   #3
-
0
-

Jj, a jak se deklaruje a definuje funkce ?
A jak se tam zadávají čísla z klávesnice ?

Nahlásit jako SPAM
IP: 81.19.35.–
KIIV
~ Moderátor
+43
God of flame
21. 1. 2010   #4
-
0
-

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);

Nahlásit jako SPAM
IP: 80.250.1.–
Program vždy dělá to co naprogramujete, ne to co chcete...
xy30000
Newbie
21. 1. 2010   #5
-
0
-

function neco( a: integer) : integer;
begin

neco := 2*a;
end;

var b,c:integer;
read(a,b);
c:=(neco*b);
write(c);

end.

Neví někdo, proč to nefunguje ?
je to sice taková blbost, ale zkouším to na tom pochopit.

Nahlásit jako SPAM
IP: 81.19.35.–
KIIV
~ Moderátor
+43
God of flame
21. 1. 2010   #6
-
0
-

globalni promenne maji byt pred funkcema

tj
program neco;
var b,c:integer;

a pak kazdy konec musi nekde zacinat...

Nahlásit jako SPAM
IP: 80.250.1.–
Program vždy dělá to co naprogramujete, ne to co chcete...
xy30000
Newbie
21. 1. 2010   #7
-
0
-

I přes úpravy to píše Not enought actual parameters :-((

Nahlásit jako SPAM
IP: 81.19.35.–
KIIV
~ Moderátor
+43
God of flame
21. 1. 2010   #8
-
0
-

neco jeste ocekava zavorku a nejakou hodnotu kterou ji predas

Nahlásit jako SPAM
IP: 80.250.1.–
Program vždy dělá to co naprogramujete, ne to co chcete...
xy30000
Newbie
21. 1. 2010   #9
-
0
-

KIIV napsal:
neco jeste ocekava zavorku a nejakou hodnotu kterou ji predas



Nevím co by tam mohlo chybět prostě proměnné c přiřazuji funkci neco * proměnná b.

Nahlásit jako SPAM
IP: 81.19.35.–
KIIV
~ Moderátor
+43
God of flame
21. 1. 2010   #10
-
0
-

neco(5) * ...
proste nejake cislo nebo promenna se musi predat

Nahlásit jako SPAM
IP: 80.250.1.–
Program vždy dělá to co naprogramujete, ne to co chcete...
xy30000
Newbie
21. 1. 2010   #11
-
0
-

Ach jo, vůbec to nechápu.

Nahlásit jako SPAM
IP: 81.19.35.–
liborb
~ Redaktor
+18
Guru
22. 1. 2010   #12
-
0
-

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: .

Nahlásit jako SPAM
IP: 85.207.166.–
Mircosoft+1
Věrný člen
22. 1. 2010   #13
-
0
-

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.

Nahlásit jako SPAM
IP: 130.119.248.–
Chceš-li lepší odpověď, polož lepší otázku.
Moje stránka.
xy30000
Newbie
22. 1. 2010   #14
-
0
-

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.

Nahlásit jako SPAM
IP: 81.19.35.–
Mircosoft+1
Věrný člen
25. 1. 2010   #15
-
0
-

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).

Nahlásit jako SPAM
IP: 130.119.248.–
Chceš-li lepší odpověď, polož lepší otázku.
Moje stránka.
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 18 hostů

Podobná vlákna

Procedury a funkce — založil Tomas

Funkce a procedury — založil kozomelec

Úkol na procedury a funkce — založil Malirka

Procedury — založil Akk

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý