27
Ohjelmoinnin peruskurssi Y1 Huom: Istukaa joka paikalle – sali tulee t¨ ayteen! CS-A1111 9.9.2019 CS-A1111 Ohjelmoinnin peruskurssi Y1 9.9.2019 1 / 26

Ohjelmoinnin peruskurssi Y1 Huom: Istukaa joka paikalle sali … · 2019. 9. 9. · Ajoesimerkki Kerro nimesi: Minna Hei, Minna Tervetuloa Python-kurssille! CS-A1111 Ohjelmoinnin

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

  • Ohjelmoinnin peruskurssi Y1Huom:

    Istukaa joka paikalle – sali tulee täyteen!

    CS-A1111

    9.9.2019

    CS-A1111 Ohjelmoinnin peruskurssi Y1 9.9.2019 1 / 26

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

    CS-A1111 Ohjelmoinnin peruskurssi Y1 9.9.2019 2 / 26

  • Mihin teekkari / diplomi-insinööri tarvitsee ohjelmointia?

    I Pienet laskentasovellukset

    I Mittauslaitteen tms. ohjaaminen

    I Matriisilaskenta- ja taulukkolaskentaohjelmia käyttäminen

    I Valmiiden ohjelmien toiminnan opettelu ja ymmärtäminen

    I Työelämässä paljon tehtäviä, joissa vaaditaan sekä jonkininsinöörialan tuntemus että hyvä ohjelmointitaito.

    CS-A1111 Ohjelmoinnin peruskurssi Y1 9.9.2019 3 / 26

  • Mihin teekkari / diplomi-insinööri tarvitsee ohjelmointia?

    I Pienet laskentasovellukset

    I Mittauslaitteen tms. ohjaaminen

    I Matriisilaskenta- ja taulukkolaskentaohjelmia käyttäminen

    I Valmiiden ohjelmien toiminnan opettelu ja ymmärtäminen

    I Työelämässä paljon tehtäviä, joissa vaaditaan sekä jonkininsinöörialan tuntemus että hyvä ohjelmointitaito.

    CS-A1111 Ohjelmoinnin peruskurssi Y1 9.9.2019 3 / 26

  • Opiskelijoiden kommentteja kesätöiden jälkeen

    Opiskelija 1 (ENG):

    En ollut käytännössä koskaan aiemmin ohjelmoinut ennen Ohjelmoinninperuskurssi Y1:stä. Kurssi yllätti minut positiivisesti ja sen ansiosta todellainnostuin ohjelmoinnista. Näen sen luovana ongelmanratkaisuna, jossatyönsä jäljen näkee heti ja jossa voi aina kehittää olemassa olemia ohjelmiaparemmiksi ja myös oppia aina uutta. Ohjelmointi on universaalina taito,joka myös ratkaisevasti kehittää loogista ajattelua ja ajatustenjäsentämistä. Y1 onnistuu opettamaan näitä taitoja palkitsevalla tavalla jaon ehdottomasti yksi parhaista käymistäni kursseista näiden parivuotistenyliopisto-opintojeni aikana. Sain kurssin ansiosta myös kesätöitä.

    CS-A1111 Ohjelmoinnin peruskurssi Y1 9.9.2019 4 / 26

  • Opiskelijoiden kommentteja kesätöiden jälkeen

    Opiskelija 2 (ELEC):

    Olin saanut muutamia ensikosketuksia ohjelmointiin ennen kun aloitinyliopiston, mutta suurin osa ensimmäisellä kurssilla esiin tulleista asioistaoli kuitenkin uusia. Muita ohjelmointikursseja oli hyvä rakentaaperusasioiden päälle, joita Y1 opetti. Kaikilla ohjelmointikursseillasyntyneestä osaamisesta on ollut hyötyä niin muilla kursseilla kuinkesätöissä. On ollut myös hauska huomata, että ohjelmoinnissa kehittyvätmyös ongelmanratkaisutaidot ja ihan toisenlainen ajattelu kuin esimerkiksimatematiikan ja fysiikan kursseilla.

    CS-A1111 Ohjelmoinnin peruskurssi Y1 9.9.2019 5 / 26

  • Esimerkki harjoitustyöstä, jossa tarvitaan ohjelmointia

    I Kurssi: ENE-58.129 Rakennusten energiatalous (aikaisemmaltavuodelta)

    I Annettu: Tiedot rakennuksen koosta, rakenteesta, sijainnista,lämmitysjärjestelmästä, eri asioiden kustannuksista jne.

    I Tehtävä (osa harjoitustyöstä): Hae optimaalinen yhdistelmäseuraaville viidelle parametrille

    1. seinien eristyspaksuus2. yläpohjan eristyspaksuus3. ikkunoiden U-arvo4. lämpöpumpun kompressorin nimellisteho5. höyrystymislämpötila

    siten, että seinämien lämpöeristysten, ikkunoiden jalämmöntuottojärjestelmän muodostaman investoinnin sekärakennuksen lämmityskustannusten yhteensä muodostamatelinkaarikustannukset saavat minimiarvon tarkasteluaikana jarakennus on energiatehokkuusluokassa A.

    CS-A1111 Ohjelmoinnin peruskurssi Y1 9.9.2019 6 / 26

  • Tämä kurssi

    I Oppimistavoitteena ohjelmoinnin perusasiat

    I Ohjelmointikieli PythonI Mahdollisia jatkokursseja:

    I CS-A1121 Ohjelmoinnin peruskurssi Y2I CS-A1130 Tietotekniikka sovelluksissaI CS-A1141 Tietorakenteet ja algoritmit YI ELEC-A7100 C-ohjelmoinnin peruskurssi

    I Mahdollista suorittaa myös tietotekniikan sivuaine.

    CS-A1111 Ohjelmoinnin peruskurssi Y1 9.9.2019 7 / 26

  • Vaihtoehtona toinen ohjelmointikurssi

    I Tämän kurssin sijaan on mahdollisuus suorittaa selvästi vaativampimutta erittäin antoisa kurssi CS-A1110 Ohjelmointi 1.

    I Y1:llä pääpaino on pienten kokonaisten ohjelmien kirjoittamisessa,Ohjelmointi 1:llä taidoissa, joita tarvitaan suurten ohjelmientekemisessä.

    I Jos haluaa kandidaatin tutkinnon suorittamisen jälkeen hakeatietotekniikan maisteriohjelmaan, niin vaatimuksena on Ohjelmointi1:n suoritus.

    I Kandidaatin tutkintoon voi sisällyttää molemmat kurssit CS-A1111Ohjelmoinnin peruskurssi Y1 ja CS-A1110 Ohjelmointi 1 (toinenmenee silloin vapaavalintaisiin opintoihin).

    CS-A1111 Ohjelmoinnin peruskurssi Y1 9.9.2019 8 / 26

  • Oletko ohjelmoinut aikaisemmin?

    I Vastaa kyselyyn sivulla http://presemo.aalto.fi/y1s2019

    CS-A1111 Ohjelmoinnin peruskurssi Y1 9.9.2019 9 / 26

    http://presemo.aalto.fi/y1s2019

  • Yleistä

    I HenkilökuntaI Luennoija Sanna SuorantaI Opetusmateriaalit laatinut Kerttu Pollari-MalmiI noin 22 tuntiopettajaa

    I TiedotusI Kurssin kotisivu MyCourses-järjestelmässäI Keskusteluryhmä Piazzassa

    https://piazza.com/aalto.fi/fall2019/csa1111/home

    CS-A1111 Ohjelmoinnin peruskurssi Y1 9.9.2019 10 / 26

  • Opetusmuodot – lähiopetus

    I LuennotI ma 9.9. klo 12-14 ja sen jälkeenI keskiviikkoisin 14-16 aluksi Aalto-salissa, noin 25.9. jälkeen salissa T1

    Tietotekniikan talolla.I Luennoilla ei käsitellä kaikkia asioita.I Läsnäoloa ei valvota.

    I Harjoitukset, joissa opiskelijat itse ratkaisevat harjoitustehtäviätietokoneella.

    I 18 ryhmää viikossa Tietotekniikan talon salissa T7 alkaen to 12.9.(ei tenttiviikolla)

    I Lisäksi ylimääräisiä harjoitusryhmiä tuota ennen (katso ajat japaikatMyCoursesista) ohjelmointiympäristön asentamiseksi.

    I Läsnäolo ei ole pakollista eikä siitä saa lisäpisteitä, mutta tarjolla ontuntiopettajien apua.

    CS-A1111 Ohjelmoinnin peruskurssi Y1 9.9.2019 11 / 26

  • Opetusmuodot jatkuu

    I OppimateriaaliI A+-järjestelmässä oleva oppimateriaali (linkki MyCourses-sivulla)I Oppikirjaa kaipaaville suositellaan Gaddis: Starting Out with Python,

    2nd Ed. tai uudempi, Pearson.I Pythonin webbisivut: https://docs.python.org/3/I Lisäksi lisämateriaali (ks. MyCourses, alasivut Materiaalit)

    I A+järjestelmän tämän kurssin sivu löytyy osoitteesta:https://plus.cs.aalto.fi/y1/2019s/

    CS-A1111 Ohjelmoinnin peruskurssi Y1 9.9.2019 12 / 26

  • Pakolliset osasuoritukset

    I TenttiI Ensimmäinen mahdollisuus ti 26.11. klo 17:00–20:00.

    I HarjoitustehtävätI Palautetaan A+-järjestelmässä automaattisille tarkistimille, joka antaa

    alustavat pisteet.I 9 kierrosta, joista 8 ensimmäistä + esitietokysely pakollisia.I Kullakin kierroksella on minimipistemäärä, joka on saavutettava.I Jos haluaa harjoitustehtävistä vähintään arvosanan 3, on myös

    viimeisestä kierroksesta (eli kierroksesta 9) on saatava minimipisteet.I Mahdollisuus antaa palautetta harjoitustehtävistä A+-järjestelmässä.

    I Kurssiarvosana on tenttiarvosanan ja harjoitusarvosanan keskiarvo, josmolemmat osasuoritukset on hyväksytty.

    CS-A1111 Ohjelmoinnin peruskurssi Y1 9.9.2019 13 / 26

  • Pakolliset osasuoritukset, jatkuu

    I PaikkausmahdollisuudetI Rästitentit keväällä (Pakollinen ilmoittautuminen viimeistään

    viikko ennen tenttiä).I Harjoitustehtävien rästikierros (vain kierrosten minimipisteiden

    saavuttamiseen). Kaikkia tehtäviä ei voi korvata rästikierroksettekemällä.

    Tärkeä tieto rästikierroksesta

    Rästikierroksella voi saada vain vaaditut minimipisteet sellaisestakierroksesta, josta ei ole saanut riittävästi pisteitä. Rästikierroksella ei voikorottaa hyväksyttyjen kierrosten pistemäärää.

    CS-A1111 Ohjelmoinnin peruskurssi Y1 9.9.2019 14 / 26

  • Tarvittavat ATK-tunnukset

    I A+-järjestelmään kirjautumiseen tarvitaan Aalto-tunnus.

    I Kurssin Piazza-keskusteluryhmään luodaan tunnusAalto-sähköpostiosoitteen avulla.

    CS-A1111 Ohjelmoinnin peruskurssi Y1 9.9.2019 15 / 26

  • 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 saaluovuttaa kaverille.

    I Keskustelu tai neuvonta ei saa olla niin yksityiskohtaista, ettämolemmilla ohjelmissa täsmälleen samat käskyt samassajärjestyksessä.

    I A+-materiaalissa, luennoilla ja oppikirjassa esitettyä koodia saakäyttää apuna.

    CS-A1111 Ohjelmoinnin peruskurssi Y1 9.9.2019 16 / 26

  • Arvio kurssin työmäärästä

    I Kurssin laajuus on 5 op, joka vastaa noin 133 tuntia työtä.I Keskimääräinen arvioitu työmäärä yhden kierroksen suorittamiseen on

    noin 12–14 tuntia:I Kierroksen aihepiiriä käsittelevä luento 2 hI Kierroksen materiaalin lukeminen 2 hI Kierroksen tehtävien tekeminen 8–10 h

    I LisäksiI Aloitusluento 2 h.I Kertaus tenttiin 10 h.I Tenttiin osallistuminen 3 h.

    CS-A1111 Ohjelmoinnin peruskurssi Y1 9.9.2019 17 / 26

  • 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 Ruotsin kruunuina ja lue se.

    2. Jaa luettu rahasumma 10.54:lla.

    3. Tulosta kuvaruudulle jakolaskun tulos eli vastaava summa euroina.

    CS-A1111 Ohjelmoinnin peruskurssi Y1 9.9.2019 18 / 26

  • Erilaisia tapoja esittää ohjelma tietokoneelle

    Käskyt esitetään

    I konekielellä (bittijonoina)

    I Symbolisella konekielellä, esim. Assembly

    I Lausekielellä, esim. Python, Java, C, C++, Scala, Pascal jne.

    CS-A1111 Ohjelmoinnin peruskurssi Y1 9.9.2019 19 / 26

  • Kääntäjä ja tulkki

    I Tietokoneen prosessori ymmärtää vain konekielellä annettuja käskyjä.Muussa muodossa annettu ohjelma pitää 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 tallentaakonekielisen ohjelman tiedostoon.

    I Tulkki muuttaa käskyn kerrallaan konekielelle ja suorittaa käskyn heti.Sen jälkeen se siirtyy ohjelman seuraavaan käskyyn.

    CS-A1111 Ohjelmoinnin peruskurssi Y1 9.9.2019 20 / 26

  • 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 PyCharm (tai aiemmin kurssilla käytetty Eclipse).

    CS-A1111 Ohjelmoinnin peruskurssi Y1 9.9.2019 21 / 26

  • Ensimmäinen Python-ohjelma

    print("Hyvaa paivaa")

    CS-A1111 Ohjelmoinnin peruskurssi Y1 9.9.2019 22 / 26

  • Muuttujat

    I Muuttujia käytetään ohjelman käsittelemien arvojen tallentamiseen jakäsittelyyn.

    I Muuttujalle voi antaa arvon sijoituskäskyllä.

    nimi = "Matti"

    print("Hei,", nimi)

    print("Tervetuloa Python-kurssille!")

    Esimerkkiajo

    Hei, Matti

    Tervetuloa Python-kurssille!

    CS-A1111 Ohjelmoinnin peruskurssi Y1 9.9.2019 23 / 26

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

    CS-A1111 Ohjelmoinnin peruskurssi Y1 9.9.2019 24 / 26

  • Lukuarvon lukeminen käyttäjältä

    I Käsky input antaa aina luetun arvon tekstinä, merkkijonona.

    I Jotta luettua arvoa voitaisiin käsitellä lukuna, se pitää ensin muuttaakokonais- tai desimaaliluvuksi.

    I Jos luettu merkkijono on muuttujan rivi arvona, saadaan sitävastaava kokonaisluku muuttujan luku1 kokonaislukutyyppiseksiarvoksi seuraavasti:

    luku1 = int(rivi)

    I Vastaava desimaaliluku saadaan muuttujan luku2 float-tyyppiseksiarvoksi seuraavasti:

    luku2 = float(rivi)

    CS-A1111 Ohjelmoinnin peruskurssi Y1 9.9.2019 25 / 26

  • Esimerkki: eurolaskuri

    print("Muutan Ruotsin kruunut euroiksi.")

    rivi = input("Anna rahasumma kruunuina: ")

    kruunut = float(rivi)

    eurot = kruunut / 10.54

    print("Se on", eurot, "euroa.")

    Esimerkkiajo

    Muutan Ruotsin kruunut euroiksi.

    Anna rahasumma kruunuina: 543.50

    Se on 51.56546489563568 euroa.

    CS-A1111 Ohjelmoinnin peruskurssi Y1 9.9.2019 26 / 26