1 Tarkistetaan että kaikki toimii

Save this PDF as:
 WORD  PNG  TXT  JPG

Koko: px
Aloita esitys sivulta:

Download "1 Tarkistetaan että kaikki toimii"

Transkriptio

1 Harjoituksen lopputuloksena on laite joka morsettaa vilkuttamalla Arduinon sisäänrakennettua lediä. Haluttu morsesarja annetaan laitteeseen kytketyltä tietokoneelta. Harjoitusta varten tarvitaan pelkästään Arduino. 1 Tarkistetaan että kaikki toimii Arduinon ohjelmoinnissa on hyvä edetä mahdollisimman pienin askelin. Haluamme käyttää Arduinon sisäistä lediä morsetukseen, ensimmäinen askel lienee siis varmistaa että pystymme laittamaan ledin päälle ja pois. Arduinon sivuilta löytyykin blink-niminen esimerkki joka on hyvä lähtökohta. Esimerkki löytyy osoitteesta blink const int ledpin = LED_BUILTIN; void setup() pinmode(ledpin, OUTPUT); void loop() digitalwrite(ledpin, HIGH); delay(1000); delay(1000); Nyt jos lataat koodin Arduinoon, ledin pitäisi alkaa vilkkua. Mikäli näin käy, voidaan siirtyä seuraavan ongelman pariin. 1.1 Mitä tämä kaikki tarkoittaa? Esimerkissä määrittelemme ensimmäiseksi ledpin-nimisen muuttujan. Muuttujaan sijoitamme arvoksi Arduinon standardin mukaisen LED_BUILTINvakion. Tämän vakion arvo riippuu käytössä olevasta mikrokontrollerista (Uno, Teensy...) ja UNOn tapauksessa se on pinninumero 13. Tuon taikanumero 13:n voisi siis sijoittaa LED_BUILTIN-vakion paikalle, mutta LED_BUILTIN 1

2 kuvastaa paljon paremmin sisäänrakennetun ledin pinninumeroa kuin pelkkä 13. Seuraavaksi huomio kiinnittyy muuttujan edessä olevaan kahteen avainsanaan: const ja int. Int, eli integer tarkoittaa kokonaislukua. Arduinon kielessä, toisin kuin esimerkiksi pythonissa, jokaisella muuttujalla on oltava oma tyyppinsä. Muuttujan tyyppejä on esimerkiksi kokonaisluku, merkki, desimaaliluku, totuusarvo jne. Const taas tarkoittaa vakioarvoa. Tämän muuttujan arvo siis määritetään ohjelmointihetkellä ja sitä ei voida enää myöhemmin ohjelman suorituksen aikana muuttaa. Muuttujan määrittely vakioksi estää meitä vahingossa yrittämästä muuttaa sen arvoa ja toisaalta myös antaa kääntäjän tehdä sille erilaisia optimointeja liittyen tietoon, että muuttujan arvo ei tule koskaan muuttumaan. pinmode, digitalwrite ja delay ovat funktioita. pinmode kertoo mitä haluamme tehdä pinnille, tapauksessamme haluamme käyttää sitä ulostulona. digitalwrite asettaa halutulle pinnille halutun tilan, eli tapauksessamme kytkee ledille jännitteen päälle ja pois. delay taas odottaa tekemättä mitään halutun määrän millisekunteja. Esimerkissä myöskin määritetään kaksi funktiota: setup ja loop. Kyseiset funktiot ovat erikoisia Arduinon kannalta: setup funktio ajetaan automaattisesti joka kerta kun Arduinoon kytketään virrat. Setup-funktion ajamisen jälkeen Arduino ajaa loop-funktiota uudelleen ja uudelleen kunnes siitä katkaistaan virrat. Voit myös tehdä omia funktioita joiden avulla koodia pystyy jakamaan pienempiin palasiin. 1.2 Mistä tämän kaiken olisi voinut tietää? Ohjelmoinnissa hakukoneet ovat ystäviä: virheilmoituksen copy&paste Googleen tuottaa usein hyviä hakutuloksia käsillä olevaan ongelmaan. Myöskin "How to do x in arduino" tai "How does x work in arduino" ovat hyviä hakusanoja. Arduinon kieli on käytännössä C/++:aa, jolloin samat ohjeet loopeista, muuttujista ja muista perusasioista yleensä toimivat. Näitä kannattaa siis googlata myös jos arduino-spesifiä ohjetta ei löydy. Erittäin hyvä tietolähde on Arduinon referenssi: en/reference/homepage. Kyseiseltä sivustolta löytyy jokaisen Arduinon funk- 2

