Funktioner forts. F3: Funktioner (kap. 5) Parametrar. findgear.m forts



Relevanta dokument
Funktioner forts. F3: Funktioner (kap. 5) Parametrar. findgear.m forts

F3: Funktioner (kap. 5)

F3: Funktioner (kap. 5) Funktioner forts. Parametrar

F3: Funktioner (kap. 5)

Skapa egna funktioner

Laboration 1. I. Matlabs fönster, hjälp, variabler och enkla beräkningar. Introduktion

Föreläsning 5: Rekursion

Föreläsning 2 Styrstrukturer, program. Dagens föreläsning. Villkor

Felanmälan eller Arbetsorder

Datorövning 2 Statistik med Excel (Office 2007, svenska)

Tentamen i Programmering grundkurs och Programmering C

Tillämpad UNIX. Laborations-PM Christian von Schultz, Programpaket och processhantering

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

Tentamen TAIU07 Matematiska beräkningar med MATLAB för MI

Att koda en magnetremsa i plastkortskrivare med inbyggd magnetkodare.

Säkerhet. De onda. Vilka är farorna?

Lathund till Annonsportalen

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

Att komma igång. Vad är ett program? Kompilerande-Interpreterande Programmeringsmiljö Hello World! Att programmera och ett enkelt program

Efter att du har installerat ExyPlus Office med tillhörande kartpaket börjar du med att göra följande inställningar:

Vad är det och hur definierar vi en Biblioteksfunktioner (math) Top-down-programmering lokala globala variabler Arrays som in-parametrar

Datorövning 2 Statistik med Excel (Office 2003, engelska)

ELEV- HANDLEDNING (Ansökan via webben)

Du ska nu skapa ett litet program som skriver ut Hello World.

Programmera en NXT Robot

Enkätresultat för vårdnadshavare till elever i Centralskolan Söder 4-9 i Grästorp hösten Antal svar: 50

Lathund, procent med bråk, åk 8

Föreningen Nordens lokala hemsidor

ANVÄND NAVIGATIONEN I CAPITEX SÄLJSTÖD

Ha det kul med att förmedla och utveckla ett knepigt område!

MANUAL TILL AVTALSMALL FÖR KIST- OCH URNTRANSPORTER

Exempel att testa. Stora problem och m-filer. Grundläggande programmering 4. Informationsteknologi. Informationsteknologi.

Handledning för digitala verktyg Talsyntes och rättstavningsprogram. Vital, StavaRex och SpellRight

DOP-matematik Copyright Tord Persson. Bråktal Läs av vilka tal på tallinjen, som pilarna pekar på. Uppgift nr

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

Individuellt Mjukvaruutvecklingsprojekt

FRÅN A TILL Ö LäraMera Ab / och Allemansdata Ab / FRÅN A TILL Ö

Vad är WordPress? Medlemmar

Läroplanen i Gy Ett arbete för att öka förståelsen av det som står i läroplanen och hur det ska tolkas i klassrumsarbetet

Algebra, polynom & andragradsekvationer en pampig rubrik på ett annars relativt obetydligt dokument

Enkätresultat för elever i åk 9 i Borås Kristna Skola i Borås hösten Antal elever: 20 Antal svarande: 19 Svarsfrekvens: 95% Klasser: Klass 9

Partnerskapsförord. giftorättsgods görs till enskild egendom 1, 2. Parter 3. Partnerskapsförordets innehåll: 4

Snapphanalegen. Firekángabogena. Spelregler. (4 spelare)

Väga paket och jämföra priser

2 februari 2016 Sida 1 / 23

F2: Styrstrukturer, programmeringsteknik (kap. 3 4)

Manual för BPSD registret. Version 6 /

PROGRAMMERING A VB6 UTVECKLINGSVERKTYGET VISUAL BASIC

Administration Excelimport

Modul 6: Integraler och tillämpningar

Enkätresultat för elever i år 2 i Nösnäsgymnasiet 2 i Stenungsund våren 2014

Snabbslumpade uppgifter från flera moment.

Manual för Min sida 1/ rev

Enkätresultat för elever i år 2 i Praktiska Skövde i Praktiska Sverige AB hösten 2014

Statsbidrag för läxhjälp till huvudmän 2016

Laboration: Grunderna i MATLAB

Enkätresultat för elever i år 2 i Mega Musik gymnasium hösten Antal elever: 47 Antal svarande: 46 Svarsfrekvens: 98% Klasser: MM13

Projekt benböj på olika belastningar med olika lång vila

Lathund för pedagoger Grundskola med:

Skriva B gammalt nationellt prov

Elektronen och laddning

ATT KUNNA TILL. MA1050 Matte Grund Vuxenutbildningen Dennis Jonsson

Visma Proceedo. Beställa IT-produkter - beställare. Version 2.0 /

MULTI COMAI WEBBKALENDER

Vanliga frågor. LEGOeducation.com. Konceptet. Processen

Nyhetsbrev 1:a halvåret 2013

DATASAMORDNING NYHETERNA I CHAOS Utbildning Chaos/Handledning - Nyheterna i Chaos 3/

e-cm Elektronisk Cash Management dygnet runt, världen över.

Utbildningsplan för arrangörer

Arbeta bäst där du är Dialect Unified Mi

Repetitivt arbete ska minska

Sammanfatta era aktiviteter och effekten av dem i rutorna under punkt 1 på arbetsbladet.

Webb-bidrag. Sök bidrag på webben Gäller från

Mätningar på op-förstärkare. Del 3, växelspänningsförstärkning med balanserad ingång.

Nämnarens adventskalendern 2007

Kommunikationspolicy i korthet för Lidingö stad

Praktisk programmering

Virkade tofflor. Storlek & By: Pratamedrut. pratamedrut.se/blog/virkade tofflor 1

Det andra alternativet är att ladda upp filer genom att klicka på plustecknet nere till vänster. Man klickar sig in på den mapp som man vill att

Betsa och klarlacka trä

Från labben: if, for och while. Från labben: if, for och while. Från labben: if, for och while. Från labben: if, for och while

Programexempel: tärningsspel

Laganmälan & Laghantering

Bruksanvisning UCR-100

Anva ndarhja lp IMYR -Myndighetsrapportering

Datorövning 2 Diskret fördelning och betingning

Volymer av n dimensionella klot

Arbetsbeskrivning, att förbereda för studenternas registrering kommande termin. 1. Studenter antagna på fristående kurs 2

Säkerhetskopiering och återställning Användarhandbok

Snabbhjälp till. Kristian. elevdata.se

Visma Proceedo. Att attestera - Manual. Version 1.4. Version 1.4 /

NATIONELLT KURSPROV I MATEMATIK KURS B HÖSTEN Tidsbunden del

Instruktioner för beställning och kontoadministration för abonnenter av inlästa läromedel

Antagna av Kommunstyrelsen Kvalitetsgarantier Detta kan du som brukare förvänta dig av Hemtjänsten i Eksjö kommun

Gissa det hemliga talet

TIMREDOVISNINGSSYSTEM

Timeline dropbox för lärare och elever

Från labben: if, for och while. Från labben: if, for och while. Från labben: if, for och while. Från labben: if, for och while

Variabler och konstanter

Handbok Ämnesprov 2016 Lärarinmatning I Dexter Åk 3. Uppdaterad: /HL Version: IST AB

Transkript:

F3: Funktioner (kap. 5) Funktionsfil, funktionsanrop in- och utparametrar, anropsin- och anropsutparametrar lokala, globala och persistenta variabler lokala funktioner return variabelt antal parameterar, skönsvärde slumptal avlusning, felsökning (debugging), programprofil Funktioner forts. En funktion är en följd kommandon i en m-fil som inleds med ett funktionshuvud: function [utparameter1, ] = funktionsnamn(inparameter1, ) eller function funktionsnamn(inparameter1, ) Direkt efter funktionshuvudet skriver man dokumentationskommentarer enligt reglerna för lookfor och help. Därefter står kommandon som utförs när funktionen anropas. Funktionen anropas med: funktionsnamn(anropsinparameter1, ) eller [anropsutparameter1, ] = funktionsnamn(anropsinparameter1, ) När kommandona i funktionen har utförts till slut fortsätter exekveringen efter anropet. En funktion bör lagras i en fil med namnet funktionsnamn.m. Parametrar Parametrarna och övriga variabler i en funktion är lokala dvs. har inget med variabler med samma namn i kommandofönstret eller andra kommandoeller funktionsfiler att göra. Undantag gäller globala och persistenta variabler. Funktioner kan skrivas så att de, olika gånger, kan anropas med olika antal in- och utparametrar. En m-fil kan innehålla mer än en funktion. Funktionerna efter den första kallas lokala funktioner och de kan anropas bara i samma m-fil. Vi gör om kommandofilen för kuggväxel till en funktion: function [m n finalgear] = findgear(gear,min,max) % Hittar det kugghjulspar som bäst approximerar en given utväxling. % [m n finalgear] = findgear(gear,min,max) % hittar den bästa approximationen m/n till % gear för m och n mellan min och max för % positiva min, max och gear. findgear.m forts if gear>0 & max>0 & min>0 bestdiff = realmax; for m = min:max nprel = floor(m/gear); for n = nprel:nprel+1 if n<min n=min; ; if n>max n=max; ; diff = abs(m/n-gear); if diff<bestdiff bestdiff = diff; bestm = m; bestn = n; % if % for n % for m m = bestm; n = bestn; finalgear = m/n; else error('felaktiga indata.');

Kuggväxel forts. Testkörning ger: findgear(3.14159,5,50) ans = 22 [m n g] = findgear(3.14159,5,50) findgear(3.14159,5,-50) Felaktiga indata. Parametrar forts. Anropsinparametrarna är uttryck. Vid anropet kopieras uttryckens värde till motsvarande inparameter. När funktionen har exekverat färdigt kopieras utparametrarna till motsvarande anropsutparametrar. Anropsutparametrarna får vara färre än utparametrarna. Funktionen har exekverat färdigt när sista kommandot eller sista kommandot före nästa funktion har utförts eller när kommandot return utförts. Vi ändrar funktionen så att skönsvärdena för max och min är 100 resp. 5. För sådant använder man funktionerna nargin, nargout, nargcheck, error, warning och inputname. function [m n finalgear] = findgear(gear,min,max) % Hittar det kugghjulspar som bäst approximerar en given utväxling. % [m n finalgear] = findgear(gear,min,max) % hittar den bästa approximationen m/n till % gear för m och n mellan min och max för % positiva min, max och gear. Skönsvärde för max % och min är 100 resp. 5. msg = nargchk(1,3,nargin); error(msg); if nargin<3 max = 100; if nargin<2 min = 5;... Kuggväxel forts. Testkörning ger: [m n g] = findgear(pi,25) m = 88 n = 28 [m n g] = findgear(3.14159) [m n g] = findgear Not enough input arguments. [m n g] = findgear(17,10,50,50) Too many input arguments.

Man kan på liknande sätt göra funktionen beroe av antalet anropsutparametrar. m = findgear(3.14159) [m n] = findgear(3.14159) Global variabel Programmera en räknare som kan stegas (med count) och avläsas (med getcount). Själva räknaren måste nås av båda funktionerna. Vanliga variabler i funktioner är ju lokala. Vi gör en variabel, COUNTER, global. Man brukar skriva globala variabler med versaler. I filen count.m: function count % Stegar räknaren COUNTER global COUNTER if isempty(counter) COUNTER = 0; COUNTER = COUNTER+1; I filen getcout.m: function c = getcount % Avläser räknaren COUNTER global COUNTER c = COUNTER; Global variabel forts. Testkörning: getcount ans = [] count; count; getcount ans = 2 COUNTER??? Undefined function or variable 'COUNTER' En variabel som ska sparas mellan anrop men bara behöver nås i en funktion kan istället göras persistent. Slumpvandring Programmera Brownsk rörelse/slumpvandring med lika sannolikhet för alla riktningar, förflyttning sträckan 1 per steg och start i origo. Låt filen brown.m innehålla: function pos = brown(steps,runs) % Simulerar Brownsk rörelse/slumpvandring. % pos = brown(steps) ritar en vandring med steps % steg. % pos = brown(steps,runs) ritar slutpunkterna av % runs stycken vandringar med vardera steps steg.

msg = nargchk(1,2,nargin); error(msg); if nargin==1 pos = b(steps,1); else pos = []; for run = 1:runs pos = [pos b(steps,0)]; plot(pos(1,:),pos(2,:),'ko'); pos = pos(:,); Som lokal funktion i samma funktionsfil: function pos = b(steps,show) % Simulerar en slumpvandring % och plottar den om show är sant. pos = [0;0]; x = pos; for i = 1:steps a = rand*2*pi; pos = x(:,)+[cos(a);sin(a)]; x = [x pos]; if show plot(x(1,:),x(2,:),'k-'); Testkör: brown(100); ger följande diagram: och brown(100,1000); ger:

Området med slutpunkter efter n steg har praktiskt taget radien n. Kommandofiler kan inte innehålla lokala funktioner. Utöver lokala funktioner kan man ha»privata» funktioner. Funktionen rand ger ett värde som är större än eller lika med 0 och! mindre än 1. Avlusning, felsökning, debugging När programmet inte ger önskat resultat: Läs koden. Om ett fel hittas, rätta det och testa igen, annars lägg in spårutskrifter för att se i vilken ordning kommandona utförs och vissa variablers mellanresultat (ta bort ;, lägg in disp eller keyboard). I redigeringsfönstret finns möjligheter att sätta stoppunkter och stega. Det finns ett särskilt fönster för att skapa profil för ett program, dvs. för att samla in och visa uppgifter om hur många gånger programmets olika delar har exekveras och om hur lång exekveringstid som går åt för respektive del. Kommandot tic startar tidtagning och toc avläser och returnerar tid sedan senaste tic. Effektivitet Med kommandot pcode sparas p-koden som en fil med tillägget.p. Det finns hjälpmedel för att kombinera Matlab med andra språk såsom C, Fortran, Java och Ada.