<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="hr">
	<id>https://enciklopedija.cc/index.php?action=history&amp;feed=atom&amp;title=Uvjetna_naredba</id>
	<title>Uvjetna naredba - Povijest promjena</title>
	<link rel="self" type="application/atom+xml" href="https://enciklopedija.cc/index.php?action=history&amp;feed=atom&amp;title=Uvjetna_naredba"/>
	<link rel="alternate" type="text/html" href="https://enciklopedija.cc/index.php?title=Uvjetna_naredba&amp;action=history"/>
	<updated>2026-08-06T16:14:23Z</updated>
	<subtitle>Povijest promjena ove stranice na wikiju</subtitle>
	<generator>MediaWiki 1.42.3</generator>
	<entry>
		<id>https://enciklopedija.cc/index.php?title=Uvjetna_naredba&amp;diff=54109&amp;oldid=prev</id>
		<title>WikiSysop: Bot: Automatski unos stranica</title>
		<link rel="alternate" type="text/html" href="https://enciklopedija.cc/index.php?title=Uvjetna_naredba&amp;diff=54109&amp;oldid=prev"/>
		<updated>2021-08-24T01:37:05Z</updated>

		<summary type="html">&lt;p&gt;Bot: Automatski unos stranica&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nova stranica&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;!--&amp;#039;&amp;#039;&amp;#039;Uvjetna naredba&amp;#039;&amp;#039;&amp;#039;--&amp;gt;U [[računarstvo|računarstvu]], &amp;#039;&amp;#039;&amp;#039;uvjetne naredbe&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;uvjetni izrazi&amp;#039;&amp;#039;&amp;#039; i &amp;#039;&amp;#039;&amp;#039;uvjetni konstrukti&amp;#039;&amp;#039;&amp;#039; su svojstva [[programski jezik|programskog jezika]] koja obavljaju različita računanja ili akcije ovisno o tome evaluira li &amp;#039;&amp;#039;uvjet&amp;#039;&amp;#039; koji programer specificira na istinu ili laž (v. [[bulovski tip podataka]]). Osim u slučaju [[predviđanje grananja|predviđanja grananja]], ovo se uvijek ostvaruje selektivnim mijenjanjem [[tok upravljanja|toka upravljanja]] ovisno o nekom uvjetu.&lt;br /&gt;
&lt;br /&gt;
U [[imperativno programiranje|imperativnim programskim jezicima]] se obično rabi naziv &amp;quot;uvjetna naredba&amp;quot;, dok se u [[funkcijsko programiranje|funkcijskom programiranju]] preferiraju nazivi &amp;quot;uvjetni izraz&amp;quot; ili &amp;quot;uvjetni konstrukt&amp;quot;, s obzirom da svi ovi nazivi imaju različita značenja.&lt;br /&gt;
&lt;br /&gt;
Iako se [[dinamičko otpremanje]] obično ne klasificira kao uvjetni konstrukt, ono predstavlja još jedan način odabira među alternativama za [[Analiza algoritama|vremena izvođenja]].&lt;br /&gt;
&lt;br /&gt;
== If-Then(-Else) ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;if-then&amp;#039;&amp;#039; konstrukt (ponekad zvan i kao &amp;#039;&amp;#039;if-then-else&amp;#039;&amp;#039;) je uobičajen u mnogim programskim jezicima. Iako sintaksa poprilično varira od jezika do jezika, osnovna struktura (u [[pseudokod]]u) izgleda ovako:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 If (uvjet) Then&lt;br /&gt;
    (naredbe)&lt;br /&gt;
 Else&lt;br /&gt;
    (naredbe)&lt;br /&gt;
 End If&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kad [[interpreter]] pronađe &amp;#039;&amp;#039;If&amp;#039;&amp;#039;, očekuje [[bulovski tip podataka|bulovski]] uvjet - primjerice, &amp;#039;&amp;#039;x &amp;gt; 0&amp;#039;&amp;#039;, što znači &amp;quot;varijabla x sadrži broj koji je veći od nule&amp;quot; - i evaluira taj uvjet. Ako je uvjet &amp;#039;&amp;#039;istinit&amp;#039;&amp;#039;, [[blok naredbi]] nakon &amp;#039;&amp;#039;then&amp;#039;&amp;#039;-a se izvršuje. Inače se izvršavanje nastavlja u sljedećem bloku - bilo u &amp;#039;&amp;#039;Else&amp;#039;&amp;#039; bloku (koji je obično opcionalan), ili ako nema &amp;quot;Else&amp;quot; bloka, izvršuju se naredbe nakon &amp;#039;&amp;#039;End If&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
