Læringsmål og pensum. Hva er en variabel?

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

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

Læringsmål og pensum. Oversikt

TDT4105 Informasjonsteknologi, grunnkurs (ITGK)

TDT4105 Informasjonsteknologi, grunnkurs (ITGK)

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

Tall, vektorer og matriser

ITGK - H2010, Matlab. Repetisjon

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

Kapittel 1 En oversikt over C-språket

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

Læringsmål og pensum. Designe et program

TDT4105 Informasjonsteknologi, grunnkurs. Introduksjon til programmering i Matlab

Kapittel august Institutt for geofag Universitetet i Oslo. GEO En Introduksjon til MatLab. Kapittel 2.

TDT4110 Informasjonsteknologi, grunnkurs Uke 35 Introduksjon til programmering i Python

Kort om meg. INF1000 Uke 2. Oversikt. Repetisjon - Introduksjon

INF1000 undervisningen INF 1000 høsten 2011 Uke september

INF 1000 høsten 2011 Uke september

Oversikt. INF1000 Uke 2. Repetisjon - Program. Repetisjon - Introduksjon

Del 1 En oversikt over C-programmering

TDT4105 Informasjonsteknologi grunnkurs: Uke 42 Strenger og strenghåndtering

Designe et program. TDT4110 Informasjonsteknologi grunnkurs: Kapittel 2 Python: Bruk av funksjoner, variabler og input/output. Mål.

Læringsmål og pensum. v=nkiu9yen5nc

TDT4110 Informasjonsteknologi grunnkurs: Kapittel 2 Python: Bruk av funksjoner, variabler og input/output. Professor Alf Inge Wang

Kapittel september Institutt for geofag Universitetet i Oslo. GEO En Introduksjon til MatLab. Kapittel 7.

Oversikt. INF1000 Uke 1 time 2. Repetisjon - Introduksjon. Repetisjon - Program

11. september Institutt for geofag Universitetet i Oslo. GEO En Introduksjon til MatLab. Kapittel 5 (del 2) Ada Gjermundsen

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

En innføring i MATLAB for STK1100

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

Matematikk Øvingeoppgaver i numerikk leksjon 1 Å komme i gang

TDT4110 Informasjonsteknologi grunnkurs: Kapittel 1 Introduksjon til Programmering og Python. Professor Alf Inge Wang

Læringsmål og pensum. I/O - input-setningen. I/O disp-setningen

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

Øvingsforelesning i Matlab (TDT4105)

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

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

Matematikk Øvingsoppgaver i numerikk leksjon 5 Skript

TDT4102 Prosedyreog objektorientert programmering Vår 2016

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

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.

18. (og 19.) september 2012

Øvingsforelesning 1 Python (TDT4110)

Litt om Javas håndtering av tall MAT-INF 1100 høsten 2004

Utførelse av programmer, funksjoner og synlighet av variabler (Matl.)

Python: Variable og beregninger, innlesing fra tastatur utskrift til skjerm. TDT4110 IT Grunnkurs Professor Guttorm Sindre

MATLABs brukergrensesnitt

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

Matematikk Øvingsoppgaver i numerikk leksjon 2 Løsningsforslag

Matematikk Øvingsoppgaver i numerikk leksjon 4 m-ler

Matematikk Øvingsoppgaver i numerikk leksjon 1. Løsningsforslag

Øvingsforelesning i Matlab (TDT4105)

Noen innebygde funksjoner - Vektorisering

Noen innebygde funksjoner - Vektorisering

Kapittel Oktober Institutt for geofag Universitetet i Oslo. GEO En Introduksjon til MatLab. Kapittel 14.

Oversikt. Uke 2, INF 1000, 30 aug Variable, tilordninger og uttrykk. Repetisjon: Java programmering

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

Matematikk Øvingsoppgaver i numerikk leksjon 2 Løsningsforslag

TDT4105 Informasjonsteknologi, grunnkurs

Oppsummering fra sist

Hydrostatikk/Stabilitet enkle fall

16 Programmere TI -86 F1 F2 F3 F4 F5 M1 M2 M3 M4 M5

TDT4110 Informasjonsteknologi grunnkurs: Eksempler. Mangekanter

Norsk informatikkolympiade runde

Læringsmål og pensum. Oppgave

