Erfarenheter från labben

Relevanta dokument
Hur man programmerar. Exempel på problemlösning i Python

Python vecka 41-42: Individuell programmering

Erfarenheter från labben

Extra lab. Nu på fredag kl 8-12 Frivillig Enbart hjälp med projektuppgiften Ingen examination

HI1024 Programmering, grundkurs TEN

Välkomna till DIT012 IPGO. Tyvärr en bug i Google Docs: Sidnummer stämmer inte alltid. Alla anteckningar börjar på sidan 1.

Uppgifter teknik HT17 (uppdaterad v. 40)

Välkomna till DIT012 IPGO

TDP Regler

Tentamen i Introduktion till programmering

Laboration: Whitebox- och blackboxtesting

HI1024 Programmering, grundkurs TEN

ENKEL Programmering 3

Tentamen TEN1 HI

Programmering = modellering

Logik och kontrollstrukturer

HI1024 Programmering, grundkurs TEN

729G04 Programmering och diskret matematik

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python TDDE24 Funktionell och imperativ programmering del 2

Planering Programmering grundkurs HI1024 HT 2014

Föreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk

Alla datorprogram har en sak gemensam; alla processerar indata för att producera något slags resultat, utdata.

Introduktion till programmering och Python Grundkurs i programmering med Python

Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition.

Programmering på papper. Datorer, programmering och instruktioner

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

729G04 Programmering och diskret matematik

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python

HI1024 Programmering, grundkurs TEN

HI1024 Programmering, grundkurs TEN

HI1024 Programmering, grundkurs TEN

KTH STH TENTAMEN. HI1024:TEN2 - Praktisk tentamen Tid: 8-13, den 18 februari 2012

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python

TDDI16: Datastrukturer och algoritmer

Föreläsning 2 Programmeringsteknik och C DD1316. Mikael Djurfeldt

TENTAMEN MOM1 GRUNDLÄGGANDE PROGRAMMERINGSTEKNIK OCH

Lär dig programmera! Prova på programmering med enkla exempel! Björn Regnell

Använda Python Laboration 1 GruDat, DD1344

Kurslitteraturen. C-nivå Villkorssatser [kap 8] if & elif & else and & or Loopar [kap 9] for

Kursanalys DA2003 sommar 2017

Algoritmer och datastrukturer. HI1029 8,0 hp Introduktion

Tentamen i Grundläggande programmering STS, åk 1 fredag

Programmera ett övergångsställe

Tentamen i Grundläggande programmering STS, åk 1 fredag

INFORMATIK - MED SYSTEMVETENSKAPLIG INRIKTNING, GRK/A (1-30 HP)

Föreläsning 10 Datalogi 1 DA2001. Utskrift på skärmen. Syntax. print( Hej ) Hur är det? Hej. print( Hej,end= ) print( Hur är det? ) HejHur är det?

729G74 - IT och programmering, grundkurs. Dugga.

Objektorienterad Programmering (TDDC77)

TDP Regler

TUTORIAL: KLASSER & OBJEKT

Tentamen TEN1 HI

E-post för nybörjare

Programmera och hitta buggarna. Se video

Hej och välkommen till en kort presentation av SchemaKoll. I den här presentationen kommer du att bli guidad genom proceduren att logga in med en

Namn Stil Dokumentation Objekt-orienterad programmering OBS OBS OBS OBS OBS OBS OBS OBS

Föreläsning 2 Programmeringsteknik och C DD1316. Programmering. Programspråk

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python

Klassrumsprojekt programmering - Digitalt lärande

1/15/2013. DD1310/DD1314/DA3009 Programmeringsteknik. Lärandemål... Vilka läser kursen? ...fler lärandemål VARFÖR? Föreläsning 1

DD1310/DD1314/DA3009 Programmeringsteknik LÄRANDEMÅL... Vilka läser kursen? ...FLER LÄRANDEMÅL. Föreläsning 1

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

Föreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk

Varför behöver vi förstå programmering? Se video

Tentamen ID1004 Objektorienterad programmering October 29, 2013

Föreläsning 10. Besiktningsprotokollet

Användarhandledning Version 1.2

Extramaterial till Matematik X

Programdesign. minnesutrymme storlek på indata. DA2001 (Föreläsning 15) Datalogi 1 Hösten / 20

Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic

Laboration i datateknik

kl Tentaupplägg

DD1311 Programmeringsteknik för S1 Laborationer läsåret

Besiktningsprotokollet

Tentamen TEN1 HI

Vid fel och frågor Ta kontakt med förbundet. Logga in. Menyn

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

TDP002 - Imperativ programmering

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python

Skolan för Datavetenskap och kommunikation PROGRAMMERINGSTEKNIK FÖRELÄSNING 18

