-ohjelmointikurssi luentomoniste ja tehtävät

Koko: px
Aloita esitys sivulta:

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

Transkriptio

1 -ohjelmointikurssi luentomoniste ja tehtävät

2 Sisällysluettelo C++-KIELESTÄ...2 KONEKIELI JA LAUSEKIELI...3 C++-KIELEN OHJELMAN RAKENNE...4 TYYPIT JA MUUTTUJAT...6 OPERAATTOREISTA...8 TYYPPIMUUNNOKSET...11 FUNKTIOT...13 MUUTTUJIEN NÄKYVYYSALUEET...15 SYÖTTÖ...17 EHTOLAUSE IF...19 SWITCH-RAKENNE...24 SILMUKAT...25 TAULUKOT...27 MERKKIJONOT : CHAR-TAULUKKO...28 MERKKIJONOT : STRING...30 SUDENKUOPPIA C:SSÄ JA C++:SSA...32 ESIMERKKI KIRJASTOFUNKTIOIDEN KÄYTÖSTÄ...34 LIITE A: ASCII -TAULUKKO...35 LIITE B: TYYPPIEN TARKENNUKSET...36 LIITE C: VUOKAAVION SYMBOLIT...37 ERIKOISTEHTÄVIÄ...38 LÄHDELUETTELO

3 C++-kielestä Kehittänyt Bjarne Stroustrup Laajalti käytetty, eräänlainen teollisuusstandardi Lähes jokaiseen käyttöjärjestelmään saatavilla C++-kääntäjä C++ on tarpeeksi monipuolinen monimutkaistenkin rakenteiden toteuttamiseen C++ on kehitetty C-kielestä. Pieniä yksityiskohtia lukuun ottamatta C++ on C -ohjelmointikielen laajennus. Miksi C valittiin C++:n pohjaksi? Miljoonia rivejä ohjelmia ja kirjastofunktioita on tehty C:llä, joita voidaan käyttää C++:ssa, koska C++ on linkitettävästi yhteensopiva ja syntaktisesti samanlainen kuin C. On olemassa satoja tuhansia ohjelmoitsijoita jotka käyttävät C:tä, joiden tarvitsee oppia vain C++:n uudet piirteet. C++:aa ja C:tä tullaan käyttämään sekaisin samoissa systeemeissä vuosikausia, joten erojen täytyi olla joko erittäin suuria tai pieniä minimoidakseen virheet ja ohjelmistojen sekavuutta. C:n kirjastoja voidaan käyttää C++ -ohjelmassa, ja useimpia C- ohjelmointityökaluja voidaan käyttää myös C++ -ohjelmointiin. C++ on saanut vaikutteita myös mm. kielistä BCPL, Simula67, Algol68 ja Ada. Mikä C++ on? parempi C tukee datan kätkemistä tukee olio-ohjelmointia yms. 2

4 Konekieli ja lausekieli Konekieli muodostuu ykkösen ja nollien muodostamista käskyistä. Eri ohjelmointikielillä kirjoitetut ohjelmat joudutaan aina kääntämään konekieleksi, koska tietokone ei ymmärrä muita kieliä. Lähinnä konekieltä on symbolinen konekieli eli assembly, jossa jokaista käskyä vastaa lyhyt kirjainyhdistelmä ja muistiosoite. Assembly vaatii kuitenkin yksityiskohtaista tuntemusta tietokoneen sisäisestä rakenteesta ennen kuin sillä saa aikaan ohjelmia, ja on vaivalloinen ja virhealtis käyttää. Lausekieltä on helpompi käyttää, koska se muistuttaa enemmän luonnollista kieltä. Esimerkkinä näistä ovat C, C++, Java, Ada, Pascal ja BASIC. C++ on käännettävä ohjelmointikieli. Ero tulkattavan ja käännettävän ohjelmointikielen kohdalla on se, että käännettävä kieli käännetään ajettavaksi ohjelmaksi ennen ajoa, ja tulkattavaa kieltä käännellään sitä mukaa, kun ohjelman suoritus etenee. Eräs esimerkki tulkattavasta kielestä on BASIC. C++:lla ohjelman tekeminen tapahtuu suurin piirtein näin: Ohjelma kirjoitetaan eli koodataan, josta syntyy lähdekoodi (source) Lähdekoodi käännetään konekielelle Linkkeri yhdistää luodut tiedostot valmiiksi käännettyihin kirjastoihin ja muodostaa ajettavan ohjelman Ohjelma on valmis 3

5 C++-kielen ohjelman rakenne C++ -ohjelma koostuu funktioista ja muuttujista. Pääohjelma, eli mistä ohjelmaa aletaan ajamaan on funktio main. Esimerkki: #include <iostream.h> int main () { cout << Hello World << endl; Tämä ohjelma tulostaa ruudulle Hello World ja rivinvaihdon. ( endl tarkoittaa rivinvaihtoa ja vastaa C:n rivinvaihtomerkkiä \n. Muita erikoismerkkejä ovat mm. \t tabulaattori ja \b backspace ). Rivillä 1 #include liittää ohjelmaan mukaan kirjaston iostream.h, joka sisältää mm. funktion cout. (Kirjaston (library) ideana on laajentaa kieltä niin, että joukko pieniä ohjelmia tallennetaan funktioiksi kirjastoon, joka on sitten kenen tahansa käytettävissä.) Ruudulle tulostaminen tapahtuu cout:lla rivillä 3. Funktion main tulee palauttaa arvonaan jokin kokonaisluku, kuten rivillä 4:. Jokainen lause loppuu puolipilkkuun (;). Poikkeuksen muodostavat #:lla alkavat ns. esiprosessorin direktiivit, esim #include ja aaltosulut {. Funktioilla on esittelyosa ja määrittelyosa. Esittelyosassa määritellään funktion muuttujat ja määrittelyosa sisältää suoritettavat lauseet. Esittelyosan tulisi olla ennen määrittelyosaa. (C:ssa pakko). Funktioiden ja muuttujien niminä kannattaa käyttää tavallisia kirjaimia, mutta ei skandinaavisia merkkejä, välilyöntejä tai erikoismerkkejä. 4

6 Tehtäviä 1. Kirjoita ohjelma Hello World koneellesi ja aja se. 2. Muokkaa Hello World ohjelma niin, että se tulostaa nimesi. 3. Ota pois puolipilkku cout- lauseen lopusta, käännä ohjelma ja katso, mistä kääntäjä herjaa. 4. Muuta ohjelmaa niin, että World -merkkijono tulostuu omalle rivilleen ( vihje: endl ) 5. Muuta ohjelmaa niin, että tulostat Hello World kahdella eri cout -käskyllä. 6. Lisää ohjelmaan rivi, joka tulostaa merkkijonon toinen rivi. 7. Mitä virheitä seuraavassa koodinpätkässä on? Voit kokeilla myös kääntää ohjelmaa. #include <iostream.h> int main () { cout Introduction to C++ programming language << endl; return 5

