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