Kursanvarig Väkomna ti kursen: Programmeringsteknik och Matab DD1315 Petter Ögren Petter Ögren petter@kth.se Kontor: Teknikringen 14 Kontakt/frågor: - Canvas (något många vi veta, måsättning är svar inom 24h) - Emai (något som få vi veta) - Vid föreäsningarna A information finns här: - https://kth.instructure.com/courses/4243 Tips: Vidarebefordra er KTH-mai ti er vaniga maiadress Dagens föreäsning Vad är Programmering? Vad är programmering? Varför är programmering viktigt? Eamination (vad krävs för att kara kursen?) Kursens må Introduktion ti Python Mået: Lösa ett probem. Vad är detta? Steg: Förstå probemet Dea upp probemet i hanterbara bitar Skissa en ösning (specifikation) Impementera och testa Varför är programmering viktigt (för er)? Denna kurs kräver ingen förkunskap om programmering. Dock intressant att veta viken bakgrund ni har. Aternativ A: Jag har inte programmerat tidigare Aternativ B: Jag har programmerat, men inte Python (t.e. Java) Högre kurser - DT1130 Spektraa transformer 7,5 hp (Matab->Python) - DT1175 Ljud - DM150 Videoteknik - DD1320 Tiämpad dataogi 6.0 hp - Framtida probemösning med datorer Det är ku! Aternativ C: Jag har programmerat Python 1
Vad behövs för att kara kursen? Vad behövs för att kara kursen? Vad behövs för att kara kursen? - Godkänt på föjande adok-moment:, LAB1, LAB2, LAB3, MAT1 Hur bestäms betyget? - Av P-uppgiften (LAB3) Förmåga L L LL D Python 4 abbar Datorprov (par) (ind) LAB1 (P/F) LAB2 (P/F) P P-uppgift (ind) LAB3 (A,B,,F) L L Matab/Numpy 2 abbar (par) MAT1 (P/F) Är P-uppgiften Omöjig? Dagens föreäsning P-uppgiften är en möjighet - att väja något roigt probem - att visa vad ni ärt er - att få det betyg ni vi ha L L L L D P Mitt må: Så många A som möjigt! P Vad är programmering? Varför är programmering viktigt? Eamination (vad krävs för att kara kursen?) Kursens må Introduktion ti Python Lärandemå Efter kursen ska ni kunna: föja regerna i programspråkets synta tiämpa och redogöra för reger för god programmeringssti (såsom användarvänighet, kommentarer, fehantering, strukturering, feibiitet) upptäcka och korrigera programmeringsfe modifiera givna program överföra data mean fi och program identifiera behovet av och använda styrstrukturer (vikorssatser och singor) dea upp ett större probem i hanteriga dear och konstruera funktioner för dessa använda de datastrukturer som finns inbyggda i programspråket, samt väja datastrukturer som passar för det aktuea probemet använda kasser, samt konstruera egna kasser, granska andras program hantera matriser och använda matrisoperationer i Matab använda färdiga funktioner ur Matabs bibiotek för beräkningar och visuaisering skriva egna Matabfunktioner använda den programmeringsmetodik du ärt dig under första deen av kursen även i de program du skriver i Matab Vi konkretiserar dessa i form av Nyckekoncept... Modu 1, första veckan Lärandemå ßà Moduer och Nyckekoncept Lärandemå/Nyckekoncept föja regerna i programspråkets synta tiämpa och redogöra för reger för god programmeringssti (såsom användarvänighet, kommentarer, fehantering, strukturering, feibiitet) Variaber For-oopar Whie-oopar Datatyper (int, foat, string) Listor Funktioner Scope Dictionaries Moduer/ Import Fier, fehantering och mer Dictionaries Kasser/ Objekt Arv upptäcka och korrigera programmeringsfe modifiera givna program överföra data mean fi och program identifiera behovet av och använda styrstrukturer (vikorssatser och singor) dea upp ett större probem i hanteriga dear och konstruera funktioner för dessa använda de datastrukturer som finns inbyggda i programspråket, samt väja datastrukturer som passar för det aktuea probemet använda kasser, samt konstruera egna kasser, granska andras program P-uppgiften se kurshemsidan... 2
Detajschema Dagens föreäsning Redovisning på fredag! Efter dagens föreäsning kan ni börja ösa uppgifterna Vad är programmering? Varför är programmering viktigt? Eamination (vad krävs för att kara kursen?) Kursens må Introduktion ti Python Varför Python? Kursboken Python är Popuärt, kraftfut och ättanvänt! Det finns många sätt att ära sig Kursbok (finns onine?) Youtube-videor Onine-tutorias... Hur är man sig programmering? Nyckekoncept F1 & F2 Genom att koa på eempe! Hur hittar man eempe? Googe! - Hmm hur ser en for-oop ut i Python? Dock: Pagiering inte ok - (se CSC-Code of Honor) Variaber For-oopar Whie-oopar Datatyper (int, foat, string) 3
1-01-15 PyCharm PyCharm är en utveckingsmijö för Python PyCharm i datorsaarna Öppna Termina Skriv pycharm i terminaen... ok... start new project Väj python 3.5 som interpreter New... fie... Kör PyCharm - Python som miniräknare - Sama kommandon i fi Ett Python-program import matpotib.pypot as pt import math from random import randrange = 0.0 y = 0.0 corner_ = [0, 1, 0.5] corner_y = [0, 0, math.sin(math.pi/3)] for i in range(0, 2000): my_inde = randrange(3) = ( + corner_[my_inde]) / 2.0 y = (y + corner_y[my_inde]) / 2.0 pt.pot(,y,",") print(i) Ett Python-program importera etrafunktioner variaber istor for-oop pt.yabe('triange') pt.show() Nyckekoncept F1 & F2 Variaber For-oopar Whie-oopar Datatyper (int, foat, string) import matpotib.pypot as pt import math from random import randrange = 0.0 y = 0.0 corner_ = [0, 1, 0.5] corner_y = [0, 0, math.sin(math.pi/3)] for i in range(0, 2000): my_inde = randrange(3) = ( + corner_[my_inde]) / 2.0 y = (y + corner_y[my_inde]) / 2.0 pt.pot(,y,",") print(i) pt.yabe('triange') pt.show() Debugging, Brakepoints och Step Här startar man debuggern Breakpoint, här stannar eekveringen Just nu körs denna rad Här stegar man i koden 4
Nyckekoncept F1 & F2 Variaber For-oopar Whie-oopar Datatyper (int, foat, string) Variaber Variaber sätts med = a = 2 (sätt a ika med 2!) Vikor testas med == a == 2 (är a ika med 2?) Bra variabenamn: - anta_kompisar - AntaKompisar (endast kasser) Dåiga variabenamn: - antkomp - - kvrp - z De 3 viktigaste variabetyperna: Int, Foat, String Vad skriver föjande program ut på skärmen? = 4 y = hej z = 4.0 print(+) print(y+y) print(z+z) Aternativ A: hejhej.0 Aternativ B: hejhej Aternativ C: hheejj int - heta = 3 + bir 6 foat fytta (decimata) = 0.333 + bir 0.666 = 1/3 ger = 0.3333333333333333 obs avrundningsfe kan förekomma string tetsträng = hej + bir hejhej = 0.333 + bir 0.3330.333 Nyckekoncept F1 & F2 Variaber For-oopar Whie-oopar Datatyper (int, foat, string) Vad skriver föjande program ut på skärmen? print("hej aihop!") Aternativ A: Liseott Aternativ B: Hej aihop! Aternativ C: Hej aihop! Aternativ D: ( Hej aihop! ) 5
Print och Strängar För att skriva ut på skärmen används print Eempe: print( hej ) print( hej + då ) namn = Kim print( hej +namn) För att få information från användaren använd input Eempe: my_name = input( Skriv in ditt namn: ) Viken diaog hör ti föjande program? name_1 = input( Vad heter du?") print( Hej +name_1) Aternativ A: Vad heter du? Hej name_1 Aternativ B: Vad heter du? Kim Hej Kim Aternativ C: input: (Vad heter du?): Kim Hej Kim Nyckekoncept F1 & F2 Hur känns dagens föreäsning? Aternativ A: För svår Aternativ B: Lagom Aternativ C: För ätt Variaber For-oopar Whie-oopar Datatyper (int, foat, string) Prata med årskursrepresentanterna! If-satser True/Fase Vad skriver föjande program ut på skärmen? = 10 if > 5: print("större") ese: print("mindre") Aternativ A: Större Aternativ B: Mindre Aternativ C: Större Mindre Amänt: if epression1: eif epression2: eif epression3: ese: Eempe: Ett bock är if == 4: at indenterat print( är fyra ) efter koon (:) eif == 3: print( är tre ) print(... och inte fyra ) ese: print( tydigen varken 3 e.4 ) print( tråkigt ) Aternativ D: (inget) print( nu tänker vi på något annat ) eif är förkortning av ese if 6
Nyckekoncept F1 & F2 Variaber For-oopar Whie-oopar Datatyper (int, foat, string) Vad skriver föjande program ut på skärmen? for i in range(97, 100): print(i) print("nu kommer jag!") Aternativ A: 97 Nu kommer jag! Aternativ B: 97 9 99 Nu kommer jag! Aternativ C: Nu kommer jag! For-oopar och Whie-oopar Nyckekoncept F1 & F2 Känt anta upprepningar: for var in sequence: statements(s) for i in range(1,6): y=i**2 Okänt anta upprepningar: whie epression: i=0 whie i<5: i=i+1 y=i**2 Variaber For-oopar Whie-oopar Datatyper (int, foat, string) används för att förkara kod # gör att Python ignorerar resten av raden (trippe-quotes) används för fera rader av tet Eempe: # this is the XYZ agorithm t = + y + z print( ZZZzzz... ) # This is the ZZ-agorithm """ This is an eampe of a mutiine comment that spans mutipe ines ba ba ba """ Nyckekoncept F1 & F2 Variaber For-oopar Whie-oopar Datatyper (int, foat, string) 7
Datatyper Nyckekoncept F1 & F2 Aa variaber tihör en typ Testa genom: >>>type(myi) <cass 'int'> Kaas även Datastrukturer, innehåer en saming data (t.e. ista av ta) se F3... myi=7 myf=4.4 # int # foat myb= True # boo mys="hej # str myl=[3, 4, 5] # ist # dict myd={"dog":"hund,"cat":"katt"} Variaber For-oopar Whie-oopar Datatyper (int, foat, string) Nu kan ni tiräckigt för att börja med Lab1 (deadine på fredag) Ett Python-program Var finns Lab1-beskrivningen? importera etrafunktioner variaber istor for-oop import matpotib.pypot as pt import math from random import randrange = 0.0 y = 0.0 corner_ = [0, 1, 0.5] corner_y = [0, 0, math.sin(math.pi/3)] for i in range(0, 2000): my_inde = randrange(3) = ( + corner_[my_inde]) / 2.0 y = (y + corner_y[my_inde]) / 2.0 pt.pot(,y,",") print(i) pt.yabe('triange') pt.show() Sut Hur kändes dagens föreäsning? Aternativ A: För svårt Aternativ B: Lagom Aternativ C: För ätt Prata med årskursrepresentanterna!
22 Viktiga punkter (Säg ti om vi inte uppfyer dessa!) Stimuating tasks 1. I worked with interesting issues [Jag hoppas kunna övertyga er om att programmering är intressant] Eporation and own eperience 2. I epored parts of the subject on my own [Läroboken, videoföreäsningar och CodyCoursework/CodeCademy ska underätta sjävstudier] 3. I coud earn by trying out my own ideas [i abbarna och P-uppgiften ska möjighet ges att pröva egna ideer] Chaenge 4. The course was chaenging in a stimuating way [Labbar och P-uppgift ska vara utmanande] Beonging 5. I fet togetherness with other course participants [] 6. The atmosphere in the course was open and incusive [Föreäsningar och övningar ska vara öppna för frågor i en positiv anda] Cear goas and organization 7. The earning objectives heped me understand what I was epected to achieve [Lärandemåen ska kommuniceras och koppas ti eaminiation]. I understood how the course was organized and what I was epected to do [Detta ska kommuniceras] Understanding of subject matter 9. I understood what the teachers were taking about [Säg ti om det bir obegripigt] 10. I coud earn from concrete eampes that I was abe to reate to [Eempe finns i Kursboken och Oninemateriaet] 11. Understanding of key concepts was given high priority [Det ska framgå vika nyckekoncepten är] 22 Viktiga punkter (vika är våra svagheter?) Constructive aignment 12. The course activities heped me to reach the earning objectives efficienty 13. I understood what I was epected to earn in order to get a particuar grade Feedback and security 14. I reguary received feedback that heped me see my progress 15. I coud practice and receive feedback without any grading being done 16. The assessment on the course was fair and honest Sufficient background knowedge 17. My background knowedge was sufficient to foow the course Time to refect 1. I reguary spent time to refect on what I earned Variation and choices 19. I coud earn in a way that suited me 20. I had opportunities to choose what I was going to do Coaboration 21. I coud earn by coaborating and discussing with others Support 22. I coud get support if I needed it 9