Programmeringsspråket C

Øvingsforelesning TDT4105 Matlab

Læringsmål og pensum

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

Matematikk Øvingeoppgaver i numerikk leksjon 1 Å komme i gang

Opphavsrett: Forfatter og Stiftelsen TISIP

Øvingsforelesning i Matlab TDT4105

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

Matematikk Øvingsoppgaver i numerikk leksjon 1. Løsningsforslag

Del 4 Noen spesielle C-elementer

Oppsummering Assemblerkode Hopp Multiplikasjon Kode og data Array Oppsummering

Øvingsforelesning i Python (TDT4110)

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

Datastrukturer (kap. 8)

INF 1000 (uke 2) Variabler, tilordninger og uttrykk

TDT4110 Informasjonsteknologi grunnkurs: Tema: Funksjoner med retur og moduler Utgave 3: Kap

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

TDT4110 IT Grunnkurs Høst 2015

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

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

Øvingsforelesning i Python (TDT4110)

Programmeringsspråket C Del 2

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.

Det viktigste dataelementet som MATLAB benytter, er matriser, som også gjerne betegnes arrays.

Programmeringsspråket C Del 2

Programmeringsspråket C Del 2

Pensum Hovedtanker Selvmodifiserende Overflyt Veien videre Eksamen. Oppsummering

Forelesning Datatyper Kap 5.2 Instruksjonsformat Kap 5.3 Flyttall App B

Alternativ dag for teoriforelesning. Intro. Torsdag 12:15-14:00 R1

Shellprogrammer og -variabler

Matriser En matrise er en rektangulær oppstilling av tall og betegnes med en stor bokstav, f.eks. A, B, C,.. Eksempler:

I dag. Rep: Oppsummering - variabler. Rep: Datatyper. INF1000 (Uke 3) Mer om uttrykk, terminal I/O, forgreninger

TDT4102 Prosedyre og Objektorientert programmering Vår 2015

Transkript:

1 2 Læringsmål og pensum TDT4105 Informasjonsteknologi grunnkurs: Uke 36 Introduksjon til Matlab Arbeidsområdet, variabler, tilordning, uttrykk, tekst og koding, vektorer, matriser, skript og I/O Asbjørn Thomassen, IDI Læringsmål Bruke variabler og tilordningssetning Skjønne og bruke enkle datatyper (double, char, int etc.) Formulere lovlige uttrykk med konstanter, variabler, innebygde funksjoner, operatorer med operatorpresedens Lage og manipulere vektorer og matriser i enkle problemer Skjønne hva er en algoritme er, objektkode, intepretator, kompilator og skript Hvordan programmere og utføre enkle skript Lese inn og skrive ut data Pensum Matlab, Chapter 1 og 2.1 2.4 3 adresse 24327 24326 24325 24324 24323 24322 24321 24320 24319 24318 24317 24316 areal 12453.9 24315 Hva er en variabel? Primærlager/minne/indre lager/ram benyttes til lagring av data som brukes i et program (Matlab sesjon) består av en samling celler (ord) i primærlageret identifiseres ved et navn har en datatype som forteller hva som kan lagres i variabelen. har en verdi (innhold) Variabelens navn er areal, typen er float, verdien er 12453.9, den ligger i adresse 24316, og opptar 1 minnecelle i primærlageret (f.eks 4 byte) 4 Variabler og tilordningssetningen Variabler gis verdi gjennom tilordning Generell form på tilordning: variabelnavn = uttrykk antallkamper = 2 Variabelnavn velger vi selv, men husk navneregler for identifikatornavn! Semikolon til slutt undertrykker utskrift trykk = 8.43; Variabler legges i Matlabs workspace (arbeidsområde) til bruk senere i sesjonen 24327 24326 24325 24324 24323 24322 24321 24320 24319 24318 24317 24316 8.43 trykk 24315 2 Arbeidsområdet i primærlageret antallkamper