Nakon što su izvršeni bilo blok nakon &amp;#039;&amp;#039;Then&amp;#039;&amp;#039; bilo blok nakon &amp;#039;&amp;#039;Else&amp;#039;&amp;#039;, [[upravljanje toka|upravljanje]] se vraća na točku nakon &amp;#039;&amp;#039;End If&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
U ranim programskim jezicima - napose u dijalektima [[BASIC (programski jezik)|BASIC]]-a [[1980-ih]] - &amp;#039;&amp;#039;if-then&amp;#039;&amp;#039; naredba je mogla sadržavati samo [[GOTO]] naredbu. Ovo je vodilo ka teško čitljivom programerskom stilu poznatom kao [[špageti programiranje]]. Kao posljedica se toga iznjedrilo [[strukturirano programiranje]], koje dopušta ubacivanje unutar &amp;#039;&amp;#039;if&amp;#039;&amp;#039; naredbi (praktički) proizvoljne naredbe, i koje se populariziralo do te mjere da je postalo norma.&lt;br /&gt;
&lt;br /&gt;
=== &amp;#039;&amp;#039;Else If&amp;#039;&amp;#039; dijelovi ===&lt;br /&gt;
&lt;br /&gt;
Korištenjem &amp;#039;&amp;#039;Else If&amp;#039;&amp;#039;  naredbi moguće je kombinirati nekoliko uvjeta. Izvršuju se samo naredbe koje slijede prvi uvjet za koji se ustanovi istinitost, dok se sve druge preskaču. Naredbe nakon konačnog &amp;#039;&amp;#039;Else&amp;#039;&amp;#039; se izvršuju ako nijedan od uvjeta nije istinit. Sljedeći je primjer napisan u [[Ada (programski jezik)|programskom jeziku Ada]]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ada&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;#039;&amp;#039;&amp;#039;if&amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;uvjet&amp;#039;&amp;#039; &amp;#039;&amp;#039;&amp;#039;then&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
     &amp;#039;&amp;#039;naredbe&amp;#039;&amp;#039;;&lt;br /&gt;
 &amp;#039;&amp;#039;&amp;#039;elseif&amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;uvjet&amp;#039;&amp;#039; &amp;#039;&amp;#039;&amp;#039;then&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
     &amp;#039;&amp;#039;još naredbi&amp;#039;&amp;#039;;&lt;br /&gt;
 &amp;#039;&amp;#039;&amp;#039;elseif&amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;uvjet&amp;#039;&amp;#039; &amp;#039;&amp;#039;&amp;#039;then&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
     &amp;#039;&amp;#039;još naredbi&amp;#039;&amp;#039;;&lt;br /&gt;
 ...&lt;br /&gt;
 &amp;#039;&amp;#039;&amp;#039;else&amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;uvjet&amp;#039;&amp;#039; &amp;#039;&amp;#039;&amp;#039;then&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
     &amp;#039;&amp;#039;druge naredbe&amp;#039;&amp;#039;;&lt;br /&gt;
 &amp;#039;&amp;#039;&amp;#039;end&amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;&amp;#039;if&amp;#039;&amp;#039;&amp;#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;elseif&amp;#039;&amp;#039; je u Adi jednostavno [[sintaksni šećer]] za &amp;#039;&amp;#039;else&amp;#039;&amp;#039; nakon kojeg slijedi &amp;#039;&amp;#039;if&amp;#039;&amp;#039;. U Adi, razlika je u tome što je potrebno samo jedno &amp;#039;&amp;#039;end if&amp;#039;&amp;#039;, ako se rabi &amp;#039;&amp;#039;elseif&amp;#039;&amp;#039; mjesto &amp;#039;&amp;#039;else&amp;#039;&amp;#039; nakon kojeg slijedi &amp;#039;&amp;#039;if&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