7 Tyypit ja muuttujat C:ssä ja C++:ssa jokaisella muuttujalla tulee olla tyyppi. Perustyyppejä ovat seuraavat: int char float double kokonaisluku merkki desimaaliluku (liukuluku) tarkempi desimaaliluku kuin float Esim. int luku; char merkki; int a=1; a=1; // kokonaisluvun esittely // merkin esittely // luvun a alustus // sijoitus muuttujaan a Tyyppeihin voi myös lisätä tarkentimia (short, long, signed, unsigned, ks. liite B). Muuttujat täytyy esitellä ennen käyttöä ja ne voidaan alustaa esittelyn yhteydessä. Esimerkki ohjelmasta, jossa käsitellään muuttujaa. 1 #include <iostream.h> 2 int main () { 3 int a; // esittely 4 a = 1; // sijoitus 5 cout << a; // luvun tulostus 6 7 Ohjelmaan voidaan lisätä kommentteja koodin havainnollistamiseksi ja yleensäkin selittämään, mitä kukin osa tekee. Kommentti C++:ssa alkaa // -merkillä ja loppuu rivinvaihtoon. // tässä on kommentti Rivillä 3 esitellään kokonaislukumuuttuja a. Rivillä 4 sijoitetaan muuttujaan a luku 1 ja rivillä 5 tulostetaan a. Rivillä 5: cout huomaa automaattisesti minkä tyyppinen muuttuja on tulostettavana. cout:lla voi tulostaa myös useammat luvun, merkin tai merkkijonon samalla rivillä. Nämä erotetaan toisistaan << -merkinnällä. Merkkien (char) alustus tapahtuu samaan tapaan kuin lukujen. Huomaa :n käyttö sijoituksessa! Merkkijonoihin palataan taulukoiden yhteydessä. Esim. char kirjain = Q ; cout << kirjain; 6

8 Merkkejä voidaan vertailla samaan tapaan kuin lukuja. Vertailu tapahtuu ASCII-taulukon* merkkejä vastaavien lukujen avulla. Tätä voidaan käyttää hyväksi mm. aakkostamisessa. * ks. liite A Tehtäviä 1. Tee ohjelma, joka esittelee muuttujan (int) a, sijoittaa siihen luvun 3 ja tulostaa a:n arvon. 2. alustaa muuttujan a 3:lla, ja tulostaa a:n arvon tulostaa luvun esittelee muuttujan (char) c, sijoittaa siihen kirjaimen B ja tulostaa muuttujan c. 7

9 Operaattoreista Laskujärjestyksen nyrkkisääntönä voisi sanoa, että ensimmäisinä suoritetaan (evaluoidaan) sulkujen sisältö (), sitten laskutoimitukset *, /, %,... ja sitten laskutoimitukset +, -,... siten, että samanarvoiset lasketaan oikealta vasemmalle. Esim. lauseessa 1+2*3 lasketaan ensin 2*3, joka lisätään sitten lukuun 1, lopullinen tulos on siis 7, kun taas (1+2)*3 tuottaisi luvun 9. Taulukossa operaattorit ovat järjestyksessä (ensin käsitellään ylinnä olevat). Kaikkia taulukon operaattoreita ei ole vielä käsitelty, joten ei syytä paniikkiin. () [] sulkeet, taulukko! negaatio (NOT) * / % kertominen, jakolasku, jakojäännös + - summa, vähennys < <= > >= pienempi kuin, pienempi tai yhtäsuuri, suurempi kuin, suurempi tai yhtäsuuri ==!= yhtäsuuri, erisuuri && JA (AND) TAI (OR) = sijoitus Kryptisimmät operaattorit ovat jätetty pois lähinnä koska niillä saa aikaan täysin käsittämättömän näköistä koodia. Myös pointtereita ei käsitellä tässä. Mikäli olet epävarma laskujärjestyksestä, käytä sulkuja. Sulkuja voi käyttää myös selkeyttämään koodin rakennetta. Huom! = on sijoitus ja == on yhtäsuuruusvertailu! Tämä on yksi yleisimmistä sudenkuopista C:ssä ja C++:ssa, varsinkin if -ehtolauseissa. Myös & ja &&:n sekä ja :n kanssa on oltava tarkkana, koska & ja ovat bittikohtaisia operaatioita (jätetään väliin tässä). C:ssa totuusarvot määritetään siten, että 0 on epätosi ja kaikki muut arvot tosia. Kokonaisluvuilla (integer) jaettaessa tulos pyöristyy alaspäin. Esim. 8 / 3 = 2. 8

10 Esimerkki: #include<iostream> int main () { int a; // esittely int b; a = 2; // sijoitus b = 3; cout << (a + b * a) << endl; // lasku ja tulostus Muuttujiin voi sijoittaa myös toisia muuttujia. #include<iostream> int main () { int a = 2; // alustus int b = 3; int c = 0; c = a + b * a; cout << c << endl; Alustamattomista muuttujista saattaa olla yllättävääkin päänvaivaa laajemmissa ohjelmissa. Niiden arvo saattaa olla aivan mitä tahansa. (Kokeilepa jättää esim. edellisestä esimerkistä b:n alustus pois). Tämä johtuu siitä, että muuttujaa esitellessä vain varataan vapaasta muistista muuttujan tyypin mukainen tavumäärä. Muuttujaan sijoitettaessa varattu muistialue käytetään. 9

11 Tehtäviä: Muuttujat ja operaattorit 1. Tee ohjelma, joka tulostaa lukujen 2, 5 ja 7 summan esittelee muuttujat a, b ja c, sijoittaa niihin arvot 4, 10 ja 50, ja tulostaa muuttujien summan. 3. tulostaa π:n likiarvon (sopivalla tarkkuudella) alustaa muuttujan p π:n likiarvolla, ja tulostaa p:n 5. Mikä virheitä seuraavassa ohjelmassa on? #include<iostream>; int main () { char aakkonen = a ; cout Variable is now << aakkonen << endl 6. Tee ohjelma, joka tulostaa lukujen 5, 7 ja 9 keskiarvon lukujen 6, 7 ja 9 summan keskiarvon. Vihje 7. Voit jakaa desimaaliluvulla tai käyttää float -typpisiä muuttujia. 10

12 Tyyppimuunnokset Jotta erityyppisiä muuttujia voitaisiin käsitellä samassa lauseessa, täytyy ne muuttaa samantyyppisiksi. Kääntäjä tekee myös automaattisesti tyyppimuunnoksia (joista useimmista ei ohjelmoijan tarvi päätään vaivata, mutta joistain saattaa tulla yllättävääkin päänvaivaa). Ohjelmoijan tekemät muunnokset tehdään ns. cast -operaattorilla. Muuttuja esitellään eri tyyppisenä laittamalla muuttuja sulkeisiin tyypin jälkeen. Huom: tämä ei muuta itse muuttujan tyyppiä! Esim. int t = 42; cout << char (t); Tulostaa lukua 42 vastaavan ASCII -merkin *. Muuttuja t on edelleen tyyppiä int. Esimerkki, jossa desimaaliluku tulostetaan kokonaislukuna: float p = ; cout << int (p); Tulostaa ruudulle 3 (int). Muista, että kokonaisluvuksi muutettaessa desimaaliluku pyöristyy alaspäin. Esimerkki, joka tulostaa ruudulle kirjaimen Q : int n = 81; char m; m = char (n); cout << m; m on nyt lukua 81 vastaava merkki Q ja n edelleen kokonaisluku

13 Tehtäviä: Typpimuunnokset 1) Tee ohjelma, joka tulostaa lukua 65 vastaavan merkin ( int char ). 2)... lukua 35 vastaavan merkin. 3)... lukua 62 vastaavan merkin. 4)... merkkiä T vastaavan luvun ( char int ). 5)... merkkiä [ vastaavan luvun. 6)... vastaavan luvun. 7)... desimaaliluvun (float) 8.1 kokonaislukuna (int). 8)... desimaaliluvun 8.99 kokonaislukuna. Vihjeet luku ASCII 35 # 62 > 65 A 84 T 91 [ ( Liitteessä A on C++:lla tehty ASCII -kartta ). 12

