# Sasikode

konputazioaren zientzietan eta zenbakizko analisian, sasikodea programa informatiko edo bestelako Algoritmo baten funtzionamenduaren goi mailako deskribapen trinko eta informala da.
Benetako programazio lengoai baten ohiko egiturak erabiltzen ditu, baina pertsonen irakurketarako diseinatua dago, ez makinen interpretaziorako, eta beste programazio lengoiaiekiko independientea da. Normalean, sasikodea algoritmoaren ulermenerako ezinbestekoak ez diren zehaztasun batzuk alde batera uzten ditu aldagaien definizioak, sistema zehatzetako kodea eta azpirutina batzuk. Programazio lengoaia, behar den lekuan, deskribapen zehatzekin edota idazkera matematiko trinkoarekin osatzen da. Sasikodea erabiltzen da pertsonek errazago ulertzen dutelako ohiko programazio lengoaiarekin alderatuta, algoritmo baten oinarrizko printzipioen deskribapen eraginkorra eta independentea delako. Normalean algoritmo ezberdinak agertzen dituzten testu liburuetan eta argitalpen zientifikoetan erabili ohi da, baita ere programa informatikoen garapenaren planifikazioan kodifikazioa egin aurreko programaren egitura adierazteko.
Sasikodeak ez du sintaxi estandarrik. Antzekoa den arren sasikodea ezin da hezurdura programekin nahastu, azken hauek fikziozko kodea erabiltzen dute baina akatsik gabe konpila daitezke. Fluxu diagramak eta UML sasikodearen aukera grafikotzat jo daitezke, nahiz eta paperean leku gehiago hartzen duten.

## Erabilerak

Orokorrean sasikodea informatika eta zenbakizko konputazio testu liburu eta argitalpen zientifikoetan erabiltzen da algoritmoak deskribatzeko. Modu honetan edozein garatzailek uler dezake nahiz eta programazio hizkuntz ezberdina erabili. Testu liburuek, orokorrean, sarreraren eranskin gisa liburu horretako sasikodearen erabileraren zehaztasunak azaltzen dute. Sasikodearen zehaztasun maila, kasu batzuetan, erabilera orokorreko hizkuntzen formalizaziora hurbil daiteke.
Algoritmo zehatz bat erabili behar duen programatzaile batek, batez ere ezezaguna bada, normalean sasikodean egindako deskribapen batekin hasten da eta gero deskribapen hori erabiliko duen programazio lengoaira itzultzen du programaren bestelako zatiekin modu egoki batean elkarlan egin dezan.

## Sintaxia

Gaur egun eta orokorrean, sasikodeak, bere izenak dioen bezala, ez du hizkuntza zehatz baten sintaxi araurik jarraitzen ez dago ere inolako estandar sistematikorik, nahiz eta edozein egilek hartuko duen oinarri gisa hizkuntza zehatz baten kontrol egitura orokorrak, sintaxia eta estiloa. Baina exekutatu nahi izanez gero, hizkuntza zehatza batera bihurtu beharko da. Iturri ezagunenak Pascal, BASIC, C, C++, Java, Lisp eta ALGOLeko sintaxiak jarraitzen ohi dute. Orokorrean aldagaien definizioa ez da agertzen. Batzuetan, funtzioen deiak, kode multzoak eta begizta baten barruan dagoen kodea hizkuntza naturaleko lerro bakarreko esaldi sinple batekin ordezkatzen dira.
Idazlearen arabera, sasikodearen estiloa oso ezberdina izan daiteke, benetako programazio hizkuntz baten imitazio ia perfektu bat izatetik, beste muturreraino, sasikodea prosan egindako deskribapen bat izatera.
bizz buzz joku matematikoaren sasikodea adibide bat da:
| Fortran estiloko sasikodea: programa bizzbuzz egin i = 1-etik 100 arte ezarri print_number egia i baldin bada 3rekin zatigarria idatzi "Bizz" ezarri print_number gezurra i baldin bada 5ekin zatigarria idatzi "Buzz" ezarri print_number gezurra baldin eta print_number, idatzi i idatzi lerro berria bukatu egin | Pascal estiloko sasikodea: prozedura bizzbuzz egin i := 1 etik 100 arte ezarri print_number Egia; Baldin i 3rekin zatigarria bada orduan idatzi "Bizz"; ezarri print_number gezurra; Baldin i 5ekin zatigarria bada orduan idatzi "Buzz"; ezarri print_number gezurra; Baldin eta print_number, idatzi i; idatzi lerro_berria; Bukatu | C estiloko sasikodea: subprozesua funtzioa bizzbuzz egin (i <- 1; i<=100; i++) { ezarri print_number egia; Baldin i 3rekin zatigarria bada idatzi"Bizz"; ezarri print_number gezurra; Baldin i 5ekin zatigarria bada idatzi "Buzz"; ezarri print_number gezurra; Baldin eta print_number, idatzi i; idatzi lerro_berria; } |

