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

Relevanta dokument
Funktioner och programstruktur. Föreläsning 5

Funk%oner. Vad är det och hur definierar vi en Top- down- programmering lokala globala variabler void och flera inparametrar

Funktioner och programstruktur. Föreläsning 5

Föreläsning 5: Rekursion

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

Kampanj kommer från det franska ordet campagne och innebär att man under en tidsbegränsad period bedriver en viss verksamhet.

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

Individuellt Mjukvaruutvecklingsprojekt

( ostream ) << ( annan datatyp ) : ostream

SF1620 Matematik och modeller

Volymer av n dimensionella klot

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

Vi skall skriva uppsats

Planering Programmering grundkurs HI1024 HT 2014

729G04 - Hemuppgift, Diskret matematik

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

Modul 6: Integraler och tillämpningar

Gemensam problemlösning. Per Berggren och Maria Lindroth

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

Tentamen i Programmering grundkurs och Programmering C

Syftet med en personlig handlingsplan

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

Programexempel: tärningsspel

4-6 Trianglar Namn:..

Programmeringsteknik med C och Matlab

För dig som är valutaväxlare. Så här följer du reglerna om penningtvätt i din dagliga verksamhet INFORMATION FRÅN FINANSINSPEKTIONEN

Programmera en NXT Robot

Praktisk programmering

ELEV- HANDLEDNING (Ansökan via webben)

Föreläsning 10. Pekare (Pointers)

Lathund, procent med bråk, åk 8

Tränarguide del 1. Mattelek.

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

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

Boken om Teknik. Boken om Teknik är en grundbok i Teknik för åk 4 6.

konstanterna a och b så att ekvationssystemet x 2y = 1 2x + ay = b 2 a b

Svenska Du kan med flyt läsa texter som handlar om saker du känner till. Du använder metoder som fungerar. Du kan förstå vad du läser.

Mål Blå kurs Röd kurs

Finns det någon som kan förklara varför man inte kan använda formeln P=U I rotenur3 cosfi på en pump som sitter i en borrad brunn?

SF1625 Envariabelanalys

Avsikt På ett lekfullt sätt färdighetsträna, utveckla elevers känsla för hur vårt talsystem är uppbyggt samt hitta mönster som uppkommer.

Utveckla arbetsmiljö och verksamhet genom samverkan

Skriva B gammalt nationellt prov

Facit åk 6 Prima Formula

Denna talesmannapolicy gäller tillsammans med AcadeMedias kommunikationspolicy. I kommuniaktionspolicyn finns följande formulering:

Hej! Mitt namn är Agota, och jag ringer från Smittskyddsinstitutet angående en telefonintervju om ditt deltagande i Sjukrapport. Pratar jag med XX?

DEN LILLA RÖDA HÖNAN

UPPGIFT: SKRIV EN DEBATTARTIKEL

Pesach Laksman är lärarutbildare i matematik och matematikdidaktik vid Malmö högskola.

Kriterium Kvalitet 1 Kvalitet 2 Kvalitet 3 Kvalitet 4 Använda, Utveckla och uttrycka

TENTAMEN: Design och konstruktion av grafiska gränssnitt DAT215

PROGRAMMERING A VB6 UTVECKLINGSVERKTYGET VISUAL BASIC

Q1 Hur många undervisningstillfällen har du haft under september månad?

Gruppenkät. Lycka till! Kommun: Stadsdel: (Gäller endast Göteborg)

VÄRDERINGSÖVNINGAR. Vad är Svenskt?

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

Tentamen i matematisk statistik (9MA241/9MA341/LIMAB6, STN2) kl 08-13

Ekvationssystem, Matriser och Eliminationsmetoden

Dina tänder är viktiga. Du behöver dem varje dag.

Systematiskt kvalitetsarbete

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