14 Funktiot Ohjelman kasvaessa tulee vastaan tilanne, jossa esim. samaa operaatiota vaaditaan useammassa paikassa. Funktioita voidaan kutsua pääohjelmasta (main), ja niille voidaan välittää arvoja. Funktion yleinen muoto: paluutyyppi funktio ( argumentit ) {... Itse main -funktio on int -tyyppinen, joten se palauttaa jonkin lukuarvon. Funktion paluuarvo palautetaan komennolla return. main -funktion paluuarvo 0 tarkoittaa sitä, että ohjelman suoritus oli virheetön. void -tyyppinen funktio ei palauta mitään. Esimerkki, jossa pääohjelmasta kutsutaan funktiota tulosta: #include<iostream> void tulosta () { cout << Pikkarainen << endl; int main () { tulosta(); Esim. #include<iostream> int summa ( int a, int b ) { return (a + b); int main () { int luku; luku = summa ( 1, 2 ); cout << luku << endl; Huomattavaa on, että funktion summa muuttuvat a ja b näkyvät vain funktion sisällä, eivätkä esim. main -ohjelmaan. summa palauttaa arvon, joka tässä esimerkissä on 3. Palautettu arvo sitten sijoitetaan pääohjelmassa muuttujaan luku ja tulostetaan. 13

15 Funktiolle summa annettua kahta kokonaislukua kutsutaan argumenteiksi. Jos funktion nimi koostuu useammasta sanasta, voidaan funktion nimessä käyttää alaviivaa yhdistelemään sanoja, esim. tulosta_ruudulle. Tehtäviä: Funktiot 1. Tee ohjelma Hello World! siten, että tulostus tapahtuu funktiossa tulosta, jota kutsutaan pääohjelmasta. 2. Tee funktio, joka palauttaa kolmen int -muuttujan summan kahden int -muuttujan tulon. 4. sille annetun ASCII-merkkiä vastaavan luvun. 5. nollan, jos sille annettu argumentti on kolmella jaollinen. 14

16 Muuttujien näkyvyysalueet Muuttujan näkyvyysalue tarkoittaa sitä osaa koodia, jossa muuttujaa voidaan käyttää. Tavallisesti muuttujan ovat lokaalisia (paikallisia). Aaltosulkujen { erottamassa kokonaisuudessa eli lohkossa esitellään lokaalit muuttujat. Lohkossa esitelty muuttuja näkyy myös lohkon alilohkoihin. Muuttujat syntyvät, kun ne esitellään ja häviävät, kun mennään alueelle, jossa ne eivät enää ole voimassa. Globaali muuttuja näkyy kaikkialla koodissa. Globaaliksi muuttujan tekee se, että se on kirjoitettu jokaisen funktion ulkopuolelle. Koska tällaisen muuttujan arvoa voidaan käsitellä missä paikassa hyvänsä, virheiden löytäminen virhetilanteissa voi olla työlästä. Vältä globaaleja muuttujia. Esim. float f; void trunc ( float x ) { int b;... int main () { float e;... muuttuja näkyvyysalue f globaali x funktiossa void trunc () b lohkossa void trunc () e pääohjelmassa globaali f pääohjelma e trunc -funktio x b 15

17 Tehtäviä: Muuttujien näkyvyysalueet 1. Mitkä ovat muuttujien a, c ja d näkyvyysalueet? #include<iostream> int a; void lisaa ( int c ) { a = a + c; int main () { int d; a = 0; d = 1; lisaa (d); 16

18 Syöttö Käyttäjän syötetietoja voidaan lukea käskyllä cin. Ohjelman ajaminen pysähtyy cin:n ajaksi ja käyttäjä voi tällöin antaa jonkin luvun, merkin tai merkkijonon ja sitten painaa return -näppäintä. Syöte sijoittuu cin >>:n ohjaamaan muuttujaan. Merkkijonoa luettaessa cin lukee välilyöntiin tai rivinvaihtoon saakka. Esimerkki ohjelmanpätkästä, joka esittelee muuttujan a ja sijoittaa siihen käyttäjän antaman luvun. int a; cin >> a; Esimerkki: Ohjelma, joka lukee luvun a ja tulostaa sen. #include<iostream> int main () { int a; cout << Anna luku << endl; cin >> a; cout << Luku oli: << a << endl; Esimerkki: Ohjelma, joka kysyy pallon sädettä ja tulostaa sen tilavuuden #include<iostream> float pii = ; float vol (float r) { // funktio vol palauttaa floatin return (4.0/3.0*pii*r*r*r); int main () { float r; cout << Anna säde: ; cin >> r; cout << endl << Pallon tilavuus = << vol(r) << endl; 17

19 Tehtäviä: Syöttö 1. Tee ohjelma, joka kysyy käyttäjältä lukua ja tulostaa sen kahta lukua ja tulostaa niiden summan ympyrän sädettä ja tulostaa sen pinta-alan. ( π r 2 ) 4. Tee ohjelma, joka kysyy suorakulmaisen kolmion kahta kateettia ja tulostaa kolmion hypotenuusan. Neliöjuurifunktio sqrt löytyy kirjastosta math.h. 18

20 Ehtolause if If -lause on muotoa if ( ehto ) { toteutetaan jos ehto on tosi else { toteutetaan jos ehto on epätosi Else-osa ei ole pakollinen. Esimerkki ohjelmanpätkästä, joka tarkistaa onko a:n arvo 1. Kuvassa 1 on sama esitetty vuokaaviona. (Vuokaavion symbolit ovat liitteessä C). int a = 1; if ( a == 1 ) { cout << a oli 1 << endl; Kuva 1 19

21 Toinen esimerkki: int a = 1; if ( a == 1 ) { cout << a oli 1 << endl; else { cout << ei ollutkaan << endl; Esimerkki ohjelmasta, joka vertailee kahden muuttujan arvoja: #include<iostream> int main () { int a; int b; a = 3; b = a - 1; if ( a > b ) { cout << a on suurempi kuin b << endl; Miksi seuraavat ohjelmanpätkät toimivat eri tavalla? if ( a == 0 ) { cout << a oli nolla << endl; // oikein if ( a = 0 ) { cout << a oli nolla << endl; // väärin Ehto voi myös olla moniosainen, jolloin eri osat erotetaan toisistaan loogisilla operaattoreilla. && JA (AND) TAI (OR)! EI (NOT) 20

22 Esim. if ( a == 1 && b == 1 ) {... // jos a on 1 JA b on 1 if ( a == 1 b == 1 ) {... // jos a on 1 TAI b on 1 if ( a!= 1 ) {... // jos a ei ole 1 if ( a == 3 && b!= 4 c == 12 ) {... if ( d == N ) {... // jos merkki d on N if ( d == Q d == d == \n ) {... // jos d on Q, välilyönti tai rivinvaihto Myös else-osan jälkeen voi olla if -lause. if ( ehto ) { jos ehto oli tosi else if ( toinen ehto ) { ellei ollut, niin jos toinen ehto oli tosi else { muussa tapauksessa 21

23 Tehtäviä: Ehtolauseet 1. Miten seuraavat if -lauseet toimivat? Oletetaan, että a ja b ovat tyyppiä int ja c char. if ( a > 6 ) {... if ( a == 0 ) {... else {... if ( (-3 < a) && (a < 3) ) {... if ( a!= b ) {... if ( a > b ) {... if ( c == N c == R ) {... if ( c == v ) {... else if ( c == w ) {... else {... if ( c >= 0 && c <= 9 ) {... if (! (a == b) ) { 2. Miten muotoilisit seuraavat if -lauseiksi? Oletetaan, että a ja b ovat tyyppiä int. Muista = ja == :n ero ja että voit yhdistellä JA ja TAI -lauseita. a) a on nolla b) a on yhtäsuuri kuin 7 c) a on pienempi kuin 16 d) a on suurempi kuin 16 e) a on suurempi tai yhtäsuuri kuin 0 f) a on pienempi tai yhtäsuuri kuin 0 g) a ei ole nolla h) a ei ole negatiivinen i) b on pienempi kuin 10 j) a on b k) a ei ole b l) a on suurempi kuin b m) a on 1 tai 2 n) a on 1, 3 tai 5 o) a on -10, b tai 10 p) a on 0 tai suurempi kuin 127 q) 0 < a < b r) a on suurempi kuin 0 ja pienempi kuin b s) a on välillä t) a on välillä 0...b 3. Muuta seuraavat C++:n if-lauseiksi. Muuttuja c on tyyppiä char. 22

24 a) c on f b) c on q c) c on k tai p d) c on rivinvaihto ( \n ) e) c on tabulaattori ( \t ) f) c on (välilyönti, space) g) c on rivinvaihto tai tabulaattori h) c ei ole rivinvaihto i) c ei ole rivinvaihto eikä välilyönti ( ) j) c on ESC-näppäin ( ASCII merkki 27 ) k) c on numero ( ASCII -taulukon merkit 0 9 ) l) c on pieni kirjain ( ASCII -taulukon merkit a z ) m) c on iso kirjain ( ASCII -taulukon merkit A... Z ) n) c on pieni tai iso kirjain o) c ei ole numero p) c on alfanumeerinen merkki k) Vihje luentomonisteen tehtävässä. Toinen vihje: TAI-lauseilla tehty tarkistus saattaa olla työläs... p) Vihje: Alfanumeerisia merkkejä ovat numerot 0 9 sekä kirjaimet a z ja A...Z. Voit myös vilkaista kappaletta "Esimerkki kirjastofunktioiden käytöstä". Karkausvuosi Karkausvuodet ovat vuosilukuja, jotka ovat neljällä jaollisia. Erikoisasemassa ovat 100:lla jaolliset vuosiluvut, joista vain 400:lla jaollisiset ovat karkausvuosia. Jaollisuutta C++:ssa tarkastellaan jakojäännös-operaattorilla %. Jos jakojäännös on 0, luku on jaollinen jakajalla. Tee ohjelmanpätkä, joka kertoo, onko kokonaisluku (int) vuosi karkausvuosi. Esim. laskuoperaatio jakojäännös 8 % 1 = 0 8 % 2 = 0 8 % 3 = 2 8 % 4 = 0 8 % 5 = 3 8 % 6 = 2 8 % 7 = % 4 = % 4 = % 4 = 0 23