5 Variabler og tilordningssetningen (2) Eksempel: F = grader*9/5 + 32 Kjennetegnes ved en tilordningsoperator, =, og et variabelnavn, F, som står til venstre for operatoren Til høyre for tilordningsoperatoren finner vi et uttrykk (regneuttrykk) Likhetstegnet, =, betyr ikke likhet som matematikken, men tilordning. Tilordningssetningen er dynamisk: Først evalueres (tolkes) uttrykket på høyresiden av tilordningsoperatoren. Denne evalueringen vil resultere i en verdi. Verdien lagres i variabelen på venstre side av tilordningsoperatoren. Variabelens gamle verdi slettes når ny verdi tilordnes (overskrives). 6 Kommandoer relatert til variabler og arbeidsområdet namelengthmax - gir maks lengde på navn who - lister arbeidsområdet whos - som over men med plass clear - sletter arbeidsområdet clear variabelnavn sletter variabel fra arbeidsområdet Tolking av eksempelsetning over: En kopi av innholdet i variabel grader multipliseres med 9 og divideres med 5. Deretter legges det til 32. Resultatet tilordnes variabel F. 7 8 Uttrykk (expressions) Inneholder typisk konstanter, variable, operatorer, funksjoner og parenteser myvar = abs(x)+ 2*(3+2) antall = antall + lost Når bare et uttrykk skrives inn, uten en tilordning, bruker Matlab en default variabel ans til å lagre resultatet: 4*cos(1.3) ans = 1.0700 ny linje Uttrykk kan gå over flere linjer vha areal = 2*pi*(4.23 + myvar)... + 17 Initialiser, inkrementer og dekrementer n = 0, n = n+4, n=n-1 Operator og presedens Operatorer for numeriske uttrykk - fra høy til lav presendens: () parenteser ^ eksponent - negasjon * / \ all multiplikasjon og divisjon + - addisjon og subtraksjon Ved nøstede parenteser evalueres uttrykket fra innerste parentes først Innenfor et presedensnivå evalueres det fra venstre mot høyre ((2+(4/5))-1)

9 10 Konstanter Noen innebygde konstanter: pi 3.1416 i,j -1 e 2.7183 Hva skjer om jeg bruker noen av disse som variabelnavn? Tekst Kan være Enkeltbokstav: 'y' Tekststreng: 'tdt4105 H11' Bokstaver representeres internt som heltall gitt av ASCIItabellen (se neste foil). Konverterer fra tekst til ekvivalent tallverdi vha castingfunksjoner som double, int32 etc. tallverdi = double('d') Går fra tallverdi til tekst vha char char(66) char(66+1) char([66 67 68]) Vi ser på mer tekstbehandling senere i kapittel 7 11 Tekst (2) ASCII-tabellen (utdrag) 12 Bruk av innebygde funksjoner Funksjonen kalles ved å skrive navn etterfulgt av et sett av argumenter omsluttet av parenteser f.eks: abs(-23) funksjonsnavn argument Hva skjer om vi bruker f.eks cos som variabelnavn? La oss sjekke noen innebygde funksjoner

13 14 Bruk av innebygde funksjoner (2) sin,cos,tan trigonometriske funksjoner fix(x) undertrykk desimaler og returner Xs heltallsdel floor(x) største heltall ikke større enn X ceil(x) minste heltall ikke mindre enn X round(x) vanlig avrunding sign(x) fortegn rem(x,y) rest av divisjonen X/Y Bruk help til å sjekke : Eksempel: help fix Tilfeldige tall Bruker innebygd funksjon rand Gir et tilfeldig tall mellom 0 og 1 rand ans = 0.68959 Prøv nå et terningkast og lagr kastet i en variabel! Kan gå til et vilkårlig område [low,high] vha: round(rand*(high low)+low)) Merk: funksjonen randint finnes ikke i Octave resultatet i 15 16 Vektorer og matriser Lagrer verdisett av samme type Rekke, kolonne eller matrise 1xn rekke a matrix: nx1 1x1 nxm 5 3 7 4 kolonne skalar (en verdi) matrise 5 88 3 11 9 6 5 7 4 33 3 2 8 Lage rekkevektorer Bruk liste av tall i klammer: [ ] Skiller elementene med blank eller komma v = [1 2 3 4] Eller bruke kolon-operatoren : vec = 1:5 %ikke nødvendig med[ ] her Generell form first : step : last stopper når verdien er større enn last nvec = 1 : 3 : 9 Vektorer og skalarer er subsett av matriser Verdiene lagres i matriseelementene

