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:

## 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**
{{definizio|
: 
   { \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.
{{definizio|
: 
   { \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.
{{definizio|
: 
   { \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.

{{definizio|
: 
   { \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.

{{definizio|
: 
   { \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.
{{definizio|
: 
   { \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.
{{definizio|
: 
   { \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.

{{definizio|
: 
   { \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.
{{definizio|
: 
   { \color{Sepia} \mathit{ Errepikatu }}

:: 
   { \color{BlueViolet}  \mathit{ aginduak; }}

: 
   { \color{OliveGreen} \mathit{ baldintza }} \;
   { \color{Sepia} \mathit{ Bete \; Arte }}
}}

Aurreko kontrol egitura hurrengoaren baliokidea da:
{{definizio|
: 
   { \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.

{{definizio|
: 
   {\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:

{{definizio|
: 
   { \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:
{{definizio|
: 
   { \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.

{{definizio|
: 
   { \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 }}

}}

Lko elementuak L_0,L_1,\dots,L_n badira, orduan aurrekoa hurrengoaren baliokidea izango zen:
{{definizio|
: 
   { \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:
{{definizio|
: 
   { \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.
{{definizio|
\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).

{{definizio|
: 
   { \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.
{{definizio|
: 
   { \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{ 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