OHJ-1101 Ohjelmointi 1e

Koko: px
Aloita esitys sivulta:

Download "OHJ-1101 Ohjelmointi 1e"

Transkriptio

1 OHJ-1101 Ohjelmointi 1e Essi Lahtinen

2 OHJ-1101 Ohjelmointi 1e Kurssin järjestelyt Kurssin vastuuhenkilö Essi Lahtinen huone: TE210, puh ) vastaa kurssin sisällöstä, materiaalista, korvauksista ja luennoi toiselle ryhmälle. Toisen luentoryhmän luennoijana toimii Mikko Tiusanen huone: TF207, puh: ). Kurssivääpeli Teemu Erkkola huone: TE212, puh: ) vastaa kaikista kurssiin liittyvistä käytännön järjestelyistä (harjoitusryhmät, harjoitustöihin liittyvät asiat, jne.). Lisäksi kurssin henkilökuntaan kuuluu 12 mukavaa ja avuliasta assistenttia, jotka ohjaavat viikkoharjoituksia ja harjoitustöitä. Kurssin henkilökunnan vastaanottoajat löytyvät kurssin nettisivulta.

3 OHJ-1101 Ohjelmointi 1e Tiedottaminen kurssilla Kurssin asioista tiedotetaan ensisijaisesti uutisryhmässä tut.ot.ohj1e, jota kannattaa seurata, jos haluaa selvitä kurssista mahdollisimman helpolla. Uutisryhmien lukemista kerrataan vielä ensimmäisessä viikkoharjoituksessa. Kysy neuvoa harjoitusassistentiltasi. Kurssin kotisivulla ohj1e/ on pääasiassa vain kurssin keston ajan muuttumatonta tietoa. Kotisivu kannattaa lukea perusteellisesti läpi, jos haluaa välttää höynäytetyksi tulemisen.

4 OHJ-1101 Ohjelmointi 1e Kurssin suorittaminen Kurssi muodostuu seuraavista osista: Luennot (2. periodilla 4 h/vk ja 3. periodilla 2 h/vk) Harjoitukset (2. ja 3. periodeilla 2 h/vk) Palautustehtävät (yhteensä 4 kpl, joista 3 kpl pakollisia), henkilökohtaisia Harjoitustyö (sisältää välipalautuksen), henkilökohtainen ja pakollinen Kaksi välikoetta tai tentti, pakollinen Luentoja on 36 h ja harjoituksia 22 h, mikä on yhteensä 48 h. Kurssista saa 4 op, joka merkitsee n. 104 h työtä. Muihin hommiin menee varmaan aika paljon aikaa! Ohjelmoimaan oppii vain ohjelmoimalla.

5 OHJ-1101 Ohjelmointi 1e Kurssin arvostelu Kurssin arvosana määräytyy kokonaispistemäärän (= suorituspisteet + bonuspisteet) perusteella. Suorituspisteitä saa tentistä tai välikokeista ( n. 30) ja harjoitustyöstä (3). Bonuspisteitä saa aktiivisesta osalistumisesta harjoituksiin (3). Suorituspisteet vaikuttavat arvosanarajojen määräytymiseen. Bonuspisteillä voi korottaa saamaansa arvosanaa maksimissaan yhdellä. (Hylättyä suoritusta ei voi korottaa.)

6 OHJ-1101 Ohjelmointi 1e Materiaali Kurssin pruju löytyy nettisivulta ja halutessaan sen voi tulostaa paperiversioksi TiTe-killan monistuskoneelta. Pruju on tarkoitettu luentojen tueksi, ei itseopiskeluun. Jos et aio käydä luennoilla, hanki jokin C++-opus. Tällaiseksi sopii esimerkiksi: Walter Savitch: Problem Solving with C++, The Object of Programming tai Jan Skansholm: C++ From the Beginning Epätoivoisesti englanninkieltä pelkäävät voivat kokeilla esim. hiukan kevyempää Päivi Hietanen: C++ ja olio-ohjelmointi C++-perusteos, järeää luettavaa unettomille ja kielestä enemmän kiinnostuneille, enemmän referenssi, kuin oppikirja Bjarne Stroustrup: The C++-programming language (saatavana myös suomenkielisenä)

7 OHJ-1101 Ohjelmointi 1e Kurssin tavoitteet ja motivaatio Tavoitteena on selvittää ohjelmoinnin peruskäsitteet ja yksinkertaiset tietorakenteet ohjelmanteon vaiheet ja ohjelman suorittaminen perustietämys C++-ohjelmointikielestä Kurssi ei ole teoriapainotteinen, vaan se antaa opiskelijalle käytännön perustaidot pienten ohjelmien suunnitteluun ja kirjoittamiseen C++-kielellä. Ammattiohjelmoijia ei kurssilla synny. Jokaisen DI:n tulisi nykyään tietää edes jotain ohjelmoinnista. Kurssilla opitut taidot ovat hyödyllisiä joillain myöhemmillä ammattiainekursseilla (osastosta riippumatta). Edellisvuoden kurssipalauteen mukaan esim. Matlabin tehokas käyttäminen on helpompaa kun ohjelmoinnin peruskäsitteet ovat hallussa. Jos kiinnostus ohjelmointiin herää kurssin kuluessa, voi ohjelmoinin opiskelua jatkaa kurssilla OHJ-1151 Ohjelmointi 2e (tai OHJ-1150 Ohjelmointi 2).

8 OHJ-1101 Ohjelmointi 1e C++:sta Kurssin esimerkkikieli on C++, mutta tarkoitus on perehtyä ohjelmointiin yleisestikin. C++ on vain esimerkkikieli. Kaikkia kielen piirteitä ei käydä läpi. Kielen syvällisempiä piirteitä käsitellään kursseilla OHJ-1400 Olio-ohjelmoinnin peruskurssi ja OHJ-1450 Olio-ohjelmoinnin jatkokurssi C++ ei ole kaikin puolin paras mahdollinen opetuskieli. Se kärsii jonkin verran menneisyyden painolastista, koska se pohjautuu C-kieleen. Huonoja piirteitä ovat mm. syntaksin kryptisyys, erilaisten suojaverkkojen puuttuminen ja jyrkkä oppimiskäyrä. Ohjelmoinnin perusjutut hukkuvat helposti yksityiskohtien alle. C++ on joustava ja tehokas ammattilaisen työkalu niille, jotka tietävät mitä tekevät.

9 OHJ-1101 Ohjelmointi 1e Kurssin ohjelmointiympäristöstä Kurssin ohjelmointiympäristönä käytetään TTY:n proa-klusteria. Kääntäjänä käytetään komentorivipohjaista tutg++:aa. Kurssilla ei opeteta käyttämään mitään graasta ohjelmointiympäristöä, koska komentorivipohjainen ympäristö tuo ohjelman kehityksen eri vaiheet selkeämmin esille. Graasta ympäristöä on helppo oppia käyttämään, jos hallitsee komentorivipohjaisen. Toisinpäin opetteleminen ei yleensä ole yhtä helppoa. Tietotekniikan ammattilainen hallitsee työnsä ympäristössä kuin ympäristössä, myös ei-graasessa. Itse tietenkin saa koodailla ihan missä ympäristössä haluaa.

10 OHJ-1101 Ohjelmointi 1e Esimerkki: Tavuttaminen Ohjelmoinnista on jo saatu yleiskäsitys kurssilla OHJ-1010 Tietotekniikan perusteet. Tällä kurssilla sanalla ohjelmointi tarkoitetaan tietokoneen ohjelmointia. Aloitamme perehtymisen ohjelmoinnin ongelmiin ja vaiheisiin pienen esimerkin avulla: suunnitellaan pientä tietokoneohjelmaa, joka tavuttaa suomenkielistä tekstiä. Esimerkissä ei ole tarkoitus keskittyä tavutussääntöjen opettelemiseen vaan ajattelu- ja toimintatapaan, jota ohjelmoija tarvitsee. Kiinnitä huomiosi muuhunkin kuin yksityiskohtiin.

11 OHJ-1101 Ohjelmointi 1e Äidinkielen kirja kertoo, että suomen kielen tavuttaminen seuraa melko suoraviivaisesti seuraavia sääntöjä: Konsonanttisääntö: Jos tavuun kuuluvaa vokaalia seuraa yksi tai useampia konsonantteja, joita vielä seuraa vokaali, tavuraja sijoittuu välittömästi ennen viimeistä konsonanttia. lef-fas-sa ki-vaa kah-del-le: tra-giik-kaa se-kä hork-ka-ti-lo-ja Vokaalisääntö: Jos tavun ensimmäistä vokaalia seuraa toinen vokaali, niiden väliin tulee tavuraja, ellei a) edellinen vokaali ole sama kuin jälkimmäinen (pitkä vokaali). b) kysymyksessä ole jokin diftongi. lu-en-to Aa-si-an kää-pi-ö-puo-lu-eis-ta Diftongisääntö: Jos tavun kuuluvaa diftongia tai pitkää vokaalia seuraa vokaali, tähän väliin tulee aina tavuraja. raa-is-tu-nut maa-il-ma, liu-ot-ti-met lau-an-tai-na tau-ot-ta leu-an al-la Poikkeuksiakin löytyy: de-mo-kra-ti-a, kai-vos-auk-ko, jne, jne. Diftongit ovat: ai, ei, oi, ui, yi, äi, öi, au, eu, ey, ie, iu, ou, uo, yö, äy tai öy.

12 OHJ-1101 Ohjelmointi 1e TiTePK:sta muistamme, että tietokone ei osaa tavuttaa noin ylimalkaisten tavutussääntöjen perusteella, vaan sitä varten pitää kehittää algoritmi. Algoritmin pitää olla: 1. yksikäsitteinen (ei tulkittavissa väärin) 2. yksityiskohtainen (tyhmäkin osaa seurata) 3. saavuttaa tavoitteensa (eli toimii oikein) 4. määrää toimenpiteiden suoritusjärjestyksen (seuraus kohdasta 1) 5. sisältää äärellisen määrän toimenpiteitä (muuten tehtävä ei tulisi suoritetuksi, seuraus kohdasta 3) Tietokone on tyhmä.

