Programmeringsteknik F1/TM1

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

Detta är kopior på OH bilder inte föreläsningsanteckningar. Objektorienterad programvaruutveckling IT 1. When mailing to me/us

Föreläsning 1: Introduktion

Mer om metoder och abstraktioner

Läsanvisning: Dessa OH bilder samt kap 1-3

Introduktionsmöte Innehåll

EDAA01 Programmeringsteknik - fördjupningskurs

Objektorienterad programmering

Design och konstruktion av grafiska gränssnitt

Objektorienterad programmering

Välkomna till DIT012 IPGO

Välkommen till. Datastrukturer, algoritmer och programkonstruktion. eller DOA

Kursplanering Objektorienterad programmering

Design och konstruktion av grafiska gränssnitt

Föreläsning 1 & 2 INTRODUKTION

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

Kursinformation Grundkurs i programmering med Python

Programutveckling med Java 7.5 p, ht 2007 (D0019N) STUDIEHANDLEDNING - ALLMÄN INFORMATION

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

Objektorienterad programmering, allmänt

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

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

Programmering, grundkurs

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

Föreläsning 15: Repetition DVGA02

Kungl. Tekn. Högskolan Förel 1, bild 1 Föreläsning 1: Introduktion ffl Kursinnehåll ffl Javarepetition ffl Referenser ffl Nyckelordet static ffl Klass

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

Examination i. PROGRAMMERINGSTEKNIK F1/TM1 TIN212 (Dugga) Dag: Onsdag Datum: Tid: (OBS 3 tim) Rum: V

PROGRAMMERINGSTEKNIK TIN212

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

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

Vad handlar kursen om? Algoritmer och datastrukturer. Vad handlar kursen om? Vad handlar kursen om?

Översikt. Programmering tillämpningar och datastrukturer. Vad kursen täcker. Lärare. Rekommenderad litteratur. Kursmål 729G58 (HKGBB7)

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

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

Algoritmer och datastrukturer. HI1029 8,0 hp Introduktion

SKOLFS. beslutade den XXX 2017.

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 18

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Erik Nilsson, Institutionen för Datavetenskap, LiU

725G61 - Laboration 7 Implementation av ett API. Johan Falkenjack

Föreläsning 1 & 2 INTRODUKTION

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

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

Planering Programmering grundkurs HI1024 HT TIDAA

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

SKOLFS. beslutade den -- maj 2015.

OOP F1:1. Föreläsning 1. Introduktion till kursen OOP Vad är Java? Ett första Java-program Variabler Tilldelning. Marie Olsson

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU

Objektorienterad Programmering (TDDC77)

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

Föreläsning 3: Booleans, if, switch

Programmeringsteknik II

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

I Skapa Hej.java och skriv programmet. I Kompilera med javac Hej.java. I Rätta fel och repetera tills du lyckas kompilera ditt program

TDDD78, TDDE30, 729A85 Objektorienterad programmering och Java

HT1 2013, FÖRELÄSNING 14 (INFÖR TENTAN)

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

GPT The bitter end. Förra veckan: Rekursiva funktioner som läggs in externa filer har stor räckvidd

Planering Programmering grundkurs HI1024 HT data

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

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU

Programmering A. Johan Eliasson

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

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

Planering Programmering grundkurs HI1024 HT 2014

Grundläggande programmering DVG A08 & ISG A04. Allmän information. Å vem är jag då. Karlstads Universitet, Johan Öfverberg 1

Kursanalys DD1312 hösten 2008

Hitta k största bland n element. Föreläsning 13 Innehåll. Histogramproblemet

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

Programmering B med Visual C

Introduktion till formella metoder Programmeringsmetodik 1. Inledning

TDDD78, TDDE30, 729A85 Objektorienterad programmering och Java

Föreläsning 14 Innehåll

1 Klasser och objektorientering Vad är objektorientering?

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program

Programmeringsteknik med C och Matlab

Objektorienterad programmering, Java, 5p TDBA63

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

Hur tycker du kursen har varit? Tycker du att kursens upplägg har underlättat för dig att uppnå lärandemålen?

Objekt-orienterad programmering och design. DIT953 Niklas Broberg, 2018

Distribuerade affärssystem

Inledning. Vad är ett datorprogram, egentligen? Olika språk. Problemlösning och algoritmer. 1DV433 Strukturerad programmering med C Mats Loock

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

Datastrukturer och algoritmer

Introduktion till programmering

Ökad valbarhet för Systemvetenskapliga programmet. Möjlighet till inriktning

TDDC74 FÖRELÄSNING 9 ANDERS MÄRAK LEFFLER IDA/HCS

Objektorientering/ Klasser

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

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

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

Objekt-orienterad Programmering och Design. TDA551 Alex Gerdes, HT-2016

Programmering = modellering

Kort repetition. Programmeringsteknik för Bio1 och I1. Vad ska vi lära oss idag? Ett exempel

DD1314 Programmeringsteknik

1DV433 HT13. I vilken utsträckning har kursens innehåll och uppläggning gett förutsättningar för att du ska ha uppnått respektive lärandemål?

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

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

Transkript:

f1pt Välkommen till Programmeringsteknik F1/TM1 CTH: TIN212 LP 2-3 2016/17 F1 introduktion Erland Holmström erland... at... chalmers.se Data & Informationsteknik Kurshemsida: www.cse.chalmers.se/edu/course/tin212/ Idag: Introduktion: Lärare, Hemsida, litteratur mm Kort Introduktion - What s it all about? Kurs innehåll... Läs: Kap 1 och 2 och gärna 3 F1 1

Detta är kopior på OH bilder inte föreläsningsanteckningar. OBS Det kan vara svårt att få ett sammanhang enbart utifrån dessa OH kopior. Jag trycker dem för att de som är på föreläsningen skall slippa (försöka) anteckna. Detta är alltså inte föreläsningsanteckningar utan saknar mycket av det som sägs, allt det som skrivs på tavlan och tex de färger som finns på OH bilderna. Är man på föreläsning kan man komplettera med detta själv. Jag trycker så att alla som kommer på föreläsning skall kunna få kopior. När det är slut där så är det slut men materialet finns ibland också på hemsidan. F1 2

Att maila oss Det får man gärna göra men tänk på att skicka med den information som behövs. alltid: ditt namn och vilken kurs det gäller. Om det gäller tex tentor eller andra ärenden där jag behöver kunna göra en unik identifikation så skicka med personnummer. Försök beskriva ditt ärende så väl som möjligt. För tex en labfråga kan du svara på: vilken labuppgift gäller det? vad är problemet? vad försökte du göra? Vad hände då? skicka med eventuella felutskrifter (cut and paste) skicka med Java koden. Om det är mycket (>10-15 rader) så i egen fil i appendix, annars direkt i mailet. F1 3

Kurs bok: Java Programming: From The Ground Up, Ralph Bravaco, Shai Simonson, 2010 ISBN: - Säljs på Cremona / DC / bokus mfl) Läsanvisning finns på hemsidan Dessutom ingår allt stoff i Föreläsningar, (övergripande teori, exempel) Övningar (konkreta exempel i små grupper) Labbar (självverksamhet med handledare) Dugga i slutet på LP2 Och så har vi en Tentamen i LV 4 eller 5 i LP3 Bara tentamen och labbar måste göras, ingen närvaro krävs normalt. F1 4

Allmänt om boken: Boken är lättläst och rätt välskriven om än lite pratig som alla böcker från USA. I grova drag så ingår kapitlen 1-14 samt 18 och 19, se hemsidan för mer detaljer. Glöm inte läsa boken! Även om praktisk programmering är bästa sättet att befästa kunskaperna så måste man också läsa om allt det som inte funnit sin väg in i en övningsuppgift. Det är sådär 6-700 sidor att läsa, minst 100 sidor i veckan är alltså ett bra riktmärke. Det finns en avdelning i slutet av varje kapitel med korsord och true/false frågor - bra repetition. Det finns också avdelningar med exercises efter varje kapitel gör så många du hinner. Att aktivt programmera är det bästa sättet att förstå hur det hänger ihop. F1 5

För att få en dator att lösa ett problem så måste man kunna abstrahera, modularisera, representera verkligheten och kunna hitta algoritmer och dessa måste programmeras dvs uttryckas i ett programspråk. För att abstrahera, modularisera och representera verkligheten använder vi primitiva typer, klasser, relationer mm. Algoritmer behöver man för att lösa problem som - att planera tjänstgöringen för flygpersonal - hur hitta sidträffar snabbt (för tex en sökmotor) Programspråket är vårt sätt att uttrycka hur vi representerar saker i datorn samt hur vi uttrycker våra algoritmer tex med hjälp av kontrollstrukturerna. F1 6

Kursinnehåll Abstraktion, modularisering, (composition) programdesign och objektorientering Problemlösning Enkla algoritmer Massor med Java syntax för! enkla datatyper, kontrollstrukturer och beräkningsabstraktion (metoder)! Klasser, objekt, arv, interface, mm! Grafisk användargränssnitt Kursen handlar dock om mycket mer än Java syntax. Tex hur man skriver program som är korrekta (i rimlig grad) läsbara och enkla att underhålla (för andra) återanvändbara rimligt effektiva användarvänliga klara i tid (gäller även labbar :-) ) composition: sammansättning, beståndsdel, the process of building a system using simpler parts or components F1 7

Uppgift att lösa: Skriv ett program som givet en summa pengar, en ränta och ett antal år, skriver ut hur mycket ränta man får under dessa år på sina pengar. Använd en metod för ränteberäkningen. Om indata är fel dvs pengar<=0, räntan<0, år<1 så skall en felutskrift göras. 1. Hur får man in talen till programmet? 2. Hur lagrar man talen i programmet? 3.Hur hanterar man konstiga indata?, Hur undersöker man om det är fel? 4.Hur gör man en felutskrift? 5.Hur beräknar man ränta på ränta? 6. Hur skriver man en metod? 7. Hur skriver man ett program? 8. Hur presenterar man resultatet? 9.Vad gör man när det inte fungerar dvs räntan blir fel? F1 8

Något om vanlig abstraktion Vi kan bara tänka på EN sak åt gången! Abstrahera = Att införa ett begrepp, en svart box Ett begrepp fångar vad som är gemensamt Framhäva gemensamma och viktiga egenskaper hos en samling objekt och bortse från detaljer och konkret realisation. Abstraktion = subtraktion? Abstraktioner hjälper oss att fokusera på de för tillfället viktiga egenskaperna. Ex skottår det är en egenskap hos ett årtal men vi behöver inte veta exakt hur man avgör om ett årtal är ett skottår för att kunna använda oss av egenskapen. F1 9

Abstraktioner sker på olika nivåer atomer organ Hobbe katt djur levande organism primitiv syn på världen biologisk samling atomer (tigern) namn på en specifik samling organ en större klass där Hobbe ingår en ännu större klass de flesta detaljer utelämnade Varje steg representerar olika synsätt på samma objekt - olika abstraktionsnivåer. Vilken nivå vi väljer att använda beror på våra behov för tillfället. Varje nivå implementeras på en lägre nivå. F1 10

Metoder som svarta boxar Metod Underprogram funktion procedur sqrt medel skottår + Ett sätt att uttrycka vissa steg i ett program på en högre abstraktionsnivå. + Vi kan gömma detaljer. + VAD inte HUR. + Skall göra EN sak bra + Separerar användning från implementation. F1 11

Black box - tänkande En insida och en utsida: Gränssnittet (interfacet) mellan in och utsida är det som binder samman delarna. Interfacet har såväl syntax som semantik: The interface of a black box should be fairly straightforward, well defined, and easy to understand. To use a black box, you shouldn t need to know anything about its implementation; all you need to know is its interface. The implementor of a black box should not need to know anything about the larger systems in which the box will be used. Separerar användning från implementation. Skall göra EN sak bra. F1 12

Sammanfattningsvis Dataloger bygger abstraktioner (svarta boxar) för att Abstrahera ut gemensamma egenskaper Gömma irrelevanta detaljer Få kontroll över komplexiteten Skydda integriteten Lärare gör samma sak! Dvs vi abstraherar ofta bort från komplexiteten i materialet Presentera en (ofta för) enkel modell Lägg till mer och mer komplexitet Slutligen: så här är det egentligen F1 13

Syntax och Semantik Språkets syntax och semantik måste beskrivas exakt. formen innebörden i det hur man får skriva man skriver 10/9 2007, 2007 10/9, 071009, 091007, 20071009 September 10, 2007 9/10/07 eller 10/9/07 Olika form, samma innebörd eller... Abstraktionens syntax och semantik måste beskrivas noggrant, dvs - hur är det uppbyggt? Tex ååååmmdd - hur konstruerar man ett datum? - vilka operationer kan man utföra på det? Tex tag ut år, månad, dag, är det ett skottår: addera(datum, datum), osv "Jag finner i min ringa erfarenhet att skillnaden mellan semantik och syntax är att syntaxfel är ett problem och semantikfel ett helvete" F1 14

2 goda råd: Du behöver plugga glosor Gör dig en ordlista programspråk, syntax, semantik, Abstraktion, modularisering, composition, objektorientering, datatyper, kontrollstrukturer, metoder, procedurer, funktioner, black box, interface, gränssnitt, föreläsningsanteckningar, datavetenskap, Cremona, DC,. - Läs boken! Du behöver läsa sådär 100 sidor per vecka. Du fixar inte det på söndag kväll... Och lös många uppgifter......du måste programmera. F1 15

kommande föreläsningar: F2: Kap 2+3, Handlar om att definiera våra små byggstenar och att lära oss massor av nya ord.! Identifierare: En identifierare är ett namn på saker! reserverade ord, litteraler! Variabler En variabel är en minnesplats med namn, typ och innehåll! Primitiva typer och Klasstyper! Deklarationer (av variabler, objekt och konstanter)! Aritmetiska uttryck, operatorer, prioritet, typomvandling, tilldelning! kort om färdiga objekt! kort om objekt och klasser F1 16