-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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Lisätiedot

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

Harjoitustyö: virtuaalikone

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

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 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

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

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

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

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

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

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

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

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

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

Tietueet. Tietueiden määrittely

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

Lisätiedot

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

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

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

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

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

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

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

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

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

Lisätiedot

Harjoitus 5 (viikko 48)

Harjoitus 5 (viikko 48) Moni tämän harjoituksen tehtävistä liittyy joko suoraan tai epäsuorasti kurssin toiseen harjoitustyöhön. Harjoitustyö edistyy sitä paremmin, mitä enemmän tehtäviä ratkaiset. Mikäli tehtävissä on jotain

Lisätiedot

// Tulostetaan double-tyyppiseen muuttujaan "hinta" tallennettu // kertalipun hinta ja vaihdetaan riviä. System.out.printf("%.1f euros.

// Tulostetaan double-tyyppiseen muuttujaan hinta tallennettu // kertalipun hinta ja vaihdetaan riviä. System.out.printf(%.1f euros. Lue kukin tehtävänanto huolellisesti ja kokonaisuudessaan ennen kuin aloitat vastaamisen. Kustakin tehtävästä voi saada 0 6 pistettä. Tentin läpipääsyraja on 12 / 24 pistettä. Ratkaisut palautetaan WETO-järjestelmään

Lisätiedot

Metropolia ammattikorkeakoulu 05.02.2015 TI00AA43-3004: Ohjelmointi Kotitehtävät 3

Metropolia ammattikorkeakoulu 05.02.2015 TI00AA43-3004: Ohjelmointi Kotitehtävät 3 : http://users.metropolia.fi/~pasitr/2014-2015/ti00aa43-3004/kt/03/ratkaisut/ Tehtävä 1. (1 piste) Tee ohjelma K03T01.cpp, jossa ohjelmalle syötetään kokonaisluku. Jos kokonaisluku on positiivinen, niin

Lisätiedot

Ohjelmassa on käytettävä funktiota laskeparkkimaksu laskemaan kunkin asiakkaan maksu. Funktio floor pyöristää luvun lähimmäksi kokonaisluvuksi.

Ohjelmassa on käytettävä funktiota laskeparkkimaksu laskemaan kunkin asiakkaan maksu. Funktio floor pyöristää luvun lähimmäksi kokonaisluvuksi. Tehtävä 24. Kallioparkki veloittaa 2 euroa kolmelta ensimmäiseltä pysäköintitunnilta. Yli kolmen tunnin pysäköinnistä veloitetaan lisäksi 0.5 euroa jokaiselta yli menevältä tunnilta. Kuitenkin maksimiveloitus

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

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

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

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

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

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

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 12. huhtikuuta 2019 Tee kukin tehtävä omalle konseptiarkille. Noudata ohjelmointitehtävissä kurssin koodauskäytänteitä. Yksi A4-kokoinen lunttilappu

Lisätiedot

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

Perinteiset tietokoneohjelmat alkavat pääohjelmasta, c:ssä main(), jossa edetään rivi riviltä ja käsky käskyltä. TIETOKONEOHJELMIEN RAKENNE Perinteiset tietokoneohjelmat alkavat pääohjelmasta, c:ssä main(), jossa edetään rivi riviltä ja käsky käskyltä. Teollisuusautomaation ohjelmiin on lainattu runsaasti perinteisen

Lisätiedot

Harjoitus 2 (viikko 45)

Harjoitus 2 (viikko 45) Mikäli tehtävissä on jotain epäselvää, laita sähköpostia vastuuopettajalle (jorma.laurikkala@uta.fi). Muista lisätä static-määre operaatioidesi otsikoihin, jotta ohjelmasi kääntyvät. Muista noudattaa hyvän

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

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

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

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

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

Harjoitus 4 (viikko 47)

Harjoitus 4 (viikko 47) Kaikki tämän harjoituksen tehtävät liittyvät joko suoraan tai epäsuorasti kurssin toiseen harjoitustyöhön. Saa hyvän alun harjoitustyön tekoon, kun ratkaiset mahdollisimman monta tehtävää. Mikäli tehtävissä

