TDT4110 Informasjonsteknologi grunnkurs: Uke 43: Datastrukturer (kap. 8)

Like dokumenter
TDT4105 Informasjonsteknologi grunnkurs: Uke 43: Datastrukturer (kap. 8)

Datastrukturer (kap. 8)

TDT4110 Informasjonsteknologi grunnkurs: Eksempler. Mangekanter

TDT4105 Informasjonsteknologi, grunnkurs MatLab: Filbehandling - load, save, type - fopen, fgetl, feof, fprintf, fclose

TDT4105 Informasjonsteknologi, grunnkurs

TDT4105 Informasjonsteknologi, grunnkurs. Introduksjon til programmering i Matlab. Rune Sætre / Anders Christensen {satre,

TDT4105 Informasjonsteknologi, grunnkurs. Introduksjon til programmering i Matlab. Rune Sætre / Anders Christensen {satre, anders}@idi.ntnu.

Læringsmål og pensum. Oversikt. Læringsmål Forstå og bruke cell array og strukturer. Pensum Matlab, Chapter 8

Læringsmål og pensum. Oversikt

TDT4105 Informasjonsteknologi grunnkurs: Uke 42 Strenger og strenghåndtering

TDT4105 Informasjonsteknologi, grunnkurs (ITGK)

Binærfiler versus tekstfiler

TDT4110 Informasjonsteknologi grunnkurs: Tema: Lister og tupler. - 3rd edition: Kapittel 7. Professor Alf Inge Wang

C# (.Net) Tema: Loops (Løkker) Leksjon 7 Kap 18

Del 4 Noen spesielle C-elementer

UNIVERSITETET I OSLO

Leksjon 3. Kontrollstrukturer

Uke 8 Eksamenseksempler + Ilan Villanger om studiestrategier. 11. okt Siri Moe Jensen Inst. for informatikk, UiO

TDT4105 Informasjonsteknologi, grunnkurs (ITGK)

TDT4110 Informasjonsteknologi grunnkurs: Tema: Mer om strenger. - 3rd edition: Kapittel 8. Professor Alf Inge Wang

BOKMÅL Side 1 av 6. EKSAMEN I FAG TDT4102 Prosedyre og objektorientert programmering. Fredag 6. juni 2008 Kl

TDT4110 Informasjonsteknologi grunnkurs: Tema: Betingelser og logiske uttrykk Utgave 3: Kap. 3

Noen innebygde funksjoner - Vektorisering

if (be): else (not_to_be): TDT4110 Informasjonsteknologi grunnkurs: Tema: Betingelser og logiske uttrykk Utgave 3: Kap.

TDT4110 Informasjonsteknologi grunnkurs: Uke 41: «Matlab programs» (kapittel 6)

Noen innebygde funksjoner - Vektorisering

TDT4105 Informasjonsteknologi, grunnkurs. Matlab 5: Løkker (FOR og WHILE) Matlab 6: Problemløsning / Algoritmer

Innhold uke 4. INF 1000 høsten 2011 Uke 4: 13. september. Deklarasjon av peker og opprettelse av arrayobjektet. Representasjon av array i Java

Læringsmål og pensum. if (be): else (not_to_be):

Tirsdag 21/11. Onsdag 24/11. Tirsdag 12/12. TDT4110 Informasjonsteknologi grunnkurs: Tema: Et større case

Repetisjon: operatorene ++ og -- Java 5. Nøtt. Oppgave 1 (fra forrige gang) 0 udefinert udefinert. Alternativ 1 Prefiks-operator

INF1000 (Uke 5) Mer om løkker, arrayer og metoder

Python: Løkker. TDT4110 IT Grunnkurs Professor Guttorm Sindre

TDT4105 Informasjonsteknologi, grunnkurs. Matlab 5: Løkker (FOR og WHILE) Matlab 6: Problemløsning / Algoritmer

TDT4110 Informasjonsteknologi grunnkurs: Tema: Betingelser og logiske uttrykk. - 3rd edition: Kapittel 3. Professor Alf Inge Wang

TDT4110 Informasjonsteknologi grunnkurs: Python: Repetisjon. Professor Alf Inge Wang

Mål. Pensum. TDT4110 Informasjonsteknologi grunnkurs: Tema: Unntak (exceptions) (Kap 6) Dictionaries (Kap. 9) Terje Rydland - IDI/NTNU

TDT4105 Informasjonsteknologi, grunnkurs. Introduksjon til programmering i Matlab. Forelesningsinfo. Tider Mandag Tirsdag Onsdag Torsdag Fredag

TDT4110 Informasjonsteknologi grunnkurs: Programmering: En større case. Professor Alf Inge Wang

Læringsmål og pensum. En større case. Mål Lære å lage større og sammensatte programmer Pensum Kapitlene 1-9 og 12.

Forelesning inf Java 5

Mål. Pensum. TDT4110 Informasjonsteknologi grunnkurs: Tema: Et større case. Terje Rydland - IDI/NTNU. Lære å lage større og sammensatte programmer

Forelesning inf Java 5

TDT4110 Informasjonsteknologi grunnkurs: Tema: Mer om strenger Utgave 3: Kap. 8

Norsk informatikkolympiade runde

Læringsmål og pensum

UNIVERSITETET I OSLO

INF Uke 10. Ukesoppgaver oktober 2012

Python: Variable og beregninger, input og utskrift. TDT4110 IT Grunnkurs Professor Guttorm Sindre

INF1000 (Uke 15) Eksamen V 04

INF1000 (Uke 15) Eksamen V 04

Praktisk informasjon. Repetisjon: While-løkker. I dag. INF1000 (Uke 5) Mer om løkker, arrayer og metoder. Oblig 2 er lagt ut

TDT4105 Informasjonsteknologi, grunnkurs. Mer om funksjoner: - rekursive funksjoner

INF1000 EKSTRATILBUD. Stoff fra uke 1-5 (6) 3. oktober 2012 Siri Moe Jensen

Oversikt. Introduksjon Kildekode Kompilering Hello world Hello world med argumenter. 1 C programmering. 2 Funksjoner. 3 Datatyper. 4 Pekere og arrays

i=0 Repetisjon: arrayer Forelesning inf Java 4 Repetisjon: nesting av løkker Repetisjon: nesting av løkker 0*0 0*2 0*3 0*1 0*4

Forelesning inf Java 4

Python: Intro til funksjoner. TDT4110 IT Grunnkurs Professor Guttorm Sindre

Programmeringsspråket C Del 3

Python: Strenger 3. utgave: Kapittel 8

Programmeringsspråket C Del 3

Norsk informatikkolympiade runde. Sponset av. Uke 46, 2017

Mål. Pensum. TDT4110 Informasjonsteknologi grunnkurs: Tema: Dictionaries og sets (mengder) Utgave 3: Kap. 9. Terje Rydland - IDI/NTNU

MER OM ARRAYER. INF1000: Forelesning 4. Anta at vi ønsker å lagre en liste med navnene på alle INF1000-studentene:

UNIVERSITETET I OSLO

Praktisk informasjon. I dag. Repetisjon: While-løkker. INF1000 (Uke 5) Mer om løkker, arrayer og metoder

Programmeringsspråket C Del 3

Programmeringsspråket C Del 3

Informasjon Eksamen i IN1000 høsten 2017

Største primtallsfaktor i tall

INF1000: Forelesning 4. Mer om arrayer Metoder

Dagens tema. C-programmering. Nøkkelen til å forstå C-programmering ligger i å forstå hvordan minnet brukes.

TDT4110 Informasjonsteknologi grunnkurs: Tema: Dictionaries og mengder (sets) - Kapittel 9. Professor Alf Inge Wang

Oppsummering fra sist

TDT4105 Informasjonsteknologi, grunnkurs

Litt mer om uttrykk: ++ og -- INF1000 : Forelesning 4. Oppgave. Blokker. 0 udefinert udefinert. Alternativ 2 Postfiks-operator

Dagens tema. Mer om C Enkle datatyper Sammensatte datatyper: Vektorer og matriser Tekster Mengder Strukturer Unioner Ringbuffere

Python: Valg og betingelser. TDT4110 IT Grunnkurs Professor Guttorm Sindre

NB: Vi trenger alle sitteplassene, så ikke la setene stå tomme i mellom dere! Fyll opp forfra, fra midten, er dere snill

EKSAMENSOPPGAVE. INF-1100 Innføring i programmering og datamaskiners virkemåte. Ingen. Elektronisk (WiseFlow) Robert Pettersen

Python: Løkker. TDT4110 IT Grunnkurs Professor Guttorm Sindre

Hva er verdien til variabelen j etter at følgende kode er utført? int i, j; i = 5; j = 10; while ( i < j ) { i = i + 2; j = j - 1; }

TDT4110 Informasjonsteknologi grunnkurs: Kapittel 7 Filer og unntak ( exceptions ) Professor Alf Inge Wang Stipendiat Lars Bungum

Norsk informatikkolympiade runde

Programmering Høst 2017

MENGDER (SETS) Læringsmål og pensum. Kapittel 9.2

Norsk informatikkolympiade runde

Tall, vektorer og matriser

Plan: Parameter-overføring Alias Typer (Ghezzi&Jazayeri kap.3 frem til 3.3.1) IN 211 Programmeringsspråk

Python: Lister og tupler Gaddis: Kapittel 7

TDT4105 IT Grunnkurs Høst 2012

UNIVERSITETET I OSLO

INF1000: noen avsluttende ord

Bruk piazza for å få rask hjelp til alles nytte!

NB: Vi trenger alle sitteplassene, så ikke la setene stå tomme i mellom dere! Fyll opp forfra, fra midten, er dere snill

Innhold uke 10. Objektorientert programmering i Python. Oblig 7 og 8. IN1000 Seminar! IN1000 Høst 2018 uke 10 Siri Moe Jensen

Med løkke: Læringsmål og pensum. TDT4110 Informasjonsteknologi grunnkurs: Tema: Løkker/Sløyfer Utgave 3: Kap. 4 Utgave 2: Kap. 5. Mål.

Pensum: Starting out with Python

Innhold. INF1000 Høst Unified Modeling Language (UML) Unified Modeling Language (UML)

Læringsmål og pensum. Tekststrenger Læringsmål Skal kunne forstå og programmere med tekststrenger. Pensum Matlab, Chapter 7

Transkript:

1 TDT4110 Informasjonsteknologi grunnkurs: Uke 43: Datastrukturer (kap. 8) Anders Christensen anders@idi.ntnu.no Rune Sætre satre@idi.ntnu.no

2 Læringsmål og pensum Læringsmål Datastrukturer: Cell Arrays Structures Problemløsing og litt repetisjon return og break overstyring av normal programflyt Pensum Kapittel 8 Data Structures 2

3 Datastrukturer Datatype: Datatypen til en variabel er de verdiene som variabelen kan ha Har ofte et sett operasjoner som kan utføres på variabler av den aktuelle datatypen. single, double, int8, int16, int32, int64, char, logical Datastruktur: Samling variabler, gjerne av ulik datatype, forbundet på ulike måter For eksempel: Vektorer og matriser Alle elementer av samme type Fast struktur (alle rader har like mange kolonner) 3

4 Cell Arrays Vektorer/Matriser der elementene er cells CellArray kan lagre data av ulike typer Indekseres som ordinære vektorer/matriser Bruker sløyfe/krøll-parenteser: {} V = {1910, NTNU, Trondheim } Innholds-indeksering: V{1} = 1910 (tall, double) V{2} = NTNU (string, 4 tegn lang) V{3} = Trondheim (string, 9 tegn lang) Celle-indeksering V(1) = [1910] (en celle som kan inneholde f.eks. tallet 1910) 4

5 Cell Arrays, fortsatt 5

6 Cell Arrays, fortsatt Pre-allokering cell(<rader>, <kolonner>) Oppretter en cell array med tomme elementer ([]). length() / size() Som for alminnelige tabeller Referere til deler av Cell Arrays Som for tabeller V{1:2} celldisp() To første celle-verdiene i V Skriver ut alle elementene 6

7 Smart: Lagring av tekststrenger Kan lagre tekststrenger av ulik lengde i samme datastruktur. 7

8 Structures 8

9 Structures Datastruktur som grupperer sammen verdier som hører sammen Navngitte felter (fields) person = struct( personnr,100, navn, Pondus ) person.personnr = 100 person.navn = Pondus 9

10 Structures, forts. Å referere til feltene <struktur-variabel>.<feltnavn> (dot operator) person.favklubb = Liverpool Legger til et nytt felt i strukturen Pre-allokering er lurt: struct( felt1, verdi1, felt2, verdi2 ) Begynn «bakerst» (med f.eks. struct nr. 100) rmfield(<struct-variabel>,<feltnavn>) fjerner alle feltnavn 10

11 Structures, forts. Kan nøste strukturer inni strukturer Kan ha vektorer og matriser med strukturer som elementer Kan overføre (hele) strukturer til funksjoner Kan returnere strukturer fra funksjoner Fordeler: Navngitte felt Ulike datatyper Ulemper: Kan ikke indeksere feltene i en løkke etc. like lett som elementene i vektorer og matriser. 11

12 (Database-) Poster Lottospill Holde data for en uke A 12

13 Eksempel 13

14 Har vi alternative datastrukturer? Hvilke? Fordeler / ulemper? 14

15 15

16 Lotto-database Vektor av Lotto-poster Databasefunksjoner Sett inn post, endre post, slette post Maks gevinst, gjennomsnittlig omsetning, form-tall, Utfordringer? 16

17 Problem: Lottotrekking 7 tall fra 1 34 Trekking uten tilbake-legging Utfordring: Unngå å trekke samme tall flere ganger Løsninger:?? 17

19 19

20 Mangekanter Må finne en måte å representere mangekanter Finne egnet datastruktur En liste med hjørnepunkter En vektor med punkt-strukturer En liste med x-koordinatene og en liste med y-koordinatene En matrise med x- og y-verdiene i første og andre kolonne Andre forslag? 20

21 Tre alternativer 21

22 Omkrets av struct-mangekant Skriv kode for de andre alternativene selv. 22

23 Problem: Søke etter del-tabell Dersom del-tabell finnes i tabell, returnere true + rad og kolonne for øvre-venstre-hjørne Ellers returneres false + 0 for både rad og kolonne Funksjonssignatur: function [finnes, rad, kol] = finnmonster(t, m) Problemer? Løsning? 23

24 >> T = randi(2,10,10) -1 T = 1 0 1 1 0 0 1 1 0 0 1 1 0 0 0 1 0 0 1 0 0 1 1 0 1 1 1 1 1 1 1 0 1 0 1 0 1 0 1 1 1 1 1 0 0 0 1 1 1 1 0 0 1 1 0 0 1 0 0 0 0 0 1 1 0 1 1 0 1 1 1 1 0 0 1 0 0 0 1 0 1 1 1 1 1 1 0 1 0 0 1 1 0 0 1 0 0 0 1 0 >> m = [ 1 1 1 ; 1 0 0 ; 1 0 1 ] m = 1 1 1 1 0 0 1 0 1 >> [finnes, rad, kolonne] = finnmonster(t,m) finnes = 1 rad = 5 kolonne = 7 >> 24

25 >> image(t*10) >> image(m*10) 25

29 return og break Terminering av funksjoner og løkker (før tiden) return break 29

30 return og break, forts Overstyrer den normale programflyten Gir av og til enklere kode som er lettere å forstå Bør brukes sparsomt NB! break avslutter bare den (innerste) løkken den står i 30

31 Eksamen 2013 og konte 2014 Oppgave 4 (2013) er egnet for Cell Arrays Oppgave 4d (2014kont) er egnet for Cell Arrays 31