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

Like dokumenter
Utførelse av programmer, metoder og synlighet av variabler i JSP

INF109 - Uke 1b

Matematikk Øvingsoppgaver i numerikk leksjon 5 Skript

I denne oppgaven blir du introdusert for programmeringsspråket JavaScript. Du skal gjøre den klassiske oppgaven Hei verden, med en katt.

<?php. count tar en array som argument, og returnerer et tall som uttrykker antallet innførsler i arrayen.

TDT4105 Informasjonsteknologi, grunnkurs (ITGK)

Husk at du skal ha to vinduer åpne. Det ene er 'Python Shell' og det andre er for å skrive kode i.

Matematikk Øvingsoppgaver i numerikk leksjon 3. Løsningsforslag

Spøkelsesjakten. Introduksjon

Shellscripting I. Innhold

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

Tre måter å lese fra terminal. Java 4. Eksempel. Formatert utskrift til skjerm

LITT OM OPPLEGGET. INF1000 EKSTRATILBUD Stoff fra uke September 2012 Siri Moe Jensen EKSEMPLER

Dagens tema: 12 gode råd for en kompilatorskriver. Sjekking av navn. Lagring av navn. Hvordan finne et navn?

Øvingsforelesning TDT4105

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

Oblig 4 (av 4) INF1000, høsten 2012 Værdata, leveres innen 9. nov. kl

TDT4110 Informasjonsteknologi, grunnkurs Uke 35 Introduksjon til programmering i Python

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

Hvor gammel er du? Hvor gammel er du? Del 1: Skrive ut til skjerm. Gjøre selv. Skrevet av: Sindre O. Rasmussen, Kodeklubben Trondheim

Oppgave 1 Hva tror du følgende program skriver ut til terminalen? Diskuter med gruppen.

Læringsmål og pensum. v=nkiu9yen5nc

Enarmet banditt Nybegynner Scratch Lærerveiledning

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

INF1000 Metoder. Marit Nybakken 16. februar 2004

TDT4105 Informasjonsteknologi, grunnkurs (ITGK)

Skilpaddefraktaler Erfaren Python PDF

Soloball. Steg 1: En roterende katt. Sjekkliste. Test prosjektet. Introduksjon. Vi begynner med å se på hvordan vi kan få kattefiguren til å rotere.

HØGSKOLEN I SØR-TRØNDELAG

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

Straffespark Introduksjon Scratch Lærerveiledning

TDT4102 Prosedyre og Objektorientert programmering Vår 2014

Brukermanual for kommuneansvarlig og testleder

EKSAMEN. Les gjennom alle oppgavene før du begynner. Husk at det ikke er gitt at oppgavene står sortert etter økende vanskelighetsgrad.

Skilpadder hele veien ned

Kapittel 1 En oversikt over C-språket

Gangemesteren Nybegynner Scratch PDF

[Kurssidene] [ ABI - fagsider bibin ] Michael Preminger (michaelp@hio.no) 07/ Vi holder orden på verdier med hjelp av variabler

ITGK - H2010, Matlab. Repetisjon

Kapittel og 5. september Institutt for geofag Universitetet i Oslo. GEO En Introduksjon til MatLab. Kapittel 4.

: subs x = 2, f n x end do

Den krever at vi henter ned Maples plottekommandoer fra arkivet. Det gjør vi ved kommandoen

Redd verden. Steg 1: Legg til Ronny og søppelet. Sjekkliste. Introduksjon

Repetisjon Novice Videregående Python PDF

Fra datax til Visma eaccounting

Asteroids. Oversikt over prosjektet. Steg 1: Enda et flyvende romskip. Plan. Sjekkliste. Introduksjon

Introduksjon til beslutningsstrukturer

Oppgaver uke 1: Løsningsforslag

Guide for tilkobling til HIKT s Citrix løsning

I denne oppgaven blir du introdusert for programmeringsspråket JavaScript. Du skal gjøre den klassiske oppgaven Hei verden, med en katt.

INF oktober Dagens tema: Uavgjørbarhet. Neste uke: NP-kompletthet

Kom i gang med Stata for Windows på UiO - hurtigstart for begynnere

Del 1 En oversikt over C-programmering

TOD063 Datastrukturer og algoritmer