## Sasikodearen datuen definizioa

Datuen definizioa jakintzat ematen da, batez ere aldagai sinpleetan, egitura bereziak erabiliz gero: pilak, ilarak, bektoreak edo erregistroak, algoritmoaren goiburuan defini daitezke, eta noski, sasikodea datu egiturak definitzeko erabiltzekotan atal hau modu egokian garatu beharko da.

## Funtzioak eta eragiketak

Egile bakoitzak bere sasikodea erabiltzen du bere arauekin. Adibidez, "ordeztu $x$ aldagaiaren balioa $y$ aldagaiaren balioarekin" agindua hurrengo moduetan adieraz daiteke:
* ezarri $x\,$ $y\,$-ren balioa
       ${\color {OliveGreen}{\mathit {x}}}\;{\color {BlueViolet}{\mathit {\gets }}}\;{\color {OliveGreen}{\mathit {y;}}}$
       ${\color {OliveGreen}{\mathit {x}}}\;{\color {BlueViolet}{\mathit {:=}}}\;{\color {OliveGreen}{\mathit {y;}}}$
       ${\color {OliveGreen}{\mathit {x}}}\;{\color {BlueViolet}{\mathit {=}}}\;{\color {OliveGreen}{\mathit {y;}}}$
Eragiketa aritmetikoak matematikako ohiko moduan adierazten dira.
       ${\color {Gray}{\mathit {\{Hau\;iruzkin\;bat\;da\;normalean\;matemtikoa\}}}}$
       ${\color {OliveGreen}{\mathit {bolumena}}}\;{\color {BlueViolet}{\mathit {\gets }}}\;{\color {Red}{\mathit {\pi }}}{\color {OliveGreen}{\mathit {r}}}^{2}{\color {OliveGreen}{\mathit {h}}}$
       ${\color {Gray}{\mathit {//eta\;hau\;beste\;iruzkin\;bat\;da\;normalean\;testua//}}}$
       ${\color {OliveGreen}{\mathit {hipotenusa}}}\;{\color {BlueViolet}{\mathit {\gets }}}\;{\sqrt {{\color {OliveGreen}{\mathit {a}}}^{2}\;{\color {BlueViolet}{\mathit {+}}}\;{\color {OliveGreen}{\mathit {b}}}^{2}\;}}$
       ${\color {OliveGreen}{\mathit {emaitza}}}\;{\color {BlueViolet}{\mathit {\gets }}}\;{\color {Tan}{\mathit {sin}}}({\color {OliveGreen}{\mathit {a}}})$

## Kontrol egiturak

Sasikodearen idazkeran hiru kontrol egitura mota erabiltzen dira: sekuentzialak, hautatzaileak eta iteratiboak.

### Egitura sekuentzialak

Aginduak sekuentzia finko batean jarraitzen dira, ondoko zenbakiaren araberakoa izan ohi direnak. Hau da aginduak goitik bera betearazten dira.
       ${\color {BlueViolet}{\mathit {n_{1}\;agindua;}}}$
       ${\color {BlueViolet}{\mathit {n_{2}\;agindua;}}}$
       ${\color {BlueViolet}{\mathit {n_{3}\;agindua;}}}$
       $\cdots$
       ${\color {BlueViolet}{\mathit {n_{n}\;agindua;}}}$

### Egitura hautatzaileak

Egitura hautatzaileak baldintza baten arabera abiaratu daitezken edo ez aginduak dira.
       ${\color {Sepia}{\mathit {Baldin\;eta}}}\;{\color {OliveGreen}{\mathit {baldintza}}}\;{\color {Sepia}{\mathit {Orduan}}}$
          ${\color {BlueViolet}{\mathit {aginduak;}}}$
       ${\color {Sepia}{\mathit {Amaitu\;Baldintza}}}$
Baldintza adierazpen boolearra da. Aginduak bakarrik betearazten dira baldintza egiazkoa denean.

#### Hautatzaile bikoitza

Egitura honek bi aginduen artean bakarra egiten du baldintzaren betetzearen arabera.
       ${\color {Sepia}{\mathit {Baldin\;eta}}}\;{\color {OliveGreen}{\mathit {baldintza}}}\;{\color {Sepia}{\mathit {Orduan}}}$
          ${\color {BlueViolet}{\mathit {aginduak_{1};}}}$
       ${\color {Sepia}{\mathit {Bestela\;Orduan}}}$
          ${\color {BlueViolet}{\mathit {aginduak_{2};}}}$
       ${\color {Sepia}{\mathit {Bukatu\;Baldin}}}$
Baldintzak aldagai boolearra da edo emaitza boolearra duen funtzio bat. Baldintza hau egia bada Aginduak$_1$ abiarazten da, eta horrela ez bada, orduan Aginduak$_2$ abiarazten da.

#### Hautatzaile anitza

Ohikoa da ere Hautatzaile anitza erabiltzea, hau egitura Hautatzaile batzuen loturaren baliokidea da.
       ${\color {Sepia}{\mathit {Baldin\;eta}}}\;{\color {OliveGreen}{\mathit {baldintza_{1}}}}\;{\color {Sepia}{\mathit {Orduan}}}$
          ${\color {BlueViolet}{\mathit {aginduak_{1};}}}$
       ${\color {Sepia}{\mathit {Bestela\;Baldin\;eta}}}\;{\color {OliveGreen}{\mathit {baldintza_{2}}}}\;{\color {Sepia}{\mathit {Orduan}}}$
          ${\color {BlueViolet}{\mathit {aginduak_{2};}}}$
       ${\color {Sepia}{\mathit {Bestela\;Baldin\;eta}}}\;{\color {OliveGreen}{\mathit {baldintza_{3}}}}\;{\color {Sepia}{\mathit {Orduan}}}$
          ${\color {BlueViolet}{\mathit {aginduak_{3};}}}$
       $\cdots$
       ${\color {Sepia}{\mathit {Bestela\;Orduan}}}$
          ${\color {BlueViolet}{\mathit {aginduak_{n};}}}$
       ${\color {Sepia}{\mathit {Bukatu\;Baldin}}}$
Kasu honetan elkarrekiko baztertzailea izan behar den baldintza multzo bat dago, hauetako bat betetzen bada derrigorrez besteak ezin dira bete, kasu bat Bestela kasu bat dago egia dena beste guztiak gezurrezkoak direnean
Egitura honetan Baldintza$_1$ egiazkoa bada, orduan bakarrik Aginduak$_1$ abiarazten da. Orokorrean, Baldintza$_i$ egiazkoa bada, orduan bakarrik Aginduak$_i$ abiarazten da.

#### Hautatzaile kasu anitzak

Aurrekoaren antzeko egitura (kasu batzuetan baliokidea dena) jarraian adierazten da.
       ${\color {Sepia}{\mathit {Aukera}}}\;{\color {OliveGreen}{\mathit {aldagaia}}}{\color {Sepia}{\mathit {Egin}}}$
          ${\color {Sepia}{\mathit {kasua}}}\;{\color {OliveGreen}{\mathit {balioa_{1};}}}$
             ${\color {BlueViolet}{\mathit {aginduak_{1};}}}$
          ${\color {Sepia}{\mathit {kasua}}}\;{\color {OliveGreen}{\mathit {balioa_{2};}}}$
             ${\color {BlueViolet}{\mathit {aginduak_{2};}}}$
          ${\color {Sepia}{\mathit {kasua}}}\;{\color {OliveGreen}{\mathit {balioa_{3};}}}$
             ${\color {BlueViolet}{\mathit {aginduak_{3};}}}$
          $\cdots$
          ${\color {Sepia}{\mathit {Beste\;kasuetan}}}$
             ${\color {BlueViolet}{\mathit {aginduak_{n};}}}$
       ${\color {Sepia}{\mathit {Bukatu\;Aukera}}}$
Kasu honetan Adierazle bat dago, hau aldagai edo funtzio bat da kasu bakoitzean "Balio$_i$" balioekin alderatzen den, kasuren batean bi balioak berdinak badira, orduan dagozkion Aginduak$_i$ abiaraziko dira. beste kasuetan atala aurreko adibidearen Bestela atalaren baliokidea da.

### Egitura iteratiboak

Egitura iteratiboak aginduak behin baino gehiagotan egitea ahalbidetzen dute.

#### Bitartean begizta

Begizta errepikatu egiten da baldintza egia den bitartean, begiztara lehenengo aldiz iristean baldintza gezurra bada, orduan begiztaren gorputza ez da ezta behin batean ere abiarazten.
       ${\color {OliveGreen}{\mathit {baldintza}}}\;{\color {Sepia}{\mathit {Betetzen\;den\;bitartean}}}\;{\color {Sepia}{\mathit {Egin}}}$
          ${\color {BlueViolet}{\mathit {aginduak;}}}$
       ${\color {Sepia}{\mathit {Bukatu\;Bitartean}}}$

#### Errepikatu begizta

Aurrekoaren moldaketak diren beste egitura batzuk daude. Errepikatu kontrol egitura erabiltzen da begiztaren gorputza gutxienez behin eta baldintza bete arte abiaraztea nahi denean.
       ${\color {Sepia}{\mathit {Errepikatu}}}$
          ${\color {BlueViolet}{\mathit {aginduak;}}}$
       ${\color {OliveGreen}{\mathit {baldintza}}}\;{\color {Sepia}{\mathit {Bete\;Arte}}}$
Aurreko kontrol egitura hurrengoaren baliokidea da:
       ${\color {BlueViolet}{\mathit {aginduak;}}}$
       ${\color {BlueViolet}{\mathit {\neg }}}({\color {OliveGreen}{\mathit {baldintza}}})\;{\color {Sepia}{\mathit {Betetzen\;den\;bitartean}}}\;{\color {Sepia}{\mathit {Egin}}}$
          ${\color {BlueViolet}{\mathit {aginduak;}}}$
       ${\color {Sepia}{\mathit {Bukatu\;Bitartean}}}$

#### Egin begizta

Egin begizta baldintza bat betetzen den bitartean agindu multzo bat errepikatzeko erabiltzen da.
       ${\color {Sepia}{\mathit {Egin}}}\;$
          ${\color {BlueViolet}{\mathit {aginduak;}}}\;$
       ${\color {OliveGreen}{\mathit {baldintza}}}\;{\color {Sepia}{\mathit {Betetzen\;den\;bitartean}}}$

#### FOR Begizta

Beste ohiko kontrol egitura bat FOR begizta da, hau aldi kopuru ezagun bat iteratzea nahi denean erabiltzen da. Indize moduan handitzen (edo txikitzen) den aldagai bat erabiltzen da:
       ${\color {OliveGreen}{\mathit {i}}}\;{\color {BlueViolet}{\mathit {\gets }}}\;{\color {OliveGreen}{\mathit {x}}}\;{\color {Sepia}{\mathit {tik}}}\;{\color {OliveGreen}{\mathit {n}}}\;{\color {Sepia}{\mathit {ra}}}\;{\color {Sepia}{\mathit {urratsa}}}\;{\color {OliveGreen}{\mathit {z}}}\;{\color {Sepia}{\mathit {Egin}}}$
          ${\color {BlueViolet}{\mathit {aginduak;}}}$
       ${\color {Sepia}{\mathit {Bukatu\;for}}}$
Honela definitzen dena:
       ${\color {OliveGreen}{\mathit {i}}}\;{\color {BlueViolet}{\mathit {\gets }}}\;{\color {OliveGreen}{\mathit {x}}}$
       ${\color {OliveGreen}{\mathit {i}}}\;{\color {BlueViolet}{\mathit {\leq }}}\;{\color {OliveGreen}{\mathit {n}}}\;{\color {Sepia}{\mathit {Betetzen\;den\;bitartean}}}\;{\color {Sepia}{\mathit {Egin}}}$
          ${\color {BlueViolet}{\mathit {aginduak;}}}$
          ${\color {OliveGreen}{\mathit {i}}}\;{\color {BlueViolet}{\mathit {\gets }}}\;{\color {OliveGreen}{\mathit {i}}}\;{\color {BlueViolet}{\mathit {+}}}\;{\color {OliveGreen}{\mathit {z;}}}$
       ${\color {Sepia}{\mathit {Bukatu\;Bitartean}}}$

#### Bakoitzeko begizta

Azkenik bakoitzeko kontrol egitura erabiltzea ere ohikoa da. Egitura hau $L$ zerrenda edo multzo bat dagoenean eta bere elementu bakoitzetik iteratu nahi denean erabiltzen da.
       ${\color {OliveGreen}{\mathit {L}}}\;{\color {Sepia}{\mathit {ko}}}\;{\color {OliveGreen}{\mathit {x}}}\;{\color {Sepia}{\mathit {Elementu\;Bakoitzeko}}}\;{\color {Sepia}{\mathit {Egin}}}$
          ${\color {BlueViolet}{\mathit {aginduak;}}}$
       ${\color {Sepia}{\mathit {Bukatu\;Elementu\;Bakoitzeko}}}$
$L$ko elementuak $L_{0},L_{1},\dots ,L_{n}$ badira, orduan aurrekoa hurrengoaren baliokidea izango zen:
       ${\color {OliveGreen}{\mathit {i}}}\;{\color {BlueViolet}{\mathit {\gets }}}\;{\color {OliveGreen}{\mathit {0}}}\;{\color {Sepia}{\mathit {tik}}}\;{\color {OliveGreen}{\mathit {n}}}\;{\color {Sepia}{\mathit {ra}}}\;{\color {Sepia}{\mathit {urratsa}}}\;{\color {OliveGreen}{\mathit {1}}}\;{\color {Sepia}{\mathit {Egin}}}$
          ${\color {OliveGreen}{\mathit {x}}}\;{\color {BlueViolet}{\mathit {\gets }}}\;{\color {OliveGreen}{\mathit {L_{i}}}}$
          ${\color {BlueViolet}{\mathit {aginduak;}}}$
       ${\color {Sepia}{\mathit {Bukatu\;for}}}$
Honako honen berdina dena:
       ${\color {OliveGreen}{\mathit {i}}}\;{\color {BlueViolet}{\mathit {\gets }}}\;{\color {OliveGreen}{\mathit {0}}}\;{\color {Sepia}{\mathit {tik}}}\;{\color {OliveGreen}{\mathit {n}}}\;{\color {Sepia}{\mathit {ra}}}\;{\color {Sepia}{\mathit {Egin}}}$
          ${\color {OliveGreen}{\mathit {x}}}\;{\color {BlueViolet}{\mathit {\gets }}}\;{\color {OliveGreen}{\mathit {L_{i}}}}$
          ${\color {BlueViolet}{\mathit {aginduak;}}}$
       ${\color {Sepia}{\mathit {Bukatu\;For}}}$
Hala ere, praktikan agindu hau inplementatzeko aukera hobeak daude problemaren arabera.
Garrantzitsua da gogoratzea sasikodea ez dela estandarizatutako hizkuntza bat. Honek esan nahi du egile ezberdinek beste kontrol egitura batzuk erabili ditzaketela edo hauek erabili baina bestelako adierazpenarekin. Hala ere, funtzio matematiko eta logikoak matematikan eta logikan duten esanahi bera hartzen dute, adierazpena ere errespetatuz.

### Habiaraketa

Edozein agindu ordezkatu daiteke kontrol egitura batekin. Hurrengo adibidean burbuila ordenazioaren sasikodea agertzen da, habiaratutako egiturak dituena. Algoritmo honek handitik txikira ordenatzen ditu $L$ zerrenda bateko elementuak.
   ${\begin{array}{l}{\color {Sepia}Prozedura}\;{\color {BlueViolet}Ordenatu}\;({\color {OliveGreen}L}\;)\\\left\updownarrow {\begin{array}{l}{\color {Gray}//Iruzkina\;L=(L_{1},L_{2},\dots ,L_{n})\;n\;elementu\;dituen\;zerrenda\;bat\;da//}\\{\color {OliveGreen}k}\;{\color {BlueViolet}\gets }\;{\color {OliveGreen}0;}\\{\color {Sepia}Errepikatu}\\\left\updownarrow {\begin{array}{l}{\color {OliveGreen}tartekoa}\;{\color {BlueViolet}\gets }\;{\color {OliveGreen}Gezurra;}\\{\color {OliveGreen}k}\;{\color {BlueViolet}\gets }\;{\color {OliveGreen}k+1;}\\{\color {OliveGreen}i}\;{\color {BlueViolet}\gets }\;{\color {OliveGreen}1}\;{\color {Sepia}etik}\;{\color {OliveGreen}n-k}\;{\color {Sepia}ra}\;{\color {Sepia}Urratsa}\;{\color {OliveGreen}1}\;{\color {Sepia}Egin}\\\left\updownarrow {\begin{array}{l}{\color {Sepia}Baldin}\;{\color {OliveGreen}L_{i}}\;{\color {BlueViolet}>}\;{\color {OliveGreen}L_{i+1}}\;{\color {Sepia}Orduan}\;\\\left\updownarrow {\begin{array}{l}{\color {BlueViolet}aldatu}\;({\color {OliveGreen}L_{i},L_{i+1}}\;)\\{\color {OliveGreen}tartekoa}\;{\color {BlueViolet}\gets }\;{\color {OliveGreen}Egia;}\end{array}}\right.\\{\color {Sepia}Bukatu\;Baldin}\;\\\end{array}}\right.\\{\color {Sepia}Bukatu\;For}\\\end{array}}\right.\\{\color {OliveGreen}tartekoa}\;{\color {BlueViolet}=}\;{\color {OliveGreen}Gezurra}\;{\color {Sepia}izan\;arte;}\end{array}}\right.\\{\color {Sepia}Bukatu\;Prozedura}\;\\\end{array}}$
Orokorrean, habiaratutako egiturak indentatuak erakusten dira, begirada batez hobe identifikatzeko asmoz. Adibidean, indentazioaz gain, habiaraketa maila bakoitzaren mugak geziekin elkartu dira.

## Algoritmoen garapena

Sasikode honekin hurrengo baldintzak betetzen dituen edozein algoritmo adieraz daiteke:
* Hasiera puntu bakarra izatea.
* Bukaera puntu posible kopuru mugatu bat izatea.
* Hasierako puntua eta bukaerako puntu posibleen artean bide kopuru mugatu bat egotea.

## Funtzioak eta prozedurak

Pertsona askok funtzio eta prozeduren artean bereiztea nahiago dute. Funtzio batek, funtzio matematiko bat bezala sarrera balio bat edo gehiago hartzen ditu eta emaitza bat itzultzen du, prozedurak aldiz sarrera bat hartzen du eta ez du irteerarik bueltatzen nahiz eta kasu batzuetan sarrerako parametroen bidez emaitzak itzul ditzake baldin eta parametro hauek erreferentzi moduan pasatu izan badira.
Bi kasuetan ezinbestekoa da argi zehaztea zeintzuk diren algoritmoaren sarrerak.Ohikoa da hau hasieran parentesien barruan kokatuz egitea edo enuntziatuan idatziz. Funtzioen kasuan, itzuli bezalako hitz bat kokatzea ezinbestekoa da algoritmoak sortzen duen irteera zein den adierazteko. Adibidez, $a^{n}$ ($a$ zenbaki baten $n$. berretura).
       ${\color {Sepia}{\mathit {Funtzioa}}}\;{\color {BlueViolet}{\mathit {berreketa}}}\;({\color {OliveGreen}{\mathit {a,n}}})$
       ${\color {Gray}{\mathit {//Iruzkina:\;Algoritmo\;honek\;a^{n}\;kalkulatzen\;du\;a\;eta\;n\;zenbaki\;naturalak\;direnean//}}}$
          ${\color {OliveGreen}{\mathit {i}}}\;{\color {BlueViolet}{\mathit {\gets }}}\;{\color {OliveGreen}{\mathit {n;}}}$
          ${\color {OliveGreen}{\mathit {r}}}\;{\color {BlueViolet}{\mathit {\gets }}}\;{\color {Plum}{\mathit {1;}}}$
          ${\color {OliveGreen}{\mathit {x}}}\;{\color {BlueViolet}{\mathit {\gets }}}\;{\color {OliveGreen}{\mathit {a;}}}$
          ${\color {OliveGreen}{\mathit {i}}}\;{\color {BlueViolet}{\mathit {>}}}\;{\color {Plum}{\mathit {0}}}\;{\color {Sepia}{\mathit {Betetzen\;den\;bitartean}}}\;{\color {Sepia}{\mathit {Egin}}}$
             ${\color {Sepia}{\mathit {Baldin\;eta}}}\;{\color {OliveGreen}{\mathit {i}}}\;{\color {BlueViolet}{\mathit {\%}}}\;{\color {Plum}{\mathit {2}}}{\color {BlueViolet}{\mathit {\neq }}}\;{\color {Plum}{\mathit {0}}}{\color {Sepia}{\mathit {Orduan}}}\;{\color {Gray}{\mathit {//\;i\;bakoitia\;bada\;(\%\;ondarra\;da)}}}$
                ${\color {OliveGreen}{\mathit {r}}}\;{\color {BlueViolet}{\mathit {\gets }}}\;{\color {OliveGreen}{\mathit {r}}}\;{\color {BlueViolet}{\mathit {*}}}\;{\color {OliveGreen}{\mathit {x;}}}$
             ${\color {Sepia}{\mathit {Bukatu\;Baldin}}}$
             ${\color {OliveGreen}{\mathit {x}}}\;{\color {BlueViolet}{\mathit {\gets }}}\;{\color {OliveGreen}{\mathit {x}}}\;{\color {BlueViolet}{\mathit {*}}}\;{\color {OliveGreen}{\mathit {x;}}}$
             ${\color {OliveGreen}{\mathit {i}}}\;{\color {BlueViolet}{\mathit {\gets }}}\;{\color {OliveGreen}{\mathit {i}}}\;{\color {BlueViolet}{\mathit {/}}}\;{\color {Plum}{\mathit {2;}}}\;$
          ${\color {Sepia}{\mathit {Bukatu\;Betetzen\;den\;bitartean}}}$
          ${\color {Sepia}{\mathit {Idatzi}}}\;{\color {OliveGreen}{\mathit {r;}}}$
       ${\color {Sepia}{\mathit {Bukatu\;Funtzioa}}}$
Prozedura baten adibide bat burbuila ordenazioa izango litzateke, balio zerrenda batetik abiatuz hauek ordenatu egiten dira, kasu honetan ez da funtzio baten balioa kalkulatzen, ekintza bat egiten da, zerrenda bat ordenatu.
       ${\color {Sepia}{\mathit {Prozedura}}}\;{\color {BlueViolet}{\mathit {Burbuila}}}\;({\color {OliveGreen}{\mathit {a}}}{\color {Plum}{\mathit {_{0}}}},{\color {OliveGreen}{\mathit {a}}}{\color {Plum}{\mathit {_{1}}}},{\color {OliveGreen}{\mathit {a}}}{\color {Plum}{\mathit {_{2}}}},\ldots ,{\color {OliveGreen}{\mathit {a}}}_{{\color {OliveGreen}{\mathit {_{n}}}}{\color {BlueViolet}{\mathit {_{-}}}}{\color {Plum}{\mathit {_{1}}}}_})$
          ${\color {OliveGreen}{\mathit {i}}}\;{\color {BlueViolet}{\mathit {\gets }}}\;{\color {Plum}{\mathit {2}}}\;{\color {Sepia}{\mathit {tik}}}\;{\color {OliveGreen}{\mathit {n}}}\;{\color {Sepia}{\mathit {ra}}}\;{\color {Sepia}{\mathit {Egin}}}$
             ${\color {OliveGreen}{\mathit {j}}}\;{\color {BlueViolet}{\mathit {\gets }}}\;{\color {Plum}{\mathit {0}}}\;{\color {Sepia}{\mathit {tik}}}\;{\color {OliveGreen}{\mathit {n}}}\;{\color {BlueViolet}{\mathit {-}}}\;{\color {OliveGreen}{\mathit {i}}}\;{\color {Sepia}{\mathit {ra}}}\;{\color {Sepia}{\mathit {Eginr}}}$
                ${\color {Sepia}{\mathit {Baldin\;eta}}}\;{\color {OliveGreen}{\mathit {a}}}_{{\color {OliveGreen}{\mathit {_{j}}}}_}\;{\color {BlueViolet}{\mathit {<}}}\;{\color {OliveGreen}{\mathit {a}}}_{{\color {OliveGreen}{\mathit {_{j}}}}{\color {BlueViolet}{\mathit {_{+}}}}{\color {Plum}{\mathit {_{1}}}}_}\;{\color {Sepia}{\mathit {Orduan}}}$
                   ${\color {OliveGreen}{\mathit {aux}}}\;{\color {BlueViolet}{\mathit {\gets }}}\;{\color {OliveGreen}{\mathit {a}}}_{{\color {OliveGreen}{\mathit {_{j}}}}_}\;$
                   ${\color {OliveGreen}{\mathit {a}}}_{{\color {OliveGreen}{\mathit {_{j}}}}_}\;{\color {BlueViolet}{\mathit {\gets }}}\;{\color {OliveGreen}{\mathit {a}}}_{{\color {OliveGreen}{\mathit {_{j}}}}{\color {BlueViolet}{\mathit {_{+}}}}{\color {Plum}{\mathit {_{1}}}}_}$
                   ${\color {OliveGreen}{\mathit {a}}}_{{\color {OliveGreen}{\mathit {_{j}}}}{\color {BlueViolet}{\mathit {_{+}}}}{\color {Plum}{\mathit {_{1}}}}_}\;{\color {BlueViolet}{\mathit {\gets }}}\;{\color {OliveGreen}{\mathit {aux}}}$
                ${\color {Sepia}{\mathit {Bukatu\;Baldin}}}$
             ${\color {Sepia}{\mathit {Bukatu\;For}}}$
          ${\color {Sepia}{\mathit {Bukatu\;For}}}$
       ${\color {Sepia}{\mathit {Bukatu\;Prozedura}}}$

## Sasikodeak Fluxi diagramekiko dituen abantaila

Sasikodeak hurrengo abantailak dituzte:
* Problemaren garapenean leku gutxiago betetzen dute.
* Modu erraz batean eragiketa errepikakor konplexuak adieraz daitezke.
* Errazagoa da sasikodea programazio hizkuntz formal batera bihurtzea.
* Indentazio arauak jarraituz gero programaren egituraren mailak argi ikus daitezke.
* Programazio ikasleen ikasketa prozesuetan, hauek hurrengo urratsetik (hizkuntza zehatz batean kodifikatzea) hurbilago daude fluxu diagramak erabiltzen dituztenen aldean.
* Problema baten ebazpena argiagoa egiten du.

## Kanpo estekak

* Datuak: Q189224