Läsning, skrivning, tangentbord, skärm. F6: Filhantering (kap. 8) Tabell på skärmen. Tabell på skärmen, test

Relevanta dokument
Läsning, skrivning, tangentbord, skärm. F6: Filhantering (kap. 8) Tabell på skärmen. save

Läsning, skrivning, tangentbord, skärm. F6: Filhantering (kap. 8) Tabell på skärmen

Enklast att skriva variabelnamn utan ; innehåll och variabelnamn skrivs ut

Numeriska Metoder och Grundläggande Programmering för P1, VT2014

F5: Grafiska användargränssnitt (kap. 9 10) Vad är ett (grafiskt) användargränssnitt? Ett exempel: Enkel räknare

Grafiska objekt och egenskapslistor Grafikfunktioner returnerar en objektreferens. >> obj_r = quiver([0 1],[0 0],[1 0],[1 1],'o') obj_r = 111.

F5: Grafiska användargränssnitt (kap. 9 10) Vad är ett (grafiskt) användargränssnitt? Ett exempel: Enkel räknare

F8: Resterna. Substitutionschiffer. Permutationer. ASCII och char. Substitutionschiffer (Lab 3) Permutationer Rekursion

Matlab-repetition. p 1 (25) Staffan Romberger, CSC, KTH,

Föreläsning 12: Datastrukturer & filer

Filer och structer Del 2

Enkla datatyper minne

Strängar. Strängar (forts.)

Filhantering. Grunderna i filhantering. Uppbyggnad av filer. Data hierarkin. Filpekaren. Positionering i filer

F2 Binära tal EDA070 Datorer och datoranvändning

Programmeringsteknik med C och Matlab

Villkor if, switch. F2: Styrstrukturer, programmeringsteknik (kap. 3 4) If-kommando forts. If-kommando forts.

5 Grundläggande in- och utmatning

TANA17 Matematiska beräkningar med MATLAB för M, DPU. Fredrik Berntsson, Linköpings Universitet. 4 december 2015 Sida 1 / 26

Föreläsning 13. In- och utmatning

TANA17 Matematiska beräkningar med Matlab

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

TANA81: Simuleringar med Matlab

STRÄNGAR DATATYPEN. Om du vill baka in variabler eller escape-tecken måste du använda dubbla citattecken. strängar

Deklarera en struct som kan användas för att representera en rät linje

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

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

F2 Datarepresentation talbaser, dataformat och teckenkodning

Datorlära 6. Arbeta med strängar Inmatning med tangentbordet Bygga ett program med inmatning, funktioner, osv

F2 Datarepresentation talbaser, dataformat och teckenkodning EDAA05 Datorer i system! Roger Henriksson!

Programmeringsteknik med C och Matlab

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

Övning från förra gången: readword

Objektorienterad Programmering (TDDC77)

Villkor, if, switch. F2: Styrstrukturer, programmeringsteknik (kap. 3 4) If-kommando forts. If-kommando forts.

Objektorienterad Programmering (TDDC77)

Programmering, grundkurs, 8.0 hp HI1024, HI1900 etc., Tentamen TEN1. Måndagen den 10 januari 2011,

Tentamen ges för: Tentamensdatum: Tid:

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

KPP053, HT2015 MATLAB, Föreläsning 1. Introduktion till MATLAB Skript Inläsning och utskrift av variabler Ekvationssystem Anonyma funktioner

Strängar. Elektronikcentrum i Svängsta AB

LAB 1. FELANALYS. 1 Inledning. 2 Flyttal. 1.1 Innehåll. 2.1 Avrundningsenheten, µ, och maskinepsilon, ε M

F2: Styrstrukturer, programmeringsteknik (kap. 3 4)

Villkor if, switch. F2: Styrstrukturer, programmeringsteknik (kap. 3 4) If-kommando forts. If-kommando forts.