3 tion ja tietotyypin käyttöohje myös yllä mainittujen funktioiden ja tyyppien. Arduinon kielestä on myös olemassa oppaita. Esimerkki tällaisesta: playground.arduino.cc/uploads/main/arduino_notebook_v1-1.pdf Oppaassa on tarkemmin selitetty Arduinon ohjelmointia. 2 Tiedon säilöminen 2.1 Tietotyyppi Tällä hetkellä tiedämme, että ledimme on kunnossa. Seuraavaksi on siis vuorossa sen ohjaaminen. Haluamme että laitteemme toistaa sille annettua morsekoodia, eli kyseinen koodi on oltava jossakin tallessa. Voisimme tehdä ohjelman joka muuntaa yksittäisen kirjaimen morsekoodiksi, mutta yksinkertaisuuden vuoksi emme tee sellaista nyt. Tyydymme ratkaisuun jossa laite ottaa vastaan kolmenlaista morsekoodin osaa: lyhyttä vilautusta, pitkää vilautusta ja taukoa. Näitä voitaisiin kuvata vaikkapa kirjaimilla S - short L - long P - pause Morsekoodimme muodostuu edellä mainittujen "komentojen"jonoista. Tarvitsemme siis jonkinlaisen tavan säilöä monta asiaa peräkkäin. Yksi ratkaisu voisi olla taulukko kirjaimia tai kokonaislukuja. Merkkijonon, tuttavallisemmin tekstinpätkän, säilömiseen on Arduinossa olemassa String-tyyppi. Tämä tyyppi sopii tarkoitukseemme hyvin, joten valitaan mielummin se. 3

4 2.2 Muuttujan näkyvyys Alustetaan muuttuja sequence seuraavalla tavalla: const int ledpin = LED_BUILTIN; String sequence = "LSSSP"; void setup() pinmode(ledpin, OUTPUT); void loop() digitalwrite(ledpin, HIGH); delay(1000); delay(1000); Huomattavaa on, että alustamme muuttujan kaikkien funktioiden ulkopuolella. Muuttuja on tällöin ns. globaali muuttuja. Globaalia muuttujaa voi muuttaa ja lukea mistä tahansa funktiosta, huonona puolena muuttujaa voi muuttaa mistä paikasta tahansa ja isommassa projektissa tämä muodostuu ongelmaksi. Globaalin muuttujan vastakohta on lokaali muuttuja. Tällainen muuttuja luodaan jonkin funktion sisällä ja se on olemassa vain siellä. Globaaleja muuttujia tulisi käyttää vain jos on erillinen syy käyttää niitä. Tapauksemme jono on muuttuja joka on ohjelmassa keskeinen ja haluamme päästä siihen käsiksi kaikista funktioista, olkoot se siis globaali. 3 Itse morsetus Tässä kohtaa tiedämme että ledimme toimii ja meillä on haluttu morsekoodi tallessa. Seuraava vaihe on miettiä, miten kyseinen koodi muunnetaan ledin vilkkumiseksi. String-tyypistä saadaan helposti yksittäisiä kirjaimia ulos halutusta kohdasta ja kyseisen tekstin pituuskin saadaan tietää yhdellä komennolla. char kirjain = sequence[3]; 4

5 int pituus = sequence.length(); Järkevintä lieneekin siis kasata seuraavanlainen rakenne: 1. Määritetään globaali muuttuja joka kertoo missä kohtaa jonoa liikumme 2. Alustetaan muuttuja nollaksi. 3. Tarkistetaan mikä komento jonossa on tämänhetkisessä kohdassa 4. Vilautetaan lediä komennosta riippuva aika 5. Lisätään sijaintimuuttujaamme 1, eli siirrytään jonossa yhdellä eteenpäin 6. Tarkistetaan onko sijaintimme pidemmällä kuin jonon pää, eli olemmeko menneet liian pitkälle 7. jos näin on, sijoitetaan sijaintimuuttujan arvoksi taas jonon ensimmäinen alkio, eli 0 8. Siirrytään taas kohtaan 3 5

