Ero sivun ”Pseudokoodi” versioiden välillä

[arvioimaton versio][arvioimaton versio]
Poistettu sisältö Lisätty sisältö
pEi muokkausyhteenvetoa
Anurmi (keskustelu | muokkaukset)
Vinkkejä, tyylejä, algol
Rivi 2:
<code>readfp(fdesc, 1024, "\n");</code>
 
Varsinaista pseudokoodistandardia ei ole, ja jopa yliopistojen tietojenkäsittelytieteen laitosten eri kursseilla saattaa törmätä erilaisiin notaatioihin kurssista riippuen. Yleensä pseudokielessä käytetään [[Algol]]iin perustuvaa [[Pascal (ohjelmointikieli)|Pascal]]- tai [[Python]] -tyylistä syntaksia. Erityisesti sijoitusta kuvaa merkki <tt>:=</tt> tai <tt>←</tt>, jotta se ei sekoittuisi yhtäsuuruuden kanssa.
 
Pseudokielinen esimerkki [[kuplalajittelu]]algoritmista:
Rivi 23:
Vaikka pseudokoodi näennäisesti muistuttaa ohjelmointikieltä, se ei ole tarkoitettu [[Ohjelmointikielen kääntäjä]]n tai [[Ohjelmointikielen tulkki|tulkin]] ymmärrettäväksi. Pseudokoodi onkin tarkoitettu lähinnä ihmisten työvälineeksi.
 
== Vinkkejä ==
* Lukijalle tulee olla selvää, ovatko muuttujat viitteitä vai kopioita ja alkavatko taulukon indeksit nollasta vai eivät.
* Vältä monimutkaisia ehtorakenteita ja algoritmin katkaisevia ''return''-avainsanoja. [[Invariantti|Invarianti]]n ajattelu voi olla hyödyllistä algoritmin selkeyttämiseksi.
* Älä käytä C/Java-tyylistä matalan tason for-lausetta, vaan kirjoita mieluummin <tt>'''for each''' alkio '''in''' joukko.
* Merkitse kokonaislukujako selkeästi, esim. 5 div 3 tai &lfloor;5 / 3&rfloor;, tai kerro lukijalle että kaikki jaot ovat kokonaislukujakoja.
* Käytä matemaattisia merkintöjä kuten summaa, jos ne ovat selkeämpiä.
 
== Pseudokoodityylejä ==
 
=== C-tyyli ===
C-tyylinen pseudokoodi käyttää hyväkseen C-tyylisten kielien laajaa levinneisyyttä: ne ovat tuttuja lähes kaikille. Vaarana on, että noudatetaan C:n syntaksia liian kirjaimellisesti selkeyden kustannuksella, ja unohdetaan muotoilla teksti vapaasti. Tyyppien esittelyt, puolipisteet, aaltosulut ja matalan tason for-lause voivat tehdä algoritmista vaikeammin luettavan.
'''int''' etsi(var A[], var k) {
'''for each''' (a in A) {
'''if'''(a == k)
'''return''' index of a;
}
// arvoa ei löytynyt
'''return''' -1;
}
=== Introduction to Algorithms ===
Suositussa kurssikirjassa ''[[Introduction to Algorithms]]'' käytetty pseudokoodityyli on saavuttanut jokseenkin vakiintuneen aseman algoritmien kuvauksessa korkeakouluissa, ja sen kirjoittamiseksi on laadittu useampikin [[LaTeX]]-makropaketti. Wikipedia ei tue kaikkia siinä käytettyjä muotoiluja.
 
Tyyli yhdistää melko matemaattisen merkintätavan sisennyssääntöön ja sijoitusnuoleen. Sana ''do'' rivin alussa tekee sisennyksestä hieman epätasaista. Indeksit alkavat yhdestä eivätkä nollasta. Tietueen jäseniä noudetaan kuin taulukon alkioita, mikä saattaa hämätä lukijaa: ''size''[''T''] on tietueen T jäsen, ''T''[3] on taulukon T indeksi.
 
Etsi(''A'', ''k'')
'''for''' ''i'' ← 1 '''to''' ''length''[''A'']
'''do''' '''if''' ''A''[''i''] = ''k''
'''then''' '''return''' ''k''
> ei löytynyt
'''return''' –1
 
=== Englanninkielisen Wikipedian matalan tason pseudokoodisuositus ===
'''function''' etsi(A, k) '''is'''
'''for each''' a '''in''' A '''do'''
'''if''' a = k '''then return''' index of a
'''end for'''
''arvoa ei löytynyt''
'''return''' –1
'''end function
Pelkkä sisennyskin riittää, eivätkä ''is'', ''do'' ja ''then'' ole niin tärkeitä:
'''function''' etsi(A, k)
'''for each''' a '''in''' A
'''if''' a = k
'''return''' index of a
''arvoa ei löytynyt''
'''return''' –1
 
{{Tynkä/Ohjelmointi}}