729G04 Programmering och diskret matematik Tenta kl 14:00-18:00

DD1314 Programmeringsteknik

729G04 Programmering och diskret matematik

Instruktioner - Datortentamen TDDE24 och TDDD73 Funktionell och imperativ programmering (i Python)

INFORMATIK - MED SYSTEMVETENSKAPLIG INRIKTNING, GRK/A (1-30 HP)

Men först: Några funktioner ur preluden. Introduktion till programmering. Uppgiften. Variationer av uppgiften. Föreläsning 4

Imperativ programmering

Uppgifter till tenta i 729G04 Programmering och diskret matematik. 17 december 2015, kl 14:00-18:00

2D1339 Programkonstruktion för F1, ht 2003

Deltagande i studentexamen

C++ Lektion Tecken och teckenfält

Tenta (TEN3) i kursen 729G04 Programmering och diskret matematik 5 feb 2016, kl 14:00-18:00

[SLUTRAPPORT: DRAWPIXLZ (ANDROID-APP)] Slutrapport. Författare: Zlatko Ladan. Program: Utvecklare av Digitala Tjänster 180P

Planering Programmering grundkurs HI1024 HT data

Planering Programmering grundkurs HI1024 HT TIDAA

kl Tentaupplägg. TIPS 4: Du kan kompilera din kod med följande kommandon g++11, w++11 (för mer varningar)

kl Tentaupplägg

Tentaupplägg. Betygsgränser: 1 uppg 19:00 Betyg 3 2 uppg 18:00 Betyg 4 2 uppg 16:30 Betyg 5 3 uppg 18:00 Betyg 5

Uppgift 1 ( Betyg 3 uppgift )

Visma Proceedo. Att logga in - Manual. Version Version /

Objektorienterade programmeringsspråk. Objektorienterade språk. Den objekt-orienterade modellen. Jämför med icke-oo

Transkript:

Erfarenheter från labben Uppgifterna tidigare Bättre instruktioner än förra veckan Väntetid Smidigare hjälp Olika krav från olika examinatorer Kan alltid kolla med Joachim

God programmeringssed De allra flesta gör detta mycket bra! Välj lämpliga namn på variabler och funktioner Dela upp i små testbara delar Testa varje del noga och systematiskt Många behöver öva mer på detta!

Testning Mitt stiliga program är säkert rätt. FEL Jag kör någon test för att bevisa det. Det finns fel i mitt usla program. Jag testar tills jag hittar det. RÄTT Testning kan påvisa fel i program Testning kan inte påvisa frånvaron av fel.

Programmeringscykeln: Förstå uppgiften Förstå redskap Planera strukturen Fundera Definiera in/utdata Iterativt på varje del Koda Testa Tänk ut testfall Kör tester Värdera resultaten

Programmeringscykeln: Förstå uppgiften Förstå redskap Planera strukturen Iterativt på varje del Fundera Koda Testa Definiera in/utdata Tänk ut testfall Gör detta innan du börjar koda! Kör tester Värdera resultaten

Testsvit Rimligt stor mängd av testfall Försök hitta alla konstiga fall Täck alla delar av koden Förutsägbart resultat: ha en hypotes Dokumentera alltid I riktig programmering görs ofta testsviter innan kodning, som del i planeringen

Denna vecka och nästa Datorns uppbyggnad och assembler Webföreläsningar Se labinstruktion

Denna vecka och nästa: Individuell Pythonprogrammering Tillfällig paus i speeddatingen (lugn, den återkommer i javadelen) 2-timmarspass i halvklass

När? Det beror på om du går i A eller B. Kolla schemat noga! Var? Det beror på vilken bokstav ditt efternamn börjar på. Se labinstruktion. Kan du byta? Ja, om du byter med någon så att gruppantalen inte ändras

Individuella labbar denna vecka Pythonuppgifter. Inget nytt material. Krav för godkänt: Var där och jobba effektivt. Var beredd att redovisa repetitionsfrågor. Du får själv välja vilka uppgifter du ska jobba med. Alla hjälpmedel och samarbete tillåtet Ingen möjlig inteckning för högre betyg Tips: Använd detta som förberedelse till individuella provet.

Individuellt prov 9/10 Fredag 9 oktober kl 1015-1230 resp 1245-1500 (OBS) Sker i labsal i halvklass: kolla schemat noga! Programmeringen slutar 15 minuter innan sluttiden. Därefter vidtar examination. Uppgifterna avslöjas inte innan provet Sitt stilla och tyst under hela tiden, tills alla i rummet är examinerade