6 3.1 Toteutus const int ledpin = LED_BUILTIN; const int dot_duration = 300; String sequence = "LSSSP"; unsigned int sequence_pos = 0; void setup() pinmode(ledpin, OUTPUT); void loop() if (sequence[sequence_pos] == 'S') digitalwrite(ledpin, HIGH); else if (sequence[sequence_pos] == 'L') digitalwrite(ledpin, HIGH); delay(dot_duration*3); else if (sequence[sequence_pos] == 'P') delay(dot_duration*3); sequence_pos++; if (sequence_pos >= sequence.length()) sequence_pos = 0; 6

7 3.2 Ja selitys Lisäsimme dot_duration-vakion joka kertoo yhden nopean välähdyksen pituuden millisekunneissa. Pidemmän välähdyksen aika on tämän vakion moninkerta taas on parempi että koodissa on nimetty vakio taikanumeroiden sijaan. sequence_pos on globaali muuttuja jotta sen arvo säilyisi loop-funktion ajokertojen välillä. Kuten aikaisemmin todettu, Arduino ajaa loop-funktiota aina uudelleen ja uudelleen. Mikäli sequence_pos määritettäisiin loop-funktion sisällä, joka ajokerralla muuttuja luotaisiin uudelleen ja funktion lopussa tuhottaisiin. 4 Toimiikohan tämä? Ledin pitäisi nyt vilkkua halutunlaisesti. Toimivuuden varmistaminen tosin voi olla hieman hankalaa jos et ole varma, missä kohtaa jonoa tällä hetkellä liikutaan. Tähän ongelmaan voisi käyttää virtuaalisarjaporttia. void setup() Serial.begin(9600); void loop() Serial.println("Moikka!"); delay(1000); Koodin lataamisen jälkeen paina Arduinon ohjelman oikeassa yläkulmassa olevaa suurennuslasia päästäksesi serial monitor-nimiseen näkymään. Valitse avautuvan ikkunan oikeasta alakulmasta sama baudinopeus kuin Serial.beginkäskyn sisällä on annettu. (9600) Näytölle pitäisi nyt tulostua teksti "Moikka!" Toimimatonta koodia voi yrittää selvittää laittamalla tällaisia väliviestejä sopiviin väleihin. Jos jokin viesti jää tulostumatta, ohjelma ei koskaan pääse kyseiseen kohtaan. Myös muuttujien arvoja kannattaa tulostella joskus ne eivät ole ihan sitä mitä luulet niiden olevan. 7

8 Lisätään nyt koodiimme "väliaikatietoja." 4.1 Toteutus const int ledpin = LED_BUILTIN; const int dot_duration = 300; String sequence = "LSSSP"; unsigned int sequence_pos = 0; void setup() pinmode(ledpin, OUTPUT); Serial.begin(9600); void loop() Serial.print("Position "); Serial.print(sequence_pos); Serial.print(": "); if (sequence[sequence_pos] == 'S') Serial.println("Short"); digitalwrite(ledpin, HIGH); else if (sequence[sequence_pos] == 'L') Serial.println("Long"); digitalwrite(ledpin, HIGH); delay(dot_duration*3); else if (sequence[sequence_pos] == 'P') Serial.println("Pause"); delay(dot_duration*3); sequence_pos++; if (sequence_pos >= sequence.length()) 8 sequence_pos = 0;

9 4.2 Selitys Serial.print ja Serial.println ovat eri asioita! Println tulostaa loppuun vielä rivinvaihdon joten viestejä on mahdollista koostaa käyttäen näitä funktioita sekaisin. 5 Morsekoodin muuttaminen Ohjelmamme osaa nyt vilkuttaa lediä tekstijonomme perusteella. Eräs vaatimus oli vielä, että morsetettavaa koodia pitäisi pystyä muokkaamaan. Ominaisuus on hyvinkin helppo tehdä sarjaportilla. 5.1 Toteutus const int ledpin = LED_BUILTIN; const int dot_duration = 300; String sequence = "LSSSP"; unsigned int sequence_pos = 0; void setup() pinmode(ledpin, OUTPUT); Serial.begin(9600); void check_update() if (Serial.available() > 0) sequence = Serial.readStringUntil('\n'); Serial.println("Sequence updated!"); void loop() check_update(); Serial.print("Position "); 9