25 Switch-rakenne switch:n parametrinä olevaa muuttujaa (int) testataan, onko se jonkin case-sanan jälkeen tuleva vaihtoehto. Jos on, niin suoritetaan case-lohkon koodi. Sanalla break poistutaan switchrakenteesta. Mikäli se puuttuu, suoritus jatkuu seuraavaan case-lauseeseen. default-lohko (ei ole pakollinen) suoritetaan, jos mikään edellinen lohko ei täsmää. Esim. ( c on tyyppiä int ) switch ( c ) { case 1: cout << ykkönen << endl; break; case 2: cout << kakkonen << endl; break; default: cout << jokin muu << endl; Esim. ( c on tyyppiä char ) switch ( c ) { case + : a = a + 1; break; case - : a = a - 1; break; default: cout << # << endl; Tehtäviä: switch-rakenne 1. Tee ohjelma, joka kysyy käyttäjältä kokonaislukua väliltä 1-3 ja tulostaa luvun sanana. 2. Sama kuin 1, ja jonkin muun luvun kohdalla antaa virheilmoituksen. 3. Miten ensimmäisen esimerkin ohjelmanpätkä toimisi, jos case 1-lohkon break-komento puuttuu? 4. Tee ohjelma, jolla voi laskea yhteen-, vähennys-, kerto- tai jakolaskun (nelilaskin). Tarkista erikseen mahdollinen nollalla jakaminen. 24

26 Silmukat for -silmukka on muotoa: for ( alustus ; ehto ; askel ) { silmukan koodi Alustus tehdään vain silmukan alussa. Ehto ja askel toteutetaan joka kierroksella. Esim. ohjelmanpätkä, joka tulostaa luvut omille rivilleen. int a; for ( a = 1; a <= 10; a = a + 1 ) { cout << a << endl; Kuva 2 Esim. Sarjan summa saadaan laskettua seuraavasti: #include<iostream> int main () { int summa = 0; int k; for ( k = 1; k <= 10; k = k + 1 ) { summa = summa + k; cout << Summa oli << summa << endl; 25

27 while -silmukka on muotoa: while ( ehto ) { silmukka While-silmukkaa kierretään niin kauan, kuin ehto on tosi. Esimerkki ohjelmakoodista, joka tekee saman kuin edellinen for -silmukka. int a = 1; while ( a <= 10 ) { cout << a << endl; a = a + 1; do-rakenne eroaa while:sta siten, että silmukan koodi suoritetaan ehdosta riippumatta ainakin kerran. do { silmukka while ( ehto ); Silmukan toteutustapa valitaan käyttötarkoituksen mukaan. Silmukoissa on syytä olla tarkkana: on myös mahdollista tehdä silmukoita, jotka eivät lopu koskaan. Tehtäviä 1. Tee ohjelma, joka tulostaa for-silmukalla 10 rivillistä merkkijonoa **** tulostaa for -silmukalla luvut omille riveilleen luvut välilyönnillä erotettuna. 4. Tee tehtävien 1-3 silmukat while -tekniikalla parilliset luvut välillä (Huom: useampi tapa toteuttaa) lukusarjan 0, 3, 6, 9, Tee ohjelma, joka tulostaa aakkoset (a...z). Käytä tyyppimuunnosta. 8. Miten liitteen A ASCII -taulukko-ohjelma liittyy silmukoihin? Miten se toimii? Vihje: 8. ASCII -koodit ja 127 ovat merkkejä, jotka ohjelmassa ovat esitetty tulostettavassa muodossa. Control -näppäinyhdistelmiä merkitään ^-merkillä, esim control+a kirjoitetaan ^A. ASCII merkki 10 (^J) on newline, 13 (^M) vastaa returnia, ^H on backspace jne. 26

28 Taulukot Taulukko on tietorakenne, johon voidaan tallettaa useampia samantyyppisiä muuttujia. Taulukon muuttujia kutsutaan alkioiksi. Taulukon koko täytyy tietää jo käännösaikana. Käytännössä tämä tarkoittaa sitä, että taulukon koko pitää määritellä koodissa luvulla tai vakiolla. Esimerkki: luodaan taulukko taul, johon mahtuu 4 int -tyyppistä alkiota. int taul[4]; Taulukko voidaan myös alustaa luodessa, jolloin taulukon koko voidaan jättää kääntäjän huoleksi: int taul[] = { 1, 2, 3, 4 ; Esittelyn jälkeen taulukon arvoja voidaan käsitellä yksi kerrallaan. Taulukkoa käsitellään operaattorin [] avulla. Taulukon ensimmäisen alkio C:ssä ja C++:ssa nolla (0). taul[0] = 5; Ensimmäinen alkio on nyt 5. int a; a = taul[1]; a saa arvon 2. Tehtäviä 1) Tee ohjelma, joka luo int-tyyppisen taulukon table, jossa on 6 alkiota. a) Alusta table -taulukon luvuilla 1, 2, 3,... b) Sijoita table:n ensimmäiseen alkioon luku 99. (Ensimmäinen alkiohan oli paikassa [0]). c)... toiseen alkioon luku 10. d)... viimeiseen alkioon luku 1. ( Vihje: ei ole table[6]...) 2) Tee ohjelma, joka kysyy käyttäjältä kolmea lukua, ja sijoittaa ne taulukkoon. 3) Edellinen tehtävä for -silmukkaa käyttäen. 27

29 Merkkijonot : char-taulukko Char-taulukoilla toteutetut merkkijonot ovat taulukoita ( [] ), jotka loppuvat aina merkkiin \0 (NUL). Esimerkiksi merkkijono foobar on koneen muistissa muodossa: f o o b a r \0 Esimerkki: char array[] = foobar ; cout << array; Taulukon koko on kuitenkin tiedettävä jo käännösaikana. Tämä tarkoittaa sitä, että ohjelmoijan on pidettävä itse huolta siitä, että taulukon koko riittää joka käänteessä. Edellisessä esimerkissä taulukon koko jätettiin kääntäjän huoleksi. Taulukon koon ylitystä ei kääntäjä valvo mitenkään, vaan ohjelma sitten myöhemmin sekoilee tai/ja kaatuu. Taulukkoon saa myöhemmin sijoitettua merkkijonon strcpy:llä, joka löytyy kirjastosta string.h. Esim. char array[10]; strcpy ( array, foobar ); cout << array; Merkkijonoja vertaillaan strcmp -funktiolla (kirjastosta string.h). Jos strcmp palauttaa nollan, merkkijonot ovat samoja. Esim. char automobiili[] = Lada ; if ( strcmp(automobiili, Mosse ) == 0 ) {... Jos haluamme muuttaa merkkijonon ensimmäisen kirjaimen, se sijoitetaan merkkinä taulukon alkuun: array[0] = m ; m o o b a r \0 28

30 Käyttäjän syötteen voi lukea cin:llä. cin >> array; Tässä kohtaa voi mennä pieleen, miksi? Varsinkin strcat:a (string.h:sta) käytettäessä pitää varmistaa, että taulukossa todellakin on tilaa. strcat kopioi merkkijonon toisen merkkijonon perään. Esimerkki strcat:n käytöstä: char array[20]; strcpy ( array, "esim" ); strcat ( array, "erkki" ); Voit myös lukea merkkejä (välilyönti mukaan lukien) cin.getline:llä: char word[30]; cin.getline ( word, 30 ); // ei mene yli varatun tilan Tehtäviä: char-merkkijono 1. Tee ohjelma, joka alustaa char -taulukon merkkijonolla Wartburg ja tulostaa sen. 2. kysyy käyttäjän nimeä ja tulostaa sen. 3. kopioi merkkijonon 1500 merkkijonon Lada jälkeen ja tulostaa sen kysyy käyttäjältä tunnusta ja salasanaa ja tulostaa access granted, mikäli tunnus on jobe ja salasana mainframe. Muussa tapauksessa ohjelma tulostaa access denied. 29

31 Merkkijonot : string String-tyyppisen merkkijonon C++:ssa saat käyttöön seuraavasti: #include<string> String-merkkijono on C++:n yksi tapa toteuttaa merkkijono. Erona char-taulukkoon on, että string:iä käytetään hieman eri tavalla. Esim. #include<iostream> #include<string> int main () { string s = Hello, World! ; cout << s << endl; Stringejä voidaan liittää toisiinsa seuraavasti: string s1 = Hello, ; string s2 = World ; string s3 = s1 + + s2; Esimerkissä s3 alustetaan merkkijonoksi Hello, World. String-merkkijonojen vertailu tapahtuu == -operaattorilla: if ( s1 == s2 ) {... if ( s1 == Eastwood ) {... Käyttäjän syötteen lukeminen merkkijonoon tapahtuu cin:llä: string str; cin >> str; 30

32 Vielä yksi esimerkki: string str; cout << Please enter your name << endl; cin >> str; cout << Hello, << str <<! << endl; Tehtäviä: string 1) Tee ohjelma, joka sijoittaa string:iin s merkkijonon olio. 2)... liittää s:n perään merkkijonon -ohjelmointi ja tulostaa sen. 3) kysyy käyttäjän nimeä ja tulostaa sen. 4)... kysyy käyttäjältä tunnusta ja salasanaa ja tulostaa access granted, mikäli tunnus on jobe ja salasana mainframe. Muussa tapauksessa ohjelma tulostaa access denied. 31

