40
1/32 SMD038 Imperativ Programmering 4.0 poäng http://www.sm.luth.se/csee/courses/smd/038/2001/LP1/ index.html Jan-Åke Lehto [email protected] A3311 (72299) http://www.cdt.luth.se/~janos/

SMD038 Imperativ Programmering 4.0 poäng

Embed Size (px)

DESCRIPTION

SMD038 Imperativ Programmering 4.0 poäng http://www.sm.luth.se/csee/courses/smd/038/2001/LP1/index.html Jan-Åke Lehto [email protected] A3311 (72299) http://www.cdt.luth.se/~janos/. I kursen ingår: Fem räkneövningar Fem duggor (quiz) En laboration Tentamen - PowerPoint PPT Presentation

Citation preview

Page 1: SMD038 Imperativ Programmering 4.0 poäng

1/32

SMD038Imperativ Programmering

4.0 poänghttp://www.sm.luth.se/csee/courses/smd/038/2001/LP1/index.html

Jan-Åke Lehto

[email protected]

A3311 (72299)

http://www.cdt.luth.se/~janos/

Page 2: SMD038 Imperativ Programmering 4.0 poäng

2/32

SMD038Kursinnehåll

I kursen ingår:

• Fem räkneövningar

• Fem duggor (quiz)

• En laboration

• Tentamen

Betygskala är 5, 4, 3 eller Underkänd.

I kursen ingår:

• Fem räkneövningar

• Fem duggor (quiz)

• En laboration

• Tentamen

Betygskala är 5, 4, 3 eller Underkänd.

För att bli godkänd krävs godkänt resultat på (min 15/25):– Räkneövningar

– Duggor

– Laboration

– Tentamen

Betygsgränser (x poäng):– 100 x 90 = 5

– 090 > x 80 = 4

– 080 > x 70 = 3

– 070 > x = U

För att bli godkänd krävs godkänt resultat på (min 15/25):– Räkneövningar

– Duggor

– Laboration

– Tentamen

Betygsgränser (x poäng):– 100 x 90 = 5

– 090 > x 80 = 4

– 080 > x 70 = 3

– 070 > x = U

Page 3: SMD038 Imperativ Programmering 4.0 poäng

3/32

SMD038Resultat räkneövning torsdag 6/9

• Alla godkända

• De grupper som inte hade alla medlemmar med fick 50% av uppnådd poäng (i det här fallet 2,5 poäng).

• De som inte gjort alla uppgifter men mer än hälften fick 3 poäng.

Page 4: SMD038 Imperativ Programmering 4.0 poäng

4/32

SMD038 Laborationsintroduktion

Laborationsintroduktion

Introduktionen syftar till ni skall få bekanta er med de miljöer ni kommar att arbeta i, samt sätta upp en miljö där ni dokumenterar ert arbete:– Java Development Kit (JDK)

– Emacs eller annan editor

– Arbete vid terminal (DOS)

– BlueJ

– Forte (IDE)

– HTML

• Gör en enkel hemsida med en applet för ditt arbete i kursen, där du sedan redovisar dina övningar och laboration.

• Bekanta dig med Java-omgivningen på NT och UNIX datorerna.

• Lös uppgifter från boken:– t.o.m. Kapitel 3

Page 5: SMD038 Imperativ Programmering 4.0 poäng

5/32

Att lära sig programmera...

...är frusterande!!!

Ett enkelt fel kan ta fleratimmar att fixa!

Problemet är inte att det är svårt utan att det är ett nyttsätt att tänka.

Lösningen: ”Divide and Conquer”

Page 6: SMD038 Imperativ Programmering 4.0 poäng

6/32

SMD038Arbetstakt

Håll takten!

Se till att du inte kommer efter!

Det är väldigt svårt att hinna ifatt!

Page 7: SMD038 Imperativ Programmering 4.0 poäng

7/32

SMD038Lektion

• Variabler• Typer• Värden• Tilldelningar• Arrayer• Strängar

• Aritmetik• Konverteringar• Villkor • Slingor• Metoder

Page 8: SMD038 Imperativ Programmering 4.0 poäng

8/32

En klass i Java

• Varje klass bör läggas i en fil för sig– Enklare att hitta

– Enklare att felsöka

– Enklare att förstå

• En publik klass per fil!

• Innehåller variabler och metoder.

public class HelloWorld {

String hello = ”Hello”;

public int getHello() {

return hello;

}

}

Page 9: SMD038 Imperativ Programmering 4.0 poäng

9/32

Vad finns i klassen?

public class Test { public final static int MIN_KONSTANT = 7; // Konstant

private static int gemensamVariabel = 42; // Klassvariabler

public static int getGemensamVariabel() { // Klassmetod

return gemensamVariabel; }

public static int setGemensamVariabel(int nyttVarde) {// Klassmetod

gemensamVariabel = nyttVarde; }

public static void main(String[] arg) { // Huvudmetod

}

}

Page 10: SMD038 Imperativ Programmering 4.0 poäng

10/32

Vad finns i objektet?

public class Test { private int minVariabel; // Instansvariabel

// 1 per objekt public Test() { // Konstruktorer minVariabel = 9; } public int getMinVariabel() { // Instansmetod return gemensamVariabel; // 1 per klass } public int setMinVariabel(int nyttVarde) {// Instansmetod minVariabel = nyttVarde; // 1 per klass }}

Page 11: SMD038 Imperativ Programmering 4.0 poäng

11/32

Klasser och Objekt i minnet

• I minnet lagras mallen för ett objekt med allt som är gemensamt för objekt av en viss klass.– Alla metoder– Statiska variabler, tex klassvariabler och

konstanter

• För varje objekt av en viss typ (klass) lagras sedan enbart det som är enskilt för varje objekt– Instansvariabler

Page 12: SMD038 Imperativ Programmering 4.0 poäng

12/32

Variabler...

...speglar ett objekts tillstånd.

...kan vara av enkel eller komplex typ.

...bör inte synas utåt!

public class Test {

// Variabler av enkel typ

private int i = 8;

private real r = 0.7;

private boolean b = true;

// Variabler av komplex typ

private String hello = ”Hello”;

private int[] vektor = { 1, 2 };

}

Page 13: SMD038 Imperativ Programmering 4.0 poäng

13/32

Variabler...

Primitiva typer• Heltal

– byte (8 bitar)

– short (16 bitar)

– int (32 bitar)

– long (64 bitar)

• Flyttal– float (32 bitar)

– long (64 bitar)

public class Test {

// Variabler av enkel typ

private int i = 8;

private real r = 0.7;

private boolean b = true;

// Variabler av komplex typ

private String hello = ”Hello”;

private int[] vektor = { 1, 2 };

}

Page 14: SMD038 Imperativ Programmering 4.0 poäng

14/32

Variabler...

Primitiva typer• Tecken

– char (16 bitar)

– unicode

– ‘a’

• Sanningsvärden– boolean (8 bitar)

– true

– false

public class Test {

// Variabler av enkel typ

private int i = 8;

private real r = 0.7;

private boolean b = true;

// Variabler av komplex typ

private String hello = ”Hello”;

private int[] vektor = { 1, 2 };

}

Page 15: SMD038 Imperativ Programmering 4.0 poäng

15/32

Variabler...

Variabelnamn• Måste börja med en

bokstav inklusive‘_’ och ‘$’

• Får inte vara samma som nyckelord i Java ( t.ex. int, public)

public class Test {

// Variabler av enkel typ

private int i = 8;

private real r = 0.7;

private boolean b = true;

// Variabler av komplex typ

private String hello = ”Hello”;

private int[] vektor = { 1, 2 };

}

Page 16: SMD038 Imperativ Programmering 4.0 poäng

16/32

Tilldelningar … =

Ger värden till variabler• För att använda en

variabel ger man den ett värde.

• Värdet måste vara av den typ som variabeln deklarerats (i vissa fall konverteras värdet automatiskt).

public class Test {

// Variabler av enkel typ

private int i = 8;

private real r = 0.7;

private boolean b = true;

// Variabler av komplex typ

private String hello = ”Hello”;

private int[] vektor = { 1, 2 };

}

Page 17: SMD038 Imperativ Programmering 4.0 poäng

17/32

Komplexa datatyper…

Array (vektor)

• En lista av värden som kan vara primitiva datatyper eller komplexa.

• Initialiseras för– tal till 0

– sanningsvärden till false

– tecken till ‘\u0000’

public class TestaBok{

public static void main (String[] argv) {

String[][] bibliotek = new String[3][2];

// biblioteket är en lista av böcker

// varje bok har en författare och titel

int index=0;

for (index=0; index<=1; index=index+1) { bibliotek [index] [0] = "James Gosling"; bibliotek [index] [1] = "Java Tutorial" + " part " + (index+1) ; System.out.flush();

} // for

index=0;

for (index=0; index<=1; index=index+1) { System.out.print ("Bok " + (index+1) + ": " + bibliotek [index] [1]); System.out.println(" skriven av " + bibliotek [index] [0]);

} // for

} // main

} // TestaBok

Page 18: SMD038 Imperativ Programmering 4.0 poäng

18/32

Strängar …

Ändlig följd av tecken• Dubbla citationstecken

innebär sträng.• Escapesekvenser

– för att skriva ut tecken som inte kan skrivas ut i en sträng eller kan ses

– \n ny rad– \t tabulatortecken– \”

public class Test {

// Variabler av enkel typ

private int längd;

private boolean b = true;

// Variabler av komplex typ

private String hello = ”Hello”;

System.out.println(”Jag heter ” + ”\”” + ”Jan-Åke” + ”\””);

}

Page 19: SMD038 Imperativ Programmering 4.0 poäng

19/32

Operatorer …

Operatorer arbetar på ett eller flera argument eller operander

• Aritmetik– * multiplikation

– / division (OBS! Om bägge talen int så sker heltalsdivision!)

– % modulo (divisionsrest)

– + addition (av tal och strängar)

– - subtraktion

public class Test {

// Variabler av enkel typ

private int längd;

private boolean b = true;

int a = 12/9; // a = ?

float a = 5.0/9.0;

int b = 12%9; // b = ?

}

Page 20: SMD038 Imperativ Programmering 4.0 poäng

20/32

Konverteringar …

Implicit (automatiskt)• int a = 200;

float b = a;men ej int c = b;

Explicit• int c = (int) b;

Tecken• char tkn = (char) a;

public class Test {

// Variabler av enkel typ

int i = 8;

real r = 0.7;

float f = i; // implicit

int i2 = (int) f; // explicit

}

Page 21: SMD038 Imperativ Programmering 4.0 poäng

21/32

Metoder

Funktioner...

...returnerar ett värde, tex ett objekts tillstånd.

Procedurer...

...förändrar ett objekts tillstånd.

Men det är inte alltid så!

Försök dock ha regeln att separera på metoder som returnerar något och de som förändrar något!

Page 22: SMD038 Imperativ Programmering 4.0 poäng

22/32

Funktioner...

...returnerar ett värde.

...bör inte förändra tillstånd på objekt!

...bör vara korta.

public class Test {

int getNumber() {

return 42;

}

String getHello() {

return ”HelloWorld”;

}

}

Page 23: SMD038 Imperativ Programmering 4.0 poäng

23/32

Procedurer...

...förändrar ofta ett objekts tillstånd.

...bör vara korta, precis som funktioner.

public class Test {

private hello = ”Hello”;

private int number = 9;

void setHello(String s) {

hello = s;

}

void setNumber(int i) {

number = i;

}

}

Page 24: SMD038 Imperativ Programmering 4.0 poäng

24/32

Huvudmetoder i Java...

• ...startar upp ett program.

• ...måste deklareras som ”public static void main(String[])” för att systemet skall hitta den.

• ...kan finnas en per klass.– Även om man inte

använder dem annat än för felsökning.

• ...körs med java-kommandot.– java HelloWorld

// Klassen HelloWorld

public class HelloWorld {

public static void main(String[] arg) {

// Här börjar programmet

}

}

Page 25: SMD038 Imperativ Programmering 4.0 poäng

25/32

Villkorssatser

if (...)

...

if (...) {

...

} else {

...

}

if (currentTime>rast) {

openDoors();

} else {

explainSomething();

}

Page 26: SMD038 Imperativ Programmering 4.0 poäng

26/32

Villkorssatser

switch (<variabel>) {

case <värde> :

...

continue; // tex

case <värde> :

...

return; // tex

default :

...

}

switch (antalLungor) {

case 0 :

write(”Game Over!”);

return;

case 1 :

write(”Be careful!”);

continue;

default :

write(”Smile!”);

}

Page 27: SMD038 Imperativ Programmering 4.0 poäng

27/32

Slingor

// Vid känt antal upprepningar

for (<initiering>;<villkor>;<sats>) {

...

}

// Till exempel

for (int i = 0; i<10; i++)

System.out.println(i);

Page 28: SMD038 Imperativ Programmering 4.0 poäng

28/32

Slingor

// När antal upprepningar ej är känt, 0 eller flerwhile (<villkor>) { ...}

// Till exempelwhile (!file.isFull()) file.write(”SMD038 var här och rotade.”);

Page 29: SMD038 Imperativ Programmering 4.0 poäng

29/32

Slingor

// När antal upprepningar ej är känt, 1 eller fler

do {

...

} while (<villkor>);

// Till exempel

do {

file.write(” SMD038 var här och rotade.”);

} while (!file.isFull());

Page 30: SMD038 Imperativ Programmering 4.0 poäng

30/32

KISS

Keep It Simple, Stupid!

• Det funkar bättre ju enklare du gör det!

• Börja ALLTID med någonting LITET som FUNGERAR!!!

Page 31: SMD038 Imperativ Programmering 4.0 poäng

31/32

Java - IntroduktionExempel

/** * Namn calls Hej and prints the entered name * Usage: java Namn <name> * * @author Jan-Åke Lehto * @version ver.1 Sept 5th, 2001 */

import java.io.*;

class Namn {public static void main (String[] namn) {

Hej.skriv();System.out.println(" "+namn[0]);

} // main} // Namn

Page 32: SMD038 Imperativ Programmering 4.0 poäng

32/32

Java - IntroduktionExempel

/** * Hej prints "Hejsan!" * * @author Jan-Åke Lehto * @version ver.1 Sept 5th, 2001 */

import java.io.*;

class Hej { public static void skriv() {

System.out.println("Hejsan!"); } // skriv} // Hej

Page 33: SMD038 Imperativ Programmering 4.0 poäng

33/32

Java - IntroduktionExempel

janhej-9>javac Hej.javajanhej-9>javac Namn.javajanhej-9>java Namn Jan-Åkejanhej-9>Hejsan!janhej-9> Jan-Åke

Page 34: SMD038 Imperativ Programmering 4.0 poäng

34/32

SMD038Dugga måndag 10/9

• Allt material t.o.m. kapitel 3 ingår.

• Kunna visa hur ni skapar filer, kataloger, och hur ni gör från det att ni får en programmeringsuppgift till dess att den körs (exekveras). Dvs från papper till dator till körbart program.

• Rita ett enkelt klassdiagram (arvsträd) baserat på Objektorienterad systemutveckling i ett nötskal (Intro till OO).

• Lite om olika datatyper och vad som händer beroende på deklaration av dessa typer.

Page 35: SMD038 Imperativ Programmering 4.0 poäng

35/32

En klass är ...

...en mall för att skapa objekt.

Page 36: SMD038 Imperativ Programmering 4.0 poäng

36/32

En klass och objekt ...

• SuperklassSuperklass: MotorfordonSubklasser:

– Motorcykel

– Buss

– Bil• Lastbil

• Personbil

Privatbil Taxibil

• Objekt: Den roströda Saaben ABC123

Page 37: SMD038 Imperativ Programmering 4.0 poäng

37/32

En klass och objekt ...

Motorfordon

MC Bil Buss

Lastbil Personbil

Privat Taxi

Page 38: SMD038 Imperativ Programmering 4.0 poäng

38/32

SMD038

Frågor?

Page 39: SMD038 Imperativ Programmering 4.0 poäng

39/32

System.inHur man läser in hela rader från terminalen...

br är en java.io.BufferedReader- läser hela rader av bokstäver från en annan Reader

isr är en java.io.InputStreamReader- läser UNICODE bokstäver en InputStream, dvs förvandlar byte till bokstäver

System.in är en java.io.InputStream- läser bytes från terminalen

import java.io;... InputStreamReader isr = new InputStreamReader(System.in); BufferedReader br = new BufferedReader(isr); String line = br.readLine(); ...

Page 40: SMD038 Imperativ Programmering 4.0 poäng

40/32

Paus

• 3 minuter rast