13 OHJ-1101 Ohjelmointi 1e Riittävä yksikäsitteisyys ja yksityiskohtaisuus ovat tulkinnanvaraisia ja riippuvat tilanteesta. Ihminen ymmärtää, mitä pitää tehdä, jos algoritmi sanoo Laske yhteen luvut yhdestä sataan. Ihminen saattaa jopa keksiä tähän luovan ratkaisun ja välttyä käsityöltä. Tietokoneet ovat "rajoittuneita". Suunniteltaessa tietokonealgoritmeja niiden on oltava äärimmäisen yksikäsitteisiä ja yksityiskohtaisia. Esimerkiksi, jos halutaan, että tietokone selvittää, montako vokaalia sanassa on, se pitää ohjeistaa tietokoneelle näin tarkasti: Ota käsiteltäväksi sana ensimmäinen kirjain Ota vokaalien lukumääräksi nolla NIIN KAUAN KUIN ei olla sanan lopussa JOS käsiteltävänä on vokaali Kasvata lukumäärää yhdellä Siirry seuraavaan kirjaimeen Tulosta lukumäärä

14 OHJ-1101 Ohjelmointi 1e Edellisessä algoritmissa esiintyi toistoa ja ehdollisuutta. 1. Jotain algoritmin osaa saatetaan tarvittaessa suorittaa useita kertoja peräkkäin (toisto). 2. Jonkin algoritmin osan suorittaminen saattaa riippua olosuhteista (ehdollisuus). Toisto voidaan esittää algoritmissa seuraavasti: NIIN KAUAN KUIN väite toimenpiteet jota tulkitaan suoraviivaisesti siten, että toimenpiteitä toistetaan yhä uudelleen niin kauan kuin esitetty väite on tosi. Väite voi siis periaatteessa olla mikä tahansa toteamus, kunhan siitä tavalla tai toisella voidaan päätellä, pitääkö se paikkansa vai ei.

15 OHJ-1101 Ohjelmointi 1e Algoritmissa ehdollisuus esitetään muodossa: JOS väite NIIN toimenpiteet1 MUUTEN toimenpiteet2 Tätä tulkitaan siten, että mikäli väite on tosi, on algoritmin toteuttamiseksi suoritettava toimenpiteet1. Mikäli väite taas ei pidä paikkaansa, suoritetaan toimenpiteet2. Kuten aiemminkin väite saa olla mitä tahansa, jos siitä vain voidaan päätellä, onko se tosi vai epätosi. Ehtorakenne voi olla myös sellainen, että siinä on vain JOS-osa ilman MUUTEN-osaa. Tällöin ei tehdä mitään, jos väite ei pidä paikkaansa.

16 OHJ-1101 Ohjelmointi 1e Pseudokoodi Algoritmikielessä "jos-niin-muuten" ja "niin kauan kuin" ovat syntaktisia (l. kieliopillisia) rakenteita, joiden semantiikka (l. merkitys) on ehdollisuus ja toisto. Monista ohjelmointikielistä löytyy vastaavankaltaiset rakenteet "ifthen-else" ja "while-do". Jatkon kannalta on selvempää, jos käytämme niitä suomenkielisten rakenteiden sijaan. Tällaista ohjelmointikielen ja puhutun kielen yhdistelmää kutsutaan pseudokoodiksi. Se on erittäin hyödyllinen työkalu ohjelmien suunnittelemisessa.

17 OHJ-1101 Ohjelmointi 1e Palataan tavutusongelmaan ja kokeillaan ensin muodostaa suoraan tavutussääntöjen pohjalta sen kummemmin miettimättä algoritmi, joka tavuttaa yhden sanan. Kootaan algoritmi siten, että toistorakenteen avulla käydään läpi tavutettavaa sanaa kirjain kerrallaan: Ota käsiteltäväksi sanan ensimmäinen kirjain WHILE ei olla sanan lopussa DO Selvitä tuleeko tähän kohtaan tavuviiva Ota käsiteltäväksi seuraava kirjain Tulosta sana tavuviivoin

18 OHJ-1101 Ohjelmointi 1e Osaa Selvitä tuleeko tähän kohtaan tavuviiva täytyy tarkentaa: valintarakenteen avulla katsotaan jokaisen kirjaimen kohdalla, mikä säännöistä on tarkoitus suorittaa: IF konsonanttisääntötilanne voimassa THEN Suorita konsonanttisääntö ELSE IF vokaalisääntötilanne voimassa THEN Suorita vokaalisääntö ELSE IF diftongisääntötilanne voimassa THEN Suorita diftongisääntö

19 OHJ-1101 Ohjelmointi 1e Kun valintarakenne lisätään toistorakenteen sisään, algoritmiksi muodostuu:

20 OHJ-1101 Ohjelmointi 1e Käyttäen aidinkielenkirjan tavutussääntöjä, edellisen kuvan pohjalta voidaan kirjoittaa pseudokoodilla seuraava tavutusalgoritmi: Ota käsiteltäväksi sanan ensimmäinen kirjain WHILE ei olla sanan lopussa DO IF käsiteltävänä on vokaali ja sitä seuraa konsonantti THEN IF viimeisen peräkkäin olevan konsonantin perässä on vokaali THEN Sijoita tavuviiva ennen viimeistä konsonanttia ELSE IF käsiteltävänä on vokaali ja sitä seuraa vokaali THEN IF käsiteltävä ja seuraava eivät ole tuplavokaali tai diftongi THEN Sijoita tavuviiva käsiteltävän vokaalin jälkeen ELSE IF käsiteltävä ja seuraava ovat tuplavokaali tai diftongi THEN IF tuplavokaalia tai diftongia seuraa vokaali THEN Sijoita tavuviiva tuplavokaalin tai diftongin jälkeen Siirry käsittelemään seuraavaa kirjainta Tulosta koko sana tavuviivoineen

21 OHJ-1101 Ohjelmointi 1e Vuokaavio tavutusalgoritmista tarkemmin

22 OHJ-1101 Ohjelmointi 1e Tässä vaiheessa herää epäilys: voiko tavutusalgoritmin muodostaminen olla noin yksinkertaista? Testataan kehittämäämme algoritmia. Hyvää testiaineistoa löytyy esimerkiksi sivulta 10. Otetaan käyttöön kynä ja paperia ja testataan algoritmia sanalla luento. Lopputuloksena lu-en-to eli näyttää siltä, että ainakin vokaalisääntö ja konsonanttisääntö toimivat. Ainakin joskus... Tai ainakin tässä tilanteessa! :) Toimiiko algoritmimme nyt siis oikein?

23 OHJ-1101 Ohjelmointi 1e Algoritmien muodostaminen Hyväksi havaittu tapa algoritmien muodostamiseen on kokonaisuutta pienempiin osiin. Pieniä kokonaisuuksia on helpompi hallita. jäsentää Kokonaisuus saadaan pienistä osista yhdistämällä, kunhan osien algoritmit ovat oikein muodostettu ja liitetty toisiinsa. "Hajoita ja hallitse." Jäsentämistä jatketaan, kunnes osatoiminnot ovat riittävän yksinkertaisia. Algoritmin toiminnot ovat monimutkaisuudeltaan samalla tasolla kuin mitä algoritmin suorittava systeemi ymmärtää käskyinään. Tärkeintä on, että paloittelet ja jäsennät kokonaisuuden niin, että itse ymmärrät, mitä olet tekemässä.

24 OHJ-1101 Ohjelmointi 1e Yritetään muodostaa tavutusalgoritmi uudestaan, tällä kertaa niin, että myös ymmärretään, miten se toimii. Kun katsotaan kaikkia tavutussääntöjä, huomataan, että jokainen niistä alkaa siitä, että käsitellään vokaalia. Tavutusalgoritmin kannattaa ensimmäiseksi tarkastaa ollaanko käsittelemässä vokaalia. Jos ei, niin ei tarvitse tehdä mitään, siirrytään vain seuraavaan kirjaimeen. Algoritmiksi tämän voisi pukea esim. näin: Ota käsiteltäväksi sanan ensimmäinen kirjain WHILE ei olla sanan lopussa DO IF käsiteltävänä on vokaali THEN Täytyy tehdä jotain... Siirry käsittelemään seuraavaa kirjainta Tulosta koko sana tavuviivoineen

25 OHJ-1101 Ohjelmointi 1e Kohtaa Täytyy tehdä jotain... pitää selvästikin tarkentaa. Säännöt jakautuvat kahteen tilanteeseen: 1. vokaali ja sen jälkeen konsonantti toteutetaan konsonanttisääntö 2. vokaali ja sen jälkeen vokaali toteutetaan joko vokaalisääntö tai diftongisääntö Ja sama algoritmina: IF käsiteltävästä seuraava kirjain on konsonantti THEN ELSE Suoritetaan konsonanttisääntö Suoritetaan joko vokaalisääntö tai diftongisääntö Samaan tyyliin voidaan jatkaa pala kerrallaan koko tavuttamisalgoritmin muodostamista.

26 OHJ-1101 Ohjelmointi 1e Lopputuloksena saadaan korjattu ja siistitty algoritmi: Ota käsiteltäväksi sanan ensimmäinen kirjain WHILE ei olla vielä sanan lopussa DO IF käsiteltävänä on vokaali THEN IF käsiteltävästä seuraava kirjain on konsonantti THEN IF viimeisen peräkkäin olevan konsonantin jälkeen on vokaali THEN Sijoita tavuviiva ennen viimeistä konsonanttia ELSE IF käsiteltävä vokaali on tuplavokaalin tai diftongin alku THEN IF tuplavokaalin tai diftongin jälkeen on vielä vokaali THEN Sijoita tavuviiva tuplavokaalin tai diftongin perään ELSE Sijoita tavuviiva käsiteltävän vokaalin perään Siirry käsittelemään seuraavaa kirjainta Tulosta koko sana tavuviivoineen

27 OHJ-1101 Ohjelmointi 1e Vuokaavio lopullisesta tavutusalgoritmista

28 OHJ-1101 Ohjelmointi 1e Tätä uutta algoritmia testataan tietenkin uudestaan vähintään yhtä kattavasti kuin ensimmäistäkin versiota algoritmista. Kun algoritmia on testattu riittävästi ja todettu toimivaksi, se voidaan toteuttaa jollakin ohjelmointikielellä. Kuten algoritmin toteutuksessakin, tässä vaiheessa ohjelmakoodi voidaan kirjoittaa monella eri tavalla. Seuraavalla kalvolla esitettävä toteutus ei ole ainoa oikea vaan yksi mahdollinen. Valmiiksi hyvin suunnitellun algoritmin toteuttaminen C++:lla ei todennäköisesti ole C++:aa osaavalle henkilölle yhtään niin vaativaa, kuin itse algoritmin suunnitteleminen. Siitä huolimatta tässä vaiheessa kurssia ei vielä tarvitse ymmärtää, miten seuraava C++toteutus toimii. Ohjelmalistauksesta voi kuitenkin saada jonkinlaisen käsityksen siitä, millaista C++ on.