33 Sudenkuoppia C:ssä ja C++:ssa Kokonaisluku int on kääntäjästä tai käyttöjärjestelmästä riippuen joko 16 tai 32-bittinen. (Näin ei ole esim. Javassa, jossa perustyypit ovat tarkemmin standardisoitu). 16:lla bitillä voidaan ilmaista lukua ja 32:lla bitillä lukua. Mikäli muuttuja ylittää lukualueen, kääntäjä ei ilmoita virhettä, vaan ohjelma antaa todennäköisesti virheellisiä tuloksia. Toisinaan etumerkillisyyskin voi tuottaa yllätyksiä; int onkin oletusarvoisesti tyyppiä signed (etumerkillinen), jolloin se on väliltä (16-bittisillä luvuilla). Esimerkkiohjelma lukualueen ylittämisestä: #include <iostream.h> int main () { signed short int a = ; cout << a << endl; a = a - 1; cout << a << endl; Indeksointi alkaa nollasta. Esimerkin ohjelma kääntyy ilman virheilmoituksia, mutta ajettaessa kirjoittaakin varatun muistin ulkopuolelle (mikä pidemmän päälle sekoittaa kaiken PC:ssä). Taulukon ensimmäinen alkio jää myös alustamatta, ja sen arvo saattaa olla mitä tahansa. #include <iostream.h> int main () { int array[3]; int a; for ( a = 1; a <= 3; a = a + 1 ) { array[a] = 0; == on vertailu ja = on sijoitus(operaattori). Esimerkin ohjelmanpätkä sijoittaa 1:n muuttujaan a, ja if-lause tulkitsee tämän olevan tosi. (C:ssa totuusarvot määritetään siten, että 0 on epätosi ja kaikki muut arvot tosia). if ( a = 1 ) { // tämä suoritetaan aina riippumatta a:sta Huom: char-tyyppisiä merkkijonoja ei voi suoraan verrata == -operaattorilla. 32

34 Näkyvyysalueiden kanssa on myös oltava tarkkana. C:n ja C++:n syntaksi sallii kirjoittaa mitä kryptisimmän näköisiä ohjelmia. Näitä ei ole tässä opetettu, koska lyhenteet voivat olla vaikealukuisia ja myös virhealttiita. Klassinen esimerkki on kaarisulkeiden jättäminen pois if -lauseessa. Esimerkiksi tämä toimii: if ( a == 1 ) cout << jep ;...mutta tämä suorittaa joka kerta sijoituksen a b: if ( a == 1 ) cout << jep ; a = b; 33

