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 (essi.lahtinen@tut., huone: TE210, puh ) vastaa kurssin sisällöstä, materiaalista, korvauksista ja luennoi toiselle ryhmälle. Toisen luentoryhmän luennoijana toimii Mikko Tiusanen (mikko.tiusanen@tut., huone: TF207, puh: ). Kurssivääpeli Teemu Erkkola (ohj1e@cs.tut., 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.

Java-kielen perusteet

Java-kielen perusteet Java-kielen perusteet Tunnus, varattu sana, kommentti Muuttuja, alkeistietotyyppi, merkkijono, literaalivakio, nimetty vakio Tiedon merkkipohjainen tulostaminen 1 Tunnus Java tunnus Java-kirjain Java-numero

Lisätiedot

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

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 21.1.2009 T-106.1208 Ohjelmoinnin perusteet Y 21.1.2009 1 / 32 Tyypeistä Monissa muissa ohjelmointikielissä (esim. Java ja C) muuttujat on määriteltävä ennen

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

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

13. Loogiset operaatiot 13.1

13. Loogiset operaatiot 13.1 13. Loogiset operaatiot 13.1 Sisällys Loogiset operaatiot AND, OR, XOR ja NOT. Operaatioiden ehdollisuus. Bittioperaatiot. Loogiset operaatiot ohjausrakenteissa. Loogiset operaatiot ja laskentajärjestys.

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 20.1.2010 T-106.1208 Ohjelmoinnin perusteet Y 20.1.2010 1 / 40 Arvon pyytäminen käyttäjältä Käyttäjän antaman arvon voi lukea raw_input-käskyllä. Käskyn sulkujen

Lisätiedot

Python-ohjelmointi Harjoitus 2

Python-ohjelmointi Harjoitus 2 Python-ohjelmointi Harjoitus 2 TAVOITTEET Kerrataan tulostuskomento ja lukumuotoisen muuttujan muuttaminen merkkijonoksi. Opitaan jakojäännös eli modulus, vertailuoperaattorit, ehtorakenne jos, input-komento

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 2.3.2009 T-106.1208 Ohjelmoinnin perusteet Y 2.3.2009 1 / 28 Puhelinluettelo, koodi def lue_puhelinnumerot(): print "Anna lisattavat nimet ja numerot." print

Lisätiedot

Alkuarvot ja tyyppimuunnokset (1/5) Alkuarvot ja tyyppimuunnokset (2/5) Alkuarvot ja tyyppimuunnokset (3/5)

Alkuarvot ja tyyppimuunnokset (1/5) Alkuarvot ja tyyppimuunnokset (2/5) Alkuarvot ja tyyppimuunnokset (3/5) Alkuarvot ja tyyppimuunnokset (1/5) Aiemmin olemme jo antaneet muuttujille alkuarvoja, esimerkiksi: int luku = 123; Alkuarvon on oltava muuttujan tietotyypin mukainen, esimerkiksi int-muuttujilla kokonaisluku,

Lisätiedot

13. Loogiset operaatiot 13.1

13. Loogiset operaatiot 13.1 13. Loogiset operaatiot 13.1 Sisällys Loogiset operaatiot AND, OR, XOR ja NOT. Operaatioiden ehdollisuus. Bittioperaatiot. Loogiset operaatiot ohjausrakenteissa. Loogiset operaatiot ja laskentajärjestys.

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

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

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset 815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 2 vastaukset Harjoituksen aiheena on BNF-merkinnän käyttö ja yhteys rekursiivisesti etenevään jäsentäjään. Tehtävä 1. Mitkä ilmaukset seuraava

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

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

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

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

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset 815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 3 vastaukset Harjoituksen aiheena ovat imperatiivisten kielten muuttujiin liittyvät kysymykset. Tehtävä 1. Määritä muuttujien max_num, lista,

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 19.1.2011 T-106.1208 Ohjelmoinnin perusteet Y 19.1.2011 1 / 39 Haluatko antaa palautetta luennoista? Ilmoittaudu mukaan lähettämällä ilmainen tekstiviesti Vast

Lisätiedot

12. Javan toistorakenteet 12.1

12. Javan toistorakenteet 12.1 12. Javan toistorakenteet 12.1 Sisällys Yleistä toistorakenteista. Laskurimuuttujat. While-, do-while- ja for-lauseet. Laskuri- ja lippumuuttujat. Tyypillisiä ohjelmointivirheitä. Silmukan rajat asetettu

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

Ohjelmoinnin peruskurssi Y1

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

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. Javan toistorakenteet 12.1

12. Javan toistorakenteet 12.1 12. Javan toistorakenteet 12.1 Sisällys Yleistä toistorakenteista. Laskurimuuttujat. While-, do-while- ja for-lauseet. Laskuri- ja lippumuuttujat. Tyypillisiä ohjelmointivirheitä. Silmukan rajat asetettu

Lisätiedot

Perusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti

Perusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti C! Perusteet 19.1.2017 Palautteesta (1. kierros toistaiseksi) (Erittäin) helppoa Miksi vain puolet pisteistä? Vaikeinta oli ohjelmointiympäristön asennus ja käyttö Ei selvää että main funktion pitikin

Lisätiedot

Ohjelmassa muuttujalla on nimi ja arvo. Kääntäjä ja linkkeri varaavat muistilohkon, jonne muuttujan arvo talletetaan.

Ohjelmassa muuttujalla on nimi ja arvo. Kääntäjä ja linkkeri varaavat muistilohkon, jonne muuttujan arvo talletetaan. Osoittimet Ohjelmassa muuttujalla on nimi ja arvo. Kääntäjä ja linkkeri varaavat muistilohkon, jonne muuttujan arvo talletetaan. Muistilohkon koko riippuu muuttujan tyypistä, eli kuinka suuria arvoja muuttujan

Lisätiedot

Python-ohjelmointi Harjoitus 5

Python-ohjelmointi Harjoitus 5 Python-ohjelmointi Harjoitus 5 TAVOITTEET Kerrataan silmukkarakenteen käyttäminen. Kerrataan jos-ehtorakenteen käyttäminen. Opitaan if else- ja if elif else-ehtorakenteet. Matematiikan sisällöt Tehtävät

Lisätiedot

Perusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti

Perusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti C! Perusteet 19.1.2017 Palautteesta (1. kierros toistaiseksi) Toistaiseksi helppoa Miksi vain puolet pisteistä? Vaikeinta oli ohjelmointiympäristön asennus ja käyttö Vaikeaa eroavuudet Pythonin ja C:n

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

3. Muuttujat ja operaatiot 3.1

3. Muuttujat ja operaatiot 3.1 3. Muuttujat ja operaatiot 3.1 Sisällys Imperatiivinen laskenta. Muuttujat. Nimi ja arvo. Muuttujan nimeäminen. Muuttujan tyyppi. Operaattorit. Operandit. Arvon sijoitus muuttujaan. Aritmeettiset operaattorit.

Lisätiedot

Sisällys. 3. Muuttujat ja operaatiot. Muuttujat ja operaatiot. Muuttujat ja operaatiot

Sisällys. 3. Muuttujat ja operaatiot. Muuttujat ja operaatiot. Muuttujat ja operaatiot 3. Muuttujat ja operaatiot Sisällys Muuttujat. Nimi ja arvo. Algoritmin tila. Muuttujan nimeäminen. Muuttujan tyyppi. Muuttuja ja tietokone. Operaattorit. Operandit. Arvon sijoitus muuttujaan. Aritmeetiikka.

Lisätiedot

Sisällys. 17. Ohjelmoinnin tekniikkaa. Aritmetiikkaa toisin merkiten. for-lause lyhemmin

Sisällys. 17. Ohjelmoinnin tekniikkaa. Aritmetiikkaa toisin merkiten. for-lause lyhemmin Sisällys 17. Ohjelmoinnin tekniikkaa for-lause lyhemmin. Vaihtoehtoisia merkintöjä aritmeettisille lauseille. Useiden muuttujien esittely ja alustaminen yhdellä lauseella. if-else-lause vaihtoehtoisesti

Lisätiedot

11. Javan toistorakenteet 11.1

11. Javan toistorakenteet 11.1 11. Javan toistorakenteet 11.1 Sisällys Laskuri- ja lippumuuttujat. Sisäkkäiset silmukat. Tyypillisiä ohjelmointivirheitä: Silmukan rajat asetettu kierroksen verran väärin. Ikuinen silmukka. Silmukoinnin

Lisätiedot

Sisällys. 3. Muuttujat ja operaatiot. Muuttujat ja operaatiot. Muuttujat. Operaatiot. Imperatiivinen laskenta. Muuttujat. Esimerkkejä: Operaattorit.

Sisällys. 3. Muuttujat ja operaatiot. Muuttujat ja operaatiot. Muuttujat. Operaatiot. Imperatiivinen laskenta. Muuttujat. Esimerkkejä: Operaattorit. 3. Muuttujat ja operaatiot Sisällys Imperatiivinen laskenta. Muuttujat. Nimi ja arvo. Muuttujan nimeäminen. Muuttujan tyyppi.. Operandit. Arvon sijoitus muuttujaan. Aritmeettiset operaattorit. Arvojen

Lisätiedot

811120P Diskreetit rakenteet

811120P Diskreetit rakenteet 811120P Diskreetit rakenteet 2018-2019 1. Algoritmeista 1.1 Algoritmin käsite Algoritmi keskeinen laskennassa Määrittelee prosessin, joka suorittaa annetun tehtävän Esimerkiksi Nimien järjestäminen aakkosjärjestykseen

Lisätiedot

811120P Diskreetit rakenteet

811120P Diskreetit rakenteet 811120P Diskreetit rakenteet 2016-2017 1. Algoritmeista 1.1 Algoritmin käsite Algoritmi keskeinen laskennassa Määrittelee prosessin, joka suorittaa annetun tehtävän Esimerkiksi Nimien järjestäminen aakkosjärjestykseen

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

Sisällys. 16. Ohjelmoinnin tekniikkaa. Aritmetiikkaa toisin merkiten. Aritmetiikkaa toisin merkiten

Sisällys. 16. Ohjelmoinnin tekniikkaa. Aritmetiikkaa toisin merkiten. Aritmetiikkaa toisin merkiten Sisällys 16. Ohjelmoinnin tekniikkaa Vaihtoehtoisia merkintöjä aritmeettisille lauseille. Useiden muuttujien esittely ja alustaminen yhdellä lauseella. For-lause lyhemmin. If-else-lause vaihtoehtoisesti

Lisätiedot

5/20: Algoritmirakenteita III

5/20: Algoritmirakenteita III Ohjelmointi 1 / syksy 2007 5/20: Algoritmirakenteita III Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy 2007 p.1/17 Tämän

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

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

16. Ohjelmoinnin tekniikkaa 16.1

16. Ohjelmoinnin tekniikkaa 16.1 16. Ohjelmoinnin tekniikkaa 16.1 Sisällys Vaihtoehtoisia merkintöjä aritmeettisille lauseille. Useiden muuttujien esittely ja alustaminen yhdellä lauseella. For-lause lyhemmin. If-else-lause vaihtoehtoisesti

Lisätiedot

ITKP102 Ohjelmointi 1 (6 op)

ITKP102 Ohjelmointi 1 (6 op) ITKP102 Ohjelmointi 1 (6 op) Tentaattori: Antti-Jussi Lakanen 22. huhtikuuta 2016 Vastaa kaikkiin tehtäviin. Tee jokainen tehtävä erilliselle konseptiarkille! Kirjoittamasi luokat, funktiot ja aliohjelmat

Lisätiedot

16. Ohjelmoinnin tekniikkaa 16.1

16. Ohjelmoinnin tekniikkaa 16.1 16. Ohjelmoinnin tekniikkaa 16.1 Sisällys For-lause lyhemmin. Vaihtoehtoisia merkintöjä aritmeettisille lauseille. Useiden muuttujien esittely ja alustaminen yhdellä lauseella. If-else-lause vaihtoehtoisesti

Lisätiedot

ITKP102 Ohjelmointi 1 (6 op)

ITKP102 Ohjelmointi 1 (6 op) ITKP102 Ohjelmointi 1 (6 op) Tentaattori: Antti-Jussi Lakanen 7. huhtikuuta 2017 Vastaa kaikkiin tehtäviin. Tee jokainen tehtävä erilliselle konseptiarkille. Kirjoittamasi luokat, funktiot ja aliohjelmat

Lisätiedot

5. HelloWorld-ohjelma 5.1

5. HelloWorld-ohjelma 5.1 5. HelloWorld-ohjelma 5.1 Sisällys Lähdekoodi. Lähdekoodin (osittainen) analyysi. Lähdekoodi tekstitiedostoon. Lähdekoodin kääntäminen tavukoodiksi. Tavukoodin suorittaminen. Virheiden korjaaminen 5.2

Lisätiedot

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti Tentaattori: Antti-Jussi Lakanen 8. kesäkuuta 2018 Yleistä Tentti 1 meni pistekeskiarvon (11.2) perusteella välttävästi. Omasta tehtäväpaperista saa kopion

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

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 25.1.2010 T-106.1208 Ohjelmoinnin perusteet Y 25.1.2010 1 / 41 Valintakäsky if Tähänastiset ohjelmat ovat toimineen aina samalla tavalla. Usein ohjelman pitäisi

Lisätiedot

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen

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

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

Lohkot. if (ehto1) { if (ehto2) { lause 1;... lause n; } } else { lause 1;... lause m; } 15.3

Lohkot. if (ehto1) { if (ehto2) { lause 1;... lause n; } } else { lause 1;... lause m; } 15.3 15. Lohkot 15.1 Sisällys Tutustutaan lohkoihin. Muuttujien ja vakioiden näkyvyys sekä elinikä erityisesti operaation lohkossa. Nimikonfliktit. Muuttujat operaation alussa vai myöhemmin? 15.2 Lohkot Aaltosulkeet

Lisätiedot

11. Javan valintarakenteet 11.1

11. Javan valintarakenteet 11.1 11. Javan valintarakenteet 11.1 Sisällys If- ja if-else-lauseet. Orpo else. Valintaa toisin: switch-lause. 11.2 If-lause Merkitään varatulla sanalla if. Kuvaa yksisuuntaisen päätöksen: rakenteen lauseet

Lisätiedot

Ohjelmointi 1 Taulukot ja merkkijonot

Ohjelmointi 1 Taulukot ja merkkijonot Ohjelmointi 1 Taulukot ja merkkijonot Jussi Pohjolainen TAMK Tieto- ja viestintäteknologia Johdanto taulukkoon Jos ohjelmassa käytössä ainoastaan perinteisiä (yksinkertaisia) muuttujia, ohjelmien teko

Lisätiedot

tään painetussa ja käsin kirjoitetussa materiaalissa usein pienillä kreikkalaisilla

tään painetussa ja käsin kirjoitetussa materiaalissa usein pienillä kreikkalaisilla 2.5. YDIN-HASKELL 19 tään painetussa ja käsin kirjoitetussa materiaalissa usein pienillä kreikkalaisilla kirjaimilla. Jos Γ ja ovat tyyppilausekkeita, niin Γ on tyyppilauseke. Nuoli kirjoitetaan koneella

Lisätiedot

Sisällys. 15. Lohkot. Lohkot. Lohkot

Sisällys. 15. Lohkot. Lohkot. Lohkot Sisällys 15. Lohkot Tutustutaan lohkoihin. Muuttujien ja vakioiden näkyvyys sekä elinikä erityisesti operaation lohkossa. Nimikonfliktit. Muuttujat operaation alussa vai myöhemmin? 15.1 15.2 Lohkot Aaltosulkeet

Lisätiedot

Ohjelmoinnin perusteet, syksy 2006

Ohjelmoinnin perusteet, syksy 2006 Ohjelmoinnin perusteet, syksy 2006 Esimerkkivastaukset 1. harjoituksiin. Alkuperäiset esimerkkivastaukset laati Jari Suominen. Vastauksia muokkasi Jukka Stenlund. 1. Esitä seuraavan algoritmin tila jokaisen

Lisätiedot

Tutoriaaliläsnäoloista

Tutoriaaliläsnäoloista Tutoriaaliläsnäoloista Tutoriaaliläsnäolokierroksella voi nyt täyttää anomuksen läsnäolon merkitsemisestä Esim. tagi ei toiminut, korvavaltimon leikkaus, yms. Hyväksyn näitä omaa harkintaa käyttäen Tarkoitus

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

Operaattoreiden ylikuormitus. Operaattoreiden kuormitus. Operaattoreiden kuormitus. Operaattoreista. Kuormituksesta

Operaattoreiden ylikuormitus. Operaattoreiden kuormitus. Operaattoreiden kuormitus. Operaattoreista. Kuormituksesta C++ - perusteet Java-osaajille luento 5/7: operaattoreiden ylikuormitus, oliotaulukko, parametrien oletusarvot, komentoriviparametrit, constant, inline, Operaattoreiden ylikuormitus Operaattoreiden kuormitus

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CS-A1111 14.9.2016 CS-A1111 Ohjelmoinnin peruskurssi Y1 14.9.2016 1 / 19 Oppimistavoitteet: tämän luennon jälkeen osaat kirjoittaa Python-ohjelman, joka pyytää käyttäjältä lukuja,

Lisätiedot

System.out.printf("%d / %d = %.2f%n", ekaluku, tokaluku, osamaara);

System.out.printf(%d / %d = %.2f%n, ekaluku, tokaluku, osamaara); Mikäli tehtävissä on jotain epäselvää, laita sähköpostia vastuuopettajalle (jorma.laurikkala@uta.fi). Muista nimetä muuttujat hyvin sekä kommentoida ja sisentää koodisi. Ohjelmointitehtävien osalta palautetaan

Lisätiedot

System.out.printf("%d / %d = %.2f%n", ekaluku, tokaluku, osamaara);

System.out.printf(%d / %d = %.2f%n, ekaluku, tokaluku, osamaara); Kysy Karilta tai Kimmolta, jos tehtävissä on jotain epäselvää. Kerro WETOon liittyvät ongelmat suoraan Jormalle sähköpostitse (jorma.laurikkala@uta.fi). Muista nimetä muuttujat hyvin sekä kommentoida ja

Lisätiedot

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

Sisällys. 12. Javan toistorakenteet. Yleistä. Laskurimuuttujat Sisällys 12. Javan toistorakenteet Ylstä toistorakentsta. Laskurimuuttujat. While-, do-while- ja for-lauseet. Laskuri- ja lippumuuttujat. Tyypillisiä ohjelmointivirhtä. Silmukan rajat asetettu kierroksen

Lisätiedot

ITKP102 Ohjelmointi 1 (6 op)

ITKP102 Ohjelmointi 1 (6 op) ITKP102 Ohjelmointi 1 (6 op) Tentaattori: Antti-Jussi Lakanen 20. huhtikuuta 2018 Vastaa kaikkiin tehtäviin. Tee kukin tehtävä omalle konseptiarkille. Noudata ohjelmointitehtävissä kurssin koodauskäytänteitä.

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CS-A1111 13.9.2017 CS-A1111 Ohjelmoinnin peruskurssi Y1 13.9.2017 1 / 19 Oppimistavoitteet: tämän luennon jälkeen osaat kirjoittaa Python-ohjelman, joka pyytää käyttäjältä lukuja,

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

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

5. HelloWorld-ohjelma 5.1

5. HelloWorld-ohjelma 5.1 5. HelloWorld-ohjelma 5.1 Sisällys Lähdekoodi. Lähdekoodin (osittainen) analyysi. Lähdekoodi tekstitiedostoon. Lähdekoodin kääntäminen tavukoodiksi. Tavukoodin suorittaminen. Virheiden korjaaminen 5.2

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

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

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

C++ rautaisannos. Kolme tapaa sanoa, että tulostukseen käytetään standardikirjaston iostreamosassa määriteltyä, nimiavaruuden std oliota cout:

C++ rautaisannos. Kolme tapaa sanoa, että tulostukseen käytetään standardikirjaston iostreamosassa määriteltyä, nimiavaruuden std oliota cout: C++ rautaisannos Kolme tapaa sanoa, että tulostukseen käytetään standardikirjaston iostreamosassa määriteltyä, nimiavaruuden std oliota cout: # include #include main ( ) main (

Lisätiedot

Ohjelmoinnin peruskurssi Y1

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

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

Harjoitus 3 (viikko 39)

Harjoitus 3 (viikko 39) Mikäli tehtävissä on jotain epäselvää, laita sähköpostia vastuuopettajalle (jorma.laurikkala@uta.fi). Muista nimetä muuttujat hyvin sekä kommentoida ja sisentää koodisi. Vältä liian pitkiä rivejä. Ohjelmointitehtävien

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CS-A1111 26.9.2018 CS-A1111 Ohjelmoinnin peruskurssi Y1 26.9.2018 1 / 21 Oppimistavoitteet: tämän luennon jälkeen Osaat kirjoittaa for-käskyn avulla ohjelman, joka toistaa haluttua

Lisätiedot

Ohjelmointiharjoituksia Arduino-ympäristössä

Ohjelmointiharjoituksia Arduino-ympäristössä Ohjelmointiharjoituksia Arduino-ympäristössä Yleistä Arduino-sovelluksen rakenne Syntaksi ja käytännöt Esimerkki ohjelman rakenteesta Muuttujat ja tietotyypit Tietotyypit Esimerkkejä tietotyypeistä Ehtolauseet

Lisätiedot

IDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit

IDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit IDL - proseduurit 25. huhtikuuta 2017 Viimeksi käsiteltiin IDL:n interaktiivista käyttöä, mutta tämä on hyvin kömpelöä monimutkaisempia asioita tehtäessä. IDL:llä on mahdollista tehdä ns. proseduuri-tiedostoja,

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

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CS-A1111 12.9.2018 CS-A1111 Ohjelmoinnin peruskurssi Y1 12.9.2018 1 / 19 Oppimistavoitteet: tämän luennon jälkeen osaat kirjoittaa Python-ohjelman, joka pyytää käyttäjältä lukuja,

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CS-A1111 11.9.2019 CS-A1111 Ohjelmoinnin peruskurssi Y1 11.9.2019 1 / 19 Oppimistavoitteet: tämän luennon jälkeen osaat kirjoittaa Python-ohjelman, joka pyytää käyttäjältä lukuja,

Lisätiedot

ATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014

ATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014 18. syyskuuta 2014 IDL - proseduurit Viimeksi käsiteltiin IDL:n interaktiivista käyttöä, mutta tämä on hyvin kömpelöä monimutkaisempia asioita tehtäessä. IDL:llä on mahdollista tehdä ns. proseduuri-tiedostoja,

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

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

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 1.3.2010 T-106.1208 Ohjelmoinnin perusteet Y 1.3.2010 1 / 36 Monikko Monikko (engl. tuple) muistuttaa listaa, mutta monikon sisältöä ei voi muuttaa sen jälkeen,

Lisätiedot

11. Javan valintarakenteet 11.1

11. Javan valintarakenteet 11.1 11. Javan valintarakenteet 11.1 Sisällys If- ja if--lauseet. Orpo. Valintaa toisin: switch-lause. 11.2 Valintarakenteet Valintarakenteilla ilmaistaan formaalisti, kuinka algoritmin suoritus voi haarautua

Lisätiedot

15. Ohjelmoinnin tekniikkaa 15.1

15. Ohjelmoinnin tekniikkaa 15.1 15. Ohjelmoinnin tekniikkaa 15.1 Sisällys For-each-rakenne. Lueteltu tyyppi enum. Override-annotaatio. Geneerinen ohjelmointi. 15.2 For-each-rakenne For-rakenteen variaatio taulukoiden ja muiden kokoelmien

Lisätiedot

Harjoitus 5. Esimerkki ohjelman toiminnasta: Lausekielinen ohjelmointi I Kesä 2018 Avoin yliopisto 1 / 5

Harjoitus 5. Esimerkki ohjelman toiminnasta: Lausekielinen ohjelmointi I Kesä 2018 Avoin yliopisto 1 / 5 Kysy Karilta tai Kimmolta, jos tehtävissä on jotain epäselvää. Kerro WETOon liittyvät tekniset ongelmat suoraan Jormalle sähköpostitse (jorma.laurikkala@uta.fi). Muista nimetä muuttujat hyvin sekä kommentoida

Lisätiedot

Lohkot. if (ehto1) { if (ehto2) { lause 1;... lause n; } } else { lause 1;... lause m; } 16.3

Lohkot. if (ehto1) { if (ehto2) { lause 1;... lause n; } } else { lause 1;... lause m; } 16.3 16. Lohkot 16.1 Sisällys Tutustutaan lohkoihin. Muuttujien ja vakioiden näkyvyys sekä elinikä erityisesti operaation lohkossa. Nimikonfliktit. Muuttujat operaation alussa vai myöhemmin? 16.2 Lohkot Kaarisulut

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

Palautetta viime luennosta

Palautetta viime luennosta Palautetta viime luennosta Kuka saa ja kenen täytyy suorittaa 5op kokonaisuus? Sivuaineopiskelijat suorittavat jos heidän sivuainekokonaisuuteen on merkitty niin Kokonaisuuksia on useita eri tiedekunnittain,

Lisätiedot

C-ohjelmoinnin peruskurssi. Pasi Sarolahti

C-ohjelmoinnin peruskurssi. Pasi Sarolahti C! C-ohjelmoinnin peruskurssi Pasi Sarolahti Mitä haluan oppia C-kurssilla? ja miksi? Tutustu lähimpään naapuriin Keskustelkaa miksi halusitte / jouduitte tulemaan kurssille 3 minuuttia è kootaan vastauksia

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

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