10 Serial.print(sequence_pos); Serial.print(": "); if (sequence[sequence_pos] == 'S') Serial.println("Short"); digitalwrite(ledpin, HIGH); else if (sequence[sequence_pos] == 'L') Serial.println("Long"); digitalwrite(ledpin, HIGH); delay(dot_duration*3); else if (sequence[sequence_pos] == 'P') Serial.println("Pause"); delay(dot_duration*3); sequence_pos++; if (sequence_pos >= sequence.length()) sequence_pos = 0; 5.2 Selitys Loimme uuden funktion, check_update:n ja kutsumme sitä aina loopfunktion alussa. Kyseinen funktio tarkistaa onko sarjaportissa mitään luettavaa. Jos on, luetaan sarjaportista merkkijono sequence-muuttujaan ja tulostetaan operaation onnistumisesta viesti. readstringuntil-funktio lukee merkkijonon mystiseen \n-merkkiin asti. Ky- 10

11 seinen merkki on rivinvaihto, eli normaalisti näkymätön merkki. Rivinvaihtomerkki lähetetään kunhan serial monitorin oikeasta alakulmasta on baudinopeuden viereisessä valikossa valittuna newline. 6 Monen asian tekeminen samaan aikaan Ohjelmamme täyttää tällä hetkellä sille annetut vaatimukset: morsetus tapahtuu tietokoneelta tulevien käskyjen mukaan. Jos vilkutettavaa morsekoodia vaihtaa kesken merkin näyttämisen, käskyn vaihtamisessa huomataan olevan viivettä. Tässä tilanteessa viiveellä ei ole juurikaan merkitystä, mutta mitäpä jos meidän pitäisi samaan aikaan vilkutella lediä ja vaikkapa lukea jonkin anturin arvoa? Viiveen ohjelmaamme aiheuttaa delay-funktioiden käyttö. Ohjelmassamme odotetaan ajan kuluvan ja samalla ei tehdä mitään. Arduinossa ei ole tukea moniajolle jossa useampaa ohjelmaa voitaisiin ajaa samaan aikaan, eli ainoa vaihtoehto on keksiä tapa eliminoida delayt. 6.1 Periaate Emme voi tehdä montaa asiaa samaan aikaan, mutta voimme tehdä monta asiaa nopeasti peräjälkeen. Jos haluamme pitää lediä sekunnin päällä, voimme laittaa sen päälle ja odottaa sekunnin kuten teemme nyt. Toinen tapa on tallentaa ajanhetki jolloin ledi laitettiin päälle ja ottaa se pois päältä kun huomataan että aikaa on kulunut sekunti. Arduinossa meitä auttaa millisfunktio. Funktio palauttaa millisekunteina ajan ohjelman käynnistymisestä. 11

12 Esimerkkinä blinkki ilman delay:ta. const int blinkinterval = 1000; const int ledpin = LED_BUILTIN; int ledstate = LOW; unsigned long previoustime = millis(); void setup() pinmode(ledpin, OUTPUT); void loop() long time_since_blink = millis() - previoustime; if (time_since_blink >= blinkinterval) previoustime = millis(); if (ledstate == LOW) ledstate = HIGH; else ledstate = LOW; digitalwrite(ledpin, ledstate); 1. Määritetään muuttuja ledin päälläololle. ledstate 2. Määritetään muuttuja ajanhetkelle jolloin ledin tilaa viimeksi muutettiin. previoustime 3. Loop-funktiossa lasketaan joka kerta erotus nykyisen ajanhetken ja viimeisen ledin tilan muutoshetken välillä. 4. Jos tämä erotus on suurempi kuin haluttu ledin vilkkumisnopeus: Asetetaan nykyinen ajanhetki ledin viimeiseksi muutoshetkeksi Muutetaan ledin tilan kertova muuttuja vastakkaiseen tilaan. 5. Asetetaan ledin tila vastaamaan muuttujan kertomaa tilaa 12

13 6. Toistetaan kohdasta 3 eteenpäin 6.2 Sovellutus Jotta pääsemme eroon delay-funktioista, meidän pitää siis keksiä tapa kertoa, pitäisikö ledin olla tällä hetkellä päällä vai pois päältä. Esimerkiksi pitkän vilautuksen tapauksessa Ledin pitäisi olla päällä kolmen dot_duration:in ajan. Tämän jälkeen ledin pitäisi olla pois päältä yhden dot_durationin verran. Tämän jälkeen voidaan siirtyä seuraavaan kohtaan jonossamme. Ohjelmointia varten ongelma lienee helpointa ratkaista seuraavalla tavalla: 13