Komponentvisa operationer,.-notation Multiplikation (*), division (/) och upphöj till (ˆ) av vektorer följer vanliga vektoralgebraiska

Uppgifter till praktiska tentan, del A. (7 / 27)

Kursuppläggning. F1: Introduktion, Matlabrepetition (kap. 1 2) Motivering för programmering. Att kunna programmera

HI1024 Programmering, grundkurs TEN

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

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

Uppgift 1 ( Betyg 3 uppgift )

[] Arrayer = Indexerad variabel

F4: Datastrukturer (kap. 6 7) Komplexa tal Ö3: 5.2, 5.7, 5.14, 5.20

4.3. Programmering i MATLAB

Programmering i C++ EDA623 Strömmar och filer. EDA623 (Föreläsning 9) HT / 19

Tentamen i Programmering grundkurs och Programmering C

Lösningar till tentauppgifterna sätts ut på kurssidan på nätet idag kl 19. Omtentamen i Programmering C, 5p, fristående, kväll,

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program

KPP053, HT2016 MATLAB, Föreläsning 1. Introduktion till MATLAB Skript Inläsning och utskrift av variabler Ekvationssystem Anonyma funktioner

TDP002 - Imperativ programmering

Introduktion till Matlab

Introduktion till MATLAB

Översikt över Visual Basic

Språket Python - Del 2 Grundkurs i programmering med Python

Linjär algebra med tillämpningar, lab 1

Kapitel 15: Data/Matrix Editor

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

Mattias Wiggberg Collaboration

Beräkningsvetenskap föreläsning 2

MATLAB the Matrix Laboratory. Introduktion till MATLAB. Martin Nilsson. Enkel användning: Variabler i MATLAB. utvecklat av MathWorks, Inc.

Föreläsning 2 Programmeringsteknik och C DD1316. Mikael Djurfeldt

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

Innehåll. Vad är MATLAB? Grunderna i MATLAB. Informationsteknologi. Informationsteknologi.

Planering Programmering grundkurs HI1024 HT TIDAA

Planering Programmering grundkurs HI1024 HT data

Föreläsning 2 Programmeringsteknik och Matlab DD1312. Programspråk. Utskrift på skärmen

Struktur: Elektroteknik A. Digitalteknik 3p, vt 01. F1: Introduktion. Motivation och målsättning för kurserna i digital elektronik

Föreläsning 5 Programmeringsteknik DD1310. Modulen doctest. Exempel. Doctest Dictionary Filhantering

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

Motivering för programmering. F1: Introduktion, Matlabrepetition (kap. 1 2) Att kunna programmera. Interpreterat/kompilerat

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

Undantagshantering. Fördjupad Java. Fel. Undantag. Fånga Undantag. Grupper av Undantag

Undantagshantering. Fördjupad Java. Undantag. Fel. Grupper av Undantag. Fånga Undantag

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

Tänk på följande: Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Programmering, grundkurs, 8.0 hp HI1024, omtentamen, TEN1. Tisdagen den 7 juni 2011,

Filer. DA2001 (Föreläsning 16) Datalogi 1 Hösten / 19

Programmera i C Varför programmera i C när det finns språk som Simula och Pascal??

Introduktion till programmering och Python Grundkurs i programmering med Python

Dagens föreläsning. Sett i datorsalarna. Mer om arrayer. Matriser. Formatering av utskrifter. Inläsning med hjälp av Scanner-klassen

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

729G04 Programmering och diskret matematik. Python 2: Villkorssatser, sanningsvärden och logiska operatorer

HI1024, Programmering, grundkurs, 8hp KTH STH TENTAMEN. HI1024:TEN2 - Praktisk tentamen Tid: Fredagen den 21 oktober 2011,

Programmeringsteknisk översiktskurs för yrkeshögskoleprogram

Multipel tilldelning. Introduktion till programmering D0009E. Föreläsning 6: Iteration. while-satsen. Kom ihåg. Snurror kontra rekursion