Individuellt prov 9/10 Uppgifterna är av samma typ som den individuella labben Individuell, tyst programmering. Ingen hjälp från lärare. Vi examinerar bara. STStreorna är inte där. Samma hjälpmedel som på labbarna tillåtna (Internet, böcker, anteckningar etc). Egen dator tillåten. Får återanvända egen kod. Får förstås inte prata med någon annan eller skriva av framgooglad kod.

Individuellt prov 9/10 Förbered: Kolla att du kan logga in och öppna words.txt Kodhygien ett krav: lämpliga variabelnamn och koduppdelning. Redovisa testfall. Kommentarer inte ett krav. Inteckningar mot högre betyg: dubbla inteckningar möjliga. Grad bestäms av hur många uppgifter du löser. Nästanlösningar, ofullständiga tester etc kan göra inteckningen enkel.

Problemlösning i Python

Ett problem 4. Som vokaler i engelska språket räknar vi i denna uppgift bokstäverna aeuio, och som konsonanter alla andra bokstäver utom y (y fungerar ibland som konsonant och ibland som vokal och därför struntar vi i den just nu). Skriv ett program som räknar ut hur många engelska ord har precis lika många konsonanter som vokaler. En lista av engelska ord Binns i Bilen words.txt.

Allra först: Övertyga dig om att du begripit problemet genom att formulera några konkreta exempel hi - lika boy - lika hue - olika ally - olika joakim - lika Joakim - stora bokstäver förekommer inte

Lätt eller svårt? När jag ser ett problem funderar jag först om det är så lätt att jag kan lösa det omedelbart, därför att: + Det är så lätt att jag inser lösningen bums, eller + Jag kan snabbt leta upp en funktion i något bibliotek, eller + Jag har löst detta tidigare. I annat fall, dela upp i delproblem: Om jag löser delarna kan jag kombinera ihop en lösning till det urprungliga. Strategi: Önsketänkande!

Ursprungsproblemet Kan jag inte lösa bums. Men det sönderfaller i två delar: 1. Läs in alla orden från filen till en datastruktur som jag kan jobba med 2. Räkna ut hur många ord i den strukturen som har lika många vokaler som konsonanter

Delproblem 1 Har gjort det förut. Kopierar jag kod från någon lab, tex def getwords(): fil = open( words.txt ) text = fil.read() words = text.split() return words

Delproblem 2 Räkna ut hur många ord i en lista som har lika många vokaler som konsonanter Signatur: count_eq_cw(wordlist) -> int funktionsnamn, parametertyp(er), resultattyp Exempel: [ hi, ally, boy ] -> 2 [ joakim, y, hue ] -> 2

Kan jag inte lösa bums. Vilket delproblem skulle kunna hjälpa mig? Önskar: en funktion som avgör, för ett visst ord, om det har lika många vokaler som konsonanter. I så fall är det bara att gå igenom listan och räkna upp en räknare för varje sådant ord.

Delproblem 3 Avgör om ett ord har lika många vokaler som konsonanter has_eq_cw(word) -> boolean hi -> True hue -> False boy -> True

Kan jag inte lösa bums. Vilka delproblem skulle kunna hjälpa mig? Önskar: funktioner som räknar ut antalet vokaler och antalet konsonanter. I så fall behöver jag bara jämföra om antalen är lika.

Delproblem 4,5 Räkna antalet vokaler i ett ord Räkna antalet konsonanter i ett ord count_vowel(word) -> int count_cons(word) -> int

Kan jag inte lösa bums. Vi börjar med vokalerna. Vilket delproblem skulle kunna hjälpa mig? Önskar: en funktion som avgör om ett tecken är en vokal. I så fall behöver jag bara gå igenom ordet och räkna upp en räknare för varje vokal.

is_vowel(letter) -> boolean is_cons(letter) -> boolean

Delproblem 6 Avgör om ett tecken är en vokal En vokal är något av tecknen aeuio. Lätt: använd konstruktionen tecken in aeuio

Delproblem 7 Avgör om ett tecken är en konsonant En konsonant är något som inte är en vokal och inte heller tecknet y. Lätt: använda lösningen till delproblem 6 kombinerat med en jämförelse om tecken är y.

Hurra! Nu finns inga svåra delproblem kvar. Ännu inte rört tangentbordet. Problemuppdelning innan själva programmeringen. Till stor del oberoende av programmeringsspråk. Använd papper och penna.

Syntes Nu är det dags att att börja programmera. Bottom up : börja med de minsta delproblemen. För vart och ett gör en funktion. Varje funktion testas för sig. Strategi: Uppfyll önskningarna!

Gör samma sak! Testa!!

Testa!!

Testa!!

Sammanfattning Allra först: kolla att du förstått. Gör exempel. Börja med en problemuppdelning Gör klart vilka funktioner som behövs. Bestäm parametrar och returvärden. Koda dem bottom up Testa i varje steg