Bygg et Hus. Steg 1: Prøv selv først. Sjekkliste. Introduksjon. Prøv selv

TDT4102 Prosedyreog objektorientert programmering Vår 2016

Kanter, kanter, mange mangekanter

I denne oppgaven blir du introdusert for programmeringsspråket JavaScript. Du skal gjøre den klassiske oppgaven Hei verden, med en katt.

Eksamensoppgaver 2014

BOKMÅL Side 1 av 5. KONTERINGSEKSAMEN I FAG TDT4102 Prosedyre og objektorientert programmering. Onsdag 6. august 2008 Kl

Matematikk Øvingsoppgaver i numerikk leksjon 4 m-ler

Diverse eksamensgaver

Bruk av oppgaver og grupper i

Kapittel 1. Datamaskiner og programmeringsspråk. 1.1 Programmering

På tide med et nytt spill! I dag skal vi lage tre på rad, hvor spillerne etter tur merker ruter med X eller O inntil en av spillerne får tre på rad.

TDT4102 Prosedyreog objektorientert programmering Vår 2016

if-tester Funksjoner, løkker og iftester Løkker og Informasjonsteknologi 2 Læreplansmål Gløer Olav Langslet Sandvika VGS

Prosjektoppgave, FYS-MEK1110 V06 ROBERT JACOBSEN

Finne ut om en løsning er helt riktig og korrigere ved behov

TDT4105 Informasjonsteknologi, grunnkurs. Introduksjon til programmering i Matlab

Lynkurs i shellprogrammering under Linux

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

Tre på rad mot datamaskinen. Steg 1: Vi fortsetter fra forrige gang. Sjekkliste. Introduksjon

Løse reelle problemer

Øvingsforelesning i Python (TDT4110)

Visuell Programmering: Kom i gang med Processing

2 Grafisk grensesnitt 1

Legg merke til at summen av sannsynlighetene for den gunstige hendelsen og sannsynligheten for en ikke gunstig hendelse, er lik 1.

Elektronisk utlånskontroll

Brukerhåndbok Nett-TV-meter

INF1010 Arv. Marit Nybakken 2. februar 2004

INF1000 Eksamen 2014 (modifisert)

Kan micro:biten vår brukes som en terning? Ja, det er faktisk ganske enkelt!

3. Introduksjon til prosjektet Hringr. Scratch fra scratch Enkel programmering for nybegynnere

Veiledning for innlevering av Årsrapport

Innkjøpsbudsjett (BA10)

Obligatorisk oppgave nr. 3 (av 4) i INF1000, våren 2006

Oblig4 - obligatorisk oppgave nr. 4 (av 4) i INF1000

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

Hvordan du kommer i gang med LOGO.

Hangman. Level. Introduksjon

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

Hemmelige koder. Kodeklubb-koden. Steg 1: Alfabetet. Sjekkliste. Introduksjon

Noen innebygde funksjoner - Vektorisering

Manusnett - brukerveiledning for forfatter

JS: Grunnleggende JavaScript Nybegynner

MAT1030 Diskret matematikk

Kontinuasjonseksamen

Noen innebygde funksjoner - Vektorisering

TDT4102 Prosedyre og Objektorientert programmering Vår 2014

Transkript:

Utførelse av programmer, funksjoner og synlighet av variabler (Matl.) Av Jo Skjermo (basert på Alf Inge Wang sin versjon om JSP). 1. Utførelse av kode i kommando/kalkulatormodus Et dataprogram består oftest av en rekke programlinjer som gir instruksjoner til datamaskinen om hva som skal utføres. Slike instruksjoner brukes typisk til å: Opprette variabler Gi verdier til variabler Teste på verdi av variabler Utføre ulike beregninger Behandle ulike typer data Presentere data for bruker (lyd og bilde) Registrere og håndtere input fra bruker (mus, tastatur, joystick). Når en datamaskin skal tolke et program er den normale framgangsmåten å begynne med første linje i programmet og gå igjennom programmet linje for linje. For små programmer kan hele programmet være samlet i en fil eller skrives direkte i kommandomodus. For større programmer, fordeles programkoden i flere filer (logisk fordeling av kode i flere filer kan dere lære mer om i andre programmeringsfag). Program 1 under viser et enkelt matlab-program skrevet i kommandomodus som skriver ut det største tallet av to tall. Program 1: skriver ut det største av to tall >>; >>svar=0; >>if(x>y); > svar=x; > else > svar=y; > >>disp(['stoerste tall: ', num2str(svar)]); Stoerste tall: 5 >>x=7; >>y=3; >>if(x>y) > svar=x; > else > svar=y; > >>disp(['stoerste tall: ',num2str(svar)]); Stoerste tall: 7 Koden vil bli utført etter hvert som man skriver den inn, linje for linje. If-else- blokkene vil bli utført først når man trykker linjeskift etter >>, og om svar=x; eller svar=y; vil bli utført er avhengig om x>y eller ikke. Legg merke til at variablene x og y kan få nye verdier.