14 Onko jo aika vaihtaa seuraavaan kohtaan? Eli onko aikaa kulunut ledin päälläoloaika + pimeänäoloaika Ei On Onko aikaa kulunut vähemmän kuin ledin päälläoloajan pitäisi olla? Siirry seuraavaan kohtaan jonossa Ei On Ledin pitäisi olla pois päältä Ledi päälle Toteutus Funktiomme voisi näyttää vaikkapa seuraavanlaiselta: 14

15 unsigned long sequence_start = millis(); int apply_next_state() sequence_pos++; if (sequence_pos >= sequence.length()) sequence_pos = 0; sequence_start = millis(); if (sequence[sequence_pos] == 'S' sequence[sequence_pos] == 'L') return HIGH; else return LOW; int get_led_state() long time_elapsed = millis() - sequence_start; if (sequence[sequence_pos] == 'S') if (time_elapsed > dot_duration*2) return apply_next_state(); else if (time_elapsed <= dot_duration) return HIGH; else return LOW; else if (sequence[sequence_pos] == 'L') if (time_elapsed > dot_duration*4) return apply_next_state(); else if (time_elapsed <= dot_duration*3) return HIGH; else return LOW; else if (time_elapsed > dot_duration*3) return apply_next_state(); else return LOW; void loop() check_update(); digitalwrite(ledpin, get_led_state()); 15

16 6.2.2 Selitys Olemme tehneet kaksi omaa funktiota. int get_led_state() Palauttaa missä tilassa ledin pitäisi olla tällä hetkellä. (Huomaa int paluutyyppi) int apply_next_state() Etenee jonossa yhden käskyn ja kertoo missä tilassa ledin pitäisi olla. get_led_state-funktiossa huomataan, että if-lauseen sisältöä ei tarvitse laittaa aaltosulkeiden sisään jos sisältö on vain yksi rivi. Muuten toimintalogiikka on sama kuin ylempänä olevassa diagrammissa. Aluksi tarkistetaan pitäisikö jo siirtyä seuraavaan tilaan, jos ei, annetaan ledille arvo HIGH tai LOW. Loop-funktiossa ledi asetetaan joka kerta get_led_state-funktion määräämään tilaan. Näiden kahden funktion lisäksi teimme myös kolmannen funktion: apply_next_state. Tämä funktio liikkuu jonossa eteenpäin ja palaa jonon alkuun jos tarvis. Funktio myös palauttaa pitäisikö ledin olla päällä vai ei. Jos seuraava tila sattuu olemaan tauko, pitäisi ledin pysyä pois päältä. Funktion sisällä olevassa if-lauseessa käytetään -operaattoria. Tutki Arduinon referenssistä, mitä operaatio tarkoittaa! 16

Arduinon ohjelmointi. Sami-Petteri Pukkila. 6. helmikuuta 2017

Arduinon ohjelmointi. Sami-Petteri Pukkila. 6. helmikuuta 2017 Sami-Petteri Pukkila sami-petteri.pukkila@aalto.fi Mistä kaikki lähtee liikkeelle? Ennen kuin alat ohjelmoimaan, mieti mitä projektissa kannattaa tehdä. Jaa projekti pieniin osaprojekteihin ja kehitä näille

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

ELEC-A4010 Sähköpaja Arduinon ohjelmointi. Peter Kronström

ELEC-A4010 Sähköpaja Arduinon ohjelmointi. Peter Kronström ELEC-A4010 Sähköpaja Arduinon ohjelmointi Peter Kronström Arduinon rakenne 5 voltin regulaattori 16 MHz kide USB-sarjamuunnin ATmega328 -mikrokontrolleri 20 I/O-pinniä, joista 14 digitaalista ja 6 analogista

Lisätiedot

Tällä ohjelmoitavalla laitteella saat hälytyksen, mikäli lämpötila nousee liian korkeaksi.