35 Esimerkki kirjastofunktioiden käytöstä Näillä ctype.h -kirjaston funktioilla näytetään tässä esimerkin avulla, miten pienissä ja yleisissä ongelmissa kannattaa käyttää kirjastoja. Näin vältytään myös matalan tason koodaukselta ja yleensäkin pyörän uudelleen keksimiseltä. Funktio Tarkistaa onko argumentti Selitys islower pieni kirjain Tests for lowercase character. isupper iso kirjain Tests for uppercase character. isalpha kirjain Classifies an alphabetical character. isdigit numero Tests for decimal-digit character. isalnum kirjain tai numero Tests for an alphanumeric character. iscntrl kontrollikoodi Tests for a control character. Esim. Tarkastellaan, onko merkki C kirjain: #include <iostream> #include <ctype.h> int main() { char c; c = 'C'; if ( isalpha(c) ) { cout << c << is alphabetical" << endl; else { cout << c << is not alphabetical" << endl; 34

36 Liite A: ASCII -taulukko 0 1 ^A 2 ^B 3 ^C 4 ^D 5 ^E 6 ^F 7 ^G 8 ^H 9 ^I 10 ^J 11 ^K 12 ^L 13 ^M 14 ^N 15 ^O 16 ^P 17 ^Q 18 ^R 19 ^S 20 ^T 21 ^U 22 ^V 23 ^W 24 ^X 25 ^Y 26 ^Z 27 ^[ 28 ^\ 29 ^] 30 ^^ 31 ^_ 32 ' ' 33! 34 " 35 # 36 $ 37 % 38 & 39 ' 40 ( 41 ) 42 * , / : 59 ; 60 < 61 = 62 > 63? 65 A 66 B 67 C 68 D 69 E 70 F 71 G 72 H 73 I 74 J 75 K 76 L 77 M 78 N 79 O 80 P 81 Q 82 R 83 S 84 T 85 U 86 V 87 W 88 X 89 Y 90 Z 91 [ 92 \ 93 ] 94 ^ 95 _ 96 ` 97 a 98 b 99 c 100 d 101 e 102 f 103 g 104 h 105 i 106 j 107 k 108 l 109 m 110 n 111 o 112 p 113 q 114 r 115 s 116 t 117 u 118 v 119 w 120 x 121 y 122 z 123 { ~ 127 DEL 1 #include <iostream.h> // ASCII table v0.2 2 int main () { // by EP int a = 0; 4 cout << endl; 5 for ( a = 0; a <= 127; a = a + 1 ) { 6 cout << int(a) << " "; 7 if ( a>=0 && a<=31 ) { 8 cout << "^" << char ( a+64 ) ; 9 10 else if ( a==32 ) { 11 cout << "\' \'"; else if ( a==127 ) { 14 cout << "DEL"; else { 17 cout << char (a); cout << "\t"; cout << endl;

37 Liite B: Tyyppien tarkennukset int char float double kokonaisluku merkki desimaaliluku (liukuluku) tarkempi desimaaliluku kuin float short long signed unsigned pienentää lukualuetta suurentaa lukualuetta etumerkilliset luvut ei-negatiiviset luvut Tarkennin short sopii ainoastaan tyyppiin int. char hyväksyy vain tarkentimet signed ja unsigned. Muita rajoituksia ei ole. Tarkentimia voi myös yhdistellä: unsigned long int suurluku; 36

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

PERL. TIE Principles of Programming Languages. Ryhmä 4: Joonas Lång & Jasmin Laitamäki

PERL. TIE Principles of Programming Languages. Ryhmä 4: Joonas Lång & Jasmin Laitamäki PERL TIE-20306 Principles of Programming Languages Ryhmä 4: Joonas Lång & Jasmin Laitamäki 1. Johdanto Perl on ohjelmointikielten perhe, johon kuuluu Perl 5 ja Perl 6. Kielet ovat kuitenkin erilliset ohjelmointikielet

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

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

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

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

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

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

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. Assembly ja konekieli

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. Assembly ja konekieli TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op Assembly ja konekieli Tietokoneen ja ohjelmiston rakenne Loogisilla piireillä ja komponenteilla rakennetaan prosessori ja muistit Prosessorin rakenne

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

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. Assembly ja konekieli

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. Assembly ja konekieli TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op Assembly ja konekieli Tietokoneen ja ohjelmiston rakenne Loogisilla piireillä ja komponenteilla rakennetaan prosessori ja muistit Prosessorin rakenne

Lisätiedot

Tietojen syöttäminen ohjelmalle. Tietojen syöttäminen ohjelmalle Scanner-luokan avulla

Tietojen syöttäminen ohjelmalle. Tietojen syöttäminen ohjelmalle Scanner-luokan avulla Tietojen syöttäminen ohjelmalle Tähän mennessä on käsitelty Javan tulostuslauseet System.out.print ja System.out.println sekä ohjelman perusrakenneosat (muuttujat, vakiot, lauseet). Jotta päästään tekemään

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 16.2.2010 T-106.1208 Ohjelmoinnin perusteet Y 16.2.2010 1 / 41 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.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

Muuttujat ja kontrolli. Ville Sundberg

Muuttujat ja kontrolli. Ville Sundberg Muuttujat ja kontrolli Ville Sundberg 14.9.2007 Alkeistyyppi Alin abstraktiotaso josta tarvitsee välittää Yksittäinen, jakamaton tiedonjyvä Tavallaan kaikki alkeistyypit ovat lukuja arvojoukko vaihtelee

Lisätiedot

Metropolia ammattikorkeakoulu TI00AA : Ohjelmointi Kotitehtävät 3 opettaja: Pasi Ranne

Metropolia ammattikorkeakoulu TI00AA : Ohjelmointi Kotitehtävät 3 opettaja: Pasi Ranne Seuraavista tehtävistä saatu yhteispistemäärä (max 7 pistettä) jaetaan luvulla 3.5 ja näin saadaan varsinainen kurssipisteisiin laskettava pistemäärä. Bonustehtävien pisteet jaetaan luvulla 4 eli niistä

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

Sisältö. 22. Taulukot. Yleistä. Yleistä

Sisältö. 22. Taulukot. Yleistä. Yleistä Sisältö 22. Taulukot Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko metodin parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 22.1 22.2 Yleistä

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 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

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

Sisältö. 2. Taulukot. Yleistä. Yleistä

Sisältö. 2. Taulukot. Yleistä. Yleistä Sisältö 2. Taulukot Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko operaation parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 2.1 2.2 Yleistä

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

Sisällys. 6. Muuttujat ja Java. Muuttujien nimeäminen. Muuttujien nimeäminen. salinovi tai syntymapaiva

Sisällys. 6. Muuttujat ja Java. Muuttujien nimeäminen. Muuttujien nimeäminen. salinovi tai syntymapaiva Sisällys 6. Muuttujat ja Java Muuttujien nimeäminen. Muuttujan tyypin määritys. Javan tietotyypit: Kokonais- ja liukuluvut. boolean- ja char-tyypit. Tyyppien yhteensopivuus. Viitetietotyypit ja merkkijonotietotyyppi

Lisätiedot

6. Muuttujat ja Java 6.1

6. Muuttujat ja Java 6.1 6. Muuttujat ja Java 6.1 Sisällys Muuttujien nimeäminen. Muuttujan tyypin määritys. Javan tietotyypit: Kokonais- ja liukuluvut. boolean- ja char-tyypit. Tyyppien yhteensopivuus. Viitetietotyypit ja merkkijonotietotyyppi

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

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

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

Sisällys. 1. Omat operaatiot. Yleistä operaatioista. Yleistä operaatioista

Sisällys. 1. Omat operaatiot. Yleistä operaatioista. Yleistä operaatioista Sisällys 1. Omat operaatiot Yleistä operaatioista. Mihin operaatioita tarvitaan? Oman operaation määrittely. Yleisesti, nimeäminen ja hyvä ohjelmointitapa, määreet, parametrit ja näkyvyys. HelloWorld-ohjelma

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

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