U nekim drugim jezicima, kao što je [[C (programski jezik)|C]], &amp;#039;&amp;#039;else if&amp;#039;&amp;#039; doslovno znači &amp;#039;&amp;#039;else&amp;#039;&amp;#039; nakon kojeg slijedi &amp;#039;&amp;#039;if&amp;#039;&amp;#039; - stoga nije potreban niti se pruža ikakav sintaksni šećer.&lt;br /&gt;
&lt;br /&gt;
=== If izrazi ===&lt;br /&gt;
&lt;br /&gt;
Mnogi jezici podržavaju &amp;#039;&amp;#039;&amp;#039;if izraze&amp;#039;&amp;#039;&amp;#039;, slične if naredbama, s tim da vraćaju [[vrijednost (računarstvo)|vrijednost]] kao rezultat. Stoga su istiniski [[Izraz (programiranje)|izrazi]] (koji evaluiraju na vrijednost), ne [[Naredba (programiranje)|naredbe]] (koje samo obavljaju akciju).&lt;br /&gt;
&lt;br /&gt;
==== Ternarni operator ====&lt;br /&gt;
&lt;br /&gt;
:{{glavni|?:}}&lt;br /&gt;
&lt;br /&gt;
U [[C (programski jezik)|C]]-u i C-nalik jezicima uvjetni izrazi poprimaju oblik [[ternarni operator|ternarnog operatora]] zvanog operator uvjetnog izraza, [[?:]], koji slijedi sljedeći predložak:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 (uvjet)?(evaluiraj ako je uvjet istinit):(evaluiraj ako je uvjet lažan)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ovo znači da uvjeti mogu biti svedeni na jednu liniju koda izraza, za razliku od naredbi, koje su ovdje prikazane u sintaksi C-a:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
// Valjano&lt;br /&gt;
moja_varijabla = if(x &amp;gt; 10) { &amp;quot;foo&amp;quot; } else { &amp;quot;bar&amp;quot; };&lt;br /&gt;
// Nevaljano&lt;br /&gt;
moja_varijabla = (x &amp;gt; 10)?&amp;quot;foo&amp;quot;:&amp;quot;bar&amp;quot;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Kako bi se ista kao s drugom (valjanom) linijom gore ostvarila rabeći standardnu if/else naredbu, trebalo bi više od jedne linije koda (rabeći standardnu konvenciju o razlamanju koda):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
if (x &amp;gt; 10) {&lt;br /&gt;
  moja_varijabla = &amp;#039;foo&amp;#039;;&lt;br /&gt;
}&lt;br /&gt;
else {&lt;br /&gt;
  moja_varijabla = &amp;#039;bar&amp;#039;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Kao funkcija ====&lt;br /&gt;
&lt;br /&gt;
U [[Visual Basic]]u i nekim drugim jezicima je dana funkcija [[IIf]] koja se može rabiti kao uvjetni izraz. Međutim, ona se ne ponaša kao istinski uvjetni izraz, s obzirom da su uvijek evaluirane i grane za istinu i laž - radi se samo o tome da je rezultat jedne od njih odbačen, dok je rezultat druge vraćen od strane IIf funkcije.&lt;br /&gt;
&lt;br /&gt;
==== U Haskellu ====&lt;br /&gt;
&lt;br /&gt;
U [[Haskell (programski jezik)|Haskellu 98]] postoji samo jedan &amp;#039;&amp;#039;if izraz&amp;#039;&amp;#039;, ne &amp;#039;&amp;#039;if naredba&amp;#039;&amp;#039;, i &amp;#039;&amp;#039;else&amp;#039;&amp;#039; dio je obavezan.&amp;lt;ref name=&amp;quot;haskell98report&amp;quot;&amp;gt;&amp;#039;&amp;#039;[http://www.haskell.org/onlinereport/ Haskell 98 Language and Libraries: The Revised Report]&amp;#039;&amp;#039;&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Aritmetičko IF ===&lt;br /&gt;
&lt;br /&gt;
[[Fortran 77]] ima &amp;quot;aritmetičku if&amp;quot; naredbu koja je napola između izračunatog IF i &amp;#039;&amp;#039;case&amp;#039;&amp;#039; naredbe, zasnovana na [[trihotomija|trihotomiji]] &amp;lt;math&amp;gt;x &amp;lt; 0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;x = 0&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;x &amp;gt; 0&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;fortran&amp;quot;&amp;gt;&lt;br /&gt;
    IF (iz) labela1, labela2, labela3&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pri čemu je &amp;#039;&amp;#039;iz&amp;#039;&amp;#039; bilo koji numerički izraz (ne nužno cjelobrojni) - ovo je ekvivalentno sa:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;fortran&amp;quot;&amp;gt;&lt;br /&gt;
    IF (iz &amp;lt; 0) GOTO labela1&lt;br /&gt;
    IF (iz = 0) GOTO labela2&lt;br /&gt;
    IF (iz &amp;gt; 0) GOTO labela3&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
S obzirom da je ovaj aritmetički IF istovjetan višestrukim GOTO naredbama, smatra s nestruktuiranom naredbom upravljanja, i ne bi se smio rabiti u slučaju dostupnosti struktuiranijih naredbi. U praksi se uočio uporabni obrazac u kojem je većina aritmetičkih IF naredbi referencirala sljedeću naredbu jednom ili dvjema labelama.&lt;br /&gt;
&lt;br /&gt;
Ovo je bila jedina naredba uvjetnog upravljanja u izvornoj implementaciji Fortrana na računalu [[IBM 704]]. Na tom je računalu mogla biti implementirana poprilično učinkovito instrukcijama poput &amp;#039;granaj ako je akumulator negativan&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
=== Alternativna implementacija ===&lt;br /&gt;
&lt;br /&gt;
Kao suprotnost s drugim jezicima, u [[Smalltalk]]u uvjetna naredba &amp;lt;b&amp;gt;nije&amp;lt;/b&amp;gt; jezični konstrukt već je definirana kao apstraktna metoda u klasi &amp;#039;&amp;#039;Boolean&amp;#039;&amp;#039; kao metoda koja prima dva parametra, oba kao [[zatvorenost]]i. Boolean ima dvije potklase, &amp;#039;&amp;#039;True&amp;#039;&amp;#039; i &amp;#039;&amp;#039;False&amp;#039;&amp;#039;, oboje od kojih definiraju metodu, pri čemu &amp;#039;&amp;#039;True&amp;#039;&amp;#039; izvršuje samo prvu zatvorenost, &amp;#039;&amp;#039;False&amp;#039;&amp;#039; samo drugu.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;smalltalk&amp;quot;&amp;gt;&lt;br /&gt;
 var := uvjet &lt;br /&gt;
     ifTrue: [ &amp;#039;foo&amp;#039; ]&lt;br /&gt;
     ifFalse: [ &amp;#039;bar&amp;#039; ]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;#039;&amp;#039;Case&amp;#039;&amp;#039; i &amp;#039;&amp;#039;switch&amp;#039;&amp;#039; naredbe ==&lt;br /&gt;
&lt;br /&gt;
{{glavni|Switch naredba}}&lt;br /&gt;
&lt;br /&gt;
[[Switch naredba|Switch naredbe]] (u nekim jezicima, &amp;#039;&amp;#039;case naredbe&amp;#039;&amp;#039;) uspoređuju danu vrijednost sa specificiranim konstantama i poduzimaju odgovarajuću akciju ovisno o prvoj sparujućoj konstanti. Primjer slijeva je napisan u [[Pascal (programski jezik)|Pascalu]], dok je primjer zdesna napisan u [[C (programski jezik)|C]]-u.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;#039;&amp;#039;&amp;#039;case&amp;#039;&amp;#039;&amp;#039; nekiZnak &amp;#039;&amp;#039;&amp;#039;of&amp;#039;&amp;#039;&amp;#039;                &amp;#039;&amp;#039;&amp;#039;switch&amp;#039;&amp;#039;&amp;#039; (nekiZnak) {&lt;br /&gt;
       &amp;#039;a&amp;#039;: akcijaAkoA;                &amp;#039;&amp;#039;&amp;#039;case&amp;#039;&amp;#039;&amp;#039; &amp;#039;a&amp;#039;: akcijaAkoA;&lt;br /&gt;
       &amp;#039;x&amp;#039;: akcijaAkoX;                    break;&lt;br /&gt;
       &amp;#039;y&amp;#039;,&amp;#039;z&amp;#039;:AkcijaAkoYiZ;           &amp;#039;&amp;#039;&amp;#039;case&amp;#039;&amp;#039;&amp;#039; &amp;#039;x&amp;#039;: akcijaAkoX;&lt;br /&gt;
    &amp;#039;&amp;#039;&amp;#039;end&amp;#039;&amp;#039;&amp;#039;;                                   break;&lt;br /&gt;
                                       &amp;#039;&amp;#039;&amp;#039;case&amp;#039;&amp;#039;&amp;#039; &amp;#039;y&amp;#039;:&lt;br /&gt;
                                       &amp;#039;&amp;#039;&amp;#039;case&amp;#039;&amp;#039;&amp;#039; &amp;#039;z&amp;#039;: AkcijaAkoYiZ;&lt;br /&gt;
                                           break;&lt;br /&gt;
                                       &amp;#039;&amp;#039;&amp;#039;default&amp;#039;&amp;#039;&amp;#039;: akcijAkoNemaSparivanja;&lt;br /&gt;
                                    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sparivanje uzoraka ==&lt;br /&gt;
&lt;br /&gt;
{{glavni|Sparivanje uzoraka}}&lt;br /&gt;
&lt;br /&gt;
[[Sparivanje uzoraka]] je sofisticirana alternativa i &amp;#039;&amp;#039;if-then-elseif&amp;#039;&amp;#039; i jednostavnim gorespomenutim &amp;#039;&amp;#039;case&amp;#039;&amp;#039; ili &amp;#039;&amp;#039;switch&amp;#039;&amp;#039; naredbama. Dostupno je u nekim programskim jezicima poput onih iz [[ML (programski jezik)|ML]] porodice. Slijedi jednostavan primjer napisan u [[O&amp;#039;Caml]] jeziku:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ocaml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;#039;&amp;#039;&amp;#039;match&amp;#039;&amp;#039;&amp;#039; voće &amp;#039;&amp;#039;&amp;#039;with&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 &amp;#039;&amp;#039;&amp;#039;|&amp;#039;&amp;#039;&amp;#039; &amp;quot;jabuka&amp;quot; &amp;#039;&amp;#039;&amp;#039;-&amp;gt;&amp;#039;&amp;#039;&amp;#039; skuhaj pitu&lt;br /&gt;
 &amp;#039;&amp;#039;&amp;#039;|&amp;#039;&amp;#039;&amp;#039; &amp;quot;ananas&amp;quot; &amp;#039;&amp;#039;&amp;#039;-&amp;gt;&amp;#039;&amp;#039;&amp;#039; napravi frape&lt;br /&gt;
 &amp;#039;&amp;#039;&amp;#039;|&amp;#039;&amp;#039;&amp;#039; &amp;quot;banana&amp;quot; &amp;#039;&amp;#039;&amp;#039;-&amp;gt;&amp;#039;&amp;#039;&amp;#039; miješaj&amp;#039;&amp;#039;&amp;#039;;;&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Istinska moć sparivanja uzoraka, međutim, leži u mogućnosti konciznog (a) sparivanja nad uzorcima podatkovnih struktura i (b) istovremenog vezanja varijabli. Slijedi primjer napisan u [[Haskell (programski jezik)|Haskellu]] koji osvjetljuje oba navedena svojstva:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;haskell&amp;quot;&amp;gt;&lt;br /&gt;
 map _ []      &amp;#039;&amp;#039;&amp;#039;=&amp;#039;&amp;#039;&amp;#039; []&lt;br /&gt;
 map f (h : t) &amp;#039;&amp;#039;&amp;#039;=&amp;#039;&amp;#039;&amp;#039; f h : map f t&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ovaj kod definira poznatu funkciju &amp;#039;&amp;#039;map&amp;#039;&amp;#039;, koja primijenjuje prvi argument (funkciju) na svaki od elemenata drugog argumenta (liste), i vraća rezultirajuću listu. Dvije linije koda nisu odvojene definicije funkcije, već se mjesto toga radi o definiciji funkcije u dva slučaja - prvi u slučaju prazne liste (pri čemu funkcija vraća praznu listu), drugi u slučaju neprazne liste.&lt;br /&gt;
&lt;br /&gt;
Sparivanje uzoraka nije strogo govoreći &amp;#039;&amp;#039;uvijek&amp;#039;&amp;#039; izborni konstrukt, s obzirom da je u Haskellu dopušteno napisati samo jednu alternativu, koja će uvijek biti sparena - u ovoj situaciji se ne rabi kao izborni konstrukt, već jednostavno kao način vezanja varijabli. Međutim, često se rabi kao izborni konstrukt u jezicima u kojima je dostupan.&lt;br /&gt;
&lt;br /&gt;
== Predviđanje grananja ==&lt;br /&gt;
&lt;br /&gt;
{{glavni|Predviđanje grananja}}&lt;br /&gt;
&lt;br /&gt;
U [[asemblerski jezik|asemblerskom jeziku]], [[predviđanje grananja]] je svojstvo instrukcijskih skupova pojedinih [[centralna procesorska jedinica|CPU]]-ova koje dopušta uvjetno izvođenje instrukcija bez nužnog obavljanja skupih uvjetnih skokova.&lt;br /&gt;
&lt;br /&gt;
== Unakrsna referenca izbornih sustava ==&lt;br /&gt;
&lt;br /&gt;
Ova tablica pruža pregled najrecentnih specifikacija svakog od navedenih jezika. Za jezike za koje ne postoji specifikacija, referira se na najnoviju službeno puštenu implementaciju.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! rowspan=2 | [[Programski jezik]]&lt;br /&gt;
! colspan=3 | Struktuirano if&lt;br /&gt;
! rowspan=2 | Izbor konstanti&lt;br /&gt;
! rowspan=2 | Aritmetičko if&lt;br /&gt;
! rowspan=2 | Sparivanje uzoraka{{ref label|pattern_matching|1|a}}&lt;br /&gt;
|-&lt;br /&gt;
! then&lt;br /&gt;
! else&lt;br /&gt;
! else-if&lt;br /&gt;
|-&lt;br /&gt;
|{{rh}}| [[Ada (programski jezik)|Ada]]&lt;br /&gt;
| {{da}}&lt;br /&gt;
| {{da}}&lt;br /&gt;
| {{da}}&lt;br /&gt;
| {{da}}&lt;br /&gt;
| {{ne}}&lt;br /&gt;
| ?&lt;br /&gt;
|- &lt;br /&gt;
|{{rh}}| [[C (programski jezik)|C]] i [[C++]]&lt;br /&gt;
| {{da}}&lt;br /&gt;
| {{da}}&lt;br /&gt;
| {{ne|nije potrebno}} {{ref label|choice_else_if|2|a}}&lt;br /&gt;
| {{da|propadanje}}&lt;br /&gt;
| {{ne}}&lt;br /&gt;
| {{ne}}&lt;br /&gt;
|- &lt;br /&gt;
|{{rh}}| [[Fortran]] &amp;lt;!-- which version? older versions are still used --&amp;gt;&lt;br /&gt;
| {{da}}&lt;br /&gt;
| {{da}}&lt;br /&gt;
| {{da}}&lt;br /&gt;
| {{da}}&lt;br /&gt;
| {{da}}&lt;br /&gt;
| ?&lt;br /&gt;
|- &lt;br /&gt;
|{{rh}}| [[Perl]]&lt;br /&gt;
| {{da}}&lt;br /&gt;
| {{da}}&lt;br /&gt;
| {{da}}&lt;br /&gt;
| {{ne}}&lt;br /&gt;
| {{ne}}&lt;br /&gt;
| ?&lt;br /&gt;
|- &lt;br /&gt;
|{{rh}}| [[PHP]]&lt;br /&gt;
| {{da}}&lt;br /&gt;
| {{da}}&lt;br /&gt;
| {{da}}&lt;br /&gt;
| {{da|propadanje}}&lt;br /&gt;
| {{ne}}&lt;br /&gt;
| ?&lt;br /&gt;
|-&lt;br /&gt;
|{{rh}}| [[Haskell (programski jezik)|Haskell]]&lt;br /&gt;
| {{da}}&lt;br /&gt;
| {{da|Da, zahtijevano}}&lt;br /&gt;
| {{ne|nije potrebno}} {{ref label|choice_else_if|2|b}}&lt;br /&gt;
| {{ne|nije potrebno}} {{ref label|choice_const|3|a}}&lt;br /&gt;
| {{ne}}&lt;br /&gt;
| {{da}}&lt;br /&gt;
|- &lt;br /&gt;
|}&lt;br /&gt;
# {{note label|pattern_matching|1|a}} Ovo se odnosi na sparivanje uzoraka kao istaknuti uvjetni konstrukt u programskom jeziku - kao suprotnost pukoj podršci za sparivanje uzoraka stringova, kao što je podrška za [[regularni izraz|regularne izraze]].&lt;br /&gt;
# {{note label|choice_else_if|2|a}} {{note label|choice_else_if|2|b}} Vrlo čest &amp;lt;code&amp;gt;else if&amp;lt;/code&amp;gt; u C porodici jezika, kao i u Haskellu, nije svojstvo jezika, već skup ugniježđenih i neovisnih &amp;#039;&amp;#039;if then else&amp;#039;&amp;#039; naredbi kombiniranih s osobitim izgledom izvornog koda. Međutim, ovo znači da odvojen else-if konstrukt nije ustvari ni potreban u ovim jezicima.&lt;br /&gt;
# {{note label|choice_const|3|a}} U Haskellu odvojeni konstrukt izbora konstanti nije ni potreban, s obzirom da se ista funkcionalnost da ostvariti sparivanjem uzoraka.&lt;br /&gt;
&lt;br /&gt;
== Izvori ==&lt;br /&gt;
{{izvori}}&lt;br /&gt;
&lt;br /&gt;
[[Kategorija:Konstrukti u programiranju]]&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
	</entry>
</feed>