2. Utførelse av kode med skript I program 2 under gjør man akkurat det samme som i program 1, men her bruker vi ett skript (stoerst.m) til å utføre testen av hvem av variablene som er størst. Program 2: skript (stoerst.m) som skriver ut det største av to tall s1 s2 s3 s4 s5 s6 s7 s8 s9 Skriptet %filen stoerst.m %skript som finner den største av variablene x og y (sett før du kaller scriptet) svar=0; if(x>y) svar=x; else svar=y; disp(['stoerste tall: ',num2str(svar)]); Program 2: bruk av skriptet fra kommandomodus k8 0 kommandomodus >>; >>stoerst stoerste tall: 5 >>x=7; >>y=3; >>stoerst stoerste tall: 7 >>svar svar = 7 Ved blir skriptet kjørt og linje s1-s9 blir utført, utskrift fra s9 kommer på linje Ved blir skriptet kjørt og linje s1-s9 blir utført, utskrift fra s9 kommer på linje k8 0 utskrift av Her ser man at man igjen utfører koden man skriver inn i kommandomodus linje for linje. Når man kommer til link vil skriptet bli kjørt. s1 til s9 i skriptet vil da bli utført. Legg merke til at man har full tilgang til variablene x og y i skriptet, selv om disse ble opprettet i kommandomodus. Legg videre merke til (i linje -0) at man også har tilgang til variabelen svar i kommandomodus, selv om denne ble opprettet inne i skriptet. Slik sett er det ingen forskjell på hvilke variabler man har tilgang til i kommandomodus og i skript. Som vi ser av eksempelet i program 2, så vil ikke datamaskinen gå igjennom koden i skriptfilen før man kaller skriptet i kommandomodus. Vi ser også fra dette eksempelet at ett skript kan kalles flere ganger, som fører til at de samme programlinjene blir utført flere ganger. NB! Dersom man oppretter en variabel i kommandomodus med samme navn som et skript, vil man om man forsøker å kjøre skriptet kun få skrevet ut verdien i variabelen i stedet for at skriptet blir utført. Bruke kommandoen clear for å fjerne variabelen før du prøver å utføre skriptet.

3. Synlighet av variabler ved bruk av funksjoner I enkle matlab-skript uten egefinerte funksjoner kan du ikke definere flere variabler som har samme variabelnavn. Hvis vi ser på koden i Program 1, så opprettes variablene x,y og svar. Det er da ikke mulig å opprette nye variabler med navnene x, y eller svar da disse allerede eksisterer. Men, man kan opprette variabler med samme navn i en funksjon. I program 3 (se under), viser vi en egefinert funksjon som bruker samme navn på variablene som variabler brukt i kommandomodus. Program 3: egefinert funksjon som returnerer de største tallet av input x og y f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 Funksjonen %filen stoerst.m %funksjon som finner den største av input variablene (kalt x og y ) function stoersttall=stoerst(x,y) stoersttall=0; if(x>y) stoersttall=x; else stoersttall=y; disp(['stoerste tall: ', num2str(stoersttall)]); Program 3: eksempel på bruk av egefinert funksjon i kommandomodus. k8 0 1 2 3 kommandomodus >>; >>a=7; >>svar=0; >>svar=stoerst(x,y); stoerst tall: 5 >>x=9; >>svar=stoerst(y,a) stoerst tall: 7 >>x 9 >>svar 7 Ved blir funksjonen kjørt og linje f1-f11 blir utført, utskrift fra f10 kommer på linje Ved k8 blir funksjonen kjørt og linje f1-f11 blir utført, utskrift fra f10 kommer på linje. Legg merke til at funksjonen nå mottar verdiene fra y og a, og verdien i variabelen x i kommandomodus ikke blir brukt (0-1) 2-3 viser at variabelen svar har mottatt ny verdi fra funksjonen. I program 3 brukes x og y både i funksjonen stoerst og i kommandomodus. Selv om variablene x og y har samme navn på begge plasser er de totalt uavhengige. For å forklare bruk av variabler på en enkel måte kan vi benytte metaforen huskelapp. En datamaskin trenger en huskelapp for å