Lisätiedot

Ohjausjärjestelmien jatkokurssi. Visual Basic vinkkejä ohjelmointiin

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

Lisätiedot

7. Näytölle tulostaminen 7.1

7. Näytölle tulostaminen 7.1 7. Näytölle tulostaminen 7.1 Sisällys System.out.println- ja System.out.print-operaatiot. Tulostus erikoismerkeillä. Edistyneempää tulosteiden muotoilua. 7.2 Tulostusoperaatiot System.out.println-operaatio

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

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

Chapel. TIE Ryhmä 91. Joonas Eloranta Lari Valtonen

Chapel. TIE Ryhmä 91. Joonas Eloranta Lari Valtonen Chapel TIE-20306 Ryhmä 91 Joonas Eloranta Lari Valtonen Johdanto Chapel on Amerikkalaisen Cray Inc. yrityksen kehittämä avoimen lähdekoodin ohjelmointikieli. Chapel on rinnakkainen ohjelmointikieli, joka

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

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

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

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

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

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

Apuja ohjelmointiin» Yleisiä virheitä

Apuja ohjelmointiin» Yleisiä virheitä Apuja ohjelmointiin» Yleisiä virheitä Ohjelmaa kirjoittaessasi saattaa Visual Studio ilmoittaa monenlaisista virheistä "punakynällä". Usein tämä johtuu vain siitä, että virheitä näytetään vaikket olisi

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

Kirjoita oma versio funktioista strcpy ja strcat, jotka saavat parametrinaan kaksi merkkiosoitinta.

Kirjoita oma versio funktioista strcpy ja strcat, jotka saavat parametrinaan kaksi merkkiosoitinta. Tehtävä 63. Kirjoita oma versio funktiosta strcmp(),joka saa parametrinaan kaksi merkkiosoitinta. Tee ohjelma, jossa luetaan kaksi merkkijonoa, joita sitten verrataan ko. funktiolla. Tehtävä 64. Kirjoita

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

Ohjelmoinnin perusteet Y Python

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

Lisätiedot

Plagioinnin tunnistaminen lähdekielisistä ohjelmista

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

Lisätiedot

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

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

Harjoitus 6 (viikko 42)

Harjoitus 6 (viikko 42) Nämä ovat kurssin viimeiset harjoitukset. Hyväksytyistä ratkaisuista ja läsnäoloista kerättyjen pisteiden summan tulee olla vähintään 40 % ( pistettä) tehtävien ja läsnäolopisteiden kokonaislukumäärien

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

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

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

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

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

Lisätiedot

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

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

Lisätiedot

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

13 Operaattoreiden ylimäärittelyjä

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

Lisätiedot

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

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

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

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

Harjoitus 6. Käytä String-luokasta vain charat- ja length-operaatioita.

Harjoitus 6. Käytä String-luokasta vain charat- ja length-operaatioita. Nämä ovat kurssin viimeiset harjoitukset. Hyväksytyistä ratkaisuista ja läsnäoloista kerättyjen pisteiden summan tulee olla vähintään 40 % ( pistettä) tehtävien ja läsnäolopisteiden kokonaislukumäärien

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 3.2.2010 T-106.1208 Ohjelmoinnin perusteet Y 3.2.2010 1 / 36 Esimerkki: asunnon välityspalkkio Kirjoitetaan ohjelma, joka laskee kiinteistönvälittäjän asunnon

Lisätiedot

Harjoitus 5 (viikko 41)

Harjoitus 5 (viikko 41) 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ä, käytä

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

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

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

Lisätiedot

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

ELEC-A4010 Sähköpaja Arduinon ohjelmointi. Jukka Helle

ELEC-A4010 Sähköpaja Arduinon ohjelmointi. Jukka Helle ELEC-A4010 Sähköpaja Arduinon ohjelmointi Jukka Helle Arduino UNO R3 6-20VDC 5VDC muunnin 16 MHz kideoskillaattori USB-sarjamuunnin (ATmega16U2) ATmega328 -mikro-ohjain 14 digitaalista I/O väylää 6 kpl

Lisätiedot

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

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

Lisätiedot