729G75: Programmering och algoritmiskt tänkande. Tema 1, föreläsning 1 Jody Foo

Relevanta dokument
729G75: Programmering och algoritmiskt tänkande. Tema 1. Föreläsning 1 Jody Foo

729G06 Programmering och logik. Info om pythondelen & introduktion till objektorienterad programmering.

Programmering grundkurs

729G06 Föreläsning 1 Objektorienterad programmering

Programmering och algoritmiskt tänkande. Tema 3, föreläsning 1 Jody Foo

Objektorienterad programmering

Programmering, grundkurs

729G75: Programmering och algoritmiskt tänkande. Tema 3, föreläsning 2

Objektorienterad programmering. Grundläggande begrepp

EnKlass. Instans 3 av EnKlass. Instans 2 av EnKlass

Introduktion till Datalogi DD1339. Föreläsning 1 8 sept 2014

729G74 IT och programmering, grundkurs. Tema 1, Föreläsning 2 Jody Foo,

Imperativ programmering. Föreläsning 4

729G74 IT och programmering, grundkurs. Tema 1, Föreläsning 3 Jody Foo,

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 11 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Grundläggande programmering med matematikdidaktisk inriktning för lärare som undervisar i gy eller komvux gy nivå, 7,5 hp

Introduktionsmöte Innehåll

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

Objektorienterad programmering, allmänt

Viktiga egenskaper hos ett program (Meyer): Objektorienterad programmering, allmänt. Vilka egenskaper vill vi att våra program ska ha?

Föreläsning 1: Introduktion till kursen

+Överskådlighet Normalt sätt blir ett program skrivet i det procedurella paradigmet överskådligt. Modifikationer på delproblem kan ske med lätthet.

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

Sätt att skriva ut binärträd

729G74 IT och programmering, grundkurs. Tema 2, Föreläsning 1 Jody Foo,

Introduktion till objektorientering. Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten?

729G74 IT och programmering, grundkurs. Tema 1, Föreläsning 2 Jody Foo,

Personal. Objektorienterad programmeringsmetodik 5DV133. Kursmål. Kursens uppläggning. Lärare. Handledare och gruppövningar.

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

TDDE44 Programmering, grundkurs

SKOLFS. beslutade den -- maj 2015.

Introduktion till objektorientering. Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten?

Föreläsning 15: Repetition DVGA02

Tentamen. Datalogi I, grundkurs med Java 10p, 2D4112, Lördagen den 30 november 2002 kl , salar E33, E34

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

Föreläsning 2. Objektorienterad analys och design. Analys: att modellera världen. Design: att strukturera program.

TDDD78, TDDE30, 729A85 Objektorienterad programmering och Java

Datastrukturer och algoritmer

Föreläsning 1: Introduktion till kursen

Administrivia. hh.se/db Verónica Gaspes (Kursansvarig) 2 Mattias Enervall (Övningsassistent) Examination. 1 Skriftlig tentamen (betyg)

Abstrakta Klasser 2. Kodning är bara en liten del i programvaruutvecklingen 6% 1% 6% Abstrakta Klasser - deklaration. Programutveckling sker i faser

Föreläsning 1: Introduktion till kursen

Programmering. Seminarier i datavetenskap, datorteknik och informationsteknik. Niklas Broberg

Undervisningen i ämnet programmering ska ge eleverna förutsättningar att utveckla följande:

Historik: OOP. Objektorientering. Historik: OOP (forts) En Dum Fråga

Administrivia. hh.se/db Verónica Gaspes (Kursansvarig) 2 Daniel Petersson (Labassistent) Examination. 1 Skriftlig tentamen (betyg)

TDDD78, TDDE30, 729A85 Objektorienterad programmering och Java

Programmering. Seminarier i datavetenskap, datorteknik och informationsteknik. Niklas Broberg

Bakgrund och motivation. Definition av algoritmer Beskrivningssätt Algoritmanalys. Algoritmer. Lars Larsson VT Lars Larsson Algoritmer 1

Föreläsning 1: Intro till kursen och programmering

Programmering grundkurs

OOMPA 2D1359 Föreläsning 2

EDAA01 Programmeringsteknik - fördjupningskurs

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

Tentamen ID1004 Objektorienterad programmering October 29, 2013

Objektorienterad programmering

Programmering. Seminarier i datavetenskap, datorteknik och informationsteknik. Niklas Broberg niklas.broberg@chalmers.

Introduktion till objektorientering. Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten?

SKOLFS. beslutade den XXX 2017.

Analys och design. Objekt. Klass. med hjälp av CRC. Klassdiagram

Programmering A. Johan Eliasson

729G74 IT och programmering, grundkurs. Tema 1, Föreläsning 1 Jody Foo,

Föreläsning 1: Intro till kursen och programmering

Program & programmering

Kursplanering Objektorienterad programmering

TDP002 Imperativ programmering. Laborationsmaterial emacs python-mode

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 3

Programmering för språkteknologer II, HT2011. Rum

Programmeringsteknik II

729G74 IT och programmering, grundkurs. Tema 3. Föreläsning 1 Jody Foo,

1 Klasser och objektorientering Vad är objektorientering?

Programmering B med Visual C

Problemlösning. Planering av program. Konstruktion. Programmeringsmetaforer. Problemlösning. Programmering = Problemlösning

Classes och Interfaces, Objects och References, Initialization

Objektorienterad programmering Föreläsning 4

Objektorienterad Programkonstruktion. Föreläsning 6 23 nov 2015

Prova på-laboration i Ruby

Syfte : Lära sig objektorienterad programmering Syfte : Lära sig programmering i ett OO-språk vilket?

Design och konstruktion av grafiska gränssnitt

Innehåll. Introduktion till objektorientering. OOP (objektorienterad programmering) Objekt, instanser, klasser

F6 Objektorienterad design. ID1004 Objektorienterad programmering Fredrik Kilander

Datateknik GR (A), Introduktion till programmering i C++, 7,5 hp

Design och konstruktion av grafiska gränssnitt

Introduktion till programmering D0009E. Föreläsning 1: Programmets väg

Universitetet i Linköping Institutionen för datavetenskap Anders Haraldsson

Personal Objektorienterad programmeringsmetodik 5DV081 5DV109

Föreläsning 1, vecka 6: Abstraktion genom objektorientering

729G74 IT och programmering, grundkurs. Tema 1, Föreläsning 1 Jody Foo,

729G75: Programmering och algoritmiskt tänkande. Tema 3, föreläsning 2

Kodexempel från Programmering 2 Tobias Wrigstad, Ph.D.

Viktiga begrepp. Algoritm. Array. Binärkod. Blockprogrammering. Bugg / fel och felsökning. Dataspel. Dator

Programmeringsteknik I

Objektorienterad konstruktion

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 3

IT OCH PROGRAMMERING I SKOLAN. Jan Erik Moström Peter Vinnervik

Välkomna till DIT012 IPGO

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

Imperativ och Funktionell Programmering i Python #TDDD73

Kursplanering för EE3D i kursen Programmering 1, 100p.

Föreläsning 17 UTBLICK: FORTSÄTTNINGSKURSER I DATAVETENSKAP + ANDROID

Transkript:

729G75: Programmering och algoritmiskt tänkande Tema 1, föreläsning 1 Jody Foo

Föreläsningsöversikt Kursinfo / Om kursen Algoritmer Objektorienterad programmering i praktiken terminologi använda objekt Programmeringsmetod

Kursinfo/Om kursen

Programmering och algoritmiskt tänkande: Kursmål konstruera abstraktioner med varierande grad av stöd i det underliggande programmeringsspråket identifiera och förklara abstraktioner i programkod utarbeta och tillämpa algoritmer för att lösa problem producera program med enkla grafiska användargränssnitt tillämpa ett metodiskt och interaktivt tillvägagångssätt att lösa programmeringsrelaterade problem genom implementering, testning och felsökning relatera programmering och algoritmiskt tänkande till kognitionsvetenskap och kognitionsvetenskapliga tillämpningar

Examination Tre examinationsmoment, motsvarar kursens tre teman PRA1 (Tema 1) PRA2 (Tema 2) PRA3 (Tema 3) Examination / tema Introduktionsuppgift Temauppgift Algoritmseminarium

Betyg För Godkänt Godkänt resultat på övning, temauppgift och algoritmseminarium För Väl godkänt Godkänd på introuppgift, temauppgift och temauppgiftsrapport. Väl godkänd på temauppgift

Övergripande läromål för varje tema Algoritmiskt tänkande: prova på och förstå, några algoritmer inom en viss domän. Programmering: Objektorienterad modellering och design syntax i Python programmeringsmetod (implementation, testning, felsökning)

Teman Tema 1: Sorteringalgoritmer och objekt Introduktion till algoritmiskt tänkande och objektorientering Sorteringsalgoritmer Tema 2: Grafiska gränssnitt och layout Introduktion till GUI-programmering Algoritmer för layout Tema 3: Objektorienterad design Genetiska algoritmer

Temaupplägg Varje tema består av följande: Föreläsningar Lektion Introuppgift Temauppgift Algoritmseminarium

Grupper Jobbar i par. Nytt par bildas inför varje tema.

Tävlingar halva klassen ena sidan andra halvan andra sidan

Organisera er i 8 lika stora grupper

Sorteringsövning Skriv ner instruktioner för att sortera LEGOfigurer. Använd inte orden: sortera, ordna, organisera etc. Använd ord som t.ex.: flytta, byt plats, lägg åt sidan

Syftet med "lekarna" Vad behövde ni för information för att genomföra uppgifterna? Hur visste ni när ni var klara? Vilka steg genomfördes under processens gång?

Algoritmer

Vad är en algorithm? Informellt: en väldefinierad beräkningsbar (computational) procedur som givet ett värde, eller en mängd värden som input producerar ett värde, eller en mängd värden som output. (Cormen et. al. 2009. Introduction to algorithms) En algoritm är en metod som, givet ett väldefinierat utgångsläge, löser ett problem genom att ett ändligt antal elementära och väldefinierade operationer tillämpas i en förskriven ordning. (Lunell. 2011. Datorn i världen, världen i datorn) En algoritm sägs vara korrekt om det för varje indata, avslutar med korrekt utdata.

Vad är algoritmiskt tänkande? Ett sätt att analysera och angripa problem. Att gå från ett icke väldefinierat problem till ett väldefinierat problem. Bryta ner problemet. Se mönster.

Vad har detta för relevans för en kognitionsvetare? Att bryta ner ett problem är en viktig komponent i att förstå en domän. Detta är en färdighet som vi tillämpar när vi gör kvalitativ analys skapar modeller programmerar skriver rapporter Inom programmering har vi möjlighet att implementera vår lösning och testa den på med korta iterationer.

När blir det en algoritm? Input: Vad är indata? Vad vet vi? Vad behöver vi veta? Hur representerar vi data? Formulera problemet: Gör problemet väldefinierat: För vilka input vill vi kunna komma fram till en lösning? Vilka är normalfallen? Output: Hur ser en lösning ut? Vad är en korrekt lösning? Finns flera korrekta lösningar? Finns det en bästa lösning? Formulera lösningen: Gör lösningen väldefinierad. Hur vet vi att något är en lösning?

Objektorienterad programmering

Ni har redan använt objekt... # en lista är ett objekt lista1 = [] # Ett objekt har metoder som man meddelar att man vill köra genom # att använda punktnotation. Vad händer egentligen nedan? lista1.append("en sträng")

Ni har redan använt objekt... # en lista är ett objekt a_string = "visst är python roligt!" # Ett objekt har metoder som man meddelar att man vill köra genom # att använda punktnotation. Vad händer egentligen nedan? print(a_string.upper())

Sprites

En klass är en mall som används för att skapa ett objekt objekt kallas också för instanser

Objekt är instanser av klasser

Programmeringsparadigm Funktionell programmering Procedurell programmering Logikprogrammering Objektorienterad programmering

Objektorienterad programmering Ett alternativ till att använda funktioner för att strukturera kod: Objekt istället för abstrakt datatyp Bättre sätt att organisera större projekt - återanvändning C++, Objective-C, C# och Java är exempel på andra OO programmeringsspråk

Objektorienterad programmering (OOP) Objekt är i fokus jämfört med funktioner i fokus som vid funktionell programmering. Man försöker relatera data och metoder till objekt. Både data och metoder kan "ägas"/tillhöra objekt (inkapsling) Objekt, dess egenskaper och beteenden (vad objektet kan göra och vad man kan göra med objektet).

Semiotiska triangeln, Triangle of reference (Ogden & Richards 1923)

I objektorienterad programmering Klass Variabel/Referens Objekt

Klasser jmf med objekt och instanser En klass är en mall, en beskrivning av något som kan finnas i världen. En klass beskriver vilka egenskaper (variabler) klassen har och vilka beteenden (metoder) den har. Det som finns i världen är instanser av klasser, även kallade för objekt.

Sprites

Hur skapar vi klasser och objekt?

Definition av en klass class Dog(object): def init (self, namev): self.name = namev self.age = 0 def talk(self): print("voff, jag heter " + self.name)

Objekt, dess egenskaper och beteenden klassens namn variabler metoder

Skapa ett objekt: instantiera en klass Inbyggda klasser, t.ex. listor och dictionaries har syntaktiskt socker. För "vanliga" klasser använder vi dess namn följt av parenteser. T.ex. dog = Dog()

Punktnotation (modul.)objekt.variabel (modul.)objekt.metod() a = [1, 2, 3] a.append(4) s = "hejsan" s.upper()

Vi skapar några hundar class Dog(object): def init (self, namev): self.name = namev self.age = 0 def talk(self): print("voff, jag heter " + self.name) hund1 Hund name: "Pluto" age: 0 talk hund1 = Dog("Pluto") hund2 = Dog("Lassie") hund2 Hund name: "Lassie" age: 0 talk

Testar hundarna class Dog(object): def init (self, namev): self.name = namev self.age = 0 def talk(self): print("voff, jag heter " + self.name) hund1 = Dog("Pluto") hund2 = Dog("Lassie") print(hund1.age) print(hund1.name) hund1.talk() print(hund2.age) print(hund2.name) hund2.talk()

Ändra värden hund1 Hund name: "Pluto" age: 4 hund1.age = 4 hund2.age = 8 talk hund2 Hund name: "Lassie" age: 8 talk

Testar hundarna class Dog(object): def init (self, namev): self.name = namev self.age = 0 def talk(self): print("voff, jag heter " + self.name) hund1 = Dog("Pluto") hund2 = Dog("Lassie") print(hund1.age) print(hund1.name) hund1.talk() print(hund2.age) print(hund2.name) hund2.talk()

Terminologi Klass Objekt / Instans Egenskapsvariabel / Instansvariabel Metod