17 18 Lage rekkevektorer (2) Kan bruke linspace Verdi lav ls = linspace(3, 15, 5) Verdi høy Konkatenering (sammensetning) nv = [v ls] nyvec = [ ls ls v v ls] antall Referere og modifisere elementer Enkeltelement vz(2) Subsett av vektor indeks vz(2:4) Kan også bruke vektorer som indeks (kalles indeksvektor) vz( [ 1 7 9]) indeks 1 2 3 4 5 6 7 8 9 10 1 3 5 7 9 3 6 9 12 15 vz Verdi til element 5 19 20 Utvide vektorer Gjøres ved å referere til et ikke-eksisterende element rv = [2,11,58] %lager vektor rv(4) = 101 %utvider med nytt element %4 med verdi 101 Ved gap i indeks fylles inn elementer med null: rv(7) = 33 % rv(5)og rv(6)får verdi 0 Lage kolonnevektor Bruker klammeparentes med semikolon som skilletegn c = [1;2;3;4] Kan også bruke kolonoperatoren, men ikke direkte. Må da gå via transponering: r = 1:3 c = r %lager rekkevektor %transponerer til kolonne

21 22 Lage Matriser Matriser er en generalisering av kolonne/rekkevektorer mat = [ 4 3 1; 2 5 6] Hva om rekkene har forskjellige antall verdier? Kan bruke : til å lage rekker til matriser m = [11:13; 21:23; 31:33] rand lager en randomisert matrise rand(2) %gir nxn matrise (her n=2) rand(2,3) %generer mxn matrise(her 2x3) zeros brukes tilsvarende men lager en matrise med nuller Referere til matriseelementer Angi rekke og kolonne indeks m(3,1) Subsett kan hentes ut vha kolon m(2:3,1:2) Kolon alene som indeks velger en hel rekke eller kolonne m(:,1) %gir hele første kolonne m(2:3,:) % gir hele rekke 2 og 3 23 Modifisere matriseelementer Endrer enkeltelement ved tilordning m(3,1)= 2 Hel kolonne eller kolonne endres ved kolon m(1,:)= 1:3 %endrer hele rekke 1 Utvider en matrise ved å referere til hele nye kolonner eller rekker (ikke enkeltelementer) m(:,4) = [7 8 9]' m(5,:) = 2:2:8 % her fylles nullrekker % inn tilsvarende som % ved vektorer 24 Lineær indeksering Bruker da bare en indeks på nxm matrisen for å adressere elementer Elementene i matrisen er lagret internt kolonnevis, dvs element (ii,jj) har lineær indeks: k = (jj-1)*n + ii Eksempel: I en 2x3 matrise vil element (1,3) ha lineær indeks 5 (ii=1 og jj=3) NB! Bør bruke rekke- og kolonne-indekser når en opererer på matriser!

25 26 Hente dimensjoner Henter ut størrelsen til en vektor eller matrise : length(v) returner antall elementer i en vektor v size(m) gir antall rekker og kolonner i en matrise m numel(m) returner antall elementer i en vektor/ matrise length på en matrise returnerer den største av antall kolonner eller rekker. La oss prøve litt.. end som indeks angir siste element i kolonne eller vektor m(end,1) %end må bare brukes %som indeks! Endre dimensjoner Nyttige funksjoner i tillegg til ' (transpose): reshape ny matrise lages ved å gå gjennom matrisen kolonnevis fliplr flipper matrisen fra venstre til høyre flipud flipper opp til ned rot90 roterer matrise mot klokka 90 grader repmat lager en større matrise ved å kopiere den mindre matrisen mxn ganger Merk at funksjonene ikke endrer inputmatrisen men generere en ny! Generert matrise kan tilordnes inputmatrisen om en vil m = fliplr(m) 27 28 Bruk av funksjoner på vektorer eller matriser Matrise eller vektor kan være argument til en funksjon abs(vec) sin(mat) Funksjonen utføres på alle elementene Hvordan funksjonene vi selv programmerer kan gjøre det samme, ser vi på senere Tomme vektorer og konkatenering En tom vektor har ingen verdier (lengde 0) Lager en tom vektor ved å bruke [] nyvec = [] Kan legge til nye elementer ved konkatenering (som vist tidligere) nyvec = [ vec 3 12] Kan også slette et subsett av en vektor nyvec(2:3) = []

