1 / 104

Grundkurs i programmering

Grundkurs i programmering. Kursens WEB-sidor: http://www.cs.hut.fi/Opinnot/T- 106 . 217. Vad är en dator?. Minne: det ställe där program och data lagras Mikroprocessor: söker programkod och data ur minnet och utför operationer med dem

obedience
Download Presentation

Grundkurs i programmering

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Grundkurs i programmering • Kursens WEB-sidor:http://www.cs.hut.fi/Opinnot/T-106.217

  2. Vad är en dator? • Minne: det ställe där program och data lagras • Mikroprocessor: söker programkod och data ur minnet och utför operationer med dem • (körbart) Program: en serie binära instruktioner som utförs av mikroprocessorn • Operativsystem: tillåter olika program att köras

  3. Skapande och körning av program • Program skrivs med ett icke-binärt språk som är förståeligt för människor men inte för datorn • Programmeringsspråk: “C”, C++, Java, ADA, Pascal, Fortran, APL, COBOL, ... • För att program skall kunna köras, måste programmeringsspråkets instruktioner överföras till maskininstruktioner.

  4. Kompilering vs. tolkning • Ett kompilerat program är färdigt att köras på en viss datamaskin • I ett tolkat program skapas maskin-instruktionerna under programmets körning • Java är en blandning av kompilation och tolkning • Resultatet av kompilering: pseudo-instruktioner (byte-codes)

  5. Virtualmaskin • Pseudo-instruktionerna är maskin-instruktioner för en “virtuell maskin” • En virtual maskin är oftast i praktiken ett program som kan tolka pseudo-instruktioner till maskininstruktioner • Kompilerade Java-program är inte maskinspecifika, men virtualmaskinerna är det

  6. Minimalt Java-program public class Hello { public static void main(String[] args) { System.out.println("Kalles kaviar is good"); } }

  7. Vad är Java? • Objektorienterat • Lätt att lära sig (bl.a. få instruktioner, automatiskt frigörande av minne, ...) • Java-program kan köras på s.g.s. alla operativsystem samt i WEB-program • Standardiserade klassbibliotek • Integrerar ny teknologi genom nya klassbibliotek

  8. Javas historia • ca. 1990: Sun börjar utveckla ett “lätt” språk för handdatorer och liknande • ca. 1993: WWW uppkommer, Sun siktar in sig på dess tillämpningar • 1995: Java version 1.0 publiceras • 1997: Java version 1.1 publiceras • 1998: Java version 1.2 (Java 2) publiceras • 2000: Java version 1.3 publiceras

  9. Kommentarer • Flera rader eller i mitten av en rad /* Kommentar */ • I slutet av en rad // Kommentar • För dokumentation menad kommentar /** Kommentar för dokum. */

  10. Variabeldeklarationer • En variabel har • ett namn • en typ • ett värde • Variabelnamn börjar med liten bokstav • Exempel: int i = 56; // Obs semikolon!

  11. Variabeltyper • Heltal (int) • Flyttal (double eller float) • Sann/falsk information (boolean) • Teckensträngar (String) • Tecken (char)

  12. Matematiska operationer • Operatorer: + - * / % • Användning: hojd = 5; bredd = 10; area = hojd*bredd; tal = 34/3;

  13. Kortare skrivsätt • Även ++tal eller tal-- kan användas tal++; // tal = tal + 1; • Notationer += -= *= /=, exempel: tal *= 2; // tal = tal *2;

  14. Logiska uttryck • Ger resultat som är sanna/falska, typ boolean • Jämförelseoperatorer: > // Större än >= // Större än eller lika med < // Mindre än <= // Mindre än eller likamed == // Lika med != // Inte lika med

  15. Logiska operatorer && // OCH || // ELLER ^ // Exklusiv ELLER (xor) ! // Negation

  16. Valsituationer (IF-satsen) • Enkel: if ( villkor) sats • Alternativ: if ( villkor ) sats1 else sats2

  17. Programblock • Grupperar ihop flera programsatser • Startar med en öppnande klammer och avslutas med en stängande klammer • Inget semikolon efter block!

  18. Klasser och objekt • En klass är en “fabrik” som skapar objekt • Klassen beskriver objektens egenskaper samt funktioner • Exempel: alla fönster på dataskärmen är objekt som skapats med “fabriken” (klassen) fönster • Ett objektorienterat program består av objekt som kommunicerar med varandra

  19. Objekt • Har egenskaper som sparas i instansvariabler (instance variable) • Har funktionalitet som definieras av dess metoder

  20. Instansvariabler • Instansvariabler deklareras i klassdefinitionen • Lokala variabler deklareras inne i metoder • Variabeldeklarationen likadan för båda (typ, namn) • Instansvariablers synlighet kan också definieras (private, protected, public) • Nyckelordet final tillåter variabeln att ges värde en enda gång under programmets körning • Varje objekt har egen kopia av instansvariabler

  21. Skapande av objekt • Ett nytt objekt skapas med nyckelordet new • Exempel: Window w = new Window() • där Window är namnet på en klass • där variabeln w är en “referens” eller “pekare” till det skapade objektet

  22. Metoder • Kallas “underprogram”, “funktioner” eller “procedurer” i icke objektorienterade språk • Definition: deklarationer värdetyp namn(parametrar) { algoritm }

  23. Metoddeklarationens delar • Deklarationer: • synlighet (public, private, protected) • klass- eller objektspecifik (static eller inte) • Värdetyp: typen på det resultat som metoden returnerar. “void” om ingenting. • Namn: fritt valbart, börjar med liten bokstav • Parametrar: namn och typ för formella parametrar

  24. Metoders användning • Programmets struktur blir enklare att förstå då det delats upp i metoder • Programmet blir kortare eftersom upprepning av kod undviks • Modifiering av programmet blir lättare eftersom algoritmen finns på ett enda ställe

  25. Parametrar • För att metoderna skall kunna göra olika saker i olika situationer • Exempel: metod för att räkna ut medelvärdet av talen i en tabell • Formella parametrar existerar endast under metodens utförande • Aktuella parametrar ger startvärdet för de formella parametrarna

  26. Då programmet startas, laddas program-instruktionerna i minnet Också ”globala variablers” minne reserveras Stack: minne som används för lokala (metod-)variabler samt metodparametrar ”heap”: minne som kan reserveras dynamiskt, i Java med operatorn new. Minneshantering i ett program Typisk illustration av minnesanvändning för ett program ”heap”, växer neråt, nuförtiden ofta i ”globala minnet” fritt minne stack, växer uppåt programinstruktioner, globala variabler (i Java klassvariabler)

  27. Metoder som returnerar ett värde • Innehåller åtminstone en “return”-sats • Kan användas direkt t.ex. i matematiska uttryck: double k = f(x) + g(y - 3.14) - 1; • Både funktionerna f() och g() returnerar realtal (double)

  28. Konstruktormetoder • En speciell konstruktormetod kan initialisera det nya objektet, exempel: public Window() { width = 100; height = 100; } • Konstruktormetoder har samma namn som klassen, ingen returvärdestyp • Konstruktormetoder kan även ha parametrar för att initialisera instansvariabler till givna värden

  29. ”Accessor” metoder • Metoder för att komma åt och ändra på värdet på en instansvariabel • Deras namn börjar med get och set, vanligtvis följt av instansvariabelns namn • Get-metoder returnerar instansvariabelns värde • Set-metoder tar en parameter, vars värde blir det nya värdet för instansvariabeln

  30. Överlagring av metoder • “Overloading” på engelska • Flera metoder med samma namn, men med olika formella parametrar (typ eller antal) • Den metod som används beror på de aktuella parametrarnas typ och antal

  31. Nyckelordet this • Refererar till “detta” objekt • En instansmetod refererar till ett visst objekt, det som finns framför punkten då metoden kallas på, exempel: a.visaPaSkarmen()// a “detta” objekt för // metoden “visaPaSkarmen()”

  32. Användning av this • Om klassen Rectangle har egenskapen height, så kan metoden “setHeight” skrivas: public void setHeight(double h) { this.height = h; // Samma som height = h } • Orsaker till användning av this: • Klarare när instansvariabler används • Returnera en referens till “detta” objekt

  33. Objekt som parametrar • Egna klasser kan användas på samma sätt som standardtyper • Objektparametrar är referenser till objekt (referensparametrar) • Objekt som förmedlas som parametrar kan modifieras inne i metoden • Grundtypsparametrar (int, char, double, ...) är värdeparametrar (endast kopior)

  34. Objekt som returvärden • Objekt kan returneras på samma sätt som standard datatyper • En referens returneras

  35. Klassdiagram enligt UML-notation • Sätt att beskriva klassers och objekts relationer i ett objekt-orienterat program • Använder ”lådor” med tre sektioner: • Klassens namn • Instansvariablers namn och typ • Metoders namn, parametrar och deras typ samt returvärdets typ • Linjer mellan olika klasser indikerar referens-relation mellan objekt av olika klasser samt referensernas antal

  36. Klass • Har egenskaper som sparas i klassvariabler (class variable) • Har viss funktionalitet som definieras av klassmetoder (class method) • Nyckelordet static identifierar dem • Både klassvariabler och klassmetoder kan vara privata eller allmänna (private eller public) • Med nyckelordet final deklareras konstanter, vilka egentligen är klassvariabler vars värde inte kan ändras

  37. Klassvariabler och klassmetoder • Objekts egenskaper definieras med hjälp av instansvariabler och instansmetoder • Även klasser kan ha egenskaper, som definieras med hjälp av klassvariabler och klassmetoder • Instansvariabler och –metoder kallas på med notationen objref.varNamn och objref.metNamn() • Klassvariabler och–metoder kallas på via klassens namn, såsom System.in, Math.PI och Math.sin()

  38. Initialisering av klassvariabler • Kan göras i ett specialblock, exempel: public class StaticExample { static int statiskVariabel; static { statiskVariabel = 50; } } • Utförs då klassen laddas in i minnet (vanligtvis då programmet startar)

  39. Klasser som funktionsbibliotek • Exempel: klassen Math • Används endast för mycket specifika behov, t.ex. globala konstanter, variabler och metoder • En klass som deklarerats med final kan inte härledas (metoder kan inte ersättas) • En privat konstruktor gör att inga objekt av klassen kan skapas

  40. Matematiska funktioner i Java • Statiska metoder/konstanter i klassen Math • Exempel: Math.E // talet ‘e’ Math.PI // talet pi Math.abs // absoluta värdet Math.sin(); Math.cos(); Math.tan; Math.exp() o.s.v.

  41. Tabeller • För att spara flera värden av samma typ • Deklaration av tabellvariabel med [], exempel: int[] itab = new int[10] //Heltalstabell med 10 element • int[] itab: deklaration av variabel • new int[10]: skapar tabell som kan innehålla 10 heltal

  42. Ändring av värde i tabell • Exempel: itab[5] = 55; // Ändrar värdet på SJÄTTE elementet • Åt andra hållet: int a = itab[2] // “a” får värdet på TREDJE elementet • Möjligt att räkna ut index med uttryck: a = itab[a*2];

  43. Initialisering av tabeller • Exempel: int[] itab = {5, 10, 15, 10, 25}; // Skapar en tabell med 5 heltal • Om ingen initialisering görs är alla värden noll från början

  44. Tabeller är objekt • Alla tabeller har en egenskap “length” som anger dess storlek • Exempel: int[] itab = new int[100]; System.out.println(itab.length); // Skriver ut 100

  45. Matriser • Exempel: int[][] matrisA = new int[2][2]; // Skapar 2x2 matris • Initialisering: int[][] matrisB = {{1, 2}, {3, 4}, {5,6}}; // Skapar 3x2 matris • matrisB[0] betyder första raden • matrisB[0][1] betyder andra elementet i första raden

  46. Flerdimensionella tabeller • Hakparentesernas placering i deklarationen har ingen betydelse: double[][][] rymd = new double[10][10][10]; // som double[][] rymd[] = new // double[10][10][10]; // och double rymd[][][] = new // double[10][10][10]; • Flerdimensionella tabeller kan innehålla element av olika storlek

  47. Tabeller av objekt • Tabeller av objekt av egna klasser, exempel: Rectangle[] rtab = new Rectangle[5]; // Tabell av 5 referenser till // Rectangle-objekt • OBS! Inga rektanglar skapades, endast en tabell av referenser till rektanglar. • Tabeller är objekt -> möjligt att göra tabeller av tabeller (matriser, ...)

  48. Tabeller av teckensträngar • Exempel: String[] tabell = new String[5]; // Deklarerar tabellvariabel och // skapar tabellen • Initialisering: String[] stab = {“kalle”, “ville”, “pelle”}; • String[] args i main-metoden är alltså en tabell av teckensträngar

  49. Metoder som returnerar tabeller • Returnerar i praktiken en referens till ett tabellobjekt • Tabellobjektet kan ha skapats i metoden eller dess referens kan ha givits som parameter till metoden

  50. Upprepning med for-sats for ( startoperationer ; forts.test ; framskridning) det som skall upprepas • Exempel: int i; for ( i = 0 ; i < 6 ; i++ ) System.out.println(i);

More Related