Börja programmera. Kapitel 4 i kompendiet Jämförande uttryck Villkorssatser Loopar (slingor) Funktioner. Läs inte avsnitt 4.2.3

Styrteknik: Binära tal, talsystem och koder D3:1

Tentamen PC-teknik 5 p

Data, typ, selektion, iteration

Transkript:

F6: Filhantering (kap. 8) Läsning från tangentbordet, skrivning på skärmen Binär skrivning och läsning med save och load Skrivning på och läsning från textfil med save och load Användning av filreferenser, öppna, stänga, filslut Binär skrivning och läsning med filreferens Skrivning och läsning med formatstyrning Direktfiler Läsning, skrivning, tangentbord, skärm Det finns många sätt att hämta och spara data. In från tangentbordet: med tilldelningskommando input(ledtext), input(ledtext,'s') Ut på skärmen: kommando utan ; variabelns namn skrivs också ut disp(uttryck) inget variabelnamn fprintf(formatsträng,uttryck, ) hur uttryckens värden skrivs styrs av formatkoder m.m. i formatsträngen Tabell på skärmen Skriv en tabell med rätvinkliga trianglar med heltalssidor <= 100. fprintf('\n a b c\n'); for c=1:100 c2 = c^2; for a=1:floor(sqrt(c2/2)) a2 = a^2; b = round(sqrt(c2-a2)); if a2+b^2==c2 fprintf('%5d%5d%5d\n',a,b,c); Tabell på skärmen, test Resultatet är monterat i 3 kolumner. a b c 12 35 37 3 4 5 15 36 39 6 8 10 24 32 40 5 12 13 9 40 41 9 12 15 27 36 45 8 15 17 14 48 50 12 16 20 30 40 50 7 24 25 24 45 51 15 20 25 20 48 52 10 24 26 28 45 53 20 21 29 33 44 55 18 24 30 40 42 58 16 30 34 36 48 60 21 28 35 11 60 61 16 63 65 25 60 65 33 56 65 39 52 65 32 60 68 42 56 70 48 55 73 24 70 74 21 72 75 45 60 75 30 72 78 48 64 80 18 80 82 13 84 85

36 77 85 40 75 85 51 68 85 60 63 87 39 80 89 54 72 90 35 84 91 57 76 95 65 72 97 28 96 100 60 80 100 save Ut på fil: save [variabellista] alla variabler i arbetsplatsen (eller angivna) binärt till filen matlab.mat save filnamn [variabellista] binärt till filen filnamn.mat save filnamn.suffix [variabellista] binärt till filen filnamn.suffix save -ascii [-double] [-tabs] som text till filen matlab.mat save filnamn [variabellista] -ascii [-double] [-tabs] som text till filen filnamn.mat save filnamn.suffix [variabellista] -ascii [-double] [-tabs] som text till filen filnamn.suffix med 8 siffror, -double ger 16 siffror, -tabs ger tabulatorseparerad utskrift load In från fil: load [variabellista] alla variabler (eller angivna) från matlab.mat binärt load -ascii alla data från matlab.mat som text till variabeln matlab load filnamn [variabellista] alla variabler (eller angivna) från filnamn.mat binärt load filnamn -ascii alla data från filnamn.mat som text till variabeln filnamn load filnamn.suffix [variabellista] [-ascii -mat] alla variabler (eller angivna) från filnamn.suffix värdena läses normalt binärt, med -ascii eller med suffix annat än mat läses alla data till variabeln filnamn (då används ej variabellistan) från filen som text Load forts. Med >> type in.dat 2 3 4 5 6 6 7 får man >> load in.dat??? Error using ==> load Number of columns on line 2 of ASCII file in.dat must be the same as previous lines. Om vi tar bort " 6". >> load in.dat >> in in=

