PredoBar

Sintaksa poziva funkcije po programskim jezicima

26. 9. 2024.

Inspirisan kolegičinim pitanjem za profesora, pokušaću da nabrojim nekoliko programskim jezika, sa primerima, čiji se zapis poziva funkcije razlikuje od onog tipičnog u C-u, gde su argumenti u zagradama.

/* Definicija */
int zbir(int a, int b) {
	return a + b;
}
/* Poziv */
int x = zbir(10, 20);

Terminološka napomena: promenljive u definiciji funkcije se nazivaju parametri, vrednosti koje se pozivom prosleđuju funkciji su argumenti.

Prvo mi je pao na pamet Pajton 2, setio sam se da se print mogao koristiti bez zagrada, ali to nije bilo zbog razlike u funkcijama između Pajtona 2 i 3, već jer je u Pajtonu 2 print bila naredba (kao if, while...). Dakle to otpada.

# U Pajtonu 2 se moglo reći
print "Shemhamforash"
# Umesto funkcije
print("Shemhamforash")

Sem toga, setio sam se svog iskustva u danas malo poznatom Tcl-u. Tcl (Tool Command Language) je istaknut po tome što sve predstavlja kao komandu, od naredbi (kao if, while...), preko funkcija i aritmetičkih izraza. S takvom jednostavnošću podseća na Lisp pored čega je pravljen sa integracijom na umu, te se lako koristi kao produžetak C jezika i drugih sistema. Sledeći primer je ekvivalent onom u C-u na početku stranice:

# Definicija procedure
proc zbir {a b} {
	return [expr $a + $b]
}
# Poziv
set x [zbir 4 6]
puts [zbir 3 3]

Vitičaste zagrade grupišu, uglaste postaju vrednost izraza koji sadrže, a znak dolara označava vrednost promenljive. puts znači put string. Zbog tolike jednostavnosti određeni zapisi ne postoje, sve je jednako. Recim aritmetika se vrši komandom expr.

Lako je uvideti mogućnosti u ovom jeziku, procedure (funkcije) se mogu utoku rada redefinisati po potrebi, čak i i one najosnovnije. Dodatno, u Pajtonu jedna česta biblioteka za grafičke interfejse je Tkinter, koji je zapravo Tcl-ov Tk.

Možda najočigledniji primer, kog sam prvo trebao da se setim, su šel (en. shell) jezici poput Beša (en. Bash), koji prvenstveno služe za upotrebu računara preko interfejsa komandne linije umesto preko grafičkog interfejsa. Ako ste se susreli sa izrazom terminal u kontekstu LInuks ili mekOS sistema, šel jezici su glavni kojima se služi u tim crnim prozorima.

Mnogi simboli se izostavljaju radi jednostavnije upotrebe. Poziv funkcije je poput još jedne komande na računaru. Primetimo da je za dobijanje vrednosti promenljive obavezan znak dolara isto kao i u Tcl-u.

# Definicija
zbir () { 		# Zagrade u definiciji su uvek prazne
	rez=$(($1+$2)) 	# Duple zagrade za aritmetiku
	echo $rez	# Štampa
}
# Poziv
zbir 4 6

$n, gde je n prirodan broj, predstavlja argument po redosledu u kojem se prosleđuje funkciji. U ovom slučaju $1 = 4, $2 = 6.

Uistinu, Beš i srodni šelovi su vrlo ružni. Na svu sreću, to nije problem, jer ni ne želimo da pišemo dugačke skripte u njima, već da ih što brže koristimo u interaktivnom kucanju komandi.