29 OHJ-1101 Ohjelmointi 1e Yksi tapa toteuttaa tavutusalgoritmi C++:lla: string tavuta( string sana ) { vector< bool > viivat( sana.size(), false ); for( unsigned int i = 0; i < sana.size(); ++i ) { if( vokaali( sana.at( i ) ) && i+1 < sana.size() ) { // Jos käsiteltävänä vokaali ja sana ja if( konsonantti( sana.at( i+1 ) ) ) { // Vokaalin perässä konsonantti -> Konsonanttisäänt int j = 1; // Lasketaan kuinka monta konsonanttia on peräkkäin while( i+j < sana.size() && konsonantti( sana.at( i+j ) ) ) { ++j; if( i+j < sana.size() && vokaali( sana.at( i+j ) ) ) { viivat.at( i+j-2 ) = true; else { // Vokaalin perässä toinen vokaali if( ( sana.at( i ) == sana.at( i+1 ) ) diftongi( sana.at( i ), sana.at( i+1 ) ) ) { // Tuplavokaali tai diftongi -> Diftongisääntö if( i+2 < sana.size() && vokaali( sana.at( i+2 ) ) ) { viivat.at( i+1 ) = true; else { // Ei tuplavokaali eikä diftongi -> Vokaalisääntö viivat.at( i ) = true; string tavutettu; for( unsigned int i = 0; i < sana.size(); ++i ) { tavutettu += sana.at( i ); if( viivat.at( i ) ) { tavutettu += "-"; return tavutettu;

30 OHJ-1101 Ohjelmointi 1e Ohjelmoinnin vaiheet Seuraava malli kuvaa onnistuneen ohjelmointiprojektin vaiheita: 1. Ongelman ratkaisuvaihe (a) Analysointi ja määrittely: ymmärrä ongelma ja selvitä, mitä ratkaisun on tarkoitus tehdä. (b) Yleinen ratkaisu (algoritmi ): kehitä looginen sarja ohjeita, joita noudattamalla ongelmalle saadaan haluttu lopputulos. (c) Tarkistus: testaa kynällä ja paperilla, että algoritmi toimii. 2. Ratkaisun toteutusvaihe (a) Konkreettinen ratkaisu: toteuta algoritmi sopivalla ohjelmointikielellä. (b) Testaus: suorita ohjelmaa eri syötteillä ja vertaile tuloksia tunnettuihin oikeisiin ratkaisuihin: jos virheitä löytyy, mieti "miksi?" ja korjaa ne. 3. Ylläpitovaihe (a) Käyttö: käytä ohjelmaa suunniteltuun tarkoitukseen. (b) Ylläpito: korjaa löytyviä virheitä ja lisää mahdollisia uusia tarvittavia ominaisuuksia.

31 OHJ-1101 Ohjelmointi 1e Asiaan perehtymättömillä on usein sellainen käsitys, että ohjelmointi on sitä, kun istutaan tietokoneen ääressä ja syötetään näppäimistöltä koneelle ohjelmaa. Kun naputtelu on ohi, kone suorittaa ohjelman ongelmitta ja näyttää oikean tuloksen. Kun tätä käsitystä ohjelmoinnista vertaa kalvolla 29 esitettyyn malliin, niin jotain puuttuu: Harhaluuloinen käsitys koostuu pelkästään yleisen mallin viimeisestä vaiheesta. Ongelmaa ei välttämättä ole ymmärretty kunnolla eikä sen ratkaisua mietitty loppuun saakka. Väärä lähestymistapa johtaa ikävyyksiin: ongelmaa ei ole ymmärretty ratkaistaan väärä ongelma ratkaisutapa virheellinen ohjelman antama tulos on väärä ohjelmaa pitää korjata hukataan aikaa ja rahaa Karkea sääntö: ratkaisuvaihe/toteutusvaihe tulisi olla 50%/50%, kun vertaillaan käytettyä aikaa ja resursseja. "Väärää lähestymistapaa" käyttävillä suhde on usein 10%/90% tai huonompi: ongelmaa pohdittu kahvikupin verran ja rynnätty suoraan toteuttamaan. Vaikka virheellinen lähestymistapa saattaakin toimia pienissä ohjelmointiprojekteissa, ongelman koon kasvaessa se ei toimi.

32 OHJ-1101 Ohjelmointi 1e Ohjelmointikielistä Ohjelmointikieli on se kieli, jolla tietokoneen kanssa voidaan kommunikoida (l. kuvata algoritmit muodossa, joka saadaan koneen ymmärtämään muotoon). Tarkoitus on myös, että koodia lukeva ihminen ymmärtää, mistä on kyse. Se on selkeästi analoginen puhutun kielen kanssa, mutta sangen yksinkertainen. Kaikki tietokoneet ymmärtävät pohjimmiltaan vain omaa konekieltään: sopivassa järjestyksessä koneen muistiin tallennettuja lukuja 0 ja 1 (tosiasiassa jännitetasoja). Tietyssä järjestyksessä esiintyvät nollat ja ykköset tietokone osaa tulkita alkeellisiksi käskyiksi, konekäskyiksi. Alunperin kaikki ohjelmointi oli puhtaasti konekielellä ohjelmointia: johtoja ja vipuja. Konekieli on kovin hankalakäyttöistä. Symbolinen konekieli. Korkean tason ohjelmointikielet (esim. lausekielet ).

33 OHJ-1101 Ohjelmointi 1e Lausekielet Lausekielet ovat konekieltä ilmaisuvoimaisempia: niillä halutun tehtävän selittäminen tietokoneelle helpompaa ja lopputulos ymmärrettävämpää ihmiselle. Yksi lausekielellä kirjoitettu käsky vastaa useita, jopa tuhansia, konekäskyjä. Ennen kuin tietokone voi suorittaa jollain muulla kuin sen omalla konekielellä kirjoitetun ohjelman, se täytyy tavalla tai toisella muuntaa konekieleksi: kääntäminen (compiling) tulkkaaminen (interpreting)

34 OHJ-1101 Ohjelmointi 1e Ohjelman tulkkaaminen Ohjelman tulkkaaminen perustuu siihen, että ohjelmointikielen tulkki suorittaa ohjelmaa käsky ( lause/lauseke) kerrallaan. Etuja: ohjelma voidaan testata pala kerrallaan tulkki huolehtii virheilmoituksista ja auttaa virheiden etsinnässä Haittoja: ohjelman suoritus vaatii aina tulkin tehoton

35 OHJ-1101 Ohjelmointi 1e Ohjelman kääntäminen Ohjelman kääntäminen perustuu siihen, että ohjelmakoodi käännetään kokonaisuudessaan konekielelle erityisellä kääntäjäohjelmalla (kääntäjällä) ennen kuin se voidaan suorittaa. Etuja: syntaksi- ja semanttiset virheet havaitaan aina kääntäjää ei enää tarvita uudelleen ajettava ohjelma nopea helpompi optimoida Haittoja: ajonaikaiset virheet jäävät yleensä ohjelmoijan hoidettavaksi

36 OHJ-1101 Ohjelmointi 1e Kääntäjän toiminta

37 OHJ-1101 Ohjelmointi 1e Ensimmäinen C++-ohjelma Käydään yksityiskohtaisesti läpi pikkuruinen C++-kielinen ohjelma: 1 // Lähdekooditiedosto: forever.cc // // Ohjelma tulostaa näytölle lausahduksen: // "I plan to live forever or die trying." rivitettynä 5 #include <iostream> #include <cstdlib> using namespace std; 10 int main() { // Ohjelman toiminnot alkavat tästä. cout << "I plan to live forever" << endl; cout << "or die trying." << endl; return EXIT_SUCCESS; 15

38 OHJ-1101 Ohjelmointi 1e Pienessä ohjelmassa on monta tärkeää asiaa: Teksti //-kirjainyhdistelmästä rivin loppuun on kommentti, joka ei vaikuta ohjelman toimintaan. Kaikissa C++-ohjelmissa pitää olla funktio int main(), joka päättyy käskyyn return. Varsinaiset ohjelman suorittamat toiminnot ovat main:ia seuraavien aaltosulkeiden sisällä. Käskyt (lauseet) tuntuvat päättyvän ";":een. Jos C++-ohjelmassa halutaan lukea syötteitä tai kirjoittaa tulosteita, sen alkuun on lisättävä #include <iostream> ja using namespace std. cout on C++:ssa tulostusvirta, johon voidaan <<-operaattorilla ohjata tulosteita, jotka sitten ilmestyvät ohjelmaa suoritettaessa näytölle. Lainausmerkkien väliin kirjoitettua tekstiä kutsutaan merkkijonoksi, mikä tarkoittaa selkokielellä tekstimuotoista tietoa. endl tulostaa rivinvaihdon: seuraavat tulostukset alkavat uudelta riviltä (sen vasemmasta laidasta).

39 OHJ-1101 Ohjelmointi 1e Lähdekoodista suoritettavaksi ohjelmaksi C++-ohjelman tekeminen etenee yleensä seuraavasti: 1. Suunnitellun algoritmin C++-version kirjoittaminen jollain editorilla 2. Tallentaminen tiedostoon, jonka nimi päättyy.cc 3. Tiedoston kääntäminen C++-kääntäjällä konekielelle 4. JOS tuli käännösvirheitä NIIN takaisin editoriin korjaamaan ne 5. Käännetyn ohjelman testaaminen, jotta nähdään, toimiiko se oikein 6. JOS ei toimi oikein NIIN mieti miksi ei ja palaa takaisin editoriin korjaamaan viat 7. MUUTEN ohjelma on valmis

40 OHJ-1101 Ohjelmointi 1e Editointi C++-ohjelmia voi kirjoittaa millä tahansa editoriohjelmalla. Ohjelmien editointiin kannattaa kuitenkin, jos mahdollista, käyttää jed- tai emacs-editoria. Kun jedillä tai emacsilla käsittelee tiedostoa, jonka nimi päättyy.cc:hen, editori menee automaattisesti C++-tilaan, joka osaa esimerkiksi sisentää ohjelmakoodin automaattisesti, kun vain painaa sarkainnäppäintä. Periaatteessa tällä kurssilla ei ole tarkoitus uppoutua editoriohjelman käyttöön: jonkin editorin tuntemus pitäisi jokaisella olla TiTePk:sta. Ensimmäisissä viikkoharjoituksissa kuitenkin käydään pikaopastus jedin ja emacsin tärkeimpiin ominaisuuksiin.

41 OHJ-1101 Ohjelmointi 1e Kääntäminen Ohjelman kääntämiseen käytämme tutg++-nimistä kääntäjää. tutg++:lle luetellaan komentorivillä kaikki C++-kieliset lähdekooditiedostot, ja se kääntää niistä suoritettavan konekielisen ohjelman: proffa> tutg++ forever.cc Jos koodi on virheetön, tuloksena syntyy ajokelpoinen ohjelma a.out, joka suoritetaan kirjoittamalla sen nimi komentotulkille: proffa>./a.out I plan to live forever or die trying. a.out ei ole kuvaava nimi, mutta tutg++:lle voi kertoa vivulla -o, minkä nimisen ohjelman haluaa tuloksena: proffa> tutg++ -o plan forever.cc proffa>./plan I plan to live forever or die trying. tutg++ tunnistaa kymmeniä muitakin komentorivivipuja. Kuten TiTePK:sta muistamme, komentoriville kirjoitetun komennon alussa./ tarkoittaa, että ajettava ohjelma on työhakemistossa.

42 OHJ-1101 Ohjelmointi 1e Virhetilanteet Periaatteessa ohjelmissa on kolmenlaisia virheitä: kielioppi- eli syntaksivirheitä semanttisia eli "merkitysvirheitä" loogisia eli "ajatusvirheitä" Syntaksivirheet Syntaksivirheet ovat virheitä, jotka syntyvät, kun lähdekoodi ei ole käytetyn ohjelmointikielen kielioppisääntöjen mukaista. Esimerkiksi cout- tai return-lauseen lopusta puuttuva ";"-merkki olisi C++:ssa syntaksivirhe. Kääntäjä löytää aina syntaksivirheet. Virheen löydyttyä kääntäjä tulostaa ilmoituksen, joka kertoo virheen syyn ja (suuntaa-antavan) rivinumeron, jolla virhe lähdekooditiedostossa sen mielestä sijaitsi. Tyypillisesti virheilmoitus alkaa "syntax error" tai "parse error".

43 OHJ-1101 Ohjelmointi 1e Semanttiset virheet Semanttiset virheet syntyvät, kun ohjelmakoodi on syntaktisesti oikein, mutta kääntäjä ei silti pysty ymmärtämään sitä. Jos esimerkkiohjelmassa olisi vahingossa kirjoitettu ndl, kun oikea vaihtoehto on endl, olisi tuloksena semanttinen virhe. ndl on kyllä syntaktisesti ihan oikeanlainen: se voisi olla jonkin asian tunniste. Semanttinen virhe tulee, koska kääntäjä ei kuitenkaan ymmärrä, mitä ndl tarkoittaa. Semanttiset virheetkin kääntäjä löytää useimmiten. Semanttisesta virheestä tulostuu virheilmoitus, jonka jälkeen kääntäjä tyypillisesti sekoaa ja väittää löytävänsä koodista samalta ja myöhemmiltä riveiltä kaikennäköisiä virheitä. Korjaa virheet aina kääntäjän ilmoittamassa järjestyksessä.

44 OHJ-1101 Ohjelmointi 1e Loogiset virheet Loogiset virheet syntyvät, kun ohjelman kirjoittaja ajattelee jotain väärin tai unohtaa ottaa huomioon jonkun joskus hyvinkin vähäpätöisen seikan. Loogiset virheet ovat tavallisesti kirjoitusvirheitä tai algoritmin suunnittelussa tapahtuneita virheitä. Loogiset virheet ilmenevät siten, että ohjelma toimii väärin. Kääntäjällä ei ole mahdollisuuksia havaita loogisia virheitä, koska se vaatisi ohjelmoijan ajatuksenjuoksun ymmärtämistä. Ainoa tapa välttää loogisia virheitä on ohjelman huolellinen suunnittelu ja kirjoittaminen.

45 OHJ-1101 Ohjelmointi 1e Varatut sanat Kuten puhutuissa kielissä, on ohjelmointikielissäkin sanoja, joilla on jokin kiinteä merkitys. Esim. suomessa "kolme", "koska" ja "minä" tai C++:ssa main ja return. Ohjelmointikielistä puhuttaessa tällaisia sanoja kutsutaan varatuiksi sanoiksi. Varatuille sanoille on siis ohjelmointikielessä määritelty merkitys, eikä ohjelmoija yleensä voi muuttaa tätä merkitystä, koska tällöin kyseisen sanan alkuperäinen tarkoitus hukkuisi. Joskus kielen varattuja sanoja kutsutaan myös käskyiksi. Sanaa "käsky" käytetään kuitenkin usein hiukan vapaammin, esimerkiksi tarkoittamaan yhtä ohjelman lausetta. Varatut sanat luovat perustan koneen ja ohjelmoijan kommunikoinnille käytettäessä korkean tason ohjelmointikieltä.

46 OHJ-1101 Ohjelmointi 1e C++-kielen varatut sanat Seuraavassa on lueteltu C++-kielen varatut sanat: and and eq asm auto bitand bitor bool break case catch char class compl const const cast continue default delete do double dynamic cast else enum explicit export extern false oat for friend goto if inline int long main mutable namespace new not not eq operator or or eq private protected public register reinterpret cast return short signed sizeof static static cast struct switch template this throw true try typedef typeid typename union unsigned using virtual void volatile wchar t while xor xor eq Osaan kurssilla tutustutaan, mutta ei läheskään kaikkiin.

47 OHJ-1101 Ohjelmointi 1e Esimerkki // Lähdekooditiedosto: vastukset.cc // // Kommentointi on tärkeä osa ohjelman kirjoittamista, mutta // kalvoilla se vie liikaa tilaa, joten vastaisuudessa prujun // esimerkit ovat kommentoituja vain tositarpeessa! #include <iostream> #include <cstdlib> using namespace std; int main() { cout << "Sarjaan: " << << endl; cout << "Rinnan: " << 5.0 * 10.0 / ( ) << endl; return EXIT_SUCCESS;

48 OHJ-1101 Ohjelmointi 1e Kun ohjelma käännetään ja suoritetaan: proffa> tutg++ -o vastukset vastukset.cc proffa>./vastukset Sarjaan: 15 Rinnan: Siitä opittua: C++-kieli selvästikin ymmärtää lukuja ja sallii niillä laskemisen. cout:in avulla voidaan tulostaa myös lukuja (laskulausekkeen arvoja). C++ ei ole kovin tarkka siitä, kuinka jaamme ohjelmamme riveille. Huomaa sisentäminen ja koodin ulkoasu! VIP-esimerkki: 1.1. (ks. VIP-esimerkit kurssin ohj1e IDLEn valikosta)

49 OHJ-1101 Ohjelmointi 1e Perustietotyypit Tietokoneohjelmat koostuvat kahdenlaisista asioista: tiedosta toimenpiteistä, jotka käsittelevät tietoa Jotta ohjelmointikielellä voisi tehdä tietoa käsitteleviä ohjelmia, on oltava joku tapa tiedon esittämiseen ja käsittelyyn. Perustietotyypit (alkeistietotyypit ) tiedon esittämiseen Varatut sanat ja operaattorit sen käsittelyyn Yleisesti ottaen tietotyypillä käsitetään joukkoa alkioita, joilla on samat ominaisuudet, eli niitä voidaan käsitellä samoilla operaattoreilla. Perustietotyypit ovat sellaisia tiedon esitysmuotoja, jotka ohjelmointikieli tuntee automaattisesti (ilman kirjastoja). Tavallisesti perustietotyyppien alkioiden käsittelyyn on valmiit käskyt konekielessä.

50 OHJ-1101 Ohjelmointi 1e Kaikella tiedolla on joku tyyppi ja yleensä vain samantyyppisillä tietoalkioilla voi operoida keskenään. Alussa riittää tutustua perustietotyyppeihin, joita C++-kielessä ovat: bool totuusarvoille (true ja false) int kokonaisluvuille (esim. -2, 12345) double (ja float) liukuluvuille (esim , 1E10) char kirjainmerkeille (esim. 'a', '\n'). Liukuluvut eivät ole sama asia kuin reaaliluvut, vaan kasa likiarvoja. Tyyppejä int, double, float ja char kutsutaan aritmeettisiksi tyypeiksi, eli tyypeiksi, joille voidaan suorittaa normaaleja laskuoperaatioita (kuten yhteen- ja kertolasku). Todellisuudessa C++ käsittelee kirjainmerkkejäkin pieninä kokonaislukuina eli tallettaa niiden ASCII-koodin. Toistaiseksi käsitellään myös merkkijonoja ( string, tekstimuotoinen tieto, lainausmerkkien sisällä oleva teksti) kuten perustietotyyppejä, vaikka ne eivät perustietotyyppejä olekaan.

Koottu lause; { ja } -merkkien väliin kirjoitetut lauseet muodostavat lohkon, jonka sisällä lauseet suoritetaan peräkkäin.

Koottu lause; { ja } -merkkien väliin kirjoitetut lauseet muodostavat lohkon, jonka sisällä lauseet suoritetaan peräkkäin. 2. Ohjausrakenteet Ohjausrakenteiden avulla ohjataan ohjelman suoritusta. peräkkäisyys valinta toisto Koottu lause; { ja } -merkkien väliin kirjoitetut lauseet muodostavat lohkon, jonka sisällä lauseet

Lisätiedot

Java-kielen perusteet

Java-kielen perusteet Java-kielen perusteet Tunnus, varattu sana, kommentti Muuttuja, alkeistietotyyppi, merkkijono, Vakio Tiedon merkkipohjainen tulostaminen Ohjelmointi (ict1tx006) Tunnus (5.3) Javan tunnus Java-kirjain Java-numero

Lisätiedot

Kääntäjän virheilmoituksia

Kääntäjän virheilmoituksia OHJ-1101 Ohjelmointi 1e 2008-09 1 Kääntäjän virheilmoituksia Kun progvh2 ohjelma käännetään antaa tutg++ seuraavat virheilmoitukset ja varoitukset: proffa> tutg++ progvh2.cc progvh2.cc:29:13: warning:

Lisätiedot

Java-kielen perusteita

Java-kielen perusteita Java-kielen perusteita valintalauseet 1 Johdantoa kontrollirakenteisiin Tähän saakka ohjelmissa on ollut vain peräkkäisyyttä eli lauseet on suoritettu peräkkäin yksi kerrallaan Tarvitsemme myös valintaa

Lisätiedot

OHJ-1100 Ohjelmointi I

OHJ-1100 Ohjelmointi I OHJ-1100 Ohjelmointi I lukuvuosi 2012 2013 Luentomoniste Ari Suntioinen ari.suntioinen@tut.fi Sisällysluettelo Sisältö OHJ-1100 Ohjelmointi I Mitä on ohjelmointi?.......................................

Lisätiedot

VIII. Osa. Liitteet. Liitteet Suoritusjärjestys Varatut sanat Binääri- ja heksamuoto

VIII. Osa. Liitteet. Liitteet Suoritusjärjestys Varatut sanat Binääri- ja heksamuoto Osa VIII Liitteet Liitteet A B C Suoritusjärjestys Varatut sanat Binääri- ja heksamuoto Osa VIII A. Liite Operaattoreiden suoritusjärjestys On tärkeää ymmärtää, että operaattoreilla on prioriteettinsa,

Lisätiedot

1. Algoritmi 1.1 Sisällys Algoritmin määritelmä. Aiheen pariin johdatteleva esimerkki. Muuttujat ja operaatiot (sijoitus, aritmetiikka ja vertailu). Algoritmista ohjelmaksi. 1.2 Algoritmin määritelmä Ohjelmointi

Lisätiedot

Muuttujien roolit Kiintoarvo cin >> r;

Muuttujien roolit Kiintoarvo cin >> r; Muuttujien roolit Muuttujilla on ohjelmissa eräitä tyypillisiä käyttötapoja, joita kutsutaan muuttujien rooleiksi. Esimerkiksi muuttuja, jonka arvoa ei muuteta enää kertaakaan muuttujan alustamisen jälkeen,

Lisätiedot

Ohjelmointitaito (ict1td002, 12 op) Kevät 2008. 1. Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen raine.kauppinen@haaga-helia.

Ohjelmointitaito (ict1td002, 12 op) Kevät 2008. 1. Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen raine.kauppinen@haaga-helia. Ohjelmointitaito (ict1td002, 12 op) Kevät 2008 Raine Kauppinen raine.kauppinen@haaga-helia.fi 1. Java-ohjelmoinnin alkeita Tietokoneohjelma Java-kieli ja Eclipse-ympäristö Java-ohjelma ja ohjelmaluokka

Lisätiedot

etunimi, sukunimi ja opiskelijanumero ja näillä

etunimi, sukunimi ja opiskelijanumero ja näillä Sisällys 1. Algoritmi Algoritmin määritelmä. Aiheen pariin johdatteleva esimerkki. ja operaatiot (sijoitus, aritmetiikka ja vertailu). Algoritmista ohjelmaksi. 1.1 1.2 Algoritmin määritelmä Ohjelmointi

Lisätiedot

Tietotyypit ja operaattorit

Tietotyypit ja operaattorit Tietotyypit ja operaattorit Luennossa tarkastellaan yksinkertaisten tietotyyppien int, double ja char muunnoksia tyypistä toiseen sekä esitellään uusia operaatioita. Numeeriset tietotyypit ja muunnos Merkkitieto

Lisätiedot

Metodit. Metodien määrittely. Metodin parametrit ja paluuarvo. Metodien suorittaminen eli kutsuminen. Metodien kuormittaminen

Metodit. Metodien määrittely. Metodin parametrit ja paluuarvo. Metodien suorittaminen eli kutsuminen. Metodien kuormittaminen Metodit Metodien määrittely Metodin parametrit ja paluuarvo Metodien suorittaminen eli kutsuminen Metodien kuormittaminen 1 Mikä on metodi? Metodi on luokan sisällä oleva yhteenkuuluvien toimintojen kokonaisuus

Lisätiedot

Ehto- ja toistolauseet

Ehto- ja toistolauseet Ehto- ja toistolauseet 1 Ehto- ja toistolauseet Uutena asiana opetellaan ohjelmointilauseet / rakenteet, jotka mahdollistavat: Päätösten tekemisen ohjelman suorituksen aikana (esim. kyllä/ei) Samoja lauseiden

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 28.2.2011 T-106.1208 Ohjelmoinnin perusteet Y 28.2.2011 1 / 46 Ohjelmointiprojektin vaiheet 1. Määrittely 2. Ohjelman suunnittelu (ohjelman rakenne ja ohjelman

Lisätiedot

Ohjelmassa henkilön etunimi ja sukunimi luetaan kahteen muuttujaan seuraavasti:

Ohjelmassa henkilön etunimi ja sukunimi luetaan kahteen muuttujaan seuraavasti: 1 (7) Tiedon lukeminen näppäimistöltä Scanner-luokan avulla Miten ohjelma saa käyttöönsä käyttäjän kirjoittamaa tekstiä? Järjestelmässä on olemassa ns. syöttöpuskuri näppäimistöä varten. Syöttöpuskuri

Lisätiedot

AS-0.1103 C-ohjelmoinnin peruskurssi 2013: C-kieli käytännössä ja erot Pythoniin

AS-0.1103 C-ohjelmoinnin peruskurssi 2013: C-kieli käytännössä ja erot Pythoniin AS-0.1103 C-ohjelmoinnin peruskurssi 2013: C-kieli käytännössä ja erot Pythoniin Raimo Nikkilä Aalto-yliopiston sähkötekniikan korkeakoulu - Automaation tietotekniikan tutkimusryhmä 17. tammikuuta 2013

Lisätiedot

12 Mallit (Templates)

12 Mallit (Templates) 12 Mallit (Templates) Malli on määrittely, jota käyttämällä voidaan luoda samankaltaisten aliohjelmien ja luokkien perheitä. Malli on ohje kääntäjälle luoda geneerisestä tyyppiriippumattomasta ohjelmakoodista

Lisätiedot

815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 5 Vastaukset

815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 5 Vastaukset 815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 5 Vastaukset Harjoituksen aiheena ovat aliohjelmat ja abstraktit tietotyypit sekä olio-ohjelmointi. Tehtävät tehdään C-, C++- ja Java-kielillä.

Lisätiedot

1. luento. Ohjelmointi (C) T0004 Syksy 2003. 1. luento. 1. luento. 1. luento. 1. luento. kurssin sisältö ja tavoitteet työmuodot.

1. luento. Ohjelmointi (C) T0004 Syksy 2003. 1. luento. 1. luento. 1. luento. 1. luento. kurssin sisältö ja tavoitteet työmuodot. EVTEK Teknillinen ammattikorkeakoulu Ohjelmointi (C) T0004 Syksy 2003 Olli Hämäläinen kurssin sisältö ja tavoitteet työmuodot luennot 1-2/2003 laboratorioharjoitukset 1-2/2003 kotitehtävät, laboratoriokerrat

Lisätiedot

Algoritmit. Ohjelman tekemisen hahmottamisessa käytetään

Algoritmit. Ohjelman tekemisen hahmottamisessa käytetään Ohjelmointi Ohjelmoinnissa koneelle annetaan tarkkoja käskyjä siitä, mitä koneen tulisi tehdä. Ohjelmointikieliä on olemassa useita satoja. Ohjelmoinnissa on oleellista asioiden hyvä suunnittelu etukäteen.

Lisätiedot

Javan perusteet. Ohjelman tehtävät: tietojen syöttö, lukeminen prosessointi, halutun informaation tulostaminen tulostus tiedon varastointi

Javan perusteet. Ohjelman tehtävät: tietojen syöttö, lukeminen prosessointi, halutun informaation tulostaminen tulostus tiedon varastointi 1 Javan perusteet Ohjelmointi IPO-malli Java lähdekoodista suoritettavaksi ohjelmaksi Vakio Muuttuja Miten Javalla näytetään tietoa käyttäjälle, miten Javalla luetaan käyttäjän antama syöte Miten Javalla

Lisätiedot

Osoitin ja viittaus C++:ssa

Osoitin ja viittaus C++:ssa Osoitin ja viittaus C++:ssa Osoitin yksinkertaiseen tietotyyppiin Osoitin on muuttuja, joka sisältää jonkin toisen samantyyppisen muuttujan osoitteen. Ohessa on esimerkkiohjelma, jossa määritellään kokonaislukumuuttuja

Lisätiedot

Kerta 2. Kerta 2 Kerta 3 Kerta 4 Kerta 5. 1. Toteuta Pythonilla seuraava ohjelma:

Kerta 2. Kerta 2 Kerta 3 Kerta 4 Kerta 5. 1. Toteuta Pythonilla seuraava ohjelma: Kerta 2 Kerta 3 Kerta 4 Kerta 5 Kerta 2 1. Toteuta Pythonilla seuraava ohjelma: 2. Tulosta Pythonilla seuraavat luvut allekkain a. 0 10 (eli, näyttää tältä: 0 1 2 3 4 5 6 7 8 9 10 b. 0 100 c. 50 100 3.

Lisätiedot

Ohjausrakenteet. Valinta:

Ohjausrakenteet. Valinta: Ohjausrakenteet Luento antaa yleiskuvan siitä kuinka ohjelmassa suorittaan vaihtoehtoisia tehtäviä valintarakenteiden avulla ja kuinka samanlaisia ohjelma-askeleita toistetaan toistorakenteiden avulla

Lisätiedot

Sisällys. 3. Pseudokoodi. Johdanto. Johdanto. Johdanto ja esimerkki. Pseudokoodi lauseina. Kommentointi ja sisentäminen.

Sisällys. 3. Pseudokoodi. Johdanto. Johdanto. Johdanto ja esimerkki. Pseudokoodi lauseina. Kommentointi ja sisentäminen. Sisällys 3. Pseudokoodi Johdanto ja esimerkki. Pseudokoodi lauseina. Kommentointi ja sisentäminen. Ohjausrakenteet: Valinta if- ja if--rakenteilla. oisto while-, do-while- ja for-rakenteilla. 3.1 3.2 Johdanto

Lisätiedot

2. Lisää Java-ohjelmoinnin alkeita. Muuttuja ja viittausmuuttuja (1/4) Muuttuja ja viittausmuuttuja (2/4)

2. Lisää Java-ohjelmoinnin alkeita. Muuttuja ja viittausmuuttuja (1/4) Muuttuja ja viittausmuuttuja (2/4) 2. Lisää Java-ohjelmoinnin alkeita Muuttuja ja viittausmuuttuja Vakio ja literaalivakio Sijoituslause Syötteen lukeminen ja Scanner-luokka 1 Muuttuja ja viittausmuuttuja (1/4) Edellä mainittiin, että String-tietotyyppi

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 1.4.2009 T-106.1208 Ohjelmoinnin perusteet Y 1.4.2009 1 / 56 Tentti Ensimmäinen tenttimahdollisuus on pe 8.5. klo 13:00 17:00 päärakennuksessa. Tämän jälkeen

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CSE-A1111 21.9.2015 CSE-A1111 Ohjelmoinnin peruskurssi Y1 21.9.2015 1 / 25 Mahdollisuus antaa luentopalautetta Goblinissa vasemmassa reunassa olevassa valikossa on valinta Luentopalaute.

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CSE-A1111 16.9.2015 CSE-A1111 Ohjelmoinnin peruskurssi Y1 16.9.2015 1 / 26 Mahdollisuus antaa luentopalautetta Goblinissa vasemmassa reunassa olevassa valikossa on valinta Luentopalaute.

Lisätiedot

Tietueet. Tietueiden määrittely

Tietueet. Tietueiden määrittely Tietueet Tietueiden määrittely Tietue on tietorakenne, joka kokoaa yhteen eri tyyppistä tietoa yhdeksi asiakokonaisuudeksi. Tähän kokonaisuuteen voidaan viitata yhteisellä nimellä. Auttaa ohjelmoijaa järjestelemään

Lisätiedot

Merkkijono määritellään kuten muutkin taulukot, mutta tilaa on varattava yksi ylimääräinen paikka lopetusmerkille:

Merkkijono määritellään kuten muutkin taulukot, mutta tilaa on varattava yksi ylimääräinen paikka lopetusmerkille: Merkkijonot C-kielessä merkkijono on taulukko, jonka alkiot ovat char -tyyppiä. Taulukon viimeiseksi merkiksi tulee merkki '\0', joka ilmaisee merkkijonon loppumisen. Merkkijono määritellään kuten muutkin

Lisätiedot

Osoittimet. Mikä on osoitin?

Osoittimet. Mikä on osoitin? Osoittimet 7 Osoittimet On aika siirtyä käsittelemään osoittimia, C++:lle elintärkeätä ominaisuutta. Osoittimet ovat tärkeitä, koska ne luovat perustan muistin dynaamiselle varaukselle ja käytölle. Ne

Lisätiedot

Java-kielen perusteita

Java-kielen perusteita Java-kielen perusteita Käyttäjän kanssa keskusteleva ohjelma 1 Kirjoittaminen konsolinäkymään //Java ohjelma, joka tulostaa konsoli-ikkunaan public class HeiMaailma { public void aja() { // kirjoitus ja

Lisätiedot

4. Lausekielinen ohjelmointi 4.1

4. Lausekielinen ohjelmointi 4.1 4. Lausekielinen ohjelmointi 4.1 Sisällys Konekieli, symbolinen konekieli ja lausekieli. Hyvä ohjelmointitapa. Lausekielestä konekieleksi: - Lähdekoodi, tekstitiedosto ja tekstieditorit. - Kääntäminen

Lisätiedot

Sisällys. 12. Näppäimistöltä lukeminen. Yleistä. Yleistä 12.1 12.2 12.3 12.4

Sisällys. 12. Näppäimistöltä lukeminen. Yleistä. Yleistä 12.1 12.2 12.3 12.4 Sisällys 12. Näppäimistöltä lukeminen Arvojen lukeminen näppäimistöltä yleisesti. Arvojen lukeminen näppäimistöltä Java-kielessä.. Luetun arvon tarkistaminen. Tietovirrat ja ohjausmerkit. Scanner-luokka.

Lisätiedot

Johdatus Ohjelmointiin

Johdatus Ohjelmointiin Johdatus Ohjelmointiin Syksy 2006 Viikko 2 13.9. - 14.9. Tällä viikolla käsiteltävät asiat Peruskäsitteitä Kiintoarvot Tiedon tulostus Yksinkertaiset laskutoimitukset Muuttujat Tiedon syöttäminen Hyvin

Lisätiedot

C-kielessä taulukko on joukko peräkkäisiä muistipaikkoja, jotka kaikki pystyvät tallettamaan samaa tyyppiä olevaa tietoa.

C-kielessä taulukko on joukko peräkkäisiä muistipaikkoja, jotka kaikki pystyvät tallettamaan samaa tyyppiä olevaa tietoa. Taulukot C-kielessä taulukko on joukko peräkkäisiä muistipaikkoja, jotka kaikki pystyvät tallettamaan samaa tyyppiä olevaa tietoa. Taulukon muuttujilla (muistipaikoilla) on yhteinen nimi. Jokaiseen yksittäiseen

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 15.2.2010 T-106.1208 Ohjelmoinnin perusteet Y 15.2.2010 1 / 46 Merkkijonot Merkkijonojen avulla ohjelmassa voi esittää tekstitietoa, esim. nimiä, osoitteita ja

Lisätiedot

C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. Operaatioiden suoritusjärjestys

C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. Operaatioiden suoritusjärjestys Loogisia operaatioita - esimerkkejä Tänään on lämmin päivä ja perjantai Eilen satoi ja oli keskiviikko tai tänään on tiistai. On perjantai ja kello on yli 13 Ei ole tiistai tai ei sada. Ei pidä paikkaansa,

Lisätiedot

Luento 5. Timo Savola. 28. huhtikuuta 2006

Luento 5. Timo Savola. 28. huhtikuuta 2006 UNIX-käyttöjärjestelmä Luento 5 Timo Savola 28. huhtikuuta 2006 Osa I Shell-ohjelmointi Ehtolause Lausekkeet suoritetaan jos ehtolausekkeen paluuarvo on 0 if ehtolauseke then lauseke

Lisätiedot

Sisällys. 11. Javan toistorakenteet. Laskurimuuttujat. Yleistä

Sisällys. 11. Javan toistorakenteet. Laskurimuuttujat. Yleistä Sisällys 11. Javan toistorakenteet Laskuri- ja lippumuuttujat.. Tyypillisiä ohjelmointivirheitä: Silmukan rajat asetettu kierroksen verran väärin. Ikuinen silmukka. Silmukoinnin lopettaminen break-lauseella.

Lisätiedot

Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 4: Ohjelmointi, skriptaus ja Python

Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 4: Ohjelmointi, skriptaus ja Python Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 4: Ohjelmointi, skriptaus ja Python 31. tammikuuta 2009 Ohjelmointi Perusteet Pythonin alkeet Esittely Esimerkkejä Muuttujat Peruskäsitteitä Käsittely

Lisätiedot

-ohjelmointikurssi 1998-1999. luentomoniste ja tehtävät

-ohjelmointikurssi 1998-1999. luentomoniste ja tehtävät -ohjelmointikurssi 1998-1999 luentomoniste ja tehtävät Sisällysluettelo C++-KIELESTÄ...2 KONEKIELI JA LAUSEKIELI...3 C++-KIELEN OHJELMAN RAKENNE...4 TYYPIT JA MUUTTUJAT...6 OPERAATTOREISTA...8 TYYPPIMUUNNOKSET...11

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 2.3.2011 T-106.1208 Ohjelmoinnin perusteet Y 2.3.2011 1 / 39 Kertausta: tiedoston avaaminen Kun ohjelma haluaa lukea tai kirjoittaa tekstitiedostoon, on ohjelmalle

Lisätiedot

13 Operaattoreiden ylimäärittelyjä

13 Operaattoreiden ylimäärittelyjä 248 13 C++-kielessä voidaan operaattoreita ylimäärittää. Ylimääriteltävää operaattoria voidaan pitää ikäänkuin metodina, joka esitellään luokan esittelyssä ja määritellään luokan ulkopuolella kuten metoditkin.

Lisätiedot

4. Lausekielinen ohjelmointi 4.1

4. Lausekielinen ohjelmointi 4.1 4. Lausekielinen ohjelmointi 4.1 Sisällys Konekieli, symbolinen konekieli ja lausekieli. Lausekielestä konekieleksi: - Lähdekoodi, tekstitiedosto ja tekstieditorit. - Kääntäminen ja tulkinta. - Kääntäminen,

Lisätiedot

Pythonin alkeet Syksy 2010 Pythonin perusteet: Ohjelmointi, skriptaus ja Python

Pythonin alkeet Syksy 2010 Pythonin perusteet: Ohjelmointi, skriptaus ja Python Pythonin alkeet Syksy 2010 Pythonin perusteet: Ohjelmointi, skriptaus ja Python 8. marraskuuta 2010 Ohjelmointi Perusteet Peruskäsitteitä Olio-ohjelmointi Pythonin alkeet Esittely Esimerkkejä Muuttujat

Lisätiedot

Harjoitustyö: virtuaalikone

Harjoitustyö: virtuaalikone Harjoitustyö: virtuaalikone Toteuta alla kuvattu virtuaalikone yksinkertaiselle olio-orientoituneelle skriptauskielelle. Paketissa on testaamista varten mukana kaksi lyhyttä ohjelmaa. Ohjeita Noudata ohjelman

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 9.2.2009 T-106.1208 Ohjelmoinnin perusteet Y 9.2.2009 1 / 35 Listat Esimerkki: halutaan kirjoittaa ohjelma, joka lukee käyttäjältä 30 lämpötilaa. Kun lämpötilat

Lisätiedot

Valinnat ja päätökset

Valinnat ja päätökset Valinnat ja päätökset 4 Valinnat ja päätökset Päätöksenteko on erittäin tärkeässä asemassa kaikissa ohjelmointikielissä. Jos ohjelman lauseiden suoritusjärjestystä ei voitaisi muuttaa tietojen vertailun

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 19.1.2009 T-106.1208 Ohjelmoinnin perusteet Y 19.1.2009 1 / 25 Mihin teekkari / diplomi-insinööri tarvitsee ohjelmointia? Pienten laskentasovellusten kirjoittaminen.

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 7.2.2011 T-106.1208 Ohjelmoinnin perusteet Y 7.2.2011 1 / 39 Kännykkäpalautetteen antajia kaivataan edelleen! Ilmoittaudu mukaan lähettämällä ilmainen tekstiviesti

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 15.3.2010 T-106.1208 Ohjelmoinnin perusteet Y 15.3.2010 1 / 56 Tiedostoista: tietojen tallentaminen ohjelman suorituskertojen välillä Monissa sovelluksissa ohjelman

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 24.1.2011 T-106.1208 Ohjelmoinnin perusteet Y 24.1.2011 1 / 36 Luentopalaute kännykällä alkaa tänään! Ilmoittaudu mukaan lähettämällä ilmainen tekstiviesti Vast

Lisätiedot

C-kieli mahdollistaa hyvin tiiviin ja samalla sekavan tavan esittää asioita, kuitenkin hyvän ohjelman tulisi olla mahdollisimman helppolukuinen ja

C-kieli mahdollistaa hyvin tiiviin ja samalla sekavan tavan esittää asioita, kuitenkin hyvän ohjelman tulisi olla mahdollisimman helppolukuinen ja 1. C-kieli yleiskäyttöinen ohjelmointikieli, standardoitu 1990. siirrettävä laiteläheinen pieni ydin, monimutkaiset kokonaisuudet rakennetaan aliohjelmakirjastojen avulla. direktiivit ja esikääntäjien

Lisätiedot

JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A274615 JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++?

JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A274615 JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++? JAVA-OHJELMOINTI 3op A274615 JAVAN PERUSTEET LYHYT KERTAUS Teemu Saarelainen teemu.saarelainen@kyamk.fi Lähteet: http://java.sun.com/docs/books/tutorial/index.html Vesterholm, Kyppö: Java-ohjelmointi,

Lisätiedot

Ohjausjärjestelmien jatkokurssi. Visual Basic vinkkejä ohjelmointiin

Ohjausjärjestelmien jatkokurssi. Visual Basic vinkkejä ohjelmointiin Ohjausjärjestelmien jatkokurssi Visual Basic vinkkejä ohjelmointiin http://www.techsoft.fi/oskillaattoripiirit.htm http://www.mol.fi/paikat/job.do?lang=fi&jobid=7852109&index=240&anchor=7852109 Yksiköt

Lisätiedot

Java kahdessa tunnissa. Jyry Suvilehto

Java kahdessa tunnissa. Jyry Suvilehto Java kahdessa tunnissa Jyry Suvilehto Ohjelma Ohjelmointiasioita alkeista nippelitietoon n. 45 min Tauko 10 min Oliot, luokat ja muut kummajaiset n. 45 min Kysykää Sisältöä ei oikeasti ole 2x45 min täytteeksi,

Lisätiedot

Lauseet. Ehdollinen lause. Tämän osan sisältö. Ehdollinen lause. Esimerkkejä. Yksinkertainen ehto. Lohkosulut ja sisennys. Ehdollinen lause if

Lauseet. Ehdollinen lause. Tämän osan sisältö. Ehdollinen lause. Esimerkkejä. Yksinkertainen ehto. Lohkosulut ja sisennys. Ehdollinen lause if 3 Lauseet Lue kirjasta s. 54-84 Tämän osan sisältö Ehdollinen lause if Looginen lauseke vertailut AND-operaattori &&, & OR-operaattori, NOT-operaattori! Valintalause switch Toistolauseet while for do while

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 26.1.2011 T-106.1208 Ohjelmoinnin perusteet Y 26.1.2011 1 / 34 Luentopalaute kännykällä käynnissä! Ilmoittaudu mukaan lähettämällä ilmainen tekstiviesti Vast

Lisätiedot

Ongelma(t): Miten mikro-ohjelmoitavaa tietokonetta voisi ohjelmoida kirjoittamatta binääristä (mikro)koodia? Voisiko samalla algoritmin esitystavalla

Ongelma(t): Miten mikro-ohjelmoitavaa tietokonetta voisi ohjelmoida kirjoittamatta binääristä (mikro)koodia? Voisiko samalla algoritmin esitystavalla Ongelma(t): Miten mikro-ohjelmoitavaa tietokonetta voisi ohjelmoida kirjoittamatta binääristä (mikro)koodia? Voisiko samalla algoritmin esitystavalla ohjelmoida useita komponenteiltaan ja rakenteeltaan

Lisätiedot

Taulukot. Taulukon määrittely ja käyttö. Taulukko metodin parametrina. Taulukon sisällön kopiointi toiseen taulukkoon. Taulukon lajittelu

Taulukot. Taulukon määrittely ja käyttö. Taulukko metodin parametrina. Taulukon sisällön kopiointi toiseen taulukkoon. Taulukon lajittelu Taulukot Taulukon määrittely ja käyttö Taulukko metodin parametrina Taulukon sisällön kopiointi toiseen taulukkoon Taulukon lajittelu esimerkki 2-ulottoisesta taulukosta 1 Mikä on taulukko? Taulukko on

Lisätiedot

Table of Contents. T740103 Olio-ohjelmointi C/C++ perusteita Jukka Jauhiainen OAMK Tekniikan yksikkö 2010, 2011

Table of Contents. T740103 Olio-ohjelmointi C/C++ perusteita Jukka Jauhiainen OAMK Tekniikan yksikkö 2010, 2011 Tämän materiaalin lähteenä on käytetty osoitteesta http://www.cplusplus.com/doc/tutorial löytyvää C+ + Language Tutorial. Tämän osan tarkoituksena on pääasiassa kerrata C-kielestä tuttuja perusasioita

Lisätiedot

Plagioinnin tunnistaminen lähdekielisistä ohjelmista

Plagioinnin tunnistaminen lähdekielisistä ohjelmista Plagioinnin tunnistaminen lähdekielisistä ohjelmista Plagiointi- ja tutkimusetiikka seminaari 30.09.2003 Kirsti Ala-Mutka TTY/Ohjelmistotekniikka Sisältö Plagiointi ohjelmointikursseilla Tyypillisiä ulkoasumuutoksia

Lisätiedot

Zeon PDF Driver Trial

Zeon PDF Driver Trial Matlab-harjoitus 2: Kuvaajien piirto, skriptit ja funktiot. Matlabohjelmoinnin perusteita Numeerinen integrointi trapezoidaalimenetelmällä voidaan tehdä komennolla trapz. Esimerkki: Vaimenevan eksponentiaalin

Lisätiedot

MITÄ JAVASCRIPT ON?...3

MITÄ JAVASCRIPT ON?...3 JavaScript MITÄ JAVASCRIPT ON?...3 YLEISTÄ JAVASCRIPTIN SYNTAKSISTA...3 KÄSKYSANAT JA MUUT VARATUT SANAT...3 MUUTTUJIEN, FUNKTIOIDEN JA LUOKKIEN NIMISSÄ...3 HTML-TAGEIHIN VIITTAAVISSA METODINIMISSÄ...3

Lisätiedot

Kielioppia: toisin kuin Javassa

Kielioppia: toisin kuin Javassa Object Pascal Pascal kielen oliolaajennus (Inprise/Borland:n oma) luokat Voit uudelleenkäyttää luomiasi objekteja esim. komponentteja Periytyminen Kielioppia: toisin kuin Javassa Ei eroa isojen ja pienien

Lisätiedot

Perustietotyypit ja laskutoimitukset

Perustietotyypit ja laskutoimitukset Perustietotyypit ja laskutoimitukset 2 Perustietotyypit ja laskutoimitukset Tässä luvussa käsittelemme C++:n perustietotyyppejä, varsinkin sellaisia kuin sinä mitä todennäköisemmin tulet käyttämään omissa

Lisätiedot

Muistin käyttö. Muistin käyttö. Muistin käyttö. Muistin käyttö. Muistin käyttö. Muistin käyttö. Muistin käyttö C-ohjelmassa

Muistin käyttö. Muistin käyttö. Muistin käyttö. Muistin käyttö. Muistin käyttö. Muistin käyttö. Muistin käyttö C-ohjelmassa ssa ohjelman käytössä suoritusaikana oleva muisti jakautuu neljään osaan: koodisegmentti datasegmentti pinosegmentti (stack) kasa (heap) ssa ohjelman koodisegmentti sisältää käännetyn ohjelmakoodin sisältö

Lisätiedot

TT00AA12-2016 - Ohjelmoinnin jatko (TT10S1ECD)

TT00AA12-2016 - Ohjelmoinnin jatko (TT10S1ECD) TT00AA12-2016 - Ohjelmoinnin jatko (TT10S1ECD) Ohjelmointikäytännöt 21/3/11 Mikko Vuorinen Metropolia Ammattikorkeakoulu 1 Sisältö 1) Mitä on hyvä koodi? 2) Ohjelmointikäytäntöjen merkitys? 3) Koodin asettelu

Lisätiedot

5.6. C-kielen perusteet, osa 6/8, Taulukko 6.1.2008, pva, kuvat jma

5.6. C-kielen perusteet, osa 6/8, Taulukko 6.1.2008, pva, kuvat jma 5.6. C-kielen perusteet, osa 6/8, Taulukko 6.1.2008, pva, kuvat jma Every cloud has a silver line. - englantilainen sananlasku Tässä osiossa tärkeää: yksi- ja moniulotteinen taulukko Sisältö Yleistä Yksiulotteinen

Lisätiedot

T Olio-ohjelmointi Osa 3: Luokka, muodostin ja hajotin, this-osoitin Jukka Jauhiainen OAMK Tekniikan yksikkö 2010

T Olio-ohjelmointi Osa 3: Luokka, muodostin ja hajotin, this-osoitin Jukka Jauhiainen OAMK Tekniikan yksikkö 2010 11. Luokka Opetellaan seuraavaksi, miten omia luokkia kirjoitetaan. Aikaisemmin olikin jo esillä, että luokka on tietorakenne, joka sisältää sekä tiedot (attribuutit) että niitä käsittelevät aliohjelmat

Lisätiedot

Ohjelmoinnin perusteet, 1. välikoe

Ohjelmoinnin perusteet, 1. välikoe Ohjelmoinnin perusteet,. välikoe Nimi: Opiskelijanumero:.. 3. 4. Yhteensä Ohje: Ratkaise kaikki tehtävät. Lähdemateriaalia ja tietokonetta ei saa käyttää. Noudata ohjelmointitehtävissä Java-kielen vakiintuneita

Lisätiedot

TAITAJA 2007 ELEKTRONIIKKAFINAALI 31.01-02.02.07 KILPAILIJAN TEHTÄVÄT. Kilpailijan nimi / Nro:

TAITAJA 2007 ELEKTRONIIKKAFINAALI 31.01-02.02.07 KILPAILIJAN TEHTÄVÄT. Kilpailijan nimi / Nro: KILPAILIJAN TEHTÄVÄT Kilpailijan nimi / Nro: Tehtävän laatinut: Hannu Laurikainen, Deltabit Oy Kilpailutehtävä Kilpailijalle annetaan tehtävässä tarvittavat ohjelmakoodit. Tämä ohjelma on tehty laitteen

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 26.1.2009 T-106.1208 Ohjelmoinnin perusteet Y 26.1.2009 1 / 33 Valintakäsky if syote = raw_input("kerro tenttipisteesi.\n") pisteet = int(syote) if pisteet >=

Lisätiedot

Taulukot. Jukka Harju, Jukka Juslin 2006 1

Taulukot. Jukka Harju, Jukka Juslin 2006 1 Taulukot Jukka Harju, Jukka Juslin 2006 1 Taulukot Taulukot ovat olioita, jotka auttavat organisoimaan suuria määriä tietoa. Käsittelylistalla on: Taulukon tekeminen ja käyttö Rajojen tarkastus ja kapasiteetti

Lisätiedot

17/20: Keittokirja IV

17/20: Keittokirja IV Ohjelmointi 1 / syksy 2007 17/20: Keittokirja IV Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy 2007 p.1/10 Tavoitteita

Lisätiedot

Johdanto ja esimerkki. Pseudokoodi lauseina. Kommentointi ja sisentäminen. Ohjausrakenteet:

Johdanto ja esimerkki. Pseudokoodi lauseina. Kommentointi ja sisentäminen. Ohjausrakenteet: 3. Pseudokoodi 3.1 Sisällys Johdanto ja esimerkki. Pseudokoodi lauseina. Kommentointi ja sisentäminen. Ohjausrakenteet: Valinta if- ja if-else-rakenteilla. Toisto while-, do-while- ja for-rakenteilla.

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CSE-A1111 30.9.2015 CSE-A1111 Ohjelmoinnin peruskurssi Y1 30.9.2015 1 / 27 Mahdollisuus antaa luentopalautetta Goblinissa vasemmassa reunassa olevassa valikossa on valinta Luentopalaute.

Lisätiedot

Operaattorin ylikuormitus ja käyttäjän muunnokset

Operaattorin ylikuormitus ja käyttäjän muunnokset 13 Operaattorin ylikuormitus ja käyttäjän muunnokset Luvussa 7, "Ominaisuudet, taulukot ja indeksoijat," opit, miten luokan yhteydessä käytetään ohjelmallisesti []-operaattoria, jolloin objektia voidaan

Lisätiedot

Java-kielen perusteita

Java-kielen perusteita Java-kielen perusteita Toistorakenne (while, do-while, for) 1 While- lause while-lauseen rakenne on seuraava: while (ehtolauseke) lause Kun ehtolausekkeen arvo on totta, lause suoritetaan. Lause suoritetaan

Lisätiedot

815338A Ohjelmointikielten periaatteet 2014-2015

815338A Ohjelmointikielten periaatteet 2014-2015 815338A Ohjelmointikielten periaatteet 2014-2015 IV.2 Imperatiivinen ohjelmointi lauseet ja lausekkeet Sisältö 1. Yleistä lausekkeista 2. Presedenssi- ja assosiaatiosäännöt 3. Tyyppimuunnokset 4. Vertailulausekkeet

Lisätiedot

Osa. Listaus 2.1. HELLO.CPP esittelee C++ -ohjelman osat. 14: #include 15: 16: int main() 17: {

Osa. Listaus 2.1. HELLO.CPP esittelee C++ -ohjelman osat. 14: #include <iostream.h> 15: 16: int main() 17: { Osa I 2. oppitunti C++-ohjelman osat Ennen kuin menemme yksityiskohtaisemmin sisälle C++-luokkiin, -muuttujiin jne, katsokaamme ensin, millaisista osista C++-ohjelma koostuu. Tämän tunnin aikana opit seuraavat

Lisätiedot

Informaatioteknologian laitos Olio-ohjelmoinnin perusteet / Salo 15.2.2006

Informaatioteknologian laitos Olio-ohjelmoinnin perusteet / Salo 15.2.2006 TURUN YLIOPISTO DEMO III Informaatioteknologian laitos tehtävät Olio-ohjelmoinnin perusteet / Salo 15.2.2006 1. Tässä tehtävässä tarkastellaan erääntyviä laskuja. Lasku muodostaa oman luokkansa. Laskussa

Lisätiedot

Operaattoreiden uudelleenmäärittely

Operaattoreiden uudelleenmäärittely Operaattoreiden uudelleenmäärittely 14 Operaattoreiden uudelleenmäärittely Tässä luvussa käsittelemme, kuinka voit lisätä toiminnallisuutta luokkiisi, jotta ne toimivat enemmän C++:n perustietotyyppien

Lisätiedot

T106.1208 Ohjelmoinnin perusteet Y (Python) Opetusmoniste kevät 2010

T106.1208 Ohjelmoinnin perusteet Y (Python) Opetusmoniste kevät 2010 T106.1208 Ohjelmoinnin perusteet Y (Python) Opetusmoniste kevät 2010 Kerttu Pollari-Malmi c Kerttu Pollari-Malmi Sisältö 1 Tietokoneista ja ohjelmista 1 1.1 Lyhyesti tietokoneen rakenteesta....................

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 27.1.2010 T-106.1208 Ohjelmoinnin perusteet Y 27.1.2010 1 / 37 If-käsky toistokäskyn sisällä def main(): HELLERAJA = 25.0 print "Anna lampotiloja, lopeta -300:lla."

Lisätiedot

11.4. Context-free kielet 1 / 17

11.4. Context-free kielet 1 / 17 11.4. Context-free kielet 1 / 17 Määritelmä Tyypin 2 kielioppi (lauseyhteysvapaa, context free): jos jokainenp :n sääntö on muotoa A w, missäa V \V T jaw V. Context-free kielet ja kieliopit ovat tärkeitä

Lisätiedot

Osa. Toimintojen toteuttaminen ohjelmissa vaatii usein haarautumisia ja silmukoita. Tässä luvussa tutustummekin seuraaviin asioihin:

Osa. Toimintojen toteuttaminen ohjelmissa vaatii usein haarautumisia ja silmukoita. Tässä luvussa tutustummekin seuraaviin asioihin: Osa II 8. oppitunti Kehittynyt ohjel- man kulku Toimintojen toteuttaminen ohjelmissa vaatii usein haarautumisia ja silmukoita. Tässä luvussa tutustummekin seuraaviin asioihin: Mitä silmukat ovat ja kuinka

Lisätiedot

Ohjelmiston testaus ja laatu. Testausmenetelmiä

Ohjelmiston testaus ja laatu. Testausmenetelmiä Ohjelmiston testaus ja laatu Testausmenetelmiä Testausmenetelmiä - 1 Testauksen menetelmien päälähestymistapoina ovat black-box testi testaaja ei voi tutkia lähdekoodia testaus perustuu sovellukselle suunnitteluvaiheessa

Lisätiedot

3.1 Mitä tarkoittaan heredoc? Milloin sitä kannattaa käyttää? Kirjoita esimerkki sen käyttämisestä.

3.1 Mitä tarkoittaan heredoc? Milloin sitä kannattaa käyttää? Kirjoita esimerkki sen käyttämisestä. PHP-kielen perusteet Käytä lähteenä PHP:n virallista manuaalia http://www.php.net/docs.php tai http://www.hudzilla.org/php (siirry Paul Hudsonin verkkokirjaan). Lisää materiaalia suomeksi esimerkiksi ohjelmointiputkan

Lisätiedot

Ongelma(t): Miten jollakin korkeamman tason ohjelmointikielellä esitetty algoritmi saadaan suoritettua mikro-ohjelmoitavalla tietokoneella ja siinä

Ongelma(t): Miten jollakin korkeamman tason ohjelmointikielellä esitetty algoritmi saadaan suoritettua mikro-ohjelmoitavalla tietokoneella ja siinä Ongelma(t): Miten jollakin korkeamman tason ohjelmointikielellä esitetty algoritmi saadaan suoritettua mikro-ohjelmoitavalla tietokoneella ja siinä olevilla komponenteilla? Voisiko jollakin ohjelmointikielellä

Lisätiedot

LOAD R1, =2 Sijoitetaan rekisteriin R1 arvo 2. LOAD R1, 100

LOAD R1, =2 Sijoitetaan rekisteriin R1 arvo 2. LOAD R1, 100 Tiedonsiirtokäskyt LOAD LOAD-käsky toimii jälkimmäisestä operandista ensimmäiseen. Ensimmäisen operandin pitää olla rekisteri, toinen voi olla rekisteri, vakio tai muistiosoite (myös muuttujat ovat muistiosoitteita).

Lisätiedot

Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari Korhonen

Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari Korhonen Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari 1 1. JOHDANTO 1.1 Määritelmiä 1.2 Tietorakenteen ja algoritmin valinta 1.3 Algoritmit ja tiedon määrä 1.4 Tietorakenteet ja toiminnot 1.5 Esimerkki:

Lisätiedot

Tietorakenteet ja algoritmit - syksy 2015 1

Tietorakenteet ja algoritmit - syksy 2015 1 Tietorakenteet ja algoritmit - syksy 2015 1 Tietorakenteet ja algoritmit - syksy 2015 2 Tietorakenteet ja algoritmit Johdanto Ari Korhonen Tietorakenteet ja algoritmit - syksy 2015 1. JOHDANTO 1.1 Määritelmiä

Lisätiedot

Ongelma(t): Miten tietokoneen komponentteja voi ohjata siten, että ne tekevät yhdessä jotakin järkevää? Voiko tietokonetta ohjata (ohjelmoida) siten,

Ongelma(t): Miten tietokoneen komponentteja voi ohjata siten, että ne tekevät yhdessä jotakin järkevää? Voiko tietokonetta ohjata (ohjelmoida) siten, Ongelma(t): Miten tietokoneen komponentteja voi ohjata siten, että ne tekevät yhdessä jotakin järkevää? Voiko tietokonetta ohjata (ohjelmoida) siten, että se pystyy suorittamaan kaikki mahdolliset algoritmit?

Lisätiedot

Perinteiset tietokoneohjelmat alkavat pääohjelmasta, c:ssä main(), jossa edetään rivi riviltä ja käsky käskyltä.

Perinteiset tietokoneohjelmat alkavat pääohjelmasta, c:ssä main(), jossa edetään rivi riviltä ja käsky käskyltä. 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

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 14.2.2011 T-106.1208 Ohjelmoinnin perusteet Y 14.2.2011 1 / 55 Kännykkäpalautetteen antajia kaivataan edelleen! Ilmoittaudu mukaan lähettämällä ilmainen tekstiviesti

Lisätiedot

Fortran 90/95. + sopii erityisesti numeriikkaan:

Fortran 90/95. + sopii erityisesti numeriikkaan: Fortran 90/95 + sopii erityisesti numeriikkaan: + optimoivat kääntäjät tehokas koodi + mukana valmiiksi paljon varusfunktioita + kompleksiluvut + taulukko-operaatiot + operaattorit laajennettavissa myös

Lisätiedot

Pythonin Kertaus. Cse-a1130. Tietotekniikka Sovelluksissa. Versio 0.01b

Pythonin Kertaus. Cse-a1130. Tietotekniikka Sovelluksissa. Versio 0.01b Pythonin Kertaus Cse-a1130 Tietotekniikka Sovelluksissa Versio 0.01b Listat 1/2 esimerkkejä listan peruskäytöstä. > lista=['kala','kukko','kissa','koira'] ['kala','kukko','kissa','koira'] >lista.append('kana')

Lisätiedot