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

Slides:



Advertisements
Liknande presentationer
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.
Advertisements

void hittaMax(int tal[], int antal, int *pmax) { int i; ??=tal[0]; for(i=1;i??) ??=tal[i]; } int main() { int v[]={1,2,3,4,2}; int.
Funktioner och programorganisation
2D1311 Programmeringsteknik med PBL
Sökning och sortering Linda Mannila
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.
Logikprogrammering Ons, 25/9
Vilken/vilka av följande satser ger syntaxfel:
P-uppgiften: regler, planering och specifikation
Programmeringsteknik Föreläsning 4 Skolan för Datavetenskap och kommunikation.
2D1311 Programmeringsteknik med PBL
Tentamensdags och lab 3…. Större program delas normalt upp i flera filer/moduler vilket har flera fördelar:  Programmets logiska struktur när man klumpar.
Föreläsning 4 Python: mera om funktioner och parametrar
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.
2D1311 Programmeringsteknik med PBL Föreläsning 4 Skolan för Datavetenskap och kommunikation.
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.
Föreläsning 5.  Idag  Kap 7 i Dawson  Filer  Felhantering med try…except.
Tentamensdags och lab 3…. Större program delas normalt upp i flera filer/moduler vilket har flera fördelar:  Programmets logiska struktur när man klumpar.
Föreläsning 11 Arrayer.
Programmeringsteknik
Vektorer (klassen Vector) Sortering
William Sandqvist C:s minnesmodell.
Föreläsning 3 Programmeringsteknik och Matlab DD1312
Listor En lista är en föränderlig ordnad samling objekt.
Funktioner, styrstrukturer, manipulering av matriser
1 Föreläsning 3 programmeringsteknik och Matlab 2D1312/ 2D1305 Matlab fortsättning Funkioner, styrstrukturer, manipulering av matriser.
Grundläggande programmering
Problemlösning Veckodagsproblemet Gissa talet Siffersumman.
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.
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
Föreläsning 10 Stränghantering.
Föreläsning 5 Arrayer & ArrayList Hur man använder API:n
Problemlösningsmetodik
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.
William Sandqvist C-programmering ID120V Stack och Kö William Sandqvist
Föreläsning 4 Listor, tupler, och for-loopar. Listor En lista är en föränderlig ordnad samling objekt. Listor skapas med hakparenteser. lista = [12,13,14,15]
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Föreläsning 12 Sökning och Sökträd.
Programmeringsteknik Föreläsning 8 Skolan för Datavetenskap och kommunikation.
Planering av ett större program - Funktioner, moduler, if och Boolean Linda Mannila
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.
Anders Sjögren Deklarationsområde och funktioner.
Programmeringsteknik
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.
Program indata ? utdata 1/20 Vahid Mosavat, Nada, KTH.
1 Föreläsning 4 Metoder & parametrar Array API och klassen ArrayList.
Föreläsning 9 Sökning, sortering, grafiska gränssnitt (GUI)
KPP053, HT2015 MATLAB, Föreläsning 4
Föreläsning 3 Programmeringsteknik
Presentationens avskrift:

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

Kapitel 5 & 6 Listor Uppslagslistor Funktioner Parametrar Namnrymden

Listor Listor liknar tupler, men är flottare: –Skrivs med hakparenteser: blommor=["ros","fiol","pion"] –Går att ändra (muterbara): blommor[1]="viol" –Har metoder: blommor.sort()

Rita listan Man brukar rita en lista så här: (Egentligen innehåller listan referenser till elementen, dvs adressen till den plats i minnet där elementet lagras.) blommor "pion" "ros" "viol" "pion" "ros" "viol"

Listmetoder MetodBeskrivning append(x) Lägger till x sist i listan. sort() Sorterar i stigande ordning. reverse() Vänder listan. count(x) Räknar antalet x i listan. index(x) Första förekomsten av x i listan. insert(i,x) Stoppar in x på plats i. pop([i]) Plockar ut elementet på plats i. remove(x) Tar bort första förekomsten av x.

# Visar hur man läser in till en lista lista=[] ord=raw_input("Vad rimmar på hus? ") while ord!="": lista.append(ord) ord=raw_input("Kan du ett till? ") print lista print "Du hittade", len(lista),"ord!" Exempel

Uppslagslistor En uppslagslista lagrar datapar. Varje datapar har en nyckel och ett värde. Nycklarna måste vara unika och omuterbara. Runt uppslagslistan används klamrar. Exempel: dagar={"januari":31,"februari":28,"mars":31} print dagar["mars"] dagar["april"]=30 uppslagslista=dictionary

Algoritm 1.Variabler: –Ordbanken ( ORDBANK ) –Slumpat ord ur ordbanken ( ordet ) –Antal felgissningar man får göra ( MAX_FEL ) –Ordmall, från början -----, korrekta gissningar fylls i vartefter: -å---, -ått- ( hittills ) –Antal felgissningar som spelaren gjort ( fel ) –Alla bokstäver som spelaren gissat på ( tagna )

2. Upprepa medan det finns gissningar kvar och ordet inte hittats: –Läs in ny gissning –Lägg till bokstaven bland tagna –Om bokstaven finns med i ordet: Lägg till den i ordmallen hittills –annars: Öka antal fel med ett 3. Efter slingan – kolla om ordet gissades rätt och skriv ut lämpligt meddelande.

# Ordgissning # # Michael Dawsons Hangman-program, kap 5, # modifierat av Linda - 5 februari 2006 import random # Skapa variablerna ORDBANK = ("SVAMP","MOSSA","HALLON","SKOG","ROT") ordet = random.choice(ORDBANK)# Slumpar ordet MAX_FEL = len(ordet) # Max felgissningar hittills = "-" * len(ordet) # Streckordet fel = 0 # Felaktiga gissningar tagna = [] # Redan gissade bokstaver

# Upprepa medan det finns gissningar kvar # och ordet inte hittats. while (fel < MAX_FEL) and (hittills != ordet): print "Du har gissat:", tagna print "Ordet hittills:", hittills gissning = raw_input("\nGissa bokstav: ") gissning = gissning.upper() # Kolla om bokstaven redan fanns while (gissning in tagna): print "Du har redan gissat:", gissning gissning = raw_input("Gissa igen: ") gissning = gissning.upper() tagna.append(gissning)

# Fanns bokstaven i ordet? if (gissning in ordet): print "\nJapp!", gissning, "finns med!" # Skapa ny hittills med nya gissningen i ny = "" for i in range(len(ordet)): if gissning == ordet[i]: ny += gissning else: ny += hittills[i] hittills = ny else: print "\nAttans,", gissning,\ "fanns inte med." fel += 1

# Vilket villkor avslutade slingan? if (fel == MAX_FEL): print "\nAjajaj..." else: print "\nJavisst!" print "Ordet var", ordet raw_input("\n\nAvsluta med Retur.")

Reklam för funktioner Man slipper skriva om samma satser på flera ställen. Enklare att testa delarna var för sig. Gör programmet mer överskådligt och lättläst. Kan återanvändas i nästa program!

Några kända funktioner FunktionIndata (parametrar) Utdata (returvärde) ut=input("Gissa:") strängen "Gissa" den inlästa gissningen ut=str(bredd) talet i variabeln bredd talet som sträng ut=len("kålrot") ut=len(tuppel) en sekvens, t ex strängen "kålrot" antal element i sekvensen ut=range(0,100,2) startvärde 0, övre gräns 100, steg 2 en lista med tal

Funktion eller metod? En metod är som en funktion men –Hör till en modul (t ex random ) eller en variabel (t ex en lista). –Anropas via modulen/variabeln med en punkt: random.randrange(3) lista.sort() –Kan ändra på variabeln den anropades från, t ex sortera listan.

Hur funktioner fungerar Funktionen anropas. Indata skickas in via parametrar, utdata returneras. Programmet fortsätter efter anropet.

Hur man definierar en funktion Skriv först def funktionsnamn ( parametrar ): Sen, indenterat: –En kommentarrad som beskriver vad funktionen gör, inom tredubbla citationstecken, tex """Beräknar arean""". –Satserna som funktionen ska utföra. –Allra sist return returvärde/returvärden

Exempel från Tic-tac-toe i kap 6 def ask_number(question, low, high): """Ask for a number within a range.""" response = None while response not in range(low, high): response = input(question) return response move = ask_number("Your move? (0 - 8):", 0, 8 ) Funktionen anropas så här: Funktionen definieras så här: question lowhigh returvärde

Namnrymder Varje gång en funktion anropas skapas en namnrymd för just det anropet. Parametrar och variabler som skapas inuti funktionen blir lokala (finns bara i funktionen). Man kan också komma åt globala variabler, som skapats utanför funktionen, men inte ändra på dom.

Namnrymdsexempel DIFF = 32 FAKTOR = 5.0/9.0 def celsius(f): """Konverterar fahrenheit till celsius""" c = (f-DIFF)*FAKTOR return c print "Idag blir det",celsius(13),"i Amherst." Konstanterna DIFF och FAKTOR är globala och finns i hela programmet. Parametern f och variabeln c är lokala och finns bara inuti funktionen celsius.

Diagnostiska prov På kursens webbsida finns två diagnostiska prov att öva på (fler tillkommer vartefter). Gå till och välj Kursmoment  Lab2:Prov  Diagnostiska prov