utføre sine programmer. På denne huskelappen noteres alt som trengs å holde orden på for å kunne kjøre programmet. En slik huskelapp vil inneholde alle variablene som blir brukt i et program. Hvis vi tar for oss koden i kommandomodus i program 3, så vil denne huskelappen inneholde fire variabler: x,y,a, og svar. Etter at programlinjene - har kjørt vil denne huskelappen se ut som vist til høyre. a=7 svar=0 I programlinje kalles den egefinerte funksjonen stoerst med parametrene x og y. Når en funksjon blir kalt i matlab vil ikke variablene bli overført direkte, men det er verdien eller innholdet til variablene som blir overført til funksjonen. I vårt tilfelle vil kallet av funksjonen tilsvare: storst(1,5). Hva skjer med programmets huskelapp med alle variablene når vi kaller en funksjon? Saken er at funksjonen bruker sine egne post-it-lapper for å huske sine variabler. For program 3, vil denne post-itlappen inneholde variablene x,y og storsttall. stoersttall=5 Selv om variablene x og y i funksjonen stoerst har samme navn som de variablene som finnes i kommandomodus har de ingen ting med hverandre å gjøre. I dette programmet vil a=7 også x og y få samme verdi etter som verdien av x og y i hovedprogrammet overføres til de nye variablene x og y i funksjonen stoerst. En måte å visualisere hva som skjer med variabler når svar=0 stoersttall=5 man kaller en funksjon er å se for oss at post-it-lappen som funksjonen bruker for å huske sine variabler blir klistret over huskelappen for hovedprogrammet som illustrert til her. Bruken av post-it-lappen illustrerer at datamaskinen nå ikke kan se variablene i kommandomodus etter som den nå bruker en ny klistrelapp. Dette betyr at under kjøring av funksjonen stoerst vil datamaskinen ikke kunne bruke variablene a og svar som er definert i kommandomodus. Når datamaskinen er ferdig med å utføre funksjonen stoerst og returnerer det største tallet som er lagret i variabelen storsttall, vil post-it-lappen datamaskinen brukte for å huske variabler i funksjonen kastes! Dette betyr at hvis man kaller samme funksjon på nytt, vil datamaskinen ikke bruke den samme post-it-lappen på nytt og vil ikke huske verdiene av variablene (f.eks. at storsttall hadde verdien 5 sist gang). Ved et nytt funksjonskall, vil man bruke en ny post-it-lapp og alle variablene blir deklarert og gitt verdier helt på nytt. Når en datamaskin er ferdig med å utføre et funksjonskall og returnerer, vil den bruke huskelappen som ligger under post-it-lappen som ble fjernet.

Hvis man kaller en funksjon inne i en annen funksjon vil man få flere post-it-lapper oppå hverandre. Dette vil fungere akkurat på samme måte som illustrert ovenfor. Når man er ferdig med å utføre en funksjon, kaster man post-it-lappen og bruker lappen som ligger under. På denne måten kan man ha mange nivåer av funksjonskall som bruker egne post-it-lapper for å ta vare på funksjonens variabler. Man kan bruke funksjonen med lapper og post-it-lapper når man vil gå igjennom et program for å sjekke om programmet gjør oppgaven sin riktig. På samme måte som man overfører parametere til en funksjon, kan man også returnere parametere. Når funksjonen er ferdig utført, vil kun verdien i storsttall bli overført tilbake til variabelen svar i kommandomodus. Vi har sett i dette eksempelet, at funksjoner har sine egne huskelapper som kastes etter bruk og at den eneste måten å få overført noe mellom et kall av en funksjon, og selve funksjonen, er igjennom parametere.