Ohjelmoinnin peruskurssi Y1
Transcription
Ohjelmoinnin peruskurssi Y1
Ohjelmoinnin peruskurssi Y1 CSE-A1111 7.9.2015 CSE-A1111 Ohjelmoinnin peruskurssi Y1 7.9.2015 1 / 24 Esittelyluento: luennon jälkeen I Tiedät, miten tämä kurssi on järjestetty ja mitä sinun pitää tehdä, jotta saisit kurssin suoritetuksi. I Tiedät, mitä tarkoitetaan ohjelmoinnilla. I Osaat kirjoittaa yksinkertaisen tietokoneohjelman. CSE-A1111 Ohjelmoinnin peruskurssi Y1 7.9.2015 2 / 24 Mihin teekkari / diplomi-insinööri tarvitsee ohjelmointia? I Pienten laskentasovellusten kirjoittaminen. I Mittauslaitteen tms. ohjaaminen. I Ohjelmointitaidosta on apua myös matriisilaskenta- ja taulukkolaskentaohjelmia käytettäessä. I Pienikin ohjelmointitaito auttaa valmiiden ohjelmien toiminnan opettelussa ja ymmärtämisessä. I Työelämässä paljon tehtäviä niille, joilla on sekä jonkin insinöörialan tuntemus että hyvä ohjelmointitaito. CSE-A1111 Ohjelmoinnin peruskurssi Y1 7.9.2015 3 / 24 Esimerkki harjoitustyöstä, jossa tarvitaan ohjelmointia I I I Kurssi: ENE-58.129 Rakennusten energiatalous (aikaisemmalta vuodelta) Annettu: Tiedot rakennuksen koosta, rakenteesta, sijainnista, lämmitysjärjestelmästä, eri asioiden kustannuksista jne. Tehtävä (osa harjoitustyöstä): Hae optimaalinen yhdistelmä seuraaville viidelle parametrille 1. 2. 3. 4. 5. seinien eristyspaksuus yläpohjan eristyspaksuus ikkunoiden U-arvo lämpöpumpun kompressorin nimellisteho höyrystymislämpötila siten, että seinämien lämpöeristysten, ikkunoiden ja lämmöntuottojärjestelmän muodostaman investoinnin sekä rakennuksen lämmityskustannusten yhteensä muodostamat elinkaarikustannukset saavat minimiarvon tarkasteluaikana ja rakennus on energiatehokkuusluokassa A. CSE-A1111 Ohjelmoinnin peruskurssi Y1 7.9.2015 4 / 24 Tämä kurssi I Tavoitteena on oppia ohjelmoinnin perusasiat. Aikaisempi ohjelmointitaito ei ole tarpeen. I Ohjelmointikielenä käytetään Pythonia. I Kurssi keskittyy perusasioihin. Kurssin jälkeen voi jatkaa jollekin seuraavista kursseista: I I I I I CSE-A1121 Ohjelmoinnin peruskurssi Y2 CSE-A1130 Tietotekniikka sovelluksissa CSE-A1141 Tietorakenteet ja algoritmit Y ELEC-A7100 C-ohjelmoinnin peruskurssi tai vaikka suorittaa ne kaikki. I Halukkaat voivat tämän kurssin jälkeen suorittaa tietotekniikan sivuaineopinnot, johon kurssit CSE-A1121 ja CSE-A1141 kuuluvat. CSE-A1111 Ohjelmoinnin peruskurssi Y1 7.9.2015 5 / 24 Yleistä I Henkilökunta I I I Tiedotus I I I Luennoija Kerttu Pollari-Malmi, vastaanotot keskiviikkoisin klo 12:00–13:00 tietotekniikan talon huoneessa B209. 17 tuntiopettajaa. Kurssin kotisivu MyCourses-järjestelmässä (Huom! valitse syksyn kurssin sivu) Keskusteluryhmä Piazzassa https://piazza.com/aalto.fi/fall2015/csea1111/home. Mahdollisuus antaa palautetta luennoista ja harjoitustehtävistä Goblinissa. CSE-A1111 Ohjelmoinnin peruskurssi Y1 7.9.2015 6 / 24 Ilmoittatuminen I Ilmoittaudu kurssille WebOodilla. I Ilmoittautuminen luennolle tai kurssille, ei harjoitusryhmiin. I Kurssille ei voi ilmoittautua sähköpostitse. CSE-A1111 Ohjelmoinnin peruskurssi Y1 7.9.2015 7 / 24 Opetusmuodot I Luennot I I I I Harjoitukset, joissa opiskelijat ratkaisevat harjoitustehtäviä tietokoneella ja assistentit kiertävät neuvomassa. I I I ma 12-14 ja ke 14-16 aluksi Aalto (A) -salissa, myöhemmin B-salissa. Ei luentoja 19.–21.10. Viimeinen luento 11.11. 17 ryhmää viikossa Tietotekniikan talon salissa T7, ajat kurssin MyCourses-sivulla. Osanotto ei ole pakollista eikä siitä saa lisäpisteitä. Tehtävät ovat pakollisia, mutta niitä voi palauttaa myös netin kautta. Oppimateriaali I I I Opetusmoniste (MyCourses-sivulla) Perusteellisempaa materiaalia haluaville suositellaan Gaddis: Starting Out with Python, 2nd Ed tai 3rd Ed., Pearson. Lisäksi käytettävissä kalvot perusasioista. CSE-A1111 Ohjelmoinnin peruskurssi Y1 7.9.2015 8 / 24 Pakolliset osasuoritukset I Tentti I I I I Harjoitustehtävät I I I I 9 kierrosta, joista 8 ensimmäistä pakollista. Palautetaan netin kautta automaattisille tarkastajalle (Goblin). Jos haluaa harjoitustehtävistä vähintään arvosanan 3, on myös viimeisestä kierroksesta saatava minimipisteet. Vapaaehtoiset lisätehtävät (Mastery Grids – MG) I I I Perustuu opetusmonisteeseen ja harjoitustehtäviin. Ensimmäinen mahdollisuus ti 1.12. klo 17:00–20:00. TENTTIIN ILMOITTAUTUMINEN ON PAKOLLISTA. Ilmoittautumisaika päättyy viikko ennen tenttiä. Näiden avulla voit harjoitella lisää kurssin asioita. Jos tekee vähintään 15 MG-tehtävää, saa 200 lisäpistettä harjoitustehtäviin (vastaa noin yhden tavallisen ohjelmointitehtävän pisteitä). Kurssiarvosana on tenttiarvosanan ja harjoitusarvosanan keskiarvo, jos molemmat osasuoritukset on hyväksytty. CSE-A1111 Ohjelmoinnin peruskurssi Y1 7.9.2015 9 / 24 Pakolliset osasuoritukset, jatkuu I Millaisia harjoitustehtäviä kurssilla on? I I I I Pikkutehtäviä, joissa rakennetaan tehdään ohjelmaa valmiiksi annetuista osista tai katsotaan, mitä ohjelmaa ajettaessa tietokoneen sisällä tapahtuu. Varsinaisia ohjelmointitehtäviä Vapaaehtoiset tehtävät muistuttavat pikkutehtäviä, ja sisältävät lisäksi visailuja. Paikkausmahdollisuudet I I Rästitentit. Harjoitustehtävien rästikierros. CSE-A1111 Ohjelmoinnin peruskurssi Y1 7.9.2015 10 / 24 Tarvittavat ATK-tunnukset I Gobliniin kirjautumiseen tarvitaan Aalto-yliopiston Weblogin-tunnus. Jos et voi jostain syystä saada vielä tunnusta (esim. jatko-opiskelija, jonka jatko-opintohakemusta ei ole virallisesti vielä hyväksytty), lähetä sähköpostia luennoijalle Goblin-tunnuksen saamiseksi. I Ensimmäisellä kerralla kannattaa luoda itselleen oma tunnus ja salasana Gobliniin. Näin Gobliniin pääsee myös silloin, jos Aalto-tunnuksella kirjautuminen ei onnistu. I Kurssin keskusteluryhmään luodaan tunnus Aalto-sähköpostiosoitteen avulla. Jos et voi saada Aalto-sähköpostiosoitetta, lähetä sähköpostia luennoijalle, joka voi liittää sinut keskusteluryhmään jollain toisella sähköpostiosoitteella. CSE-A1111 Ohjelmoinnin peruskurssi Y1 7.9.2015 11 / 24 Yhteistyö harjoitustehtävissä I Tehtävien ratkaisuista saa keskustella muiden opiskelijoiden kanssa, mutta jokainen kirjoittaa oman koodinsa itse. I Kaveria saa neuvoa, mutta valmista tai lähes valmista ratkaisua ei saa luovuttaa kaverille. I Keskustelu tai neuvonta ei saa olla niin yksityiskohtaista, että molemmilla ohjelmissa täsmälleen samat käskyt samassa järjestyksessä. I Opetusmonisteessa, luennoilla ja oppikirjassa esitettyä koodia saa käyttää apuna. I Epäilyt harjoitustehtävien kopioinnista tai muusta vilpistä lähetetään Perustieteiden korkeakoulun opintoasian päällikön ja opintoasioista vastaavan varadekaanin tutkivattaksi. CSE-A1111 Ohjelmoinnin peruskurssi Y1 7.9.2015 12 / 24 Arvio kurssin työmäärästä I Kurssin laajuus on 5 op, joka vastaa noin 133 tuntia työtä. Sen on arvioitu jakautuvan seuraavasti: I I I Luennot 36 tuntia (tai vastaava aika itseopiskeluun). Harjoitustehtävät 8–9 tuntia / krs. Tentti 20 tuntia (valmistautuminen ja osallistuminen). CSE-A1111 Ohjelmoinnin peruskurssi Y1 7.9.2015 13 / 24 Tutkimus I Kurssilla kerätään harjoitustehtävien tekemisestä tietoa, jota käytetään tutkimustyöhön, jonka tavoitteena on kehittää entistä parempia työkaluja ja verkko-oppimisympäristöjä ohjelmoinnin opetukseen. I Osa tutkimuksesta tehdään yhteistyössä University of Pittsburghin kanssa. I Mitään opiskelijoiden henkilötietoja (ei myöskään esim. nimiä tai opiskelijanumeroita) ei välitetä Aalto-yliopiston ulkopuolelle. Jotta tutkimuksessa pystytään erottamaan, mikä on kurssilla opittua ja minkä opiskelija on osannut jo ennen kurssille tuloa, tehdään ensimmäisellä harjoitustehtäväkierroksella esitesti. I I I Testin tekemisestä saa harjoitustehtäväpisteitä, joihin ei vaikuta mitenkään se, onko vastannut kysymyksiin oikein vai väärin. Älä säikähdä, vaikka et osaisi vastata testin kysymyksiin. Tarkoituksena on vain saada selville, kuinka paljon kurssilla opetettavia asioita kukin opiskelija tietää jo ennen kurssille tuloa. CSE-A1111 Ohjelmoinnin peruskurssi Y1 7.9.2015 14 / 24 Tietokoneen perusosat I Prosessori eli suoritin I Keskusmuisti I Syöttölaitteet I Tulostuslaitteet I Lisäksi ulkoista muistia, joka voi toimia sekä syöttö- että tulostuslaitteena. CSE-A1111 Ohjelmoinnin peruskurssi Y1 7.9.2015 15 / 24 Mikä on tietokoneohjelma? Keittokirjan resepti 1. Vatkaa munat ja sokeri vaahdoksi. 2. Lisää jauhot ja sekoita. 3. Kaada vuokaan ja paista 20 minuuttia. Tietokoneohjelma 1. Pyydä rahasumma markkoina ja lue se. 2. Jaa luettu rahasumma 5.94573:lla. 3. Tulosta jakolaskun tulos kuvaruudulle. CSE-A1111 Ohjelmoinnin peruskurssi Y1 7.9.2015 16 / 24 Erilaisia tapoja esittää ohjelma tietokoneelle I Käskyt esitetään konekielellä (bittijonoina). I Symbolinen konekieli I Lausekieli, esim. Python, Java, C, C++, Scala, Pascal jne. CSE-A1111 Ohjelmoinnin peruskurssi Y1 7.9.2015 17 / 24 Kääntäjä ja tulkki I Tietokoneen prosessori ymmärtää vain konekielellä annettuja käskyjä. Jos tietokoneohjelma annetaan jossain muussa muodossa, pitää se muuttaa konekielelle. I Muuttaminen voidaan tehdä toisella tietokoneohjelmalla, kääntäjällä tai tulkilla. I Kääntäjä ottaa koko ohjelman, kääntää sen konekielelle ja tallentaa konekielisen ohjelman tiedostoon. Ohjelma voidaan ajaa tästä tiedostosta halutun määrän kertoja, eikä ohjelmaa tarvitse kääntää uudelleen. I Tulkki ottaa käskyn kerrallaan, muuttaa sen konekielelle ja suorittaa käskyn heti. Sen jälkeen se siirtyy ohjelman seuraavaan käskyyn. Jos ohjelma halutaan suorittaa uudelleen, se pitää tulkata joka kerta uudelleen. CSE-A1111 Ohjelmoinnin peruskurssi Y1 7.9.2015 18 / 24 Kolme eri tapaa kirjoittaa ja ajaa Python-ohjelmia I Käynnistä Python-tulkki ja anna sille käsky kerrallaan. I Kirjoita ohjelma tiedostoon ja aja se komentotulkissa käskyllä python3 tiedosto.py I Käytä työkalua, jolla voi sekä kirjoittaa että ajaa Python-ohjelmia, tällä kurssilla Eclipse. CSE-A1111 Ohjelmoinnin peruskurssi Y1 7.9.2015 19 / 24 Ensimmäinen Python-ohjelma print("Hyvaa paivaa") CSE-A1111 Ohjelmoinnin peruskurssi Y1 7.9.2015 20 / 24 Muuttujat I Muuttujia käytetään ohjelman käsittelemien arvojen tallentamiseen ja käsittelyyn. I Muuttujalle voi antaa arvon sijoituskäskyllä, jota merkitään =:lla. nimi = "Matti" print("Hei,", nimi) print("Tervetuloa Python-kurssille!") Esimerkkiajo Hei, Matti Tervetuloa Python-kurssille! CSE-A1111 Ohjelmoinnin peruskurssi Y1 7.9.2015 21 / 24 Arvon pyytäminen käyttäjältä I Käyttäjän antaman arvon voi lukea input-käskyllä. I Käskyn sulkujen sisään kirjoitetaan käyttäjälle annettava kehote. I Luetun arvon voi antaa arvoksi muuttujalle sijoituskäskyllä. nimi = input("Kerro nimesi: ") print("Hei,", nimi) print("Tervetuloa Python-kurssille!") Ajoesimerkki Kerro nimesi: Minna Hei, Minna Tervetuloa Python-kurssille! CSE-A1111 Ohjelmoinnin peruskurssi Y1 7.9.2015 22 / 24 Lukuarvon lukeminen käyttäjältä I Lukuarvojen lukeminen on vähän monimutkaisempaa, sillä input antaa aina luetun arvon tekstinä, merkkijonona. I Jotta luettua arvoa voitaisiin käsitellä lukuna, se pitää ensin muuttaa kokonais- tai desimaaliluvuksi. I Jos luettu merkkijono on muuttujan rivi arvona, saadaan sitä vastaava kokonaisluku muuttujan luku1 kokonaislukutyyppiseksi arvoksi seuraavasti: luku1 = int(rivi) I Jos luettu merkkijono on muuttujan rivi arvona, saadaan sitä vastaava desimaaliluku muuttujan luku2 float-tyyppiseksi arvoksi seuraavasti: luku2 = float(rivi) CSE-A1111 Ohjelmoinnin peruskurssi Y1 7.9.2015 23 / 24 Esimerkki: eurolaskuri print("Muutan markat euroiksi.") rivi = input("Anna rahasumma markkoina: ") markat = float(rivi) eurot = markat / 5.94573 print("Se on", eurot, "euroa.") Esimerkkiajo Muutan markat euroiksi. Anna rahasumma markkoina: 543.50 Se on 91.4101380318 euroa. CSE-A1111 Ohjelmoinnin peruskurssi Y1 7.9.2015 24 / 24