Yleistä. Nyt käsitellään vain taulukko (array), joka on saman tyyppisten muuttujien eli alkioiden (element) kokoelma.

Yleistä. Nyt käsitellään vain taulukko (array), joka on saman tyyppisten muuttujien eli alkioiden (element) kokoelma. 2. Taulukot 2.1 Sisältö Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko operaation parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 2.2 Yleistä

Lisätiedot

Harjoitus 1 -- Ratkaisut

Harjoitus 1 -- Ratkaisut Kun teet harjoitustyöselostuksia Mathematicalla, voit luoda selkkariin otsikon (ja mahdollisia alaotsikoita...) määräämällä soluille erilaisia tyylejä. Uuden solun tyyli määrätään painamalla ALT ja jokin

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

Sisällys. 6. Muuttujat ja Java. Muuttujien nimeäminen. Muuttujien nimeäminen. salinovi tai syntymapaiva

Sisällys. 6. Muuttujat ja Java. Muuttujien nimeäminen. Muuttujien nimeäminen. salinovi tai syntymapaiva Sisällys 6. Muuttujat ja Java Muuttujien nimeäminen. Muuttujan tyypin määritys. Javan tietotyypit: Kokonais- ja liukuluvut, merkit, totuusarvot. Tyyppien yhteensopivuus. Viitetietotyypit ja merkkijonotietotyyppi

Lisätiedot

6. Muuttujat ja Java 6.1

6. Muuttujat ja Java 6.1 6. Muuttujat ja Java 6.1 Sisällys Muuttujien nimeäminen. Muuttujan tyypin määritys. Javan tietotyypit: Kokonais- ja liukuluvut, merkit, totuusarvot. Tyyppien yhteensopivuus. Viitetietotyypit ja merkkijonotietotyyppi

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

Harjoitus 1 -- Ratkaisut

Harjoitus 1 -- Ratkaisut Kun teet harjoitustyöselostuksia Mathematicalla, voit luoda selkkariin otsikon (ja mahdollisia alaotsikoita...) määräämällä soluille erilaisia tyylejä. Uuden solun tyyli määrätään painamalla ALT ja jokin

Lisätiedot

Tietuetyypin määrittely toteutetaan C-kielessä struct-rakenteena seuraavalla tavalla:

Tietuetyypin määrittely toteutetaan C-kielessä struct-rakenteena seuraavalla tavalla: KERTAUSTEHTÄVIÄ Tietue Tietuetyypin määrittely toteutetaan C-kielessä struct-rakenteena seuraavalla tavalla: struct henkilotiedot char nimi [20]; int ika; char puh [10]; ; Edellä esitetty kuvaus määrittelee

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

815338A Ohjelmointikielten periaatteet Harjoitus 4 vastaukset

815338A Ohjelmointikielten periaatteet Harjoitus 4 vastaukset 815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 4 vastaukset Harjoituksen aiheena ovat imperatiivisten kielten lauseisiin, lausekkeisiin ja aliohjelmiin liittyvät kysymykset. Tehtävä 1. Mitä

Lisätiedot

815338A Ohjelmointikielten periaatteet Harjoitus 6 Vastaukset

815338A Ohjelmointikielten periaatteet Harjoitus 6 Vastaukset 815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 6 Vastaukset Harjoituksen aiheena on funktionaalinen ohjelmointi Scheme- ja Haskell-kielillä. Voit suorittaa ohjelmat osoitteessa https://ideone.com/

Lisätiedot

Java-kielen perusteet

Java-kielen perusteet Java-kielen perusteet String-merkkijonoluokka 1 Ohjelmointikielten merkkijonot Merkkijonot ja niiden käsittely on välttämätöntä ohjelmoinnissa Valitettavasti ohjelmointikielten tekijät eivät tätä ole ottaneet

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

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

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

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 4.3.2009 T-106.1208 Ohjelmoinnin perusteet Y 4.3.2009 1 / 35 Tiedostot Tiedostojen käsittelyä tarvitaan esimerkiksi seuraavissa tilanteissa: Ohjelman käsittelemiä

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

\+jokin merkki tarkoittaa erikoismerkkiä; \n = uusi rivi.

\+jokin merkki tarkoittaa erikoismerkkiä; \n = uusi rivi. 1. Johdanto 1.1 Yleistä Suurten ohjelmien organisointi vaikeaa C:ssä. 1980 Stroustrup lisäsi C:hen olio-ohjelmoinnin (OOP = Object Oriented Programming). C C++: C-ohjelma on (muutamia poikkeuksia lukuunottamatta)

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

Olion elinikä. Olion luominen. Olion tuhoutuminen. Olion tuhoutuminen. Kissa rontti = null; rontti = new Kissa();

Olion elinikä. Olion luominen. Olion tuhoutuminen. Olion tuhoutuminen. Kissa rontti = null; rontti = new Kissa(); Sisällys 7. Oliot ja viitteet Olio Java-kielessä. Olion luominen, elinikä ja tuhoutuminen. Viitteiden käsittelyä: sijoitus, vertailu ja varautuminen null-arvoon. Viite metodin paluuarvona.. 7.1 7.2 Olio

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

1. Omat operaatiot 1.1

1. Omat operaatiot 1.1 1. Omat operaatiot 1.1 Sisällys Yleistä operaatioista. Mihin operaatioita tarvitaan? Oman operaation määrittely. Yleisesti, nimeäminen ja hyvä ohjelmointitapa, määreet, parametrit ja näkyvyys. HelloWorld-ohjelma

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

Groovy. Niko Jäntti Jesper Haapalinna Group 31

Groovy. Niko Jäntti Jesper Haapalinna Group 31 Groovy Niko Jäntti Jesper Haapalinna Group 31 Johdanto Groovy on Apachen kehittämä Javaan perustuva dynaaminen oliopohjainen ohjelmointikieli. Kielen kehitys alkoi vuonna 2003, versio 1.0 julkaistiin 2007

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 1.2.2010 T-106.1208 Ohjelmoinnin perusteet Y 1.2.2010 1 / 47 Sijoituksen arvokehitys, koodi def main(): print "Ohjelma laskee sijoituksen arvon kehittymisen."

Lisätiedot

Tyyppejä ja vähän muutakin. TIEA341 Funktio ohjelmointi 1 Syksy 2005

Tyyppejä ja vähän muutakin. TIEA341 Funktio ohjelmointi 1 Syksy 2005 Tyyppejä ja vähän muutakin TIEA341 Funktio ohjelmointi 1 Syksy 2005 Viime luennolla... Haskellin alkeita pääasiassa Hello World!... ja muita tutunoloisia ohjelmia Haskellilla Haskellin voima on kuitenkin

Lisätiedot

Ohjelmoinnin perusteet Y Python

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

Lisätiedot

Vertailulauseet. Ehtolausekkeet. Vertailulauseet. Vertailulauseet. if-lauseke. if-lauseke. Javan perusteet 2004

Vertailulauseet. Ehtolausekkeet. Vertailulauseet. Vertailulauseet. if-lauseke. if-lauseke. Javan perusteet 2004 Vertailulauseet Ehtolausekkeet Ehdot, valintalausekkeet Boolean-algebra == yhtäsuuruus!= erisuuruus < pienempi suurempi >= suurempi tai yhtäsuuri Esimerkkejä: int i=7; int j=10;

Lisätiedot

Harjoitustyön testaus. Juha Taina

