Datastrukturer. Erik Forslin. Rum 1445, plan 4 på Nada

Relevanta dokument
Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner

Föreläsning 11. Arrayer. Arrayer. Arrayer. Lagrar flera värden av samma typ Kan vara primitiva typer eller objekt. Kan ha en array av t.

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

I Skapa Hej.java och skriv programmet. I Kompilera med javac Hej.java. I Rätta fel och repetera tills du lyckas kompilera ditt program

Objektorienterad Programmering (TDDC77)

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

SMD 134 Objektorienterad programmering

Övning2. Variabler. Data typer

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Strukturdiagram. Styra. Algoritmer. Val

Objektorienterad Programmering (TDDC77)

Föreläsning 3: Typomvandling, villkor och val, samt textsträngar

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

TDIU01 - Programmering i C++, grundkurs

Programmering A. Johan Eliasson

Objektorienterad programmering i Java

Arrayer (fält)

[] Arrayer = Indexerad variabel

Inledande programmering med C# (1DV402) 27+15=42 1 (22)

Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C.

Objektorienterad programmering Föreläsning 4

Enkla datatyper minne

Föreläsning 8 Programmeringsteknik och Matlab 2D1312/2D1305. Klass Object, instans av klass public/private Klassvariabler och klassmetoder

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod

Introduktion till Datalogi DD1339. Föreläsning 2 22 sept 2014

Föreläsningsanteckningar, Introduktion till datavetenskap HT S4 Datastrukturer. Tobias Wrigstad

Föreläsning 3-4 Innehåll

(Man brukar säga att) Java är... Denna föreläsning. Kompilering av Java. Historik: Java. enkelt. baserat på C/C++ Allmänt om Java

Digitalitet. Kontinuerlig. Direkt proportionerlig mot källan. Ex. sprittermometer. Elektrisk signal som representerar ljud.

OOP Objekt-orienterad programmering

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

Föreläsningsmaterial (Syntax och variabler)

2 b) Följande finns definierat: public class Spel String titel = "Spel"; Dice[] tärningar = new Dice[10]; tärningar[0] = new Dice("Röd"); tärningar[1]

F2 Datatyper och variabler. ID1004 Objektorienterad programmering Fredrik Kilander

2D1311 Programmeringsteknik för Bio1 och Bio2, vt 2003 Fiktivt prov På flervalsfrågorna är endast ett svar rätt om inget annat anges i frågan! Det rik

Lösningsförslag: Instuderingsfrågor, del D

Kapitel 6. Hakparenteser fšr att ange index MŒnga všrden av samma typ

Lektion 7. Datateknik A, Java I, 5 poäng

Hur ser ett Java-program ut?

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

2 b) Följande finns definierat: public class Käk String titel = "Chili con carne"; Krydda[] kryddor = new Krydda[10]; kryddor[0] = new Krydda("Svartpe

Namn: Personnr: 1 2D1310 Programmeringsteknik i Java för B,V (1p) 13 januari 2001, kl Hjälpmedel: En Javabok. För betyget godkänt krävs at

Klassdeklaration. Metoddeklaration. Parameteröverföring

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

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

Tentamen ID1004 Objektorienterad programmering October 29, 2013

Föreläsning REPETITION & EXTENTA

Datalogi I, grundkurs med Java 10p, 2D4112, Fiktiv tentamen, svar och lösningar och extra kommentarer till vissa uppgifter 1a) Dividera förs

Föreläsning 3.1: Datastrukturer, en översikt

OOP Objekt-orienterad programmering

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

Grundläggande programmering med C# 7,5 högskolepoäng

Föreläsning 2 - Intro till Java

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Visual Basic, en snabbgenomgång

E02 "The Review" Föreläsning 2, HT2013 Grunderna, repetition. Johan Leitet. Kurs: 1dv403 Webbteknik I

2 b) Bodega bodegan = new Bodega(); double moms = 0.235; String namn = "Vargtass"; System.out.println(namn + " " + moms + bodegan.ändra(moms, namn); S

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

5. En metod som anropar sig själv a) får inte förekomma i Java-program b) kallas destruktiv c) kallas iterativ d) kallas rekursiv 6. Vilka värden har

Parameteröverföring. Exempel. Exempel. Metodkropp

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

1 Datorn som miniräknare. 1.1 Räkneoperationer. 1.2 Variabler

Programmeringsteknik I

Personal Objektorienterad programmeringsmetodik 5DV081 5DV109

1 Programmering i Java. Program element - Introduktion. Exempel. Exempel. Kapitel 3:

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Översikt Introduktion DST 1. Nicholas Wickström. IDE, Högskolan i Halmstad. N. Wickström

Beräkningsvetenskap föreläsning 2

Föreläsning 2, vecka 8: Repetition

Tentamen ID1004 Objektorienterad programmering April 7, 2015

TDIU01 (725G67) - Programmering i C++, grundkurs

Kapitel 6. Kapitel 6. Hakparenteser fšr att ange index float[] priser = new float[500]; frekvens[4] boolean[] flaggor;

Arv: Fordonsexempel. Arv. Arv: fordonsexempel (forts) Arv: Ett exempel. En klassdefinition class A extends B {... }

F4. programmeringsteknik och Matlab

Dagens föreläsning. Diverse Common Lisp. Konstanter, parametrar, globala variabler

TDDC77 Objektorienterad Programmering

I ett program hantera man ofta samlingar av objekt av samma typ.

Introduktion till formella metoder Programmeringsmetodik 1. Inledning

Programmering för språkteknologer I, VT2012. Rum

Outline. I Vi kan lätt göra samma sak för fyra variabler... I Hur gör vi för 400 inlästa värden? I Ofta behöver man flera likadana variabler

Föreläsning 3: Booleans, if, switch

Variabler, värden och typer

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.

Föreläsning 2 sept 05 (Onsdag v 36). DD Chapter 2.

Introduktion till Java

Klasser i Java kan ha metoder och egenskaper. Metoder beskriver funktioner som klassen kan utföra. Egenskaper beskriver innehållet i klassen.

String [] argv. Dagens Agenda. Mer om arrayer. Mer om arrayer forts. String [] argv. argv är variabelnamnet. Arrayer och Strängar fortsättning

2 b) Följande finns definierat: import java.awt.*; public class Uppgift1b public static void main(string[] mupp) Color färg = Color.blue; Bil[] bilar

Tentamen Grundläggande programmering

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

Skriftlig tentamen för kursen DV017A. Inledande programmering i Java A

F5 Selektion och iteration. ID1004 Objektorienterad programmering Fredrik Kilander

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

EDAf30: Programmering i C++, 7.5 hp. EDAf30: Programmering i C++, 7.5 hp Administration. EDAf30: Programmering i C++, 7.5 hp Obligatoriska moment

Tentamen ID1004 Objektorienterad programmering May 29, 2012

Lektion Java Grunder. Javas historia. Programmeringsspråket Java. Skillnaderna mellan Java och C++ JVM (Javas Virtuella Maskin)

Ett problem. Kontrollstrukturer och arrayer. Arrayer. Lösningen. Arrayer och hakparanteser. Exempel int[] results; results = new int[10]; // 0..

Arrayer (vektorer) Murach s: kap Elektronikcentrum i Svängsta AB

Den som bara har en hammare tror att alla problem är spikar

Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList.

Transkript:

Datastrukturer Vad är en datastruktur? Vad är en datatyp? Primitiva datatyper i Java Icke-primitiva datatyper i Java Minnesexempel med datastrukturer Vektorer i Java Erik Forslin efo@nada.kth.se Rum 1445, plan 4 på Nada 08-7909690 1

Datastrukturer En datastruktur beskriver den information som datorn måste hålla reda på för att lösa en uppgift Kan identifieras genom de substantiv som finns i problemställningen eller uppgiftslydelsen Måste innehålla väl beskrivande namn på identifierare. Utnyttja singular- och pluralformer Måste vara strukturerad och lättläst Beskrivs med fördel med en minnesbild 2

Datatyper i Java En datatyp är något som bestämmer vilken slags data en variabel kan innehålla (t ex heltal, decimaltal, tecken, referens) Datatypen bestäms vid deklarationen av en variabel. Exempel: int x; int x En variabel kan bara innehålla den typ av data som den är deklarerad för Java har två varianter av datatyper: primitiv datatyp och icke-primitiv datatyp (referens till en instans) 3

Primitiva datatyper i Java De primitiva datatyperna i Java beskriver enkla saker vars värde kan lagras direkt i variabelns minnesutrymme ( låda ) Java har åtta primitiva datatyper: Heltal Flyttal Tecken Logiska byte float char boolean short double int long 4

Heltal Det finns fyra heltalstyper i Java: Datatyp Bitstorlek Min-värde Max-värde byte 8 128 127 short 16 32 768 32 767 int 32 2 147 483 648 2 147 483 647 long 64 9 10 18 9 10 18 Vid beräkningar kan dessa tal slå runt. Exempel med datatypen byte: byte b = 127; b = b + 1; // b är nu -128! 5

Flyttal Det finns två flyttalstyper i Java: Datatyp Bitstorlek Min-värde Max-värde float 32 3.4 10 38 3.4 10 38 double 64 1.7 10 308 1.7 10 308 Vid beräkningar kan dessa tal även anta värdena ±Infinity och NaN ( Not a Number ): double d = 1.0 / 0.0; // d är nu Infinity! d = 0.0 / 0.0; // d är nu NaN! 6

Tecken Ett tecken i Java har datatypen char Java använder teckenkodningssystemet Unicode som har stöd för nästan alla språk En teckenlitteral skrivs med omgivande apostrofer, t ex char tkn = 'a'; tkn = '&'; tkn = ' ''; // apostrof måste skyddas med ' ' 7

Logiska Ett logiskt (booleskt) värde har datatypen boolean En boolesk variabel kan endast anta värdena true eller false Booleska variabler används ofta som villkor i val eller slingor: boolean spelavidare = true; while (spelavidare) /* Källkod för t ex ett spel. Värdet på variabeln "spelavidare" ändras om spelet av någon anledning inte ska fortsätta. */ } 8

Icke-primitiva datatyper i Java En icke-primitiv datatyp används för att hålla reda på större datastrukturer än primitiva data En variabel av en icke-primitiv datatyp kallas ofta referensvariabel eftersom den innehåller en referens Referensvariabeln refererar till den del av minnet som innehåller den större datastrukturen Den större datastrukturen är en instans av en klass och ritas som en stor låda 9

Minnesexempel med primitiva och icke-primitiva datatyper Källkoden int x = 3; double y = 3.14; String str = "hejsan"; BufferedReader indata = new BufferedReader(new InputStreamReader(System.in)); ger vid exekvering upphov till följande datastrukturer i minnet: int x 3 double y 3.14 String str BufferedReader indata instans av String "hejsan"? length()? instans av BufferedReader? readline()?? 10

Vektorer Vektorer används för att samla en mängd saker, element, i en och samma datastruktur Java har inbyggda vektorer och en klass Vector som kan användas De inbyggda vektorerna kännetecknas av att man använder [ och ] (hakparenteser). En del kallar dessa för hakvektorer eller arrayer (från engelskans array ) Elementen i en vektor är numrerade från 0 och uppåt. Ett elements ordningsnummer kallas index Ofta används slingor i kombination med vektorer 11

Hakvektor eller klassen Vector? Vid val mellan att använda hakvektorer eller klassen Vector bör man tänka på följande: Antalet element i hakvektorer bestäms när hakvektorn skapas (instansieras) och kan sedan inte ändras kan man lägga till god- I en instans av Vector tyckligt många element I en hakvektor kan bara element av samma datatyp lagras I en instans av Vector kan endast referenser lagras. Primitiva datatyper kan inte lagras utan att de bakas in i en större datastruktur som man kan referera till ( Wrapper -klasser) 12

Minnesexempel med hakvektor Källkoden // Skapa plats för åtta betyg int[] betygen = new int[8]; // Sätt en del betyg betygen[2] = 4; betygen[6] = 3; betygen[0] = betygen[2]; ger följande minnesbild vid exekvering: int[] betygen instans av int[8] 4 4 3 0 1 2 3 4 5 6 7? int? length 8 13

Källkoden Minnesexempel med Vector // Skapa en instans av Vector Vector betygen = new Vector(); // Lägg till en del betygsnamn betygen.addelement("fyra"); betygen.addelement("trea"); betygen.addelement("femma"); // Ändra 0:e betyget till 2:a betyget String tmpbetyg = (String)betygen.elementAt(2); betygen.setelementat(tmpbetyg, 0); ger följande minnesbild vid exekvering: Vector betygen String tmpbetyg instans av Vector 0 1 2? size()? instans av String "fyra"?? String "trea"?? instans av instans av String "femma"?? 14