TDT4105 Informasjonsteknologi, grunnkurs

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

TDT4110 Informasjonsteknologi grunnkurs: Eksempler. Mangekanter

Testlig og binær form

Binærfiler versus tekstfiler

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

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

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

Datastrukturer (kap. 8)

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

TDT4105 Informasjonsteknologi grunnkurs: Uke 42 Strenger og strenghåndtering

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

Mål. Pensum. TDT4110 Informasjonsteknologi grunnkurs: Tema: Filer og unntak (exceptions) Utgave 3: Kap. 6. Terje Rydland - IDI/NTNU

TDT4110 Informasjonsteknologi grunnkurs: Tema: Filer og unntak ( exceptions ) - 3rd edition: Kapittel 6. Professor Alf Inge Wang

Læringsmål og pensum. Inn- og utoperasjoner 21/10/16

TDT4105 Informasjonsteknologi, grunnkurs (ITGK)

TDT4105 Informasjonsteknologi, grunnkurs (ITGK)

ITGK - H2010, Matlab. Repetisjon

Repetisjon, del 2. TDT 4110 IT Grunnkurs Professor Guttorm Sindre

Noen innebygde funksjoner - Vektorisering

Noen innebygde funksjoner - Vektorisering

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

TDT4105 Informasjonsteknologi, grunnkurs. Introduksjon til programmering i Matlab

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

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: Uke 41: «Matlab programs» (kapittel 6)

Læringsmål og pensum. Oversikt

TDT4105 Informasjonsteknologi, grunnkurs

TDT4105 Informasjonsteknologi, grunnkurs

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

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

TDT4105 Informasjonsteknologi grunnkurs Øvingsforelesning 2. Iver Dihle Skjervum Vit.ass. ITGK

TDT4105 Informasjonsteknologi, grunnkurs Eksempler

TDT4105 IT Grunnkurs Høst 2016

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

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

Læringsmål og pensum

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

Plan for dagen. Vprg 4. Dagens tema - filbehandling! Strømmer. Klassen FilLeser.java. Tekstfiler

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL

Repetisjon, del 1. TDT 4110 IT Grunnkurs Professor Guttorm Sindre

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

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

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

Øvingsforelesning TDT4105

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

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

TDT4105/TDT4110 Informasjonsteknologi grunnkurs:

TDT4105/TDT4110 Informasjonsteknologi grunnkurs:

Ta kontakt i pausen. Viktig at vi kommer i gang med dette arbeidet!

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

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

Største primtallsfaktor i tall

Python: Filer og unntak Gaddis: Kapittel 6

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL

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

Python: Oppslagslister (dictionaries) og mengder 3. utgave: Kapittel 9

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

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

Matematikk Øvingsoppgaver i numerikk leksjon 4 m-ler

TDT4110 Informasjonsteknologi, grunnkurs Uke 35 Introduksjon til programmering i Python

Filbehandling Tekstfiler

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

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

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

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

Øvingsforelesning 9 i Python (TDT4110)

INF1000: noen avsluttende ord

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

INF1000 (Uke 15) Eksamen V 04

INF1000 (Uke 15) Eksamen V 04

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

Forelesning inf Java 5

Forelesning inf Java 5

Dictionary er et objekt som lagrer en samling av data. Minner litt om lister men har klare forskjeller:

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.

TDT4110 IT Grunnkurs Høst 2016

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

Lese fra fil. INF1000 : Forelesning 5. Eksempel. De vanligste lesemetodene. Metoder:

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

TDT4110 IT Grunnkurs Høst 2016

Læringsmål og pensum. Designe et program

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

Dictionary er et objekt som lagrer en samling av data. Minner litt om lister men har klare forskjeller:

TDT4110 Informasjonsteknologi grunnkurs: Uke 48 Oppsummering/Spørretime. Professor Alf Inge Wang

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

Hittil har programmene kommunisert med omverden via tastatur og skjerm Ønskelig at data kan leve fra en kjøring til neste

Forelesning inf Java 4

TDT4105 Informasjonsteknologi, grunnkurs Matlab: Betinget programutførelse (valg: IF og SWITCH) og løkker (FOR)

Øvingsforelesning TDT4105 Matlab

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

Læringsmål og pensum. Oppgave

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

Høst Øving 5. 1 Teori. 2 Månedskalender. Norges teknisknaturvitenskapelige universitet Institutt for datateknikk og informasjonsvitenskap

TDT4105 IT Grunnkurs Høst 2014

Oppsummering fra sist

Leksjon 3. Kontrollstrukturer

Oppsummering Assemblerkode Hopp Multiplikasjon Kode og data Array Oppsummering

Kom forberedt til tirsdag. INF1000 Tips til obligatorisk oppgave 4. Noen generelle tips. Oblig4: Komme igang

Transkript:

1 TDT4105 Informasjonsteknologi, grunnkurs MatLab: Filbehandling Anders Christensen (anders@idi.ntnu.no) Rune Sætre (satre@idi.ntnu.no) TDT4105 IT Grunnkurs

