TIETOKONEOHJELMIEN RAKENNE Perinteiset tietokoneohjelmat alkavat pääohjelmasta, c:ssä main(), jossa edetään rivi riviltä ja käsky käskyltä. Teollisuusautomaation ohjelmiin on lainattu runsaasti perinteisen tietokoneohjelman piirteitä Pääohjelman seuraamisen lisäksi ja rinnalle tietokoneohjelmiin ja myös automaatioon on otettu käyttöön moniajo ja keskeytysmahdollisuudet. Moniajo tarkoittaa useaa näennäisesti yhtä aikaa pyörivää ohjelmaa ja keskeytykset havahtumista palvelemaan pyydettäessä eli yllättävää nopeasti välissä suoritettavaa aliohjelmaa, kun esimerkiksi klikataan hiirellä jotakin. Windows-ympäristöön ohjelmointi sisältää luonnostaan keskeytystyyppisiä tapahtumia, olioiden klikkauksia. Keskeytykset aiheuttavat perinteisesti ohjelmoituja tapahtumia tai tietokoneen käyttöjärjestelmätason tapahtumia. Mikrokontrollereilla keskeytyksiä käytetään mm. virransäästötilaan siirtymiseen ja siitä palautumiseen, tiedonsiirtoon havahtumiseen jne. Riippumatta ohjelmointikielistä ja toimintatavasta ohjelmien kirjoitusasu vaihtelee, mutta piirteet säilyvät Ohjelmarakenne, jota seurataan rivi riviltä ensin c-koodina: main() /*c-ohjelmaa*/ pi=3.1416; kulma=30*pi/180; ypaikka=(tan(kulma))*xpaikka; xpaikka=xpaikka+10; /* suoritettavan lauseen perässä oli aina ; */
'basic-ohjelmaa: pi=3.1416 kulma=30*pi/180 ypaikka=(tan(kulma))*xpaikka xpaikka=xpaikka+10 ohjelman sisällä on funktiokutsuja ja sijoitus- ja ehtolauseita sijoituslauseissa muuttujalle sijoitetaan uusi arvo sijoituslauseessa lasketaan = merkin oiken puolen arvo ja tehdään siellä mahdollisesti funktiokutsuja yms operaatioita lopputulos sijoitetaan = merkin vasemmalla puolella olevan muuttujan arvoksi muuttujan tyypillä, kokonaisluku, liukuluku, merkki, merkkijono on vaikutusta lopputulokseen sijoituslause mahdollistaa matemaattisesti järjettömänkin lausekkeen xpaikka=xpaikka+10: Jotta sijoituslause tai funktiokutsu tuottaisi järjellisen tuloksen siinä käytettävillä muuttujilla ja funktioiden parametreilla pitää olla järjellinen alkuarvo ja vielä oikeaa muuttujatyyppiä. funktiokutsut tarkoittavat sitä, että itse asiassa suoritetaan peni aliohjelma, funktiokutsussa määriteltyjen parametrien avulla ja palautetaan aliohjelmassa määritelty arvo esimerkiksi tan(kulma) palauttaa radiaaneina esitetyn kulman tangentin arvon, joka on tyypiltään liukuluku.
ohjelman sisällä on tyypillisesti kolmenlaisia ohjausrakenteita: if...(end if) while...(wend) (Joskus sen kirjoitusasuna käytetään myös do ) for...(next) if-ehdon rajaama ohjelma-alue toteutetaan, jos ehto toteutuu, muuten se ohitetaan while-alueella pysytään, niin kauan kuin ehto pysyy totena, kun sinne kerran on päästy vaarana on jumiin jääminen for-luuppia suoritetaan määritelty toistomäärä if (askeleita<100) /*ollaan c-kiihdytysrampissa*/ askelviive=0.01; if askeleita<100 then 'ollaan basic-kiihdytysrampissa askelviive=0.01 end if Sulautetuissa järjestelmissä kierretään tahallaan päättymätöntä luuppia while(1) /* koko ohjelma on tässä välissä */
askeleita=0; while askeleita<(kohde-hidastusmatka) kun tänne on jouduttu, tätä basic ohjelma-aluetta kierretään alusta loppuun niin kauan kuin ehto on tosi ohjelmassa pitää huolehtia siitä, että ehdossa olevien muuttujien arvo päivittyy, jotta päästään ulos askeleita=askeleita+1 wend jne muuta ohjelmaa /* for - luuppia kierretään määritelty määrä, sitten siitä poistutaan ja jatketaan ohjelmassa eteenpäin tässä lasketaan luvun kertoma, aluksi c:llä*/ kertoma=1; luku=10; for(i=1;i<=luku;i++) /*siinä meni alkuarvo, ehto, jolla pysytään tässä luupissa ja mitä tehdään joka kierroksella, eli kasvatetaan muuttujaa yhdellä for-luuppi siis kierretään peräperää erilaisilla muuttujan arvoilla */ kertoma=kertoma*i; /* tätä ohjelmaa voi olla pitkästikin */ 'ja sama basicilla kertoma=1 luku=10 for i= 1 to luku kertoma=kertoma*i
' tätä ohjelmaa voi olla pitkästikin next i print kertoma C-kielessä on alun alkaen vierastettu hyppykäskyjä, pyritty hoitamaan kaikki ehtolauseilla ja funktiokutsuilla, mutta Basicin perusrakenteeseen ne kuuluvat, vaikkakin niiden käyttöä kannattaa yleensä välttää. Vuokaaviona suunnittelu suorastaan yllyttää käyttämään hyppykäskyjä ja useiden automaatiolaitteiden ohjelmointikäskyistä löytyy jonkinlainen ehdollinen tai pakotettu JUMP, JMP tai GOTO, hyppy toiseen kohtaan ohjelmassa. 'basicin kertomaluuppi toteutettuna goto-käskyllä i=0 kertoma=1 luku=10 jatka: i=i+1 kertoma=kertoma*i if i<luku then goto jatka print kertoma