2 3 4 5 6 7 Skillnaden mellan»binärt» och»text»? Både datorns minne och filer innehåller följder av bitar, grupperade som bytes. Bitmönstren kan tolkas på många sätt. Med Unix-kommandot od kan man visa en fils innehåll på valfritt sätt. t u1 betyder bytevis decimalt och c betyder som tecken. >> od -t u1 -c in.dat 0000000 50 32 51 10 52 32 53 32 2 3 \n 4 5 0000010 54 10 54 32 55 6 \n 6 7 % Test av binär lagring d_17 = 17; i2_17 = int16(17); i1_17 = int8(17); s_17 = '17'; ofr = fopen('bintest','w'); fwrite(ofr,d_17,'double'); fwrite(ofr,i2_17,'int16'); fwrite(ofr,i1_17,'int8'); fwrite(ofr,s_17,'char'); fclose(ofr); >> od -t u1 -c bintest 0000000 64 49 0 0 0 0 0 0 @ 1 \0 \0 \0 \0 \0 \0 0000010 0 17 17 49 55 \0 021 021 1 7 Byte 1 8 innehåller 17 i flyttalsformat: ( 1)^s*t*2^e. Bit 1 är s, här 0. Bit 2 12 är e+1 023, här e = 4. Bit 13 64 är taldelen 1, här t = 1+1/16. Dvs. talet är 17. Det finns detaljer som vi hoppar över. Filreferenser Användning av filreferens. Med en filreferens håller Matlab reda på filen, vad man får göra med den och var man jobbar i den. filreferens = fopen(filnamn,tillstånd) Tillstånd kan vara 'r', 'r+', 'w', 'w+', 'a', 'a+'. Om öppningen misslyckas blir filreferens 1 och ett felmeddelande lagras i variabeln msg. fclose(filreferens) Ev. utskrift avslutas. Filen stängs. Om det går bra återsänds 0 annars 1. feof(filreferens) sant om inga data återstår

