Objektorienterad programmering Föreläsning 9. Copyright Mahmud Al Hakim Agenda (halvdag)

Relevanta dokument
Objektorienterad programmering Föreläsning 10. Copyright Mahmud Al Hakim Sorteringsalgoritmer

Objektorienterad programmering Föreläsning 8. Copyright Mahmud Al Hakim Agenda (halvdag)

Objektorienterad programmering

Objektorienterad programmering Föreläsning 11. Copyright Mahmud Al Hakim

Objektorienterad programmering Föreläsning 12. Copyright Mahmud Al Hakim

Objektorienterad programmering

Objektorienterad programmering Föreläsning 5

Agenda. Objektorienterad programmering Föreläsning 13

Objektorienterad programmering

Agenda (obs! halvdag)

Objektorienterad programmering Föreläsning 6. Mer om klasser och typer Namnrymder Inkapsling Synlighet Statiska variabler Statiska metoder

Objektorienterad programmering Föreläsning 2

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

Objektorienterad programmering Föreläsning 4

Arrayer (fält)

Typkonvertering. Java versus C

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Övningsuppgift. En array baklänges. Steg 1. Författare: Mats Loock Kurs: Inledande programmering med C# Kurskod:1DV402

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

JAVAUTVECKLING LEKTION 8

Kursplanering Objektorienterad programmering

Objektorienterad programmering

F7 - Arrayer. ID1004 Objektorienterad programmering Fredrik Kilander

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

[] Arrayer = Indexerad variabel

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

Objektorienterad programmering Föreläsning 15. Grafiska användargränssnitt (GUI Graphical User Interface)

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

Java, klasser, objekt (Skansholm: Kapitel 2)

Föreläsning 6: Metoder och fält (arrays)

Objektorienterad programmering Föreläsning 20

TDIU01 - Programmering i C++, grundkurs

(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

DAT043 - Föreläsning 7

OOP Objekt-orienterad programmering

Subtyping och variance. Objekt-orienterad programmering och design Alex Gerdes, 2018

PROGRAMMERING-JAVA TENTAMINA

Objektorienterad programmering i Java

Föreläsning REPETITION & EXTENTA

Statistik över heltal

Anteckningar 1: Grundläggande saker

Databasutveckling Microsoft T-SQL - Fortsättning. Funktioner GROUP BY HAVING Skapa databaser Skapa tabeller Lite om transaktioshantering

Grundläggande programmering med C# 7,5 högskolepoäng. Provmoment: Ladokkod: Tentamen ges för: TEN1 NGC011 ADAEK17, ASYST17 samt öppen för alla

TDDC77 Objektorienterad Programmering

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.

JAVAUTVECKLING LEKTION 3

EDAA20 Föreläsning Klassen ArrayList. Viktiga operationer på ArrayList. Generisk klass

Exempel. Arrayer. Lösningen. Ett problem. Arrayer och hakparanteser. Arrayer

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

Frekvenstabell över tärningskast med C#

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

Objektorienterad programmering D2

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

Föreläsning 2, vecka 8: Repetition

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

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

Arrayer. results

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

Tentamen ID1004 Objektorienterad programmering April 7, 2015

Frekvenstabell över tärningskast med C#

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

Föreläsning 7 Innehåll. Rekursion. Rekursiv problemlösning. Rekursiv problemlösning Mönster för rekursiv algoritm. Rekursion. Rekursivt tänkande:

Föreläsning 3-4 Innehåll

Minnestilldelning (allokering) och frigörande (avallokering) av minne

Exempel: Exempel: Exempel: Exempel: $djur=array("ko","katt","älg"); foreach ($djur as $d) { echo $d. " "; } Resultat. ko katt älg

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 1

JAVAUTVECKLING LEKTION 11

HI1024 Programmering, grundkurs TEN

struct egendefinierad typ struct LECTURE_TYPE { char teacher[99]; float lengthinminutes; char type; /* L = lecture, E = exercise */ };

Inledande programmering med C# (1DV402) 85%43=42. OBS! Heltal 1 (14)

Övningen vill visa på vikten av valet av datastruktur, trots att de ofta erbjuder samma funktionalitet genom sina gränssnitt.

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

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

Metodanrop - primitiva typer. Föreläsning 4. Metodanrop - referenstyper. Metodanrop - primitiva typer

725G61 - Laboration 2 Loopar och arrayer. Johan Falkenjack

Laboration 1 Introduktion till Visual Basic 6.0

Programmeringsteknik och Matlab. Dagens program. Viktiga datum. Repetitionsexempel. Repetition av if/else, for, while och Scanner

Labora&on 2 Funk&oner, if och loop övningar/uppgi:er

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

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

1 Standardalgoritmer. 1.1 Swap. 1.2 Sök minsta värdet i en array

for-satsen Fält for-satsen Föreläsning 8 (OH-bilder 7) for-satsen for-sats är en styrsats för iterationer. for-sats har följande generella utseende:

Kopiering av objekt i Java

Inledande programmering med C# (1DV402) Summera med while"-satsen

TDDC77 Objektorienterad Programmering

Inledande programmering med C# (1DV402) 85/2=42. OBS! Heltal 1 (13)

Rekursion. Koffman & Wolfgang kapitel 5

Det är principer och idéer som är viktiga. Skriv så att du övertygar rättaren om att du har förstått dessa även om detaljer kan vara felaktiga.

Föreläsning 5-6 Innehåll. Exempel på program med objekt. Exempel: kvadratobjekt. Objekt. Skapa och använda objekt Skriva egna klasser

Att deklarera och att använda variabler. Föreläsning 10. Synlighetsregler (2) Synlighetsregler (1)

Föreläsning 5-6 Innehåll

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

Classes och Interfaces, Objects och References, Initialization

TDA550 Objektorienterad programmering, fortsättningskurs. Föreläsning 1. Introduktion Variabler och typer

Övningar i JavaScript del 4

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

Tentamen ID1004 Objektorienterad programmering October 29, 2013

Föreläsning 4. Klass. Klassdeklaration. Klasser Och Objekt

Sammansatta datatyper Generics: Parametrisk polymorfism

Transkript:

Objektorienterad programmering Föreläsning 9 Copyright Mahmud Al Hakim mahmud@webacademy.se www.webacademy.se Agenda (halvdag) Fält Grunderna Fält med komponenter av struct-typ Fält med referenser Standardklassen Array Sökalgoritmer Linjärsökning Binärsökning Copyright 2015 - Mahmud Al Hakim www.webacademy.se 2 1

Fält (array på engelska) Ett fält är en sorts tabell som innehåller flera komponenter av samma slag. Komponenterna kan vara av vilken typ som helst, både av enkel typ eller av referenstyp. Exempel int[ ] f ; Använd hakparenteser för att deklarera en fältvariabel f är en fältvariabel dvs. en referensvariabel som refererar till ett fält. Fältets komponenter är av typen int (heltal). Copyright 2015 - Mahmud Al Hakim www.webacademy.se 3 Att initiera en fältvariabel Ett fält är ett objekt som nås via en referens 1. Initiera ett fält med ordet new t.ex. int[ ] i1 = new int[7]; 0 0 0 0 0 0 0 2. Initiera ett fält i samband med att det skapas t.ex. int[ ] i2 = {2, 4, 6, 8, 10, 12, 14}; 2 4 6 8 10 12 14 Copyright 2015 - Mahmud Al Hakim www.webacademy.se 4 2

Kopiera ett fält Använd metoden Clone() för att göra en kopia av ett fält (kopiera innehållet från ett fält till ett annat fält). Metoden Clone returnerar ett värde av typen Object, därför behövs en explicit typomvandling (cast). Exempel i1 = (int[ ]) i2.clone(); OBS! i1 = i2 kopierar referensen. Variabeln i1 kommer att referera till samma fält som variabeln i2. i1 == i2 undersöker om i1 och i2 refererar till samma fält. Copyright 2015 - Mahmud Al Hakim www.webacademy.se 5 Indexering Varje komponent i ett fält har ett unikt nummer som brukar kallas index. Den första komponenten har alltid index 0. index för den sista komponenten är alltid ett tal som är ett mindre än antalet komponenter i fältet. Med hjälp av index kan man komma åt en enskild komponent i ett fält t.ex. Console.WriteLine(i1[3]); 2 4 6 8 10 12 14 0 1 2 3 4 5 6 Copyright 2015 - Mahmud Al Hakim www.webacademy.se 6 3

Egenskapen Length Med hjälp av egenskapen Length kan man få reda på antalet komponenter i ett fält t.ex. Console.WriteLine(i1.Length); i1 2 4 6 8 10 12 14 0 1 2 3 4 5 6 i1.length ger 7 (6+1) Copyright 2015 - Mahmud Al Hakim www.webacademy.se 7 Fält - Grunderna Copyright 2015 - Mahmud Al Hakim www.webacademy.se 8 4

Att löpa igenom ett fält Copyright 2015 - Mahmud Al Hakim www.webacademy.se 9 Foreach-satsen Foreach-satsen används när man vill löpa igenom ett fält för att avläsa komponenterna. Här brukar man skriva ordet var istället för att ange variabelns typ (implicit typade variabler) låt variabeln item löpa genom hela fältet kvadratrot item kallas iterationsvariabel (foreach iteration variable). Copyright 2015 - Mahmud Al Hakim www.webacademy.se 10 5

Fält med komponenter av struct-typ Copyright 2015 - Mahmud Al Hakim www.webacademy.se 11 Fält med referenser Komponenterna är referenser till objekt av typen String Copyright 2015 - Mahmud Al Hakim www.webacademy.se 12 6

Standardklassen Array Standardklassen Array finns i namnrymden System och innehåller några statiska metoder som kan vara användbara när man arbetar med fält. Sort (f) Sorterar komponenterna i fältet f i stigande ordning. Reverse(f) Lägger komponenterna i fältet f i omvänd ordning IndexOf (f, k) Ger index för första förekomsten av k i f Ger -1 om k inte finns Copyright 2015 - Mahmud Al Hakim www.webacademy.se 13 Array - Exempel Copyright 2015 - Mahmud Al Hakim www.webacademy.se 14 7

Övning Läs in heltal från konsolen och fyll i ett fält Copyright 2015 - Mahmud Al Hakim www.webacademy.se 15 Sökalgoritmer Det är mycket vanligt att man vill söka upp en viss information i tabeller och listor och använder man fält. De vanligaste sökalgoritmer är 1. Linjärsökning Man letar från början i ett fält tills man hittar den komponent som innehåller det sökta talet eller tills man sökt igenom hela fältet utan att finna det sökta talet. 2. Binärsökning Mycket effektivare än linjärsökning men kräver sorterade fält. Copyright 2015 - Mahmud Al Hakim www.webacademy.se 16 8

Linjärsökning (Skansholms algoritm) Loopen fortsätter om man inte hittar talet Copyright 2015 - Mahmud Al Hakim www.webacademy.se 17 Linjärsökning (Mahmuds algoritm) Loopen avslutas så fort man hittar talet Copyright 2015 - Mahmud Al Hakim www.webacademy.se 18 9

Binärsökning Om fältet är sorterat så kan använda en mycket effektivare sökalgoritm s.k. binärsökning. Man tittar först på komponenten som ligger mitt i fältet. Antag att denna innehåller värdet m. Om det sökta talet är mindra än m, så vet vi att det sökta talet måste ligga i fältets vänstra del. Om det sökta talet är större än m, så måste det sökta talet ligga i fältets högra del. Vi kan nu betrakta den halva vi skall söka i som ett nytt fält, mindre än det ursprungliga. Då använder vi samma idé som från början. Detta förfarande upprepas, med allt mindre delfält, tills vi har hittat det tal vi söker efter Tips: http://goo.gl/luulrc Copyright 2015 - Mahmud Al Hakim www.webacademy.se 19 Binärsökning Del 1 Binärsökning Fältet måste vara sorterat Copyright 2015 - Mahmud Al Hakim www.webacademy.se 20 10

Binärsökning Del 2 Copyright 2015 - Mahmud Al Hakim www.webacademy.se 21 11