Tällä ohjelmoitavalla laitteella saat hälytyksen, mikäli lämpötila nousee liian korkeaksi. Lämpötilahälytin Tällä ohjelmoitavalla laitteella saat hälytyksen, mikäli lämpötila nousee liian korkeaksi. Laite koostuu Arduinokortista ja koekytkentälevystä. Hälyttimen toiminnat ohjelmoidaan Arduinolle.

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

Liikennevalot. Arduino toimii laitteen aivoina. Arduinokortti on kuin pieni tietokone, johon voit ohjelmoida toimintoja.

Liikennevalot. Arduino toimii laitteen aivoina. Arduinokortti on kuin pieni tietokone, johon voit ohjelmoida toimintoja. Liikennevalot Laite koostuu Arduinokortista ja koekytkentälevystä. Liikennevalon toiminnat ohjelmoidaan Arduinolle. Ledit ja muut komponentit asetetaan koekytkentälevylle. Arduino toimii laitteen aivoina.

Lisätiedot

LUMA SUOMI -kehittämisohjelma LUMA FINLAND -utvecklingsprogram LUMA FINLAND development programme Ohjelmointia Arduinolla

LUMA SUOMI -kehittämisohjelma LUMA FINLAND -utvecklingsprogram LUMA FINLAND development programme Ohjelmointia Arduinolla Ohjelmointia Arduinolla Kyösti Blinnikka, Olarin koulu ja lukio LUMA-keskus Aalto Mikä on Arduino? Open Source Electronics Prototyping Platform Arduino on avoimeen laitteistoon ja ohjelmistoon perustuva

Lisätiedot

////// VENETIETO.FI \\\\\\ //// Autopilotti 2014 \\\\ //-PID säätimellä. #include <EEPROM.h> #include <SoftwareSerial.h>

////// VENETIETO.FI \\\\\\ //// Autopilotti 2014 \\\\ //-PID säätimellä. #include <EEPROM.h> #include <SoftwareSerial.h> ////// VENETIETO.FI \\\\\\ //// Autopilotti 2014 \\\\ //-PID säätimellä #include #include SoftwareSerial gps(0, 1); // RX, TX -pinnit const int buttonpinset = 2; // painonäppäimen

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

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

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

Arduinon ohjelmointi. Sami-Petteri Pukkila. 1. helmikuuta 2016

Arduinon ohjelmointi. Sami-Petteri Pukkila. 1. helmikuuta 2016 Sami-Petteri Pukkila sami-petteri.pukkila@aalto.fi 1. helmikuuta 2016 Ohjelman rakenne # include / / Matemaattisia funktioita const i n t ledpin = 13; / / Merkkivalo i n t sensorpin = 4; / /

Lisätiedot

Arduinon ohjelmointi. Sami-Petteri Pukkila. 26. syyskuuta 2016

Arduinon ohjelmointi. Sami-Petteri Pukkila. 26. syyskuuta 2016 Sami-Petteri Pukkila sami-petteri.pukkila@aalto.fi 26. syyskuuta 2016 Arduino-ohjelman rakenne int ledpin = 13; void setup () pinmode ( ledpin, OUTPUT ); void loop () digitalwrite ( ledpin, HIGH ); delay

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

Ohjelmoi Arduino Grovella

Ohjelmoi Arduino Grovella Ohjelmoi Arduino Grovella Tomi Hukkalainen ja Kati Sormunen 25.9.2016 2016 Innokas 1 Tarvikkeet 25.9.2016 2016 Innokas 2 Tarvikkeet Näissä harjoituksissa käytetään Seeduino Lotus piirilevyä, jossa käytetään

Lisätiedot

Tarkempaa tietoa saat myös kurssin GitHub-alustalta. Sen wiki-osio on kattava ja yksityiskohtainen, kun tämä vihkonen taas on vain ensihätään.

Tarkempaa tietoa saat myös kurssin GitHub-alustalta. Sen wiki-osio on kattava ja yksityiskohtainen, kun tämä vihkonen taas on vain ensihätään. Sisällys Johdanto... 3 Ohjeita materiaalin käyttöön... 3 Mikä on arduino?... 4 Arduino-alustan pinnijaottelu... 4 Koodin rakenne... 8 Pinnin määrittely... 9 Muuttujat... 10 Tyypillisimmät ohjelmointilauseet...

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