Binär skrivning och läsning med filreferens Skrivning binärt med filreferens: fwrite(filreferens, uttryck, precision) där precision kan vara 'char', 'int16', 'float32' m.m. Läsning binärt med filreferens: [variabel,antal] = fread(filreferens, storlek, precision) antal är antalet lästa värden, storlek är ett tal, Inf eller [m n] och precision som ovan Fileread fileread(filnamn) ger filens innehåll som en sträng. Skrivning och läsning med formatstyrning Skrivning som text med filreferens: fprintf(filreferens,formatsträng,uttryck, ) sprintf(formatsträng, uttryck, ) returnerar en sträng Läsning från textfil: [variabel1, variabel2,,variabeln] = textread(filnamn,formatsträng,radantal) läser kolumnuppdelade data Läsning från textfil med filreferens: variabel = fscanf(filreferens,formatsträng,storlek) [variabel,antal] = fscanf(filreferens,formatsträng,storlek) texten i filen tolkas som värden enligt formatsträng [variabel,antal] = sscanf(sträng,formatsträng,storlek) läser från sträng rad = fgetl(filreferens) texten fram till radslut, om filen står vid radslut återsänds -1 rad = fgets(filreferens) texten fram till och med radslut, om filen står vid radslut återsänds -1 Med >> type in.dat 2 3 4 5 6 6 7 8 9 10 får man >> [a, b, c]=textread('in.dat'); [a';b';c'] ans = 2 4 6 8 3 5 7 9 0 6 0 10

Formatsträng Med >>type s.dat ab c def ger s = fscanf(fopen('s.dat'),'%c') s = ab c def och abs(s) ans = 97 98 32 99 10 10 100 101 102 En formatsträng består av formatkoder, specialtecken och annan text. En formatkod har formen %[ + 0][#.#]k. % och k måste sättas ut. - vänsterställ + sätt alltid ut tecken 0 fyll ut med inledande nollor #. totalt antal tecken.# antal siffror/antal decimaler c ett tecken d decimalt heltal e exponentform med e E exponentform med E f decimalbråk g kortaste av e och f G kortaste av E och f o oktalt heltal s teckensträng u decimalt heltal utan tecken x sedecimalt (basen 16) med gemena siffror X sedecimalt (basen 16) med versala siffror Specialtecken är %% (representerar ett procenttecken), \' (apostrof), '' (apostrof), \\ (inverterat snedstreck), \f (sidmatning), \r (vagnretur), \b (blanktecken), \t (tabulatortecken), \n (ny rad). Uttrycken paras ihop med formatkoderna. När formatsträngen tar slut används den från början igen. När data tar slut används formatsträngen fram till nästa formatkod eller till sitt slut. Text och specialtecken skrivs ut resp. matchas mot tecknen i filen. Läs, lagra och skriv en textfil. fr = fopen('findgear.m','r') fr = 3 t = fscanf(fr,'%c',inf); disp(t); function [m,n,finalgear] = findgear(gear,min,max)... whos t Name Size Bytes Class t 1x865 1730 char array Läs en nx3 numerisk matris från textfil. Fyll ut sista raden. type t.dat 1 2 3 4 5 6 7 8 9 10 fr = fopen('t.dat','r') fr = 3 t = fscanf(fr,'%d',inf); size(t) ans = [10 1] % Fyll sista raden

t = reshape([t; zeros(mod(-numel(t),3))],3,[])' % mod([-12-11 -10],3) är [0 1 2] t = 1 2 3 4 5 6 7 8 9 10 0 0 Med uigetfile och uisetfile kan man öppna dialogrutor för att välja in- och utfil. Man bör kontrollera om läsning och skrivning gick bra: [felmed,felnr] = ferror(filreferens); if felnr~=0 disp(felmed); Läs i boken och hjälpinformationen om filhantering. Direktfiler Programmet kan styra var i filen läsning/skrivning ska ske: frewind(filreferens) sätter aktuell position till filbörjan ftell(filreferens) ger aktuell position i byte från filbörjan fseek(filreferens,pos,origo) sätter aktuell position till pos byte efter origo, origo 1 betyder filbörjan, 0 betyder aktuell position, 1 betyder filslut Funktion som parameter (function functions) I många tillämpningar har man en metod (function method) som man ska kunna använda med många olika funktioner. 1 Funktion med bestämt namn Fil: use1.m function use1 method1; Fil: f1.m function f1(x) disp(['f1 x=' num2str(x)]); Fil: method1.m function method f1(x); >use1 f1 x=3 f1 x=6 f1 x=9 2a Uttryck som text Fil: use2a.m function use2a f = 'disp([''f2 x='' num2str(x)]);'; method2a(f); Fil: method2a.m function method2a(f) % eval(f); >use2a f2 x=3 f2 x=6 f2 x=9

2b Funktionsanrop som text Fil: use2b.m function use2b f = 'f2b'; method(f); Fil: f2b.m function f2b(x) disp(['f2b x='... num2str(x)]); Fil: method2b.m function method(f) % feval(f,x); >use2b f2b x=3 f2b x=6 f2b x=9 3a Enkel funktionsreferens (function handle) Fil: use3a.m >use3a function use3a f3a x=3 f=@f3a; f3a x=6 method3a(f); f3a x=9 Fil: f3a.m function f3a(x) disp(['f3a x=' num2str(x)];); Fil: method.m function method3a(f) % feval(f,x); 3b Funktionsreferens med parameter Fil: use3b.m >use3b; function use3b f3b x=3 y=5 for y = [5 10] f3b x=6 y=5 f = @(x)f3b(x,y); f3b x=9 y=5 method3b(f); f3b x=3 y=10 Fil: f3b.m f3b x=6 y=10 function f3b(x,y) f3b x=9 y=10 disp(['f3b x=' num2str(x) ' y=' num2str(y)]); Fil: method3b.m function method3b(f) % feval(f,x);