29 30 Quiz: Hva genereres her? m = [1:4; 3 11 7 2] m(2,3) m(:,3) m(4) size(m) numel(m) reshape(m,1,numel(m)) vec = m(1,:) vec(2) = 5 vec(3) = [] vec(5) = 8 vec = [vec 11] Noen fallgruver Bruk av blanke i variabelnavn Tilordningsetning snus feil vei: expression = variabelnavn feil!! i stedet for variabelnavn = expression som er riktig! Bruke funksjonsnavn som variabelnavn og deretter prøve å bruke funksjonen Blande divisjonsoperatorene \ og / Glemme operatorpresedens Ombytte argumentrekkefølge i funksjoner Prøve å lage matriser med ulik antall elementer i rekkene Glemme parenteser rundt argumentliste til funksjoner 31 Hva er en Algortime? En algoritme er en samling programinstruksjoner som beskriver hvordan et problem skal løses. Ordet algoritme har sitt utspring i navnet til den arabiske matematiker : Muhammad ibn Musa al-khwarizmi Navnet khwarizmi presenteres som algoritmi på latinsk. 32 Typiske trinn i en algortime 1. Hent inndata Prompt dvs signal til bruker som viser at programmet venter på inndata, typisk ledetekst Default inndatautstyr typisk keyboard 2. Beregn resultat 3. Vis resultat Default utdatautstyr - skjerm Format på presentasjon areal = pi*r*r r Eksempel: Beregne areal av en sirkel. 1. Les inn radius 2. Beregn areal 3. Skriv ut arealet

33 34 Programmering og kjøring av program Når algoritmen er funnet for et problem, må den programmeres i et programmeringsspråk. Program skrevet i høynivåspråk må oversettes til maskinkode for å kunne utføres (kjøres): Kompilator : oversetter først hele programmet til en objekt-fil (.exe fil). Programmet utføres så ved å kjøre objektfilen (kan kjøres flere ganger). Intepretator: tar hver programsetning, en etter en, og konverterer setningen til maskinkode som kjøres direkte (Matlab). Det lages ingen objekt-fil. Skript (skriptfiler) Tungvint å skrive inn alle Matlab-setningene i kommandovinduet Vi kan lagre Matlab-kommandoer på fil og så kjøre alle setningen i fila på en gang Et skript er en samling Matlab instruksjoner som er lagret på en fil (kalles også program i Matlab) benevnes også som M-filer fordi filnavn slutter med.m, f.eks script23.m Utføres ved å skrive bare filnavn i kommandovinduet, f.eks script23 uten.m bak. Dette kalles å kjøre et skript Skript kalles også et hovedprogram da det kan kalle (egne) funksjoner for å løse problemet (modularisering) 35 arealtrekant1.m 36 Skript for areal av en trekant h = 20 g = 30 areal = g*h/2 Merk at når skriptet kjøres legges variablene til workspace Skal vi beregne areal en annen trekant må vi inn å redigere i skriptet for å endre verdiene på h og b (mer fleksibel og elegant løsning senere) Dokumentasjon av skript Bruk % for kommentarer Første kommentar i begynnelsen av et skript skal fortelle hva skriptet gjør Første blokk med kommentarer vises vha help men stopper på første blanke linje: %Dette gjør scriptet % og dette etc. %Men dette kommer ikke med i help (blank linje over) lykketall = 7; Bruk ellers kommentarer i koden for å forklare ting! lookfor leter etter første kommentarlinje (denne kalles H1)

37 Skript for å gå fra C til F % Konverter fra % Celsisus til Fahrenheit % Antall grader er satt fast grader = 20 F = grader*9/5 + 32 celsiusfk1.m 38 I/O - input-setningen Leser fra standard input device med ledetekst: grader = input('gi inn grader Celsius:'); Skal en lese inn mer enn en verdi, må en bruke flere separate input-setninger men kan angi vektor eller matrise [1:4;5:8] \n i tekst angir ny linje (kalles newline) Må bruke 's når en skal lese inn tekst: kar = input('tast inn bokstavkarakter:', 's'); Bare tab/blank etterfulgt av enter ignoreres og gir en tom streng '' blanke i starten av en tekst kommer med Hva skjer om en glemmer 's'? Vi prøver litt