Harjoitustyön testaus. Juha Taina Harjoitustyön testaus Juha Taina 1. Johdanto Ohjelman teko on muutakin kuin koodausta. Oleellinen osa on selvittää, että ohjelma toimii oikein. Tätä sanotaan ohjelman validoinniksi. Eräs keino validoida

Lisätiedot

1. Kun käyttäjä antaa nollan, niin ei tulosteta enää tuloa 2. Hyväksy käyttäjältä luku vain joltain tietyltä väliltä (esim tai )

1. Kun käyttäjä antaa nollan, niin ei tulosteta enää tuloa 2. Hyväksy käyttäjältä luku vain joltain tietyltä väliltä (esim tai ) Tehtävä do while + Viikko 1 Tehtävä 27. Salasana (MOOC) Viikko 1 Tehtävä 28. Lämpötilat (MOOC) Tehdään ohjelma, joka kysyy käyttäjältä lukua. Luku kerrotaan aina seuraavalla käyttäjän antamalla luvulla

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

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

Tietorakenteet ja algoritmit syksy Laskuharjoitus 1

Tietorakenteet ja algoritmit syksy Laskuharjoitus 1 Tietorakenteet ja algoritmit syksy 2012 Laskuharjoitus 1 1. Tietojenkäsittelijä voi ajatella logaritmia usein seuraavasti: a-kantainen logaritmi log a n kertoo, kuinka monta kertaa luku n pitää jakaa a:lla,

Lisätiedot

Maahan on pudonnut omenoita, ja Uolevi aikoo poimia niitä. Tiedät jokaisesta omenasta, kuinka painava se on.

Maahan on pudonnut omenoita, ja Uolevi aikoo poimia niitä. Tiedät jokaisesta omenasta, kuinka painava se on. Datatähti 2015 A: Omenat Aikaraja: 2 s Maahan on pudonnut omenoita, ja Uolevi aikoo poimia niitä. Tiedät jokaisesta omenasta, kuinka painava se on. Uolevi haluaa saada mahdollisimman monta omenaa, mutta

Lisätiedot

Sisällys. 7. Oliot ja viitteet. Olion luominen. Olio Java-kielessä

Sisällys. 7. Oliot ja viitteet. Olion luominen. Olio Java-kielessä Sisälls 7. Oliot ja viitteet Olio Java-kielessä. Olion luominen, elinikä ja tuhoutuminen.. Viitteiden vertailu. Varautuminen null-arvoon. Viite metodin paluuarvona.. Muuttumattomat ja muuttuvat merkkijonot.

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CSE-A1111 14.9.2015 CSE-A1111 Ohjelmoinnin peruskurssi Y1 14.9.2015 1 / 17 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 23.2.2009 T-106.1208 Ohjelmoinnin perusteet Y 23.2.2009 1 / 44 Debuggeri Tyypillinen tilanne: ohjelma on kirjoitettu, Python-tulkki ei valita virheistä, mutta

Lisätiedot

Muuttujatyypit ovat Boolean, Byte, Integer, Long, Double, Currency, Date, Object, String, Variant (oletus)

Muuttujatyypit ovat Boolean, Byte, Integer, Long, Double, Currency, Date, Object, String, Variant (oletus) VISUAL BASIC OHJEITA Kutsuttava ohjelma alkaa kometoparilla Sub... End Sub Sub ohjelmanimi()...koodia... End Sub Muuttujat Muuttujan esittely Muuttujatyypit ovat Boolean, Byte, Integer, Long, Double, Currency,

Lisätiedot

Johdatus ohjelmointiin / Lausekielinen ohjelmointi 1 & 2

Johdatus ohjelmointiin / Lausekielinen ohjelmointi 1 & 2 Johdatus ohjelmointiin / Lausekielinen ohjelmointi 1 & 2 Syntaksilomake (22.4.2007) C-kielen standardikirjaston funktioita gets(merkkijono); scanf("formaatti", &muuttuja1,..., &muuttujan); sscanf(merkkijono,

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

Luku 6. Dynaaminen ohjelmointi. 6.1 Funktion muisti

Luku 6. Dynaaminen ohjelmointi. 6.1 Funktion muisti Luku 6 Dynaaminen ohjelmointi Dynaamisessa ohjelmoinnissa on ideana jakaa ongelman ratkaisu pienempiin osaongelmiin, jotka voidaan ratkaista toisistaan riippumattomasti. Jokaisen osaongelman ratkaisu tallennetaan

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 16.3.2009 T-106.1208 Ohjelmoinnin perusteet Y 16.3.2009 1 / 40 Kertausta: tiedostosta lukeminen Aluksi käsiteltävä tiedosto pitää avata: tiedostomuuttuja = open("teksti.txt","r")

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

11. oppitunti III. Viittaukset. Osa. Mikä on viittaus?

11. oppitunti III. Viittaukset. Osa. Mikä on viittaus? Osa III 11. oppitunti Viittaukset Kahdessa viime luvussa opit käyttämään osoittimia kohteiden käsittelyyn vapaalla muistialueella sekä viittaamaan noihin kohteisiin epäsuorasti. Tässä luvussa käsiteltävät

Lisätiedot

12. Näppäimistöltä lukeminen 12.1

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

Lisätiedot

PERUSLASKUJA. Kirjoita muuten sama, mutta ota välilyönti 4:n jälkeen 3/4 +5^2 3

PERUSLASKUJA. Kirjoita muuten sama, mutta ota välilyönti 4:n jälkeen 3/4 +5^2 3 PERUSLASKUJA Matemaattisten lausekkeiden syöttäminen: Kirjoita ilman välilyöntejä 3/+^ 3 Kirjoita muuten sama, mutta ota välilyönti :n jälkeen 3/ +^ 3 Liiku matematiikka alueella nuolinäppäimin. Kokeile

Lisätiedot

7/20: Paketti kasassa ensimmäistä kertaa

7/20: Paketti kasassa ensimmäistä kertaa Ohjelmointi 1 / syksy 2007 7/20: Paketti kasassa ensimmäistä kertaa Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy 2007

Lisätiedot

Ohjelmointi 1 C#, kevät 2013, 2. tentti

Ohjelmointi 1 C#, kevät 2013, 2. tentti ITKP102 Ohjelmointi 1 C# 15.5.2013 1 / 6 Ohjelmointi 1 C#, kevät 2013, 2. tentti Tentaattori Antti-Jussi Lakanen Tässä tentissä saa olla mukana omia muistiinpanoja yhden arkin verran. Tentin valvojalla

Lisätiedot

Lausekielinen ohjelmointi II Ensimmäinen harjoitustyö

Lausekielinen ohjelmointi II Ensimmäinen harjoitustyö Lausekielinen ohjelmointi II Ensimmäinen harjoitustyö Yleistä Tehtävä: Tee Javalla LineBreaker-ohjelma tekstirivin sovittamiseen tekstialueelle riviä katkomalla. Lausekielinen ohjelmointi II -kurssin pakollinen

Lisätiedot

Ohjelmointi 2. Jussi Pohjolainen. TAMK» Tieto- ja viestintäteknologia , Jussi Pohjolainen TAMPEREEN AMMATTIKORKEAKOULU

Ohjelmointi 2. Jussi Pohjolainen. TAMK» Tieto- ja viestintäteknologia , Jussi Pohjolainen TAMPEREEN AMMATTIKORKEAKOULU Ohjelmointi 2 Jussi Pohjolainen TAMK» Tieto- ja viestintäteknologia Tietotyypeistä C++ - kielessä useita tietotyyppejä Kirjaimet: char, wchar_t Kokonaisluvut: short, int, long Liukuluvut: float, double

Lisätiedot