Imperativ Programmering

Slides:



Advertisements
Liknande presentationer
Föreläsning 9 Programmeringsteknik och Matlab 2D1312/2D1305
Advertisements

INTRODUKTION TILL PROGRAMMERING
Array Skriv ett program som frågar följande: ”Hur många tal vill du mata in?” användaren matat in ett tal t.ex n. då frågar programmet n ggr följande.
Klasser och objekt.
Fortsättningskurs i Programmering lektion 3 Johan Hjerling
Föreläsning 3 Repetition Operatorer Styrstrukturer Deklaration och anrop av metoder.
Klassarv och inkapsling
Metoder i java Det finns två typer av metoder i java
Inkapsling.
Välkommen Vahid Mosavat
Programmeringsteknik för K och Media
Programmeringsteknik K och Media
Programmeringsteknik för K och Media
Föreläsning 13 Allt om tentan. Sistaminutenhjälp: På fredag 17 december kl 12 sitter Linda i kemi-fiket och svarar på frågor.
Programkodens uppbyggnad
Att programmera i språket Java
Föreläsning 6 Referenser Objekt som parametrar public/private Klassvariabler och klassmetoder.
Föreläsning 2 Primitiva datatyper Variabler och konstanter Tilldelning Inläsning Operatorer Villkorssatsen if Slingor: while och for.
Strömmar Vid läsning och skrivning används något som kallas strömmar.
Next previous Introduktion till Java Av Björn Eiderbäck Adress: Rum 1641, 6tr NADA Osquars Backe 2 Tel: OOMPAE 2000.
TNSL04 – IT grundkurs. VT2008. Föreläsning nr 3, torsdag 7 feb. kl Del 1. Klasser, objekt, metoder, konstruktorer, samlingar och tillstånd. Hur.
1 Föreläsning 6 Klass Object, instans av klass public/private Klassvariabler och klassmetoder.
Alice in Action with Java
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Klasser och instansvariabler -Tabeller av klassobjekt.
Föreläsning 11 Arrayer.
OOP F4:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 4 Metoder klass-metoder instans-metoder.
Programmering i C# 3. Klasser.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 6 ( ) INNEHÅLL: -Mera om tabeller.
Repetition inför slutprovet
Föreläsning 2 Kort Översikt Över Javaspråket. Källkodsformat Unicode används åäöμψζ tillåtna Inte alla miljöer klarar av det Källkod Bytekod Java VM för.
1 ITK:P1 Föreläsning 7 Algoritmer och datastrukturer DSV Marie Olsson.
Vektorer (klassen Vector) Sortering
Mer om arv - Polymorfism Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael Kölling Fredric Ragnar
Objektorienterad Modellering Programmering och Analys
Programmeringsteknik för Media1 & K1
Mitt första Java program Mahmud Al Hakim Copyright, Mahmud Al Hakim, 1.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Klasser -Att definiera egna klasser -Klassvariabler -Klassmetoder.
OOP F3:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 3 Iteration Många variabler av samma sort – Arrayer.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 8 ( ) INNEHÅLL:Klasser: -Konstruktorer -Klassvariabler -Instansmetoder -Privata.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Metoder -Lokala variabler -Mera om klasser: -Nyckelorden.
Föreläsning 14 ”Enkel” Filhantering.
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
1 Föreläsning 5 Programmeringsteknik och Matlab 2D1312/2D1305 Repetition Metoder Array API och klassen ArrayList.
Föreläsning 10 Stränghantering.
Next previous RMI, Remote Method Invocation Om du har boken av Marty Hall, läs avsnitt 15.8 För fler exempel se:
Föreläsning 1 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
Föreläsning 12 Om slutprovet. Repetition –deklaration av variabler –skapande av objekt (instansiering) –Vektorer och Vector-klassen –Klasser –Instans-/klassvariabler.
Föreläsning 4 Klasser Och Objekt.
Föreläsning 4 programmeringsteknik och Matlab 2D1312/ 2D1305
Föreläsning 1 Om kursen Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
ITK:P1 Föreläsning 2 Introduktion till objektorientering DSV Marie Olsson.
INTRODUKTION TILL PROGRAMMERING
Class VattenKraft{ public static void main(String[] args){ int num=150; int i, totflöde, maxflöde; int[] fall = new int[num]; //vattenflödet i vattenfallen.
OOP F2:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 2 Deklaration och tilldelning Programsatser Tilldelning Input/Output Selektion.
Föreläsning 17 Repetition. Källkodsformat Unicode används åäöμψζ tillåtna i namn på identifierare Inte alla miljöer klarar av det Källkod Bytekod Java.
OOP F5:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 5 Klasser och objekt Skapa objekt - new Referenser Konstruktorer Inkapsling.
Övning2 programmeringsteknik och Matlab 2D1312/ 2D1305
Övning 3. Repetition Metoder class RepetitionMetoder { public static void main(String [] args) double längd = 2.0; double bredd = 1.0; double area =
Föreläsning 5 Objekt Klasser Konstruktorer Metoder Minnesbilder av objekt.
Programmeringsteknik för K och Media
Föreläsning 5 Klasser och instanser
Föreläsning 7 programmeringsteknik och Matlab 2D1312/2D1305 Metoddeklaration och parametrar Arrayer och ArrayList.
-Repetition -Variabler -Primitiva typer (+ boolean) -Operatörer +, ++, --, -Typ konvertering -Wrapper klasser -Jämförelse operatörer,(==, =,,!=, !) -String.
Föreläsning 7 Repetition Sammansatta datatyper –vektor (hakvektor, array) –matris.
1 Föreläsning 2 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
-Repetition -Variabler -Primitiva typer (+ boolean) -Operatörer +, ++, --, -Typ konvertering -Wrapper klasser -Jämförelse operatörer,(==, =,,!=, !) -String.
OOP&M - teori1 OOP&M – Föreläsning 3 kap 2-4 Repetition Föreläsning-datayper-syntax-tilldelning.
1 Föreläsning 6 Repetition på metoder Referenser Objekt som parametrar public/private Klassvariabler och klassmetoder.
1 Föreläsning 4 Metoder & parametrar Array API och klassen ArrayList.
Föreläsning 3: Booleans, if, switch
Presentationens avskrift:

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

SMD038 Kursinnehåll 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

SMD038 Resultat 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.

SMD038 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

Att lära sig programmera... ...är frusterande!!! Ett enkelt fel kan ta flera timmar att fixa! Problemet är inte att det är svårt utan att det är ett nytt sätt att tänka. Lösningen: ”Divide and Conquer”

SMD038 Arbetstakt Håll takten! Se till att du inte kommer efter! Det är väldigt svårt att hinna ifatt!

SMD038 Lektion Variabler Typer Värden Tilldelningar Arrayer Strängar Aritmetik Konverteringar Villkor Slingor Metoder

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; }

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

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

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

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 }; }

Variabler... Primitiva typer Heltal Flyttal byte (8 bitar) short (16 bitar) int (32 bitar) long (64 bitar) Flyttal float (32 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 }; }

Variabler... Primitiva typer Tecken Sanningsvärden 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 }; }

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 }; }

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 }; }

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]); } // main } // TestaBok

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” + ”\””); }

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 = ? }

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 }

Men det är inte alltid så! 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!

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”;

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;

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 }

Villkorssatser if (...) ... if (...) { } else { } if (currentTime>rast) { openDoors(); } else { explainSomething(); }

Villkorssatser switch (<variabel>) { case <värde> : ... continue; // tex return; // tex default : } switch (antalLungor) { case 0 : write(”Game Over!”); return; case 1 : write(”Be careful!”); continue; default : write(”Smile!”); }

Slingor // Vid känt antal upprepningar for (<initiering>;<villkor>;<sats>) { ... } // Till exempel for (int i = 0; i<10; i++) System.out.println(i);

Slingor // När antal upprepningar ej är känt, 0 eller fler while (<villkor>) { ... } // Till exempel while (!file.isFull()) file.write(”SMD038 var här och rotade.”);

Slingor // När antal upprepningar ej är känt, 1 eller fler do { ... } while (<villkor>); // Till exempel file.write(” SMD038 var här och rotade.”); } while (!file.isFull());

K I S S KISS Keep It Simple, Stupid! Det funkar bättre ju enklare du gör det! Börja ALLTID med någonting LITET som FUNGERAR!!! K I S S

Java - Introduktion Exempel /** * 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

Java - Introduktion Exempel /** * 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

Java - Introduktion Exempel janhej-9>javac Hej.java janhej-9>javac Namn.java janhej-9>java Namn Jan-Åke janhej-9>Hejsan! janhej-9> Jan-Åke

SMD038 Dugga 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.

En klass är ... ...en mall för att skapa objekt.

En klass och objekt ... Superklass: Motorfordon Subklasser: Motorcykel Buss Bil Lastbil Personbil Privatbil Taxibil Objekt: Den roströda Saaben ABC123

En klass och objekt ...

SMD038 Frågor?

System.in Hur 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();

Paus 3 minuter rast