a n = A2 n + B4 n. { 2 = A + B 6 = 2A + 4B, S(5, 2) = S(4, 1) + 2S(4, 2) = 1 + 2(S(3, 1) + 2S(3, 2)) = 3 + 4(S(2, 1) + 2S(2, 2)) = = 15.

Snabbslumpade uppgifter från flera moment.

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

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

4-3 Vinklar Namn: Inledning. Vad är en vinkel?

Administration Excelimport

Kapitel 6. f(x) = sin x. Figur 6.1: Funktionen sin x. 1 Oinas-Kukkonen m.fl. Kurs 6 kapitel 1

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

Invisible Friend Senast uppdaterad

Erfarenheter från ett pilotprojekt med barn i åldrarna 1 5 år och deras lärare

Din första arbetsdag

Idag. Hur vet vi att vår databas är tillräckligt bra?

Tankar om elevtankar. HÖJMA-projektet

Klasser och objekt i C#

Institutionen för matematik Envariabelanalys 1. Jan Gelfgren Datum: Fredag 9/12, 2011 Tid: 9-15 Hjälpmedel: Inga (ej miniräknare)

Fakta om Malala Yousafzai

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

Sammanfattning av kursdag 2, i Stra ngna s och Eskilstuna

Laborativ matematik som bedömningsform. Per Berggren och Maria Lindroth

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

Kryssproblem (redovisningsuppgifter).

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

Lathund till Annonsportalen

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

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

Statistik 1 för biologer, logopeder och psykologer

Har vi lösningen för en bättre hemtjänst? Självklart.

Matematik - Åk 8 Geometri

Systematiskt kvalitetsarbete

Introduktion. Den objektorienterade modellen Grundläggande begrepp Klass Klassen som abstraktion

Predikan Lyssna! 1 maj 2016

Planering Programmering grundkurs HI1024 HT TIDAA

Texturbild. Lagerpaletten du kommer arbeta med ser du till höger. 1. Kopiera bakgrunden till ett nytt lager och gör den svartvit.

OM KOMPLEXA TAL. 1 Om a är ett positivt reellt tal så betecknar a det positiva reella tal vars kvadrat är a men det är

Två konstiga klockor

Nämnarens adventskalendern 2007

Manual för BPSD registret. Version 6 /

Det är bra om även distriktsstyrelsen gör en presentation av sig själva på samma sätt som de andra.

Rapport uppdrag. Advisory board

Transkript:

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

När man skall lösa ett komplicerat problem gör man det lättast genom att dela upp problemet i mindre delar. Det gäller för programmering, matematik och faktiskt all problemlösning. I programmering använder vi för detta funktioner.

En funktion är en liten programsnutt som utför en speciell uppgift. Ofta kan uppgiften bestå i att den får något värde och spottar ut ett annat värde. I sådana fall påminner den mycket om en matematisk funktion: 3 (dubblar talet) 6

En funktion räknar ut arean av en cirkel Den behöver veta radien. Radien kallas för en in-parameter, argument, input, eller bara parameter. Med hjälp av radien räknar den ut arean. Arean kallas för returvärde eller output. 2.00 (arean beräknas) 12.57

float cirkelarea(float radie) float area; area = radie*radie*m_pi; return area;

#include <stdio.h> #include <math.h> float cirkelarea(float radie) float area; area = radie*radie*m_pi; return area; int main(void) main- är en funktion, programmets huvudfunktion printf("en cirkel med radien 2 har arean: %.2f\n",cirkelarea(2)); float r=4; printf("en cirkel med radien %.2f har arean: %.2f",r,cirkelarea(r)); return 0; Resultat: En cirkel med radien 2 har arean: 12.57 En cirkel med radien 4.00 har arean: 50.27

#include <stdio.h> #include <math.h> float cirkelarea(float radie); int main(void) printf("en cirkel med radien 2 har arean: %.2f\n",cirkelarea(2)); float r=4; printf("en cirkel med radien %.2f har arean: %.2f",r,cirkelarea(r)); return 0; float cirkelarea(float radie) float area; area = radie*radie*m_pi; return area; Funktionsdeklaration!

Enklare att dela upp problem i delar Tydligare kod som är lättare att läsa och lättare att felsöka Vi kan använda samma kod flera gånger Vi kan använda samma kod i olika program (bl.a. via bibliotek) Vi kan använda kod utan att förstå hur den gör. Vi behöver bara förstå hur man använder metoden, dvs vad stoppar vi in, vad får vi ut. Exempel: Beräkningarna görs i en funktion och hur man gör behöver vi inte fundera på när vi löser det övergripande problemet: Top-down-programmering Fråga efter radie Beräkna area Presentera resultat

Att funktioner gör det lätt att använda kod man inte själv skrivit har vi redan använt vid ett flertal tillfällen. Vi har anropat funktioner såsom printf, scanf, rand, time. Ett mycket användbart bibliotek heter math.h. Där finns Trigonometri: cos, sin, tan, acos, asin, atan e och naturliga logaritmen: exp, log Upphöjt i och roten ur: pow,sqrt Kolla gärna upp math.h och andra C-bibliotek!

#include <stdio.h> #include <math.h> float cirkelarea(float radie); int main(void) float area,radie; Fråga efter radie Beräkna area Presentera resultat printf("ange radien:"); scanf("%f",&radie); area=cirkelarea(radie); printf("en cirkel med radien %.3f har arean: %.3f",radie,area); float cirkelarea(float radie) float area; area = radie*radie*m_pi; return area; Detaljerna kan man vänta med. Framförallt kan man tänka på funktionen som en svart låda när man skriver huvudprogrammet.

#include <stdio.h> #include <math.h> float cirkelarea(float radie); int main(void) float area,radie; int fortsatt = 1; while(fortsatt==1) printf("ange radien:"); scanf("%f",&radie); area=cirkelarea(radie); printf("en cirkel med radien %.3f har arean: %.3f\n",radie,area); printf("vill du fortsatta nej-0, ja-1?"); scanf("%d",&fortsatt);

#include <stdio.h> int dubbla(int tal) tal=tal*2; return tal; int main(void) int i=1; int j=dubbla(i); printf("i: %d, j %d",i,j); Resultat: 1,2 Alla variabler som vi definierar i en funktion finns bara inuti funktionen vi säger att de är lokala variabler. De in-parametrar vi skickar in i en metod kopieras till en ny minnesplats så att parametervariabeln är en lokal variabel. Ändrar vi värdet på en inparameter ändras inte värdet i main! Globala variabler deklareras utanför funktionerna och de finns då i alla funktioner nedan deklarationen. Om en ny variabel med samma namn deklareras i en funktion skuggas den globala variabeln. Undvik globala variabler utom i undantagsfall. De förstör funktionen som svart låda. #include <stdio.h> int a=1;//global! void funk2(void) printf("%d,",a); void funk1(void) int a=4; printf("%d,",a); int main(void) int a=2; printf("%d,",a); int a=3; printf("%d,",a); funk1(); funk2(); Resultat: 2,3,4,1,

En funktion behöver inte ha någon returtyp En funktion behöver inte ha inparametrar void stars() printf("***************\n"); En funktion kan ha flera inparametrar int summa(int a, int b, int c) return a+b+c;

Vi vill skriva ett program som låter användaren få testa om ett visst tal är ett primtal.

antag att vi har en funktion som kan bestämma om ett tal är ett primtal int main(void) int tal; printf("skriv in ett heltal:"); scanf("%d",&tal); if(primtal(tal)) printf("det ar ett primtal"); else printf("det ar inte ett primtal"); enkelt! tyvärr kan vi inte testkompilera

#include <stdio.h> int primtal(int tal) return 1; lägg till en enkel funktion som levererar ett svar om än fel så kan du testa resten av koden int main(void) int tal; printf("skriv in ett heltal:"); scanf("%d",&tal); if(primtal(tal)) printf("det ar ett primtal"); else printf("det ar inte ett primtal");

då är det bara att skriva en funktion som bestämmer om ett tal är ett heltal int primtal(int tal) int i; for(i=2;i<=tak(tal);i++) if(delbart(tal,i)) return 0; return 1;

och så funktioner som räknar ut högsta talet man behöver testa och som tar reda på om ett tal är delbart i ett annat //beräknar högsta tal som man behöver testa med för //att bestämma om ett tal är ett primtal int tak(int tal) return tal-1; int delbart(int taljare, int namnare) return!(taljare%namnare); Nu måste man först testa att dessa fungerar som tänkt innan man testar hela programmet. För detta får man skriva testkod. Sedan testar man sig baklänges upp tills man testat hela programmet.

#include <stdio.h> //beräknar högsta tal som man behöver testa med för //att bestämma om ett tal är ett primtal int tak(int tal) return tal-1; int delbart(int taljare, int namnare) return!(taljare%namnare); int primtal(int tal) int i; for(i=2;i<=tak(tal);i++) if(delbart(tal,i)) return 0; return 1; Kan vi förbättra programmet? int main(void) int tal; printf("skriv in ett heltal:"); scanf("%d",&tal); if(primtal(tal)) printf("det ar ett primtal"); else printf("det ar inte ett primtal");

lägg märke till att när vi förbättrar tak behöver vi inte ändra något annat den är som en svart låda! (förrutom #include <math.h>) int tak(int tal) return sqrt(tal);

#include <stdio.h> #include <math.h> //beräknar högsta tal som man behöver testa med för //att bestämma om ett tal är ett primtal int tak(int tal) return sqrt(tal); int delbart(int taljare, int namnare) return!(taljare%namnare); int primtal(int tal) int i; for(i=2;i<=tak(tal);i++) if(delbart(tal,i)) return 0; return 1; int main(void) int tal; printf("skriv in ett heltal:"); scanf("%d",&tal); if(primtal(tal)) printf("det ar ett primtal"); else printf("det ar inte ett primtal");

En annan metodik för att dela upp problem med hjälp av funktioner är bottom-up Då börjar man med att skapa enkla verktyg man tror sig behöva och sätter sedan ihop dem till allt mer avancerade verktyg fördelar/nackdelar?

#include <stdio.h> int max(int v[],int n) int i,max=v[0]; for(i=1;i<n;i++) if(max<v[i]) max = v[i]; return max; int main(void) int a[] = 1,3,6,2,8,1; printf("storsta vardet ar %d",max(a,6)); return 0;

Gör K9 E1, E2, E3. Skriv också ett huvudprogram som testar att dina funktioner fungerar som det är tänkt. Läs 9.1-9.5 Gå tillbaka till bubbelsorteringsprogrammet och försök dela upp det i funktioner på lämpligt sätt. Använd inga globala variabler. Läs första delen av 9.6 (sid 204-205) Skriv en fakultetsfunktion liknande den i boken (9.6) men lägg till en printf sats som skriver ut värdet på n. Anropa sedan funktionen från main och se hur den anropar sig själv. Gör K9 P6, P8 Läs kapitel 10, jobba igenom programexemplet i 10.5! Gör K10 P2 Gör fler uppgifter om du hinner E-excercises, P-programming projects