729G74 IT och programmering, grundkurs Tema 1, Föreläsning 3 Jody Foo, jody.foo@liu.se
Föreläsningsöversikt Kurslogistik Diskret matematik & Uppgifter i Python Kompletteringar Tema 1: Olika perspektiv på "Program" Mängdlära: begrepp och notation Källkod i Python: Grundläggande struktur
Temaupplägg Vecka 1: Introduktion (föreläsning + introduktionsuppgift) Vecka 2: Temats kärna (föreläsning, begreppspresentationer) Vecka 3-4: Praktisk fördjupning (föreläsning, lektion inför temauppgift) Vecka 5: Avslutning (redovisning, inlämning)
Uppgifter i DM & Python, temarapport Uppgifter och information om temarapport finns uppe på kurshemsidan. Diskret matematik: pappersinlämning Pythonuppgifter: skicka in inlämningdkod via e-post Temarapport: skicka in PDF via e-post (kopia till Urkund)
"Offensiv kunskapsinhämtning" Du som student måste delta aktivt i dina universitetsstudier Förvänta dig inte att allt du "måste" lära dig tas upp på föreläsningar. Kurslitteraturen är en del av kursen. Kogvets "Rekommendationer om examination och kursupplägg" (se kandidatprogramsidorna) SOLO-taxonomin. Riktlinjer: Godkänt = Relationell nivå, Väl godkänd = Utvidgat abstrakt
Kursupplägg
... men först lite spel Human Resource Machine (finns till Windows, OS X, Wii U, Linux, ios)
Program Olika perspektiv
Universell turingmaskin Oändligt antal rutor som kan innehålla en symbol (eller vara tom) Maskinen kan befinna sig i ett ändligt antal tillstånd Maskinen läser aktuell ruta Beroende på indata och aktuellt tillstånd utför maskinen en operation
von Neumann-arkitekturen CPU Kontrollenhet In Aritmetisk enhet Ut Minne
Jag behöver fyra frivilliga...
Mängdlära Begreppet mängd, mängdoperationer och funktioner
Mängdlära Begreppet mängd Betecknas vanligtast med en versal Innehåller noll eller flera element. Element Element i mängden omges av måsvingar/krullparenteser Tomma mängden: {}, Mängdbyggare: { x: x udda heltal }, { x: x Z, x är udda }
Mängder: Notation Element i mängden omges av måsvingar/krullparenteser A={ a, b, c, 1,2, 3, hus, bil } Tomma mängden, Antal element i en mängd: kardinalitet A = 8 Mängdbyggare, kompakt och tydligt sätt att beskriva mängder { x: x udda heltal }, { x: x Z, x är udda }
Delmängder (informella definitioner) Delmängd: B är en delmängd av A om alla element i B finns i A Äkta delmängd: B är en äkta delmängd av A om "inte alla element i A finns i B" och alla element i B finns i A Delmängd: Äkta delmängd:
Mängdoperationer: Union Unionen (en. union) av A och B Informellt: Skapa en ny mängd där alla element från A ingår, och alla element från B ingår A B
Mängdoperationer: Snitt Snittet (en. intersection) av mängden A och B Informellt: Skapa en ny mängd där alla element finns både i A och B A B
Mängdoperationer: Differens Differensen av mängden A och mängden B Informellt: Skapa en ny mängd där alla element finns i A, men inte i B A B
Funktion: definitionsmängd, värdemängd f : A B En funktion är en avbildning från A till B Definitionsmängd (D f ): Informellt, element från A som kan peka ut ett element i B via funktionen f Värdemängd (V f ): Informellt, mängden värden som en avbildning/funktion kan anta
Funktion: argument f(x) g(z, r) h(p, q, r)
Programflöde och program-struktur Disposition för källkod Ett pythonprograms livscykel
Skriva ett program i Python Texteditor Programtolk för Python Skriva källkod i texteditorn som sedan skickas till programtolken
Från kod till exekvering
Källkod Filändelsen.py Instruktioner Funktioner som innehåller flera instruktioner Funktionell programmering
Disposition Kommentarer Funktioner "Programmet"
Funktion i python # kommentarer med hashtag framför # en sats består av ett eller flera uttryck def funktionsnamn(argument1, argument2): sats sats return uttryck
Funktion i python # kommentarer med hashtag framför # en sats består av ett eller flera uttryck def addera(argument1, argument2): summa = argument1 + argument2 return summa
Några datatyper Heltal (integer) Flyttal (float) Strängar (string) Lista (list)
Operationer + - * /
Variabler Tilldelning antal_fiskar = 5 temperatur = 5.0 namn = "Ada"
Lista # Sekvens av värden med specifik ordning captured_pokemons = ["pikachu", "snorlax"] # Första elementet har index 0 # Andra elementet har index 1 captured_pokemons[0] "pikachu" captured_pokemons[1] "snorlax"