Datorlära 1 Introduktion till datasystemet, epost konto, afs hemkonto Introduktion till datorer och datasalar Open Office Calculator Beräkningar med Open Office Calc Diagram med OO Calc Datorlära 2 Utforma en rapport med OO Writer Inkludera tabeller, diagram och formler i rapporter Importera tabeller och diagram från OOCalc till OOWriter Korsreferenser i rapporter 1 Datorlära 3 Octave Workspace ovh mijlö Skriva text på skärmen Värdesiffror Variabler och typer Strängar Makro Vektorer
Datorlära 4 Börja programmera Booleska variabler Vilkorsatser Slingor Funktioner Att läsa in en fil med mätvärden Datorövningar (dagen efter datorlära 4) Skriva en egen funktion Programmera med if-satser Läsa in en fil med mätdata Behandla en mätserie med olika operationer genom att använda vektorer Datorlära 5 Matriser Lösa ekvationsystem Matrisanpassningar Statistiska funktioner Polynomer 2
Här kommer Finn ett samband Laborationen 2 => Databehandling med Octave Datorlära 6 Rita funktioner Grafer och diagram Titlar, beskrivning Grafikfönster Stapeldiagram Här kommer Multimetern Laborationen 3 => Databehandling med Octave Datorlära 7 Arbeta med strängar Formatera inmatning och utmatning Skriva ut en fil med värden Att programmera Sammanfatting 3 Datorövningar Här erbjuds nya övningar i datasalen som berör hela datorlära delen. Övningarna tränar upp vissa delar nödvändiga för att klara inlämningsuppgifterna.
Datorlära 7 Arbeta med strängar Formatera inmatning och utmatning Skriva ut en fil med värden Att programmera Sammanfatting Idag: Kapitel 10 (Text-strängar, ) i Octave kompendiet 4 Datorlära 7 FK2002 HT2011
Arbeta med Strängar Strängar skapas med text inom citattecken, enkla eller dubbla.!>> str= en text straeng ;!!>> str= en text straeng ;! Stora och små bokstäver skiljer sig åt. Kan vara problem med svenska bokstäver. Stränger kan också ses som vektorer av tecken, tex: >> str(1)! e! >> str(4)! t! 1:10 eller m:n betecknar alla heltal mellan m och n >> str(1:7)! en text! För att få längden för en vektor eller en sträng skriven man length(str)! 5 Datorlära 7 FK2002 HT2011
Att slå ihop strängar Man kan slå ihop strängar för att bygga kortare meningar!>> huvud_str1= [ Hej paa dig ];! Eller!>> huvud_str1= [ Hej, paa dig ];! >> disp(huvud_str2);! Hej paa dig! Eller!!>> str1 = Hej ;!!>> str2 = paa dig ;!!>> huvud_str2= [str1 str2];!!>> disp(huvud_str2);! Hej paa dig! 6 Datorlära 7 FK2002 HT2011
Att slå ihop strängar Sträng och tal är två olika typer av DATA. Det finns 3.14159 ett tal, eller 3.14159 en sträng Beroende på om det är en sträng eller ett tal kan man tillämpa olika funktion. Tal: +,-,/,*.. Sträng: length, slå ihop, osv. Ett tal kan konverteras till en sträng mha fördefinierade funktionen: num2str! Till exempel, man kommer ihåg att konstanten pi är fördefinierad. >> str=[ The number pi is equal to num2str(pi)];! >> disp(str);! The number pi is equal to 3.1416! 7 Datorlära 7 FK2002 HT2011
Enkel Inmatning av Tal Funktionen input används för enkel inmatning av tal eller strängar (beroende på hur den används) Inmatning av tal: >> x = input( Ange ett tal : );! Vad händer då? Octave skriver ut i workspace: Ange ett tal : Och väntar på att man matar in ett tal och sedan slår return. Värdet man matar in lagras i variabeln x. Så att om man gör: disp(x);! Får man tillbaka talet som matades in. 8
Övning 1 Skriv ett litet program kvadrat.m som: 1. Frågar efter ett tal Ange ett tal :! 2. Räknar kvadraten 3. Skriver ut resultatet, tex 10 i kvadrat aer lika med 100! 9
Enkel Inmatning av strängar För inmatning av strängar använder man samma funktiom input, men men med en annan syntax. Inmatning av text: >> text = input( Ange en straeng :, s );! berätta för Octave att det som läses in ska tolkas som en sträng text här är nu en variabel av typ sträng, i stället för tal. Vad händer när skriver detta i workspace: Ange en straeng : Och väntar på att man matar in en text sträng och sedan slår return. Värdet man matar in lagras i variabeln text. Så att om man gör: disp(text);! Får man tillbaka talet som matades in. 10
Övning 2 Skriv ett litet program namn.m som: 1. Frågar efter ett namn Vad heter du?! 2. Bygger en ny sträng som innehåller en hälsningsfras med namnet. 3. Skriver ut resultatet, tex Hej Krille!! 11
Leta efter ett mönster i en sträng Man kan analysera strängen som matas in mha funktionen!index = findstr( moenster,str); Denna funktion returnerna en vektor här index som innehåller positionen i str för stränger mönster. Om mönstret mönster finns inte då är index en tom vektor med längd noll. (length (index)=0 )! Mönstret man söker i strängen Ett exempel: >> str=( ababcabcdadcdeabcdef );! >> index=findstr( a,str);! >> disp(index);! 1 3 6 10! >> index2=findstr( z,str);! >> disp(index2);! [](0x0)! Betyder att vektor index2 är tom, dvs har längd noll. 12
Övning 3 Bygg på det tidigare programmet namn.m (Övning 2) och 4. Sök efter bokstaven a 5. Skriv ut antalet gånger denna bokstav uppstår i namnet 6. Om bokstaven inte finns med, skriv i stället ett särskilt meddelande som säger att bokstaven a inte finns med i namnet.! 13
In/utmatning med blandning av text och tal För detta kan vi använda funktionen: sprintf! Kopierar min straeng till str : str = sprintf( min straeng );! Kopierar en blandning av strängar och tal till str: Formatet anges här str = sprintf( pi med 15 decimaler aer %.15f,pi);! Här specificeras att det handlar om ett reellt (eller flytt)tal med f och att man vill ha 10 siffror efter kommatecknet. Med %.48f får man 48 decimaler på pi (allt som finns definierad i Octave.) 14
In/utmatning med blandning av text och tal (2) Man kan också be sprintf att skriva in ett heltal med %d %4d kommer att skriva ut minst fyra tecken, om talet består av mindre än fyra tecken, då blir det ändå 4 fyra tecken. Om talet består av mer än 4 tecken, då skrivs ut hela talet. Med %4.2f kan man specificera att hela talet ska vara minst fyra tecken bred med 2 decimaler. (Komman räknas som ett tecken). Mycket användbart för att formatera tabeller. Exempel >> N=1234;! >> str=sprintf( N = %5.2f,N);! 1234.00! 15
Utmatning till en fil För att skriva till en sträng använder man För att skriva till en fil använder man sprintf! fprintf! Första steget är att öppna en fil för utmatning, dvs man ska skriva i filen: filen= fopen( mintextfil.txt, w );! w för write, dvs en fil där man skriver När man är klar med att skriva i filen så ska den stängas. fclose(filen);! Filnamnet Observera att filen är av en annan datatyp, vi har strängar, tal, matriser och filer. 16
Utmatning till en fil (2) filen= fopen( mintextfil.txt, w );! for i=1:1000!!fprint(filen, i= %2d,i);! end! fclose(filen);! Resultatet blir en ny fil som heter mintextfil.txt i samma katalog som man befinner sig, och som innehåller: filen måste även anges 17
Inmatning från en fil Öppna filen för att läsa in den: filen= fopen( mintextfil.txt, r );! for i=1:1000!!str1=fscanf(filen, %s, C );!!str2=fscanf(filen, %s, C );!!tal=fscanf(filen, %d, C );! end! fclose(filen);! Behöver även läsa in oinstressanta strängar hur ska invärdet tolkas, som en sträng med %s eller som ett heltal %d eller som flyttal %f r för read, dvs en fil som man läser 18
Övning 4 Skriv ett program som skriver sinus(θ) och cosinus(3θ) värden till en fil i justerbara steg mellan två olika vinklar. 1. Fråga efter stegstorleken i grader 2. Fråga efter startvinkeln 3. Fråga efter maxvinkeln 4. Skriv ut i filen tre kolumner med vinkeln i radianer, cos och sin för alla vinklar mellan startvinkeln och maxvinkeln. 19
Övning 5 Skriv ett program som läser in filen som skrevs ut i Övning 4 och rita punkterna med koordinater (cos(3θ), sin(θ)) Man kan även rita i 3D (cos(3θ), sin(θ), θ). 20
21 Övning 1
22 Övning 2
23 Övning 3
24 Övning 4
25 Övning 5
Några Råd för att Programmera Kommentera ordentligt mha % Använd alltid.m för Octave program och.dat eller.txt för din data, så att man vet vad det är för typ av fil. Använd tydliga namn för variabler (undvik i, j, k!) Använd clear all i början av dina program för att rensa ut från tidigare försök. Octave hittar inte mitt program: Är jag i rätt katalog? Har jag talat om för Octave om sökvägen till katalogen med mitt program (kommer ihåg setmypath.m?) Har jag använt en variabel vars namn är samma som mitt program? (Att undvika!) 26
Några Råd för att Programmera (2) När man får problem med en variabel: Är den definierad? Har en vektor några element eller är den tom? Använder jag rätt datatyp? (sträng, ett tal, en fil, en vektor, en matris) Har variabeln i funktionsargument rätt datatyp? Hjälp om hur funktioner används med help function! Parenteser () används bara för funktioner och hämta element från en vektor Hakparenteser [] används för att konstruera strängar, vektorer och matriser, INTE för funktioner, inte för att hämta element från en vektor. 27