Pseudokoodi - Pseudocode
Vuonna tietojenkäsittelytiede , pseudokoodi on selkokielinen kuvaus vaiheista käytettäessä algoritmi tai toiseen järjestelmään. Pseudokoodi käyttää usein tavanomaisen ohjelmointikielen rakenteellisia yleissopimuksia , mutta se on tarkoitettu ihmisten lukemiseen koneen sijaan. Se jättää tyypillisesti pois yksityiskohdat, jotka ovat välttämättömiä koneen ymmärtämiseksi algoritmista, kuten muuttujien ilmoitukset ja kielikohtainen koodi. Ohjelmointikieli on täydennetty kanssa luonnollisen kielen kuvaus yksityiskohtia, joissa kätevä, tai pienikokoinen matemaattinen . Pseudokoodin käytön tarkoitus on, että ihmisten on helpompi ymmärtää kuin perinteinen ohjelmointikielikoodi, ja että se on tehokas ja ympäristöstä riippumaton kuvaus algoritmin keskeisistä periaatteista. Sitä käytetään yleisesti oppikirjoissa ja tieteellisissä julkaisuissa algoritmien dokumentoimiseksi sekä ohjelmistojen ja muiden algoritmien suunnittelussa.
Laajaa standardin pseudokoodi syntaksin olemassa, koska ohjelma pseudokoodilla ei suoritettava ohjelma, mutta tietyissä rajoitetuissa normien puuttuessa (kuten akateemisen arviointi). Pseudokoodi muistuttaa luuranko ohjelmia , jotka voidaan käännetty ilman virheitä. Vuokaavioita , drakon-kaavioita ja Unified Modeling Language (UML) -kaavioita voidaan ajatella graafisena vaihtoehtona pseudokoodille, mutta ne tarvitsevat enemmän tilaa paperilla. Kielet, kuten HAGGIS, täyttävät kuilun pseudokoodin ja ohjelmointikielillä kirjoitetun koodin välillä.
Sovellus
Tietotekniikkaan ja numeeriseen laskentaan liittyvät oppikirjat ja tieteelliset julkaisut käyttävät usein pseudokoodia algoritmien kuvauksessa, jotta kaikki ohjelmoijat voivat ymmärtää niitä, vaikka he eivät kaikki tiedä samoja ohjelmointikieliä. Oppikirjoissa on yleensä johdanto, joka selittää käytössä olevat käytännöt. Pseudokoodin yksityiskohtaisuus voi joissakin tapauksissa lähestyä virallisten yleiskäyttöisten kielten tasoa.
Ohjelmoija joka tarvitsee toteuttaa tiettyä algoritmia, varsinkin vieraassa yksi, usein alkavat pseudokoodikuvaus, ja sitten "kääntää" että kuvaus tulee tavoiteohjelmointikielellä ja muokata sitä vuorovaikutuksessa oikein muun ohjelman. Ohjelmoijat voivat myös aloittaa projektin luonnostelemalla koodin pseudokoodiksi paperille ennen sen kirjoittamista sen oikealla kielellä ylhäältä alaspäin rakennetut lähestymistavat, ja vaiheiden prosessia on parannettava.
Syntaksi
Pseudokoodi ei yleensä noudata tietyn kielen syntaksisääntöjä ; järjestelmällistä vakiolomaketta ei ole. Jotkut kirjoittajat lainaavat tyyliä ja syntaksia ohjausrakenteista joltain tavanomaiselta ohjelmointikieleltä, vaikka tämä ei ole suositeltavaa. Joitakin syntaksilähteitä ovat Fortran , Pascal , BASIC , C , C ++ , Java , Lisp ja ALGOL . Muuttuvat ilmoitukset jätetään yleensä pois. Toimintokutsut ja koodilohko, kuten silmukan sisältämä koodi, korvataan usein yksirivisellä luonnollisella kielellä.
Kirjoittajasta riippuen pseudokoodi voi siksi vaihdella suuresti tyyliltään, lähes äärimmäisestä todellisen ohjelmointikielen jäljitelmästä ääripäässä kuvaukseen, joka lähestyy muotoiltua proosaa toisessa.
Tämä on esimerkki pseudokoodista ( matemaattiselle pelille fizz buzz ):
Fortran -tyylinen pseudokoodi: program fizzbuzz
Do i = 1 to 100
set print_number to true
If i is divisible by 3
print "Fizz"
set print_number to false
If i is divisible by 5
print "Buzz"
set print_number to false
If print_number, print i
print a newline
end do
|
Pascal -tyylinen pseudokoodi: procedure fizzbuzz
For i := 1 to 100 do
set print_number to true;
If i is divisible by 3 then
print "Fizz";
set print_number to false;
If i is divisible by 5 then
print "Buzz";
set print_number to false;
If print_number, print i;
print a newline;
end
|
C -tyylinen pseudokoodi: void function fizzbuzz {
for (i = 1; i <= 100; i++) {
set print_number to true;
If i is divisible by 3 {
print "Fizz";
set print_number to false; }
If i is divisible by 5 {
print "Buzz";
set print_number to false; }
If print_number, print i;
print a newline;
}
}
|
Strukturoitu perustyylin pseudokoodi: Sub fizzbuzz()
For i = 1 to 100
print_number = True
If i is divisible by 3 Then
Print "Fizz"
print_number = False
End If
If i is divisible by 5 Then
Print "Buzz"
print_number = False
End If
If print_number = True Then print i
Print a newline
Next i
End Sub
|
Matemaattinen tyyli pseudokoodi
On numeerinen laskenta , pseudokoodi koostuu usein matemaattinen , tyypillisesti joukko ja matriisi teoria, sekoitetaan valvontaan liittyvät rakenteet tavanomaisen ohjelmointikieli, ja ehkä myös luonnollisen kielen kuvaukset. Tämä on kompakti ja usein epävirallinen merkintä, jonka moni matemaattisesti koulutettu henkilö ymmärtää, ja jota käytetään usein kuvailemaan matemaattisia algoritmeja . Esimerkiksi summaoperaattori ( pääoma-sigma-merkintä ) tai tuoteoperaattori ( pääoma-pi-merkintä ) voivat edustaa for-silmukkaa ja valintarakennetta yhdessä lausekkeessa:
Return
Normaalisti ei- ASCII- ladontaa käytetään matemaattisiin yhtälöihin, esimerkiksi merkintäkielillä, kuten TeX tai MathML , tai omilla kaavaeditoreilla .
Matemaattisen tyylin pseudokoodia kutsutaan joskus pidgin -koodiksi , esimerkiksi pidgin ALGOL (käsitteen alkuperä), pidgin Fortran , pidgin BASIC , pidgin Pascal , pidgin C ja pidgin Lisp .
Yleiset matemaattiset symbolit
Toiminnan tyyppi | Symboli | Esimerkki |
---|---|---|
Tehtävä | ← tai: = |
c ← 2πr , c := 2πr
|
Vertailu | =, ≠, <,>, ≤, ≥ | |
Aritmeettinen | +, -, ×, /, mod | |
Lattia/katto | ⌊, ⌋, ⌈, ⌉ |
a ← ⌊b⌋ + ⌈c⌉
|
Looginen | ja , tai | |
Summat, tuotteet | Σ Π |
h ← Σa∈A 1/a
|
Esimerkki
Tässä on pidempi esimerkki matemaattisen tyylin pseudokoodista Ford-Fulkerson-algoritmille :
algorithm ford-fulkerson is input: Graph G with flow capacity c, source node s, sink node t output: Flow f such that f is maximal from s to t (Note that f(u,v) is the flow from node u to node v, and c(u,v) is the flow capacity from node u to node v) for each edge (u, v) in GE do f(u, v) ← 0 f(v, u) ← 0 while there exists a path p from s to t in the residual network Gf do let cf be the flow capacity of the residual network Gf cf(p) ← min{cf(u, v) | (u, v) in p} for each edge (u, v) in p do f(u, v) ← f(u, v) + cf(p) f(v, u) ← −f(u, v) return f
Pseudokoodityylisten kielten koneellinen kokoaminen
Luonnollinen kielioppi ohjelmointikielissä
Useat yritykset tuoda luonnollisen kielen kieliopin elementtejä tietokoneohjelmointiin ovat tuottaneet ohjelmointikieliä, kuten HyperTalk , Lingo , AppleScript , SQL , Inform ja jossain määrin Python . Näillä kielillä sulut ja muut erikoismerkit korvataan prepositioilla, mikä johtaa varsin puhuttelevaan koodiin. Nämä kielet kirjoitetaan tyypillisesti dynaamisesti , mikä tarkoittaa, että muuttujat ja muut kattilalevyn koodit voidaan jättää pois. Tällaiset kielet voivat helpottaa kieltä tietämättömän henkilön ymmärtämään koodia ja ehkä myös oppia kieltä. Kuitenkin samankaltaisuus luonnollisen kielen kanssa on yleensä enemmän kosmeettista kuin aitoa. Syntaksisäännöt voivat olla yhtä tiukkoja ja muodollisia kuin perinteisessä ohjelmoinnissa, eivätkä ne välttämättä helpota ohjelmien kehittämistä.
Matemaattiset ohjelmointikielet
Vaihtoehtona matemaattisen pseudokoodin (johon sisältyy joukkoteoriamerkintä tai matriisitoiminnot) käyttämiseen algoritmien dokumentoinnissa on käyttää muodollista matemaattista ohjelmointikieltä, joka on sekoitus muita kuin ASCII-matemaattisia merkintätapoja ja ohjelman ohjausrakenteita. Sitten koodi voidaan jäsentää ja tulkita koneella.
Useat muodolliset spesifikaatiokielet sisältävät joukkoteoriamerkinnän erikoismerkeillä. Esimerkkejä ovat:
- Z -merkintä
- Wienin kehittämismenetelmän määrittelykieli (VDM-SL).
Jotkut matriisin ohjelmointikielet sisältävät vektorisoidut lausekkeet ja matriisitoiminnot ei-ASCII-kaavoina sekoitettuna tavanomaisiin ohjausrakenteisiin. Esimerkkejä ovat:
- Ohjelmointikieli (APL) ja sen murteet APLX ja A+ .
- MathCAD .
Katso myös
- Konseptin ohjelmointi
- Drakon-kaavio
- Vuokaavio
- Lukutaitoinen ohjelmointi
- Ohjelman suunnittelukieli
- Lyhyt koodi
- Strukturoitu englanti
Viitteet
Lue lisää
- Zobel, Justin (2013). "Algoritmit". Writing for Computer Science (toinen painos). Springer. ISBN 978-1-85233-802-2.
Ulkoiset linkit
- Pseudokoodistandardi
- ACM: n kerätyt algoritmit
- Pseudokoodiohjeet , PDF -tiedosto.