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 ← ΣaA 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:

Jotkut matriisin ohjelmointikielet sisältävät vektorisoidut lausekkeet ja matriisitoiminnot ei-ASCII-kaavoina sekoitettuna tavanomaisiin ohjausrakenteisiin. Esimerkkejä ovat:

Katso myös

Viitteet

Lue lisää

Ulkoiset linkit