////// VENETIETO.FI \\\\\\ //// Autopilotti 2014 \\\\ #include <EEPROM.h> #include <SoftwareSerial.h> SoftwareSerial gps(10, 0); // RX, TX -pinnit

////// VENETIETO.FI \\\\\\ //// Autopilotti 2014 \\\\ #include <EEPROM.h> #include <SoftwareSerial.h> SoftwareSerial gps(10, 0); // RX, TX -pinnit ////// VENETIETO.FI \\\\\\ //// Autopilotti 2014 \\\\ #include #include SoftwareSerial gps(10, 0); // RX, TX -pinnit const int buttonpinset = 2; // painonäppäimen pinni const

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

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

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

Arduino. Kimmo Silvonen (X)

Arduino. Kimmo Silvonen (X) Arduino Kimmo Silvonen (X) Arduino, toimiva oma versio (osat Pajalla) ATmega 328P IC DIL-kotelossa (DIP) päältä katsottuna, Arduinon pinnit +5 V TX RX DTR FT232 10k 22p 22p Reset 1 RX D0 TX D1 D2 PWM D3

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

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

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

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

Ohjelmoinnin perusteet Y Python

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

Lisätiedot

14. Hyvä ohjelmointitapa 14.1

14. Hyvä ohjelmointitapa 14.1 14. Hyvä ohjelmointitapa 14.1 Yleistä Ohjelman elinkaari ei tyypillisesti pääty sen toteuttamiseen; ohjelmaa voidaan käyttää ja ylläpitää jopa vuosikymmeniä. Jotta koodin muuttaminen on mahdollista, sen

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

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

Metodien tekeminen Javalla

Metodien tekeminen Javalla 1 Metodien tekeminen Javalla Mikä metodi on? Metodin syntaksi Metodi ja sen kutsuminen Parametreista Merkkijonot ja metodi Taulukot ja metodi 1 Mikä metodi on? Metodilla toteutetaan luokkaan toiminnallisuutta.

Lisätiedot

Ohjelmoinnin perusteet Y Python

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

Lisätiedot

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

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

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CS-A1111 4.10.2017 CS-A1111 Ohjelmoinnin peruskurssi Y1 4.10.2017 1 / 23 Mahdollisuus antaa luentopalautetta Luennon aikana voit kirjoittaa kommentteja ja kysymyksiä sivulle

Lisätiedot

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

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

Lisätiedot

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

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

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

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

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 2014-2015. Harjoitus 7 Vastaukset

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

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

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

11. Javan valintarakenteet 11.1

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

Lisätiedot

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

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

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

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

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

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

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

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

13. Hyvä ohjelmointitapa (osa 1) 13.1

13. Hyvä ohjelmointitapa (osa 1) 13.1 13. Hyvä ohjelmointitapa (osa 1) 13.1 Yleistä Ohjelman elinkaari ei tyypillisesti pääty sen toteuttamiseen tarvitaan ylläpitoa. Jotta koodin muuttaminen on mahdollista, on sen oltava myös muidenkin kuin

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

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

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

11. Javan valintarakenteet 11.1

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

Lisätiedot

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

AALTO-VALVONTALAITE TST5102

AALTO-VALVONTALAITE TST5102 AALTO-VALVONTALAITE TST5102 KONFIGUROINTI- JA KÄYTTÖOPAS SISÄLLYSLUETTELO 1. JOHDANTO... 3 2. VALVONTALAITTEEN ASENNUS... 3 3. VALVONTALAITTEEN KONFIGUROINTI HYPERTERMINAL-OHJELMALLA... 3 3.1 Valaisimien

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

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

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

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

17. Javan omat luokat 17.1

17. Javan omat luokat 17.1 17. Javan omat luokat 17.1 Sisällys Application Programming Interface (API). Pakkaukset. Merkkijonoluokka String. Math-luokka. Kääreluokat. 17.2 Java API Java-kielen Application Programming Interface (API)

Lisätiedot

Java-kielen perusteita

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

Lisätiedot

Taulukot. Jukka Harju, Jukka Juslin 2006 1

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

Lisätiedot

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

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

Lisätiedot

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

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

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 8.2.2010 T-106.1208 Ohjelmoinnin perusteet Y 8.2.2010 1 / 38 Debuggeri Tyypillinen tilanne: ohjelma on kirjoitettu, Python-tulkki ei valita virheistä, mutta ohjelma

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

Toinen harjoitustyö. ASCII-grafiikkaa 2017

Toinen harjoitustyö. ASCII-grafiikkaa 2017 Toinen harjoitustyö ASCII-grafiikkaa 2017 Yleistä Tehtävä: tee Javalla ASCII-merkkeinä esitettyä grafiikkaa käsittelevä ASCIIArt17-ohjelma omia operaatioita ja taulukoita käyttäen. Työ tehdään pääosin

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

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

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

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

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

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

Lisätiedot

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

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

Lisätiedot

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

Ohjelmoinnin perusteet Y Python

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

Lisätiedot

20. Javan omat luokat 20.1

20. Javan omat luokat 20.1 20. Javan omat luokat 20.1 Sisällys Application Programming Interface (API). Pakkaukset. Merkkijonoluokka String. Math-luokka. Kääreluokat. 20.2 Java API Java-kielen Application Programming Interface (API)

Lisätiedot

8. Näppäimistöltä lukeminen 8.1

8. Näppäimistöltä lukeminen 8.1 8. Näppäimistöltä lukeminen 8.1 Sisällys Arvojen lukeminen näppäimistöltä Java-kielessä. In-luokka. In-luokka, käännös ja tulkinta Scanner-luokka. 8.2 Yleistä Näppäimistöltä annettujen arvojen (syötteiden)

Lisätiedot

Sisällys. 20. Javan omat luokat. Java API. Pakkaukset. java\lang

Sisällys. 20. Javan omat luokat. Java API. Pakkaukset. java\lang Sisällys 20. Javan omat luokat Application Programming Interface (API). Pakkaukset. Merkkijonoluokka String. Math-luokka. Kääreluokat. 20.1 20.2 Java API Java-kielen Application Programming Interface (API)

Lisätiedot

CEM DT-3353 Pihtimittari

CEM DT-3353 Pihtimittari CEM DT-3353 Pihtimittari Sivu 1/5 CEM DT-3353 Pihtimittari Ongelma Mittarin ohjelmisto ilmoittaa NO DATA vaikka tiedonsiirtokaapeli on kytketty tietokoneen ja mittarin välille, mittarissa on virta päällä

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

Se mistä tilasta aloitetaan, merkitään tyhjästä tulevalla nuolella. Yllä olevassa esimerkissä aloitustila on A.

Se mistä tilasta aloitetaan, merkitään tyhjästä tulevalla nuolella. Yllä olevassa esimerkissä aloitustila on A. Tehtävä. Tämä tehtävä on aineistotehtävä, jossa esitetään ensin tehtävän teoria. Sen jälkeen esitetään neljä kysymystä, joissa tätä teoriaa pitää soveltaa. Mitään aikaisempaa tehtävän aihepiirin tuntemusta

Lisätiedot

Loppukurssin järjestelyt C:n edistyneet piirteet

Loppukurssin järjestelyt C:n edistyneet piirteet C! Loppukurssin järjestelyt C:n edistyneet piirteet 30.3.2017 Ohjelmassa Ohjelmontitehtävän järjestelyt Tietokonetentin järjestelyt Esikääntäjä Parametrilistat Funktio-osoittimet Kunniamainintoja Kuura

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

Ohjelmoinnin peruskurssi Y1

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

Lisätiedot

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

Ohjelmoinnin peruskurssi Y1

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

Lisätiedot

Kääreluokat (oppikirjan luku 9.4) (Wrapper-classes)

Kääreluokat (oppikirjan luku 9.4) (Wrapper-classes) Kääreluokat (oppikirjan luku 9.4) (Wrapper-classes) Kääreluokista Javan alkeistietotyypit ja vastaavat kääreluokat Autoboxing Integer-luokka Double-luokka Kääreluokista Alkeistietotyyppiset muuttujat (esimerkiksi

Lisätiedot

Taitaja semifinaali 2010, Iisalmi Jääkaapin ovihälytin

Taitaja semifinaali 2010, Iisalmi Jääkaapin ovihälytin Taitaja semifinaali 2010, Iisalmi Jääkaapin ovihälytin Ohjelmointitehtävänä on laatia ohjelma jääkaapin ovihälyttimelle. Hälytin toimii 3 V litium paristolla ja se sijoitetaan jääkaapin sisälle. Hälyttimen

Lisätiedot