Ohjelmoinnin peruskurssi Y1



Samankaltaiset tiedostot
Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Windows Live SkyDrive - esittely

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin perusteet Y Python

Hae Opiskelija käyttöohje

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1

Tapahtumapohjainen ohjelmointi

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

C# Windows ohjelmointi perusopas

- Kommentoi koodisi. Koodin kommentointiin kuuluu kuvata metodien toiminta ja pääohjelmassa tapahtuvat tärkeimmät toiminnat. Esim.

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1

String-vertailusta ja Scannerin käytöstä (1/2) String-vertailusta ja Scannerin käytöstä (2/2) Luentoesimerkki 4.1

Ohjelmoinnin peruskurssi Y1

Racket ohjelmointia. Tiina Partanen 2014

Ohjelmoinnin perusteet Y Python

Ohje hakulomakkeen täyttämiseen yliopistohaku.fi -palvelussa

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin perusteet Y Python

Taulukkolaskenta II. Taulukkolaskennan edistyneempiä piirteitä

Ohjelmoinnin perusteet Y Python

Racket ohjelmointia I

Ohjelmoinnin perusteet Y Python

OHJ-1151 Ohjelmointi IIe

Merkkien ja merkkijonojen käsittelyä Javalla

Ohjelmoinnin peruskurssien laaja oppimäärä

Graafisten käyttöliittymien alkeet Pythonin ja tkinter-kirjaston avulla

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1

JAVA on ohjelmointikieli, mikä on kieliopiltaan hyvin samankaltainen, jopa identtinen mm. C++

5. HelloWorld-ohjelma 5.1

Ohjelmoinnin peruskurssi Y1

Asteri Kirjanpito Dos ALV% nousu 1 %-yksiköllä Vuosipäivitys

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin peruskurssi Y1

815338A Ohjelmointikielten periaatteet Harjoitus 5 Vastaukset

Muita kuvankäsittelyohjelmia on mm. Paint Shop Pro, Photoshop Elements, Microsoft Office Picture Manager

5. HelloWorld-ohjelma 5.1

Ohjelmoinnin perusteet Y Python

Ohjeet kirjautumiseen ja materiaalin lisäämiseen

Ohjelmoinnin perusteet Y Python

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen

SKYPE-RYHMÄN LUOMINEN

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin perusteet Y Python

Metodien tekeminen Javalla

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin perusteet Y Python

Sisältö Johdanto. Tiedostojen lukeminen. Tiedostojen kirjoittaminen. 26.2

Ohjelmoinnin peruskurssi Y1

Ohjelmointi 2 / 2010 Välikoe / 26.3

Merkintöjen tekeminen pohjakuvaan Libre Officella v.1.2

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Pedacode Pikaopas. Java-kehitysympäristön pystyttäminen

Kuvapankki Imagebank Independent

Ohje PhotoPortaalin käytöstä

Työtapaturman ilmoittaminen 2016-> Uusi sähköinen lomake, täyttäminen esimies ja palkkahallinto

Lue ohjeet huolellisesti ennen laitteen käyttöä.

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op. Poikkeukset ja tietovirrat: Virhetilanteiden ja syötevirtojen käsittely

Skype for Business ohjelman asennus- ja käyttöohje Sisällys

Ohjelmoinnin peruskurssi Y1

Metodien tekeminen Javalla

Ohjelmoinnin perusteet Y Python

Olio-ohjelmointi Käyttöliittymä

Java-kielen perusteet

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin perusteet Y Python

Harjoitus Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

Transkriptio:

Ohjelmoinnin peruskurssi Y1 CSE-A1111 9.11.2015 CSE-A1111 Ohjelmoinnin peruskurssi Y1 9.11.2015 1 / 32

Mahdollisuus antaa luentopalautetta Goblinissa vasemmassa reunassa olevassa valikossa on valinta Luentopalaute. Tätä kautta on mahdollisuus antaa nimettömänä palautetta luennosta. Ennen keskiviikon viimeistä luentoa voit erityisesti kertoa tätä kautta, jos haluat viimeisellä luennolla kerrattavan (lyhyesti) jonkin asian. CSE-A1111 Ohjelmoinnin peruskurssi Y1 9.11.2015 2 / 32

Kysymys luentopalautteesta Miksi meille opetetaan juuri Pythonia eikä jotain toista ohjelmointikieltä Syitä: Pythonia käytetään yleisesti (vaikka se ei olekaan kaikkein yleisimmin käytössä oleva ohjelmointikieli). Python on helppo aloittelijalle ja Pythonin opiskelussa on helppo edetä opettelemalla yksi uusi asia kerrallaan. Python sopii hyvin sellaisiin pieniin juttuihin, joihin jonkin toisen alan diplomi-insinööri usein tarvitsee ohjelmointia (esim. luetaan mittausdataa tiedostosta ja käsitellään sitä jotenkin tai lasketaan siitä jotain). Kuitenkin Pythonin ominaisuudet riittävät myös laajojen ja monipuolisten ohjelmistojen tekemiseen. CSE-A1111 Ohjelmoinnin peruskurssi Y1 9.11.2015 3 / 32

Esimerkki Pythonin aloittelijaystävällisyydestä Ensimmäinen Python-ohjelma print("nyt se alkaa!") Java-ohjelma, joka tekee täsmälleen saman asian (mitään tästä ei voi jättää pois, jos haluaa ohjelman toimivan samalla tavalla) public class Aloitus { public static void main(string[] args) { System.out.println("Nyt se alkaa!") } } CSE-A1111 Ohjelmoinnin peruskurssi Y1 9.11.2015 4 / 32

Oppimistavoitteet: tämän luennon jälkeen Osaat kirjoittaa ohjelman, jossa on graafinen käyttöliittymä. Tiedät, mitä pitää tehdä, jos haluat käyttää ohjelmassasi (esimerkiksi sen tulostuksissa) kirjaimia Ä, Ö ja Å. CSE-A1111 Ohjelmoinnin peruskurssi Y1 9.11.2015 5 / 32

Graafiset käyttöliittymät Useimmissa nykyisissä ohjelmissa on graafinen käyttöliittymä, jossa käyttäjä ohjaa ohjelman toimintaa erilaisten komponenttien, kuten valikoiden, tekstikenttien, painikkeiden jne avulla. Tällä luennolla käydään läpi joitakin perusasioita graafisen käyttöliittymän kirjoittamisesta. Lisää perustietoa suomeksi on saatavissa esimerkiksi TTY:n Tkinter-oppaasta https://www.cs.tut.fi/cgi-bin/run/~johoh/ upload-file?materiaalit/k2015/luento13/tkinter-moniste/ tkinter.public.pdf tai LTY:n Tkinter-oppaasta http://www2.it.lut.fi/project/masto/material/ Python-Tkinteropas_LTY2007.pdf (jälkimmäinen käyttää vanhempaa Python-versiota). Pythonin omassa dokumentaatiossa on tietoa käytetystä tkinter-moduulista https://docs.python.org/3/library/tkinter.html CSE-A1111 Ohjelmoinnin peruskurssi Y1 9.11.2015 6 / 32

Yleistä graafisen käyttöliittymän kirjoittamisesta Graafisen käyttöliittymän kirjoittamiseen tarvitaan sopiva moduuli. Vaihtoehtoisia moduuleja on tarjolla useita, mutta niistä yleisemmin käytetty on tkinter, jonka on yleensä asennettu Python-ohjelmointiympäristön mukana. Graafisen käyttöliittymän määrittelevän tiedoston alkuun kirjoitetaan siis import tkinter Joihinkin Linux-ympäristöihin moduuli pitää kuitenkin asentaa itse. Yleensä graafisen käyttöliittymän määritettelevä koodi kirjoitetaan luokan sisään. Käyttöliittymän ikkunaa luodessa tehtävät toimenpiteet kirjoitetaan metodin init sisään. Ikkuna luodaan ja ohjelma käynnistetään luomalla olio käyttöliittymän määrittelevästä luokasta. CSE-A1111 Ohjelmoinnin peruskurssi Y1 9.11.2015 7 / 32

Esimerkki 1: tyhjä ikkuna import tkinter class Ikkuna1: def init (self): self. paaikkuna = tkinter.tk() self. paaikkuna.title("esimerkki 1") tkinter.mainloop() esimerkki_ikkuna = Ikkuna1() CSE-A1111 Ohjelmoinnin peruskurssi Y1 9.11.2015 8 / 32

Vaihtoehto esimerkille 1 Vähänkin suuremmissa ohjelmissa tarvitaan useita eri asioita tkinter-moduulista. Jos import-käsky kirjoitetaan vähän toisella tavalla, ei moduulin nimeä tarvitse kirjoittaa aina moduulista tuotujen luokkien ja metodien nimien eteen. from tkinter import * class Ikkuna2: def init (self): self. paaikkuna = Tk() self. paaikkuna.title("esimerkki 1") mainloop() esimerkki_ikkuna = Ikkuna2() CSE-A1111 Ohjelmoinnin peruskurssi Y1 9.11.2015 9 / 32

Komponentteja ikkunaan Moduulissa tkinter on eri luokkia erilaisten komponenttien (engl. widget) luomista varten, esimerkiksi painikkeita varten luokka Button ja tekstin esittämistä varten luokka Label. Kun halutaan lisätä ikkunaan joku komponentti, luodaan vastaavan luokan olio. Oliota luodessa kerrotaan, mihin komponentti tulee (esim. pääikkuna). Lisäksi komponentteja luodessa voidaan antaa muita tietoja, kuten komponenttiin tuleva teksti. Komponentin luominen ei vielä lisää komponenttia ikkunaan, vaan tämä pitää tehdä erikseen metodilla pack. Seuraavan kalvon esimerkkiohjelmassa luodaan ikkuna, jossa on yksi teksti. CSE-A1111 Ohjelmoinnin peruskurssi Y1 9.11.2015 10 / 32

Komponentteja ikkunaan, koodi from tkinter import * class Teksti_ikkuna: def init (self): self. paaikkuna = Tk() self. paaikkuna.title("esimerkki 2") self. teksti = Label(self. paaikkuna, \ text = " Tekstia ikkunassa! ") self. teksti.pack() mainloop() oma_ikkuna = Teksti_ikkuna() CSE-A1111 Ohjelmoinnin peruskurssi Y1 9.11.2015 11 / 32

Painike ikkunaan Ikkunaan voidaan luoda painikkeita luokan Button avulla. Pelkkä painikkeen luominen ja sen liittäminen ikkunaan ei riitä. Pitää myös kertoa, mitä ohjelman halutaan tekevän, kun painiketta on painettu. Ikkunan määrittelevään luokkaan kirjoitetaan oma tapahtumankäsittelijämetodi, joka kertoo, mitä ohjelman halutaan tekevän painiketta painettaessa. Painiketta luodessa metodin nimi annetaan luokan Button init -metodille command-nimisenä parametrina. Huomaa, että metodin nimi annetaan ilman sulkuja (sulut aiheuttaisivat sen, että metodia kutsuttaisiin eli se suoritettaisiin jo painiketta luodessa). Kun painiketta on painettu, Python-tulkki kutsuu automaattisesti sille määriteltyä tapahtumankäsittelijämetodia. CSE-A1111 Ohjelmoinnin peruskurssi Y1 9.11.2015 12 / 32

Dialogin käyttäminen Painike-esimerkkiohjelmassa halutaan, että painikkeen painaminen saa aikaan sen, että avataan uusi dialogi-ikkuna. Moduulissa messagebox on valmiita funktioita, joiden avulla voi luoda dialogi-ikkunoita, joissa on haluttu otsikko ja teksti. Esimerkkiohjelmassa on käytetty moduulin metodia showinfo, joka luo tiedoteikkunan. CSE-A1111 Ohjelmoinnin peruskurssi Y1 9.11.2015 13 / 32

Painike-esimerkki, koodi from tkinter import * import tkinter.messagebox class Painikeikkuna: def init (self): self. paaikkuna = Tk() self. paaikkuna.title("esimerkki 3") self. nappi = Button(self. paaikkuna, \ text = "Paina minua!", \ command = self.anna_ilmoitus) self. nappi.pack() mainloop() CSE-A1111 Ohjelmoinnin peruskurssi Y1 9.11.2015 14 / 32

Painike-esimerkki, koodi jatkuu def anna_ilmoitus(self): tkinter.messagebox.showinfo("vastaus", \ "Hienoa, osasit toimia oikein") oma_ikkuna = Painikeikkuna() CSE-A1111 Ohjelmoinnin peruskurssi Y1 9.11.2015 15 / 32

Syötteen lukeminen käyttäjältä Seuraavassa esimerkissä kirjoitetaan ohjelma, joka muuntaa käyttäjän fahrenheiteina antaman lämpötilan celsius-asteiksi. Tarvitsemme komponentin, jonka avulla käyttäjä voi antaa haluamansa lämpötilan. Tähän voi käyttää tekstikenttää, joka luodaan luokan Entry avulla. Kenttään kirjoitettu teksti voidaan lukea metodin get avulla. Metodi get palauttaa tekstin merkkijonona. Se pitää muuntaa desimaaliluvuksi laskemista varten. Käyttäjä ilmoittaa painiketta painamalla siitä, että hän on jo antanut luvun. Muunnoksen tekevä ohjelman osa on siis kirjoitettu painikkeen tapahtumankäsittelijämetodin sisään. Esimerkkiohjelmassa muunnoksen tulos ilmoitetaan Label-komponentissa, jossa olevaa tekstiä muutetaan metodin configure avulla. CSE-A1111 Ohjelmoinnin peruskurssi Y1 9.11.2015 16 / 32

Lämpötilamuunnos, koodi from tkinter import * class Muunnin1: def init (self): self. paaikkuna = Tk() self. paaikkuna.title("lampotilamuunnin") self. teksti = Label(self. paaikkuna, \ text = "Fahrenheit-lampotila:") self. ruutu = Entry(self. paaikkuna, \ width = 10) self. nappi = Button(self. paaikkuna, \ text = "Muunna", \ command = self.muunna_asteet) self. vastaus = Label(self. paaikkuna, \ text = "Celsius-lampotila:") CSE-A1111 Ohjelmoinnin peruskurssi Y1 9.11.2015 17 / 32

Lämpötilamuunnos, koodi jatkuu self. teksti.pack() self. ruutu.pack() self. vastaus.pack() self. nappi.pack() mainloop() def muunna_asteet(self): syote = self. ruutu.get() fahrenheit = float(syote) celsius = 5.0 / 9.0 * (fahrenheit - 32.0) vastausteksti = "Celsius-lampotila: {:.2f} C".\ format(celsius) self. vastaus.configure(text = vastausteksti) oma_ikkuna = Muunnin1() CSE-A1111 Ohjelmoinnin peruskurssi Y1 9.11.2015 18 / 32

Virheenkäsittely lämpötilamuunnokseen Muutetaan lämpötilamuunnoksen tekevää ohjelmaa niin, että se käsittelee mahdolliset virheelliset syötteet. Virheestä ilmoitetaan virhedialogi-ikkunalla. Sellainen voidaan tehdä moduulin messagebox funktion showerror avulla. CSE-A1111 Ohjelmoinnin peruskurssi Y1 9.11.2015 19 / 32

Virheenkäsittely lämpötilamuunnokseen, koodi from tkinter import * import tkinter.messagebox class Muunnin2: def init (self): self. paaikkuna = Tk() self. paaikkuna.title("lampotilamuunnin") self. teksti = Label(self. paaikkuna, \ text = "Fahrenheit-lampotila:") self. ruutu = Entry(self. paaikkuna, \ width = 10) self. nappi = Button(self. paaikkuna, \ text = "Muunna", \ command = self.muunna_asteet) self. vastaus = Label(self. paaikkuna, \ text = "Celsius-lampotila:") CSE-A1111 Ohjelmoinnin peruskurssi Y1 9.11.2015 20 / 32

Virheenkäsittely lämpötilamuunnokseen, koodi jatkuu self. teksti.pack() self. ruutu.pack() self. vastaus.pack() self. nappi.pack() mainloop() CSE-A1111 Ohjelmoinnin peruskurssi Y1 9.11.2015 21 / 32

Virheenkäsittely lämpötilamuunnokseen, koodi jatkuu def muunna_asteet(self): syote = self. ruutu.get() try: fahrenheit = float(syote) celsius = 5.0 / 9.0 * (fahrenheit - 32.0) vastausteksti = "Celsius-lampotila: {:.2f} C".\ format(celsius) self. vastaus.configure(text = vastausteksti) except ValueError: virheteksti = "Anna lampotila lukuna!" tkinter.messagebox.showerror("virhe", \ virheteksti) oma_ikkuna = Muunnin2() CSE-A1111 Ohjelmoinnin peruskurssi Y1 9.11.2015 22 / 32

Piirtäminen Luokan Canvas avulla voidaan luoda piirtoalusta, jolle voidaan piirtää erilaisia kuvioita, viivoja, tekstejä jne. Näin voidaan saada ohjelma tulostamaan erilaisia kaavioita tai kuvaajia. Piirtoalustan koordinaatteja lasketaan pikseleiden avulla. Vasemman yläkulman koordinaatit ovat (0, 0) Joitakin luokan Canvas metodeita. Mahdollisia parametreja on paljon erilaisia, mutta ensimmäiset parametrit kertovat ne koordinaatit, mihin komponentti piirretään: create_line piirtää suoran viivan create_polygon piirtää murtoviivan create_rectangle piirtää suorakulmion create_oval piirtää ympyrän tai ellipsin create_text piirtää tekstin CSE-A1111 Ohjelmoinnin peruskurssi Y1 9.11.2015 23 / 32

Esimerkki piirtävästä ohjelmasta from tkinter import * class Piirtoikkuna: def init (self): self. paaikkuna = Tk() self. paaikkuna.title("piirtoesimerkki") self. alusta = Canvas(self. paaikkuna, \ width = 200, \ height = 300, \ background = "lightblue") self. alusta.pack() self. alusta.create_line(0, 0, 100, 100, \ fill = "red") self. alusta.create_rectangle(50, 50, 150, 150,\ fill = "blue") CSE-A1111 Ohjelmoinnin peruskurssi Y1 9.11.2015 24 / 32

Esimerkki piirtävästä ohjelmasta jatkuu self. alusta.create_oval(100, 100, 200, 200, \ fill = "yellow") self. alusta.create_line(70, 30, 95, 180, \ fill = "green") self. alusta.create_text(100, 250, \ text = "Hurraa!", \ fill = "brown") mainloop() oma_ikkuna = Piirtoikkuna() CSE-A1111 Ohjelmoinnin peruskurssi Y1 9.11.2015 25 / 32

Valmiiden kuvatiedostojen lisääminen ikkunaan Luokan PhotoImage avulla voidaan.gif-,.pgm- ja.ppm-tyyppisistä kuvatiedostoista luoda kuvaolioita, joita voidaan liittää esimerkiksi Canvas-tyyppiselle piirtoalustalle ja erilaisiin komponentteihin, kuten painikkeisiin. Jos halutaan käyttää muuntyyppisiä kuvatiedostoja (esim..jpg), ei PhotoImage-luokka yksin riitä, mutta apuna voidaan käyttää Python Imaging Library (PIL) -moduulin tarjoamia luokkia. Seuraavilla kalvoilla on kaksi esimerkkiä, joista ensimmäisessä kuvatiedoston sisältämä kuva on liitetty piirtoalustalle ja toisessa kuva on liitetty painikkeeseen. CSE-A1111 Ohjelmoinnin peruskurssi Y1 9.11.2015 26 / 32

Kuvaesimerkki 1 from tkinter import * class Kuvaikkuna1: def init (self): self. paaikkuna = Tk() self. paaikkuna.title("kuvaesimerkki") self. paaikkuna.geometry("400x400") self. teksti = Label(self. paaikkuna, \ text = " Hauskaa talvea! ") self. teksti.pack() self. alusta = Canvas(self. paaikkuna, \ width = 350, height = 350) CSE-A1111 Ohjelmoinnin peruskurssi Y1 9.11.2015 27 / 32

Kuvaesimerkki 1, jatkoa self. kuva = PhotoImage(file = "aurinko2.gif") self. alusta.create_image(150, 150,\ image = self. kuva) self. alusta.pack() mainloop() oma_ikkuna = Kuvaikkuna1() CSE-A1111 Ohjelmoinnin peruskurssi Y1 9.11.2015 28 / 32

Kuvaesimerkki 2 from tkinter import * import tkinter.messagebox class Kuvaikkuna2: def init (self): self. paaikkuna = Tk() self. paaikkuna.title("kuvaesimerkki2") self. paaikkuna.geometry("100x100") self. kuva = PhotoImage(file = "pyoryla.gif") self. nappi = Button(self. paaikkuna, \ image = self. kuva, \ command = self.anna_ilmoitus) self. nappi.pack() mainloop() CSE-A1111 Ohjelmoinnin peruskurssi Y1 9.11.2015 29 / 32

Kuvaesimerkki 2 jatkuu def anna_ilmoitus(self): tkinter.messagebox.showinfo("vastaus", \ "Olitko utelias?") oma_ikkuna = Kuvaikkuna2() CSE-A1111 Ohjelmoinnin peruskurssi Y1 9.11.2015 30 / 32

Skandinaaviset aakkoset ja muut erikoismerkit Tekstitiedostoja myös Python-ohjelmia kirjoitettaessa tietokone tallentaa tiedoston niin, että kutakin tiedoston merkkiä vastaa tietokoneen muistissa jokin luku. Skandinaaviset aakkoset aiheuttavat erityisongelmia, koska eri tallennustavoissa samaa merkkiä (esimerkiksi ä) vastaa eri luku. Sitä, mikä luku vastaa mitäkin merkkiä, kutsutaan koodaukseksi. Python 3:ssa on oletuksena se, että esimerkiksi merkkijonojen sisältävät merkit on muutettu luvuiksi käyttämällä utf-8-koodausta. Jos ohjelmaa kirjoitettaessa on käytetty jotain muuta koodausta, ja ohjelma sisältää (esimerkiksi tulostettavissa merkkijonoissa) skandinaavisia aakkosia tai muita erityismerkkejä, on ohjelmatiedoston alkuun kirjoitettava kommentti, joka kertoo käytetyn koodauksen. CSE-A1111 Ohjelmoinnin peruskurssi Y1 9.11.2015 31 / 32

Skandinaaviset aakkoset ja muut erikoismerkit, jatkoa Alla on joitakin yleisiä koodaustapoja vastaavia alkukommentteja. # -*- coding: utf-8 -*- # -*- coding: cp850 -*- # -*- coding: cp1252 -*- # -*- coding: iso-latin-1 -*- # -*- coding: iso-latin-15 -*- CSE-A1111 Ohjelmoinnin peruskurssi Y1 9.11.2015 32 / 32