Grundläggande programmering. Grundläggande programmering. Idag. Kursinformation

Relevanta dokument
Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 20

Agenda. Objektorienterad programmering Föreläsning 13

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

DI-institutionen Sid 1 av 6 Hans-Edy Mårtensson Sten Sundin

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

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2

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

Tentamen ID1004 Objektorienterad programmering May 29, 2012

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

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

Vi programmerar Java!

Mer källkod. Styrstrukturer Val Slingor Operatorer Källkodsexempel med minne. Erik Forslin. Rum 1445, plan 4 på Nada

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

Föreläsning 1 & 2 INTRODUKTION

Tentamen i Grundläggande programmering STS, åk 1 lördag

TDDC30. Kursledning Kursledare: Jonas Lindgren. Labassistent: Jonas Lindgren Labassistent: Niklas Holma Labassistent: Erik Nilsson

DD2385 Programutvecklingsteknik Några bilder till föreläsning 1 24/ Kursöversikt Javarepetition/Javaintroduktion

Översikt 732G11 PROGRAMMERING 1. Personal. Kursens mål. Litteratur. Kursens innehåll

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

Objektorienterad programmering i Java Undantag Sven-Olof Nyström Uppsala Universitet Skansholm: Kapitel 11

TDDE10 TDDE11, 725G90. Gemensam kurswebsida på:

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

Objektorienterad programmering i Java Undantag Sven-Olof Nyström Uppsala Universitet Skansholm: Kapitel 11

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

F4. programmeringsteknik och Matlab

Föreläsning 14. Filhantering

Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag aug - 23 Tentamen i Objektorientering och Java Skrivtid 5 h

Programmering A. Johan Eliasson

TENTAMEN OOP

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 1

TENTAMEN I PROGRAMMERING. På tentamen ges graderade betyg:. 3:a 24 poäng, 4:a 36 poäng och 5:a 48 poäng

OOP Tenta

Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag maj - 19 Tentamen i Objektorientering och Java Skrivtid 5 h

ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Checklista. Föreläsning 1-2 Innehåll. Programmering.

Tentamen i Grundläggande programmering STS, åk

Idag. Exempel, version 2. Exempel, version 3. Ett lite större exempel

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

Tentamen för TDA540 Objektorienterad Programmering. Institutionen för Datavetenskap CTH HT-17, TDA540. Dag: , Tid:

DAT043 Objektorienterad Programmering

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

Objektorientering. Objekt och metoder. Objektorientering. Viktiga begrepp. Klass. Objekt. Deklarativ programmering

ITK:P1 Lektion 4. Lektion 4. Lektion 4. Att implementera en spelidé i Java. DSV Peter Mozelius

Objektorienterad Programkonstruktion, DD1346 FACIT. Tentamen , kl

Parsing med Recursive Descent, Avbildningsklasser. Syntaxdiagram. Syntaxdiagram och kodning expression. Betrakta följande uttryck

Tentamen. 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl

Tentamen. Lösningsförslag

Tentamen , Introduktion till Java, dtaa98, dtea53

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

Objektorienterad programmering i Java

FÖRSLAG TILL LÖSNINGAR FÖR TENTAMEN I INTERNETPROGRAMMERING MED JAVA, 5p för SY , kl

Föreläsning 1 & 2 INTRODUKTION

Omtentamen för TDA540 Objektorienterad Programmering. Institutionen för Datavetenskap CTH HT-17, TDA540. Dag: , Tid:

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

SMD 134 Objektorienterad programmering

Praktikum i programmering

Föreläsning 1: Introduktion till kursen

Objektorienterad Programmering (TDDC77)

Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Föreläsning 12: Exempel och problemlösning

Command line argumenter. Objektorienterad Programmering (TDDC77) Vad blir resultatet? Nu då? Ahmed Rezine. Hösttermin 2016

//Använd main som ett "handtag" för att hålla ihop programmet. //Själva programmet finns i övriga klasser.

Tentamen i Grundläggande programmering STS, åk

Att skriva till och läsa från terminalfönstret

Dugga i Grundläggande programmering STS, åk

Föreläsning 3: Abstrakta datastrukturer, kö, stack, lista

JAVA Mer om klasser och objektorientering

Dagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten?

Chapter 4: Writing Classes/ Att skriva egna klasser.

OOP Omtenta

Laboration 13, Arrayer och objekt

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Om att lära sig programmera. Föreläsning 1-2 Innehåll.

Lösningar för tenta 2 DAT043,

Tänk på följande: Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Tung bakgrundsaktivitet t.ex. Aktiva objekt t.ex. Animering, simulering. DD2385 Programutvecklingsteknik Några bilder till föreläsning 9 6/5 2013

Malmö högskola 2007/2008 Teknik och samhälle

Omtentamen för TDA540 Objektorienterad Programmering. Institutionen för Datavetenskap CTH HT-17, TDA540. Dag: , Tid:

Tentamen på kursen DA7351, Programmering , kl Malmö högskola Teknik och samhälle. DA7351, Programmering

TENTAMEN OOP

Föreläsning 1: Introduktion till kursen

Lösningsförslag till tentamen för TDA540 Objektorienterad Programmering

OOP Tentamen

Laboration 1 - Grunderna för OOP i Java

Algoritmer. Två gränssnitt

Objektorienterad Programkonstruktion. Föreläsning 11 6 dec 2016

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

Objektorienterad Programmering (TDDC77)

Föreläsning REPETITION & EXTENTA

Tentamen i Objektorienterad programmering

2D1342 Programkonstruktion för F1, ht 2006

Tentamen för TDA540 Objektorienterad Programmering. Institutionen för Datavetenskap CTH HT-16, TDA540. Dag: , Tid:

Detta dokument är ett exempel, cirka hälften av en tentamen för TDA545 Objektorienterad programvaruutveckling

2I1049 Föreläsning 5. Objektorientering. Objektorientering. Klasserna ordnas i en hierarki som motsvarar deras inbördes ordning

LÖSNINGSFÖRSLAG TILL TENTAMEN PROGRAMMERINGSMETODIK MOM2 - JAVA, 4P.

Föreläsnings 9 - Exceptions, I/O

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

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

TENTAMEN OOP

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p

Transkript:

Idag Grundläggande programmering Grundläggande programmering Kursinformation Kursinnehåll Java i allmänhet Varför? Exempel ett komplicerat Javaprogram från slutet av kursen Svårt Programspråkskonstruktioner i Java Från början - enkelt Kursen Anders Berglund föreläsningar, lektioner, kursansvar Jesper Bengtsson föreläsningar, lektioner,labbar, handledning Bra resurser Bennie Lundmark SI - extraundervisning, schemalagd, frivillig DatorQ handhavandehjälp WWW För labbar, meddelanden etc. http://www.it.uu.se/edu/course /homepage/grundprog/vt05 2 3

Undervisningsformer Föreläsningar Översiktskaraktär. Reservföreläsningar är reserv (!) Preliminär föreläsningsplan. Ändringar via webben Gästföreläsning. Tips: Skriv inte av OH-bilder Läs Skansholm som uppslags/problemlösningsbok Undervisningsformer Lektioner/Övningar Halvklass. Förberedelseuppgifter som ger bonus Studenter vid tavlan Seminarier Ett med kursen vetenskapsteori (Andra delen av maj, ännu ej schemalagt) Ett för programmeringsuppgiften Laborationer Tredjedelsklass Redovisningsformerna varierar Lämna in i tid Redovisas/Genomförs vid våra datorer Tips: Kolla ditt konto idag Programmeringsuppgift Lite större, lite svårare. Seminarium, som liknar en disputation Handledning Respektera Jespers mottagningstider. Tips: DatorQ för handhavandefrågor Supplemental Instruction (SI) Komplement till föreläsningar/lektioner Studentledd aktivitet 4 5

Laboration 1 Knappningsövning. Rätt tillfälle repetera Unix etc. Busenkel. Det är handhavandet, inte programkoden eller vad koden betyder som har betydelse denna gång Alla frågor är bra frågor. Obligatorisk närvaro, inget att redovisa. Föreberedelse: Kolla att ditt lösenord fungerar. Logga in på ditt konto DatorQ (1203, kl. 9-17) Samling i en lektionssal Examination Obligatoriskt laborationer programmeringsuppgift seminarier tentamen Graderat betyg beror av tentamensresultatet (+ bonus) Bonus för förberedelser av lektionsuppgifter 2% av tentamens totala poäng per lektionstillfälle närvaro vid lektionen. 6 7

Kursinnehåll Förutsättningar Programmering, objekt-orienterad Problemlösning med datorer Java ett redskap, inte en kurs i Java Nybörjarkurs leder till Få Javakonstruktioner Ganska mycket grundläggande begrepp Mycket strukturering av problem Kursinnehåll Från föreläsningsplanen Vad är programmering? Programkonstruktion, algoritmbegreppet. Introduktion till objektorienterad programmering och Java. Klasser, objekt, metoder. Variabler, tilldelning, enkel inläsning/utskrift. Metoder, parametrar, styrande satser Enkel objektorientering. Avancerad objektorientering, arv, relationer Beräkningsmodeller Använding av färdiga klasser, exempel Enkel grafik Introduktion till projekten. Större program, avancerade programspråkskonstruktioern Dataetik 8 9

Jämfört med tidigare år Samma innehåll, samma grundstruktur, liknande labbar, liknande lektioner, samma bok. Arbetsfördelning som ifjol: Mest föreläsningar, lektioner, labbar i början, mest projekt i slutet. Förändringar efter kursutvärderingar: o Lektioner och seminarier i vetenskapshistoria på olika dagar o Mer bonus för lektionsuppgifter o Mer föreläsningstid för stora programexempel o Mittredovisning för projektet o Viss storleksgradering av projekten Eget arbete/si verksamheten ännu mer i fokus Spelet tjugoett Stort, svårt exempel från slutet av kursen. Kursboken, kap 10.10 Visar vad vi kan vid kursens slut - inrymmer många av kursens begrepp. Det finns många lösningsstrategier - inget "rätt svar". Vald lösning finns i kursboken. Fokusera på idéer, inte på programspråkskonstruktioner 10 13

Spelet tjugoett Du spelar mot banken Välkommen till tjugoett Du fick Ruter Ess och har 14 poäng Ett kort till? j Du fick Hjärter 6 och har 20 poäng Ett kort till? n Datorn fick Klöver Ess Datorn fick Klöver 2 Datorn fick Klöver 10 Datorn fick Spader 9 Datorn har 22 poäng Du vann! Nytt parti? j Du fick Hjärter 8 och har 8 poäng Ett kort till? j Du fick Spader Kung och har 21 poäng Du vann! Nytt parti? j Du fick Spader 9 och har 9 poäng Ett kort till? j Du fick Spader 5 och har 14 poäng Ett kort till? j Du fick Klöver 9 och har 23 poäng Du förlorade! Nytt parti? n "Vilken Java" finns i programmet? Någon form av minnesfunktion Någon form av repetion Någon form av kommunikation mellan objekt Någon form av felhantering Lite annat 14 16

public class Tjugoett { Kortbunt lek = new Kortbunt(); Manniska du = new Manniska(lek); Dator jag = new Dator(lek, du); Här ska metoden Tjugoett() vara, som startar spelet och avgör vem som vinner { public static void main(string[] arg) Tjugoett tj = new Tjugoett(); Tjugoett() { System.out.println("Välkommen till tjugoett"); boolean nyttpartiönskas = true; while (nyttpartiönskas) { lek.nykortlek(); lek.blanda(); du.spela(); if (du.poäng() > 21) System.out.println("Du förlorade!"); else if (du.poäng() == 21) System.out.println("Du vann!"); else { // datorn måste spela jag.spela(); if (jag.poäng() <= 21 && jag.poäng() >= du.poäng()) System.out.println("Du förlorade!"); else System.out.println("Du vann!"); System.out.print("Nytt parti? "); nyttpartiönskas = du.svararja(); 17 18

public abstract class Spelare { protected Kortbunt leken; protected Kortbunt hand = new Kortbunt(); protected int p; public Spelare(Kortbunt k) { leken = k; public abstract void spela(); public void nyttspel() { hand.slängkorten(); p = 0; public int poäng() { return p; import java.io.*; public class Manniska extends Spelare { BufferedReader myin = new BufferedReader (new InputStreamReader(System.in)); public Manniska(Kortbunt k) { super(k); public void spela() { boolean nyttkortönskas = true; nyttspel(); while (p < 21 && nyttkortönskas) { System.out.println("Du fick " + nyttkort() + " och har " + p + " poäng"); if (p < 21) { System.out.print("Et till? "); nyttkortönskas = svararja(); 19 20

public boolean svararja() { System.out.flush(); public class Dator extends Spelare { private Spelare motspelare; String s = ""; try { s = myin.readline(); catch (IOException e) { return s.equals("") s.equals("j") s.equals("ja"); public Dator(Kortbunt k, Spelare mot){ super(k); motspelare = mot; public void spela() { nyttspel(); while (p < 21 && p < motspelare.poäng()) { System.out.println("Datorn fick " + nyttkort()); System.out.println("Datorn har " + p + " poäng"); 21 22

public Kort nyttkort() { Kort k = leken.geöversta(); hand.läggöverst(k); int antaless = 0; p = 0; for (int i=1; i<=hand.antalkort(); i++) { int v = hand.tittapå(i).valör(); if (v == 1) { // ett Ess p += 14; antaless++; else p += v; for (int j=1; j<=antaless && p>21; j++) p -= 13; return k; public class Kortbunt { private Kort[] bunten = new Kort[52]; private int antal = 0; public int antalkort() { return antal; public void slängkorten() { antal = 0; public Kort tittapå(int nr) { return bunten[antal-nr]; public void läggöverst(kort k) { bunten[antal++] = k; public Kort geöversta() { return bunten[--antal]; public void nykortlek() { slängkorten(); for (int f=1; f<=4; f++) for (int v=1; v<=13; v++) läggöverst(new Kort(f,v)); 23 24

public void blanda() { for (int i=1; i<1000; i++) { int n1 = (int) (Math.random() * antal); int n2 = (int) (Math.random() * antal); Kort temp = bunten[n1]; bunten[n1] = bunten[n2]; bunten[n2] = temp; Vad såg vi? Programspråkskonstruktioner för att. Spara värden Repetera Definiera objekt Beskriva relationer mellan objekt Mata in eller ut data Objektorientering Sätt att modellera världen med objekt Klasser beskriver typer av objekt Objekten interagerar Objekten har egenskaper/tillstånd och kan handla 25 26

Varför lär man sig detta? Detta Bara ren programmering. Förstå datorer/datoranvändning är en del av ingenjörskompetens. Dator/programmeringskunskap med grundbegrepp är nyttigt i sig och ganska stabilt. Tillämpningsprogram förändras blixtsnabbt Ger en problemlösningsstrategi. Speciellt för STS: Kunna kommunicera med olika specialister. Intressant för en generalist. Hur lär man sig detta? Programmera/Lös problem själv Fråga, diskutera, samarbeta Programmera/Lös problem själv Utnyttja SI Programmera/Lös problem själv Jobba mycket i början. Det blir snabb svårare Programmera/Lös problem själv Använd Skansholm och WWW som uppslags/problemslösningsböcker Programmera/Lös problem själv Använd föreläsningar för överblick, stora linjer Programmera/Lös problem själv 27 28