2D1311 Programmeringsteknik med PBL Föreläsning 4 Skolan för Datavetenskap och kommunikation.

Slides:



Advertisements
Liknande presentationer
Föreläsning 9 Programmeringsteknik och Matlab 2D1312/2D1305
Advertisements

Array Skriv ett program som frågar följande: ”Hur många tal vill du mata in?” användaren matat in ett tal t.ex n. då frågar programmet n ggr följande.
2D1311 Programmeringsteknik med PBL
Programmeringsteknik
Programmeringsteknik Föreläsning 13 Skolan för Datavetenskap och kommunikation.
Programmeringsteknik Föreläsning 6 Skolan för Datavetenskap och kommunikation.
Repetition inför provet
2D1311 Programmeringsteknik med PBL Föreläsning 7 Skolan för Datavetenskap och kommunikation.
2D1311 Programmeringsteknik med PBL Föreläsning 3 Skolan för Datavetenskap och kommunikation.
Programmeringsteknik Föreläsning 4 Skolan för Datavetenskap och kommunikation.
2D1311 Programmeringsteknik med PBL
Filhantering Grundprincipen för filhantering Öppna filen
Föreläsning 6 Länkade lista Komplexitet Linjärsökning & binärsökning
Föreläsning 4 Python: mera om funktioner och parametrar
2D1311 Programmeringsteknik med PBL Föreläsning 5 Skolan för Datavetenskap och kommunikation.
2D1311 Programmeringsteknik med PBL Föreläsning 6 Skolan för Datavetenskap och kommunikation.
2D1311 Programmeringsteknik med PBL Föreläsning 7 Skolan för Datavetenskap och kommunikation.
2D1311 Programmeringsteknik med PBL Föreläsning 1 Skolan för Datavetenskap och kommunikation.
Föreläsning 9 Sökning, sortering, grafikprogrammering.
Programmeringsteknik för K och Media
Programmeringsteknik K och Media
Programmeringsteknik för K och Media
Föreläsning 13 Allt om tentan. Sistaminutenhjälp: På fredag 17 december kl 12 sitter Linda i kemi-fiket och svarar på frågor.
1 Föreläsning 3 Datalogi för E1 / 2D1343 Repetition List List operationer Stränghantering For-slingor.
Föreläsning 2 Datalogi för E1 2D1343
Föreläsning 5 Python: argument från kommando-tolken
Föreläsning 10 Länkade lista Stack och Kö Att arbeta med listor
Föreläsning 4 Python: Definiering av egna funktioner Parametrar
Föreläsning 6 Referenser Objekt som parametrar public/private Klassvariabler och klassmetoder.
Strömmar Vid läsning och skrivning används något som kallas strömmar.
Föreläsning 5.  Idag  Kap 7 i Dawson  Filer  Felhantering med try…except.
OOP F4:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 4 Metoder klass-metoder instans-metoder.
Programmeringsteknik
Vektorer (klassen Vector) Sortering
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 8 ( ) Innehåll: Trådprogrammering i Java - Avbrott (”interrupts”) - Metoden join() -
Mer om arv - Polymorfism Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael Kölling Fredric Ragnar
Programmeringsteknik för Media1 & K1
Föreläsning 3 Programmeringsteknik och Matlab DD1312
Programspråk Två olika typer av program omvandlar högnivå till lågnivå program: Interpreterande program och kompilerande program. Python är ett interpreterande.
DD1311 P ROGRAMMERINGSTEKNIK MED PBL Föreläsning 9 Skolan för Datavetenskap och kommunikation.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Metoder -Lokala variabler -Mera om klasser: -Nyckelorden.
Föreläsning 14 ”Enkel” Filhantering.
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
DD1310/DD1314/DA3009 Programmeringsteknik Föreläsning 2 Skolan för Datavetenskap och kommunikation.
Namnrum, räckvidd och rekursion Linda Mannila
Funktioner Linda Mannila Vad kan vi nu? Primitiva datatyper Tal, strängar, booleska värden Samlingsdatatyp Listan Utskrift Indata Felhantering.
Föreläsning 1 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
Föreläsning 8 Programmeringsteknik och Matlab DD1312 Klassmetoder Egen modul, Self Metoderna: __str__, __lt__,… Meddelande Arv, Överlagring av metoder,
Introduktion till klasser, objekt och BlueJ Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael Kölling.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 5 ( ) INNEHÅLL: -Metoder.
F4 - Funktioner & parametrar 1 Programmeringsteknik, 4p vt-00 Modularisering ”svarta lådor” Väl definierade arbetsuppgifter Enklare validering Enklare.
Föreläsning 12 Om slutprovet. Repetition –deklaration av variabler –skapande av objekt (instansiering) –Vektorer och Vector-klassen –Klasser –Instans-/klassvariabler.
Spelprogrammering med bilder och ljud
Programmeringsteknik Föreläsning 8 Skolan för Datavetenskap och kommunikation.
Föreläsning 7 Programmeringsteknik och Matlab DD1315 Kommandotolk parametrar Klass Instans Metod konstruktor.
2D1311 Programmeringsteknik med PBL Föreläsning 1 Skolan för Datavetenskap och kommunikation.
Programmeringsteknik Föreläsning 17 Skolan för Datavetenskap och kommunikation.
2D1311 Programmeringsteknik med PBL
2D1311 Programmeringsteknik med PBL Föreläsning 4 Skolan för Datavetenskap och kommunikation.
1 Föreläsning 8 Mer om klasser och objektorientering.
OOP F5:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 5 Klasser och objekt Skapa objekt - new Referenser Konstruktorer Inkapsling.
Programmeringsteknik
Föreläsning 5 Objekt Klasser Konstruktorer Metoder Minnesbilder av objekt.
Programmeringsteknik för K och Media
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 8 ( ) Innehåll: -Exekveringstrådar.
Föreläsning 9 Inläsning och utskrift på fil –SimpleTextFileReader –SimpleTextFileWriter Felsökning Java API.
Föreläsning4 Repetition slingor Metoder. while-sats består av följande delar: 1. while 2. Villkor-sats (condition) 3. uttryck (statement) while-sats int.
1 Föreläsning 6 Repetition på metoder Referenser Objekt som parametrar public/private Klassvariabler och klassmetoder.
Program indata ? utdata 1/20 Vahid Mosavat, Nada, KTH.
1 Föreläsning 4 Metoder & parametrar Array API och klassen ArrayList.
Presentationens avskrift:

2D1311 Programmeringsteknik med PBL Föreläsning 4 Skolan för Datavetenskap och kommunikation

Kapitel 7 & 8 Filer Särfall (exceptions) Konservering (pickling) Klasser Objekt Attribut och metoder

Filer Enda sättet att spara data mellan programkörningar är att lagra på fil. Det här behöver man kunna: –Öppna filen för läsning eller skrivning: infil = open("C:\bok.txt","r") –Läsa in från en fil infil.readline() –Skriva ut på en fil utfil.write("Natten var mörk.") –Stänga filen utfil.close() "r" för läsning, "w" för skrivning

Konservering För att lagra en hel datastruktur (t ex en lista) på fil kan man konservera den: import cPickle strumplista = ["röda","blåa","ylle"] konserv = open("strumpor.txt","w") cPickle.dump(strumplista,konserv) konserv.close() Den konserverade listan hämtas igen med metoden load konservera = pickle

Särfall När något blir fel i ett Python-program uppstår ett särfall: >>> print sko Traceback (most recent call last): File " ", line 1, in -toplevel- print sko NameError: name 'sko' is not defined Man kan ta hand om särfall genom att införa try-except-else-satser för de delar i programmet som kan krascha. särfall=exception

Tipsfrågor:filen Data (tipsfrågorna) finns på en fil Varje frågeblock består av åtta rader: –Frågans rubrik ("Fladdermusen") –Frågan ("Hur sover fladdermusen?") –Fyra svarsalternativ ("bak&fram","upp&ner",...) –Rätt svarsnummer (2) –Förklaring till svaret ("Fladermusen sover...")

Tipsfrågor:data i programmet De åtta raderna i ett frågeblock lagras i strängar. Svarsalternativen stoppar vi i en lista. En heltalsvariabel för poängen

Tipsfrågor:algoritm 1.Öppna filen för läsning 2.Medan det finns frågor kvar i filen: Läs in nästa fråga Ställ frågan Om svaret är rätt: Ge beröm Öka poängen med ett 3.Stäng filen

Tipsfrågor:funktioner FunktionIndata (parametrar) Utdata (returvärde) open_file(file_name, mode) #Öppnar filen filens namn, öppningsmod filen next_line(the_file) #Läser in nästa rad filennästa rad från filen next_block(the_file) #Läser in nästa block filennästa 8-block från filen welcome(title) #Skriver ut titeln titeln på frågesporten - main() #Utför hela algoritmen! --

# Michael Dawsons Trivia Challenge, kap 7, # modifierat av Linda - 11 februari 2006 def open_file(file_name, mode): """Öppna en fil säkert för läsning eller utskrift.""" try: the_file = open(file_name, mode) except(IOError), e: print "Kan inte öppna filen", file_name, "Avslutar\n",e raw_input("\n\nTryck retur för att stänga.") sys.exit() else: return the_file

def next_line(the_file): """Läs in och returnera nästa rad från filen.""" line = the_file.readline() line = line.replace("/", "\n") return line

def next_block(the_file): """Returnera nästa datablock från filen.""" category = next_line(the_file) question = next_line(the_file) answers = [] for i in range(4): answers.append(next_line(the_file)) correct = next_line(the_file) if correct: correct = correct[0] explanation = next_line(the_file) return category, question, answers, correct, explanation

def welcome(title): """Välkomnar spelaren och skriver ut frågesportstitel.""" print "\t\tVälkommen till frågesporten!\n" print "\t\t", title, "\n"

def main(): trivia_file = open_file("natur.txt", "r") title = next_line(trivia_file) welcome(title) score = 0 # Läs in första blocket category, question, answers, correct, explanation = next_block(trivia_file) while category: # ask a question print category print question for i in range(4): print "\t", i + 1, "-", answers[i]

# Läs in svaret answer = raw_input("Vad svarar du? ") # Kolla om svaret är rätt if answer == correct: print "\nJavisst!", score += 1 else: print "\nFel.", print explanation print "Poäng:", score, "\n\n" # Läs in nästa block category, question, answers, correct, explanation = \ next_block(trivia_file) trivia_file.close() print "Det var sista frågan!" print "Din totalpoäng blev:", score main() # Anropar main()-funktionen raw_input("\n\nTryck retur för att avsluta.")

Objekt Objekt är en datatyp som kan innehålla både data och funktioner. Data som tillhör objektet kallas attribut. En funktion som hör till objektet kallas metod. namn:"Pricken" lynne:"sur" hunger:5

Klasser För att skapa objekt behöver man en klass. En klass är en mall för ett objekt I klassen beskrivs attribut och metoder. Alla metoder har parametern self som används för att komma åt de egna attributen. Metoden __init__(self) kallas konstruktor och anropas automatiskt då ett objekt skapas.

# Demonstrerar en husdjursklass (som Critter i kapitel 8) import random class Husdjur(object): """ Ett virtuellt husdjur """ def __init__(self, namn): self.namn = namn self.lynne = random.choice(("sur","arg","ledsen")) self.hunger = 5 print "Hej, jag heter", self.namn def kolla(self): print "Just nu är jag", self.lynne, if self.hunger > 0: print "och hungrig!" else: print "och mätt!" def mata(self, mat): self.hunger -= mat def leka(self): self.lynne = random.choice(("glad","sprallig","busig")) konstruktor metoder attribut

def main(): pricken = Husdjur("Pricken") pricken.kolla() pricken.mata(10) pricken.leka() pricken.status() main()

Klassattribut och statiska metoder Attribut och metoder hör alltid till ett visst objekt (Pricken är sur och hungrig) Men ett klassattribut är en variabel som är gemensam för alla objekt ur klassen. En variabel som skapas utanför metoderna i en klassdefinition blir automatiskt ett klassattribut. En statisk metod är en metod som arbetar på klassen.