2 Læringsmål/pensum Filbehandling Mål: Forstå forskjell på tekstlig og binær form Forstå hvordan data organiseres i en fil Kunne overføre data til og fra filer i Matlab Pensum i Matlab-boka 3.6 (2.6 gammel bok) «Introduction to File Input/Output» 9 Advanced File Input and Output Kahoot Quiz Fra forrige uke: Problemløsning/programmering Finne mønster i større tabell 2

3 Filer: Motivasjon Kan ikke alltid gjenskape data eller regne ut ting på nytt Ofte behov for å lagre verdier som skal leses inn eller er beregnet i et program for senere bruk Data kan være av samfunnsmessig interesse (værvarsling) og påkrevet lagret for senere tilgang Mange beregninger på realistiske systemer lager store datamengder må lagre for å kunne studere data med andre verktøy, f.eks. visualisering Overføre data mellom programmer 3

4 Tekstlig og binær form Mindre datamengder kan med fordel lagres som (ascii) tekst så vi kan se hva verdiene er Dette kalles å lagre data på tekstlig form Tallverdier lagres vanligvis som binært kodede tall Hvert tall (double) bruker 8 bytes i minnet (RAM) Men, ved lagring på tekstlig form oversetter Matlab fra binær form til en tekststreng Med tegnene: 0, 1,..., 9,., +, -, e Hvert enkelt tegn (enkelt-bokstav) bruker 2 bytes Lagring på binær form Praktisk for datamaskiner, veldig upraktisk for mennesker! 4

5 Binærfiler versus tekstfiler Ulemper med tekstfiler Oversetting til/fra tekstlig form Tar (vanligvis) større plass Fordeler med tekstfiler Kan lett lese innholdet (så lenge filen ikke blir alt for stor) Standardisert (ASCII), kan utveksle data mellom programmer Kan skrive inn nytt eller endret innhold i en teksteditor Filer kan bli store, veldig store Data fra værberegning kan være 4 GB (4 milliarder byte) Effektivitet og raske oppslag er viktig Lesbarhet (for mennesker) er irrelevant Vi skal se på behandling av tekstfiler 5

6 Lagring av matriser Matlab gjør det enkelt å lagre matrisedata Samme datatype Regelmessig form (samme antall kolonner i alle rader) save <filnavn> <variabel> -ascii Lager variabel i tekstfil med filnavn save <filnavn> <variabel> -ascii -append Legger variabels innhold til i tekstfilen load <filnavn> Henter data fra fil <filnavn> til variabel <filnavn> <variabel> = load( <filnavn> ) Henter inn data fra fil til oppgitt variabel type <filnavn> Skriver ut innholdet i filen 6

7 Eksempel 1 7

8 Eksempel 1 (forts.) save og load er den enkleste måten å bruke filer Forutsetter matrisedata, ikke alltid det passer 8

9 Eksempel: Værdata Middeltemperaturer fra Voll i september: voll_sept_2011.txt Hver linje: dag mnd år temp Ønsker funksjon som beregner: Gjennomsnittstemperatur Laveste temperatur Høyeste temperatur 9

11 Eksempelkjøring 11

12 Lavnivå filbehandling Åpner filer (etablerer kobling til filen) <fil-id> = fopen( <filnavn>, <tilgangstype>'); fil-id er en filpeker (referanse til filen) fil-id settes til -1 ved problemer Tilgangstyper: r lese (fra starten) w skrive (sletter gammelt fil-innhold først) a legge til (skrive på slutten av filen) Lukker filen når vi er ferdig med den <status> = fclose(<fil-id>) Returnerer 0 når det går bra, -1 ellers 12

13 Lesing/skriving fgetl(<fil-id>) Leser inn en linje Returnerer en tekststreng med linjens innhold feof(<fil-id>) usann så lenge det er mer data igjen i filen (som ikke er lest) sann når vi har kommet til slutten av filen fprintf(<fil-id>, <formatstreng>, <verdier>) Skriver til filen med <fil-id> Som til skjerm Mange flere (spesialiserte) muligheter, se læreboka og hjelp i Matlab. 13

14 Eksempelfil: Personregister Data om en person på hver linje Feltindikatorer: #navn: #adresse: #faar: Leser inn en og en linje og plukker ut data 14

15 lesandebyfil.m 15

16 Eksempelkjøring Leser en og en linje fra filen Skriver ut hele linjen 16

17 Plukker ut data: lesandebyfil2.m 17

18 Kjøreeksempel 18

19 Andeby- database Leser inn persondata til en vektor av strukturer Personpost (struktur): Vektor av personer: 19

20 lesandeby.m 20

21 Kjøreeksempel 21

22 Å legge til en «person» Lager funksjon som registrerer ny Andeby-innbygger Tar person-post som inn-parameter Åpner filen for å legge til ( a ) Lager tekstlinje ut fra person-posten Skriver tekstlinje til fil fprintf(fid, '%s\n', linje); Lukker filen 22

23 regandebykarakter.m 23

24 Kjøreeksempel 24

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

26 >> 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 >> 26

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

28

29 29

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

31 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 31