William Sandqvist Funktionsbibliotek När man utvecklat en funktion så långt att den är "färdigutvecklad" kan man lika gärna spara den på.

Slides:



Advertisements
Liknande presentationer
Interface.  Interface är en datatyp och har alltså egen syntax och en hel del egna regler för vad arv från interface innebär.  Interface är renodlad.
Advertisements

INTRODUKTION TILL PROGRAMMERING
Array Skriv ett program som frågar följande: ”Hur många tal vill du mata in?” användaren matat in ett tal t.ex n. då frågar programmet n ggr följande.
void hittaMax(int tal[], int antal, int *pmax) { int i; ??=tal[0]; for(i=1;i??) ??=tal[i]; } int main() { int v[]={1,2,3,4,2}; int.
Word Word är ett av de vanligaste ordbehandlingsprogrammen. Vi skall idag gå igenom de vanligaste funktionerna i programmet. Fördelarna med att använda.
Anders Sjögren Lagringsklasser •en variabel i C har två attribut –type( int, float, char..... ) –lagringsklass( auto, extern, register, static ) •lagringsklassens.
Funktioner och programorganisation
Komplexa tal inför Laborationerna
#include void fun(char s[]) { int i=-1; while(s[++i]!=0) { if('a'
Tentamensdags och lab 3…. Större program delas normalt upp i flera filer/moduler vilket har flera fördelar:  Programmets logiska struktur när man klumpar.
Metoder i java Det finns två typer av metoder i java
C-programmering ID120V William Sandqvist Länkad lista
Polymorfism.
Välkommen Vahid Mosavat
Programmeringsteknik för K och Media
Föreläsning 13 Allt om tentan. Sistaminutenhjälp: På fredag 17 december kl 12 sitter Linda i kemi-fiket och svarar på frågor.
Programkodens uppbyggnad
Att programmera i språket Java
William Sandqvist PSpice – hemma Som simuleringsprogramvara använder vi Orcad PSpice, samma program kommer sedan att användas I elektronikkurserna.
Strömmar Vid läsning och skrivning används något som kallas strömmar.
Next previous Introduktion till Java Av Björn Eiderbäck Adress: Rum 1641, 6tr NADA Osquars Backe 2 Tel: OOMPAE 2000.
Alice in Action with Java
i olika programmeringsspråk
WMS i Google Earth Öppna Google Earth, (version 4 eller högre!)
Tentamensdags och lab 3…. Större program delas normalt upp i flera filer/moduler vilket har flera fördelar:  Programmets logiska struktur när man klumpar.
William Sandqvist Funktion som byter plats på två variabler /* swap1.c first attempt at a swaping function */ /* from Stephen Prata, C Primer.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 6 ( ) INNEHÅLL: -Mera om tabeller.
Pekare och speciell programstruktur i inbyggda system
Repetition inför slutprovet
Klasser och objekt Klasser, objekt och instansvariabler
Pointers. int a=5; int f(int b) { a--; b++; return b; } int main() { int a=3; printf("%d,",f(a)); printf("%d",a); return 0; }
Föreläsning 2 Kort Översikt Över Javaspråket. Källkodsformat Unicode används åäöμψζ tillåtna Inte alla miljöer klarar av det Källkod Bytekod Java VM för.
1.Öppna först googlekartfilen du fått av byNet i googleearth genom att dubbelklicka på den. Notera att du måste ha installerat google earth. Detta görs.
Min första hemsida Hello world!. Byt bakgrundsfärg Hello world!
Deklarera en struct som kan användas för att representera en rät linje Använd den I main för att deklarera en variabel som du initierar så att den representerar.
William Sandqvist C:s minnesmodell.
Bildfabriken kan ställas in på olika sätt - se några exempel
Mitt första Java program Mahmud Al Hakim Copyright, Mahmud Al Hakim, 1.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Klasser -Att definiera egna klasser -Klassvariabler -Klassmetoder.
Modulär programutveckling
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
William Sandqvist Databuffer Omvandlar mellan olika storlekar på dataobjekt Anpassar mellan olika dataöverföringshastigheter Databuffer.
Föreläsning 1 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
Java paket och jar-filer
Anders Sjögren ANSI - standard ?. Anders Sjögren ANSI - standard ? Om man skriver ett bra C-program och kompilerar fram ”exe”-filen så vore det ju trevligt.
INTRODUKTION TILL PROGRAMMERING
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 2 ( ) INNEHÅLL: -Variabler och datatyper -Tilldelning av variabler -Aritmetiska.
William Sandqvist C-programmering ID120V Stack och Kö William Sandqvist
Anders Sjögren Selektion i C ”vägval” if och switch - satserna.
William Sandqvist PIC-programmeringsmiljön i skolan Datorerna i skolans labsalar är centralt underhållna. Du har inte rättigheter att installera.
Anders Sjögren Filer - långtidslagring. Anders Sjögren Filtyper i DOS talet ett ( intx=1; ) lagrat i en –textfil, (en sekvens av tecken ( bytes )) enligt.
William Sandqvist Melodispelaren Denna demonstrationslaboration visar, steg för steg, hur man skriver ett kort program i programspråket.
Programmering i C# Laborationer.
Anders Sjögren Deklarationsområde och funktioner.
TILLÄMPAD DATALOGI (TILDA) Övningsgrupp 2 Marcus Hjelm
TILLÄMPAD DATALOGI (TILDA) Övning 1 Marcus Hjelm
1 Ingenjörsmetodik IT & ME 2007 Föreläsare Dr. Gunnar Malm.
F2 1 Programmeringsteknik, 4p vt-00 Kommentarer Allt mellan /* och */ Varje kommentar byts ut mot en blank av kompilatorn /* Exempel på uttryck, tilldelningsoperatorn.
Föreläsning 5 Objekt Klasser Konstruktorer Metoder Minnesbilder av objekt.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Gruppövning 0.
Kronljusströmställaren 0, 1, 2, 3
Föreläsning 7 programmeringsteknik och Matlab 2D1312/2D1305 Metoddeklaration och parametrar Arrayer och ArrayList.
XML, scheman och mappningar
Anders Sjögren Enkelt program med funktion /* two_func.c - a program that uses two functions in one file */ /* from Stephen Prata C Primer Plus ISBN
Shannon dekomposition
Föreläsning 3 Väsentliga delar i ett Javaprogram Input i paketet extra
Anders Sjögren Modulär programutveckling. Anders Sjögren Ett programmeringsprojekt, flera personer utvecklar ett program Vi ska utveckla ett ränteberäkningsprogram.
Anders Sjögren Programmering i ANSI-C Ett första program för att se vart vi ska...
Anders Sjögren Funktioner något in och något annat ut.
KPP053, HT2015 MATLAB, Föreläsning 4
Presentationens avskrift:

William Sandqvist Funktionsbibliotek När man utvecklat en funktion så långt att den är "färdigutvecklad" kan man lika gärna spara den på kompilerad form. Dels går då kompileringen av hela projektet snabbare, dels så kan man dölja för andra hur man gjort funktionen - det kan få bli ens egen affärshemlighet! I undervisningen så kan vi ge "facitfunktioner" som man kan provköra i stället för egna för att t.ex. se om man förstått uppgiften rätt. Om man kör fast på någon funktion kan man ta tillfälligt ta med en "facitfunktion" i stället för den egna för att komma vidare. Stora delar av C:s funktionsbibliotek levereras färdigkompilerade, och det är många gånger kvaliteten på dessa som man betalar för när man köper en kompilator!

William Sandqvist Library - hur skapar och använder man färdigkompilerade funktioner? /* swap3.c using pointers to make a swapping function work */ /* from Stephen Prata, C Primer Plus ISBN */ #include void interchange(int * u, int * v); int main(int argc, char *argv[]) { int x = 5, y = 10; printf("Orginally x = %d and y = %d\n", x, y); interchange(&x, &y); printf("Now x = %d and y = %d\n", x, y); system("PAUSE"); return 0; } void interchange(int * u, int * v) { int temp; temp = *u; *u =*v; *v = temp; } Vårt tidigare exempel: byt plats på två tal …

William Sandqvist Funktionsfil och headerfil Funktionen placeras i funktionsfilen LibFunk.c och den deklareras i headerfilen LibFunk.h. /* LibFunk.c function interchange() */ void interchange(int * u, int * v) { int temp; temp = *u; *u =*v; *v = temp; } /* LibFunk.h function prototype for the interchange() function */ /* Swap's contents of two integers */ void interchange(int *, int *);

William Sandqvist interchange() är extern /* swap4.c using pointers to make a swapping function work */ #include #include "LibFunk.h" extern void interchange(int * u, int * v); int main(int argc, char * argv[]) { int x = 5, y = 10; printf("Orginally x = %d and y = %d\n", x, y); interchange(&x, &y); printf("Now x = %d and y = %d\n", x, y); system("PAUSE"); return 0; } I programmet swap4.c används två metoder för att deklarera funktionen ( det räcker med antingen den ena metoden eller den andra ). Dels inkluderar vi h-filen LibFunk.h dels deklareras funktionen med raden extern void interchange(int *u, int *v);. Nyckelordet extern står för att funktionsdefinitionen finns i en annan fil.

William Sandqvist Library filen LibFunk.a Skapa ett nytt projekt med Dev-C++. ( File, New, Project ) Välj typen Static Library. Som projektnamn väljer vi LibFunk.

William Sandqvist Skapa Funktionsbibliotek Här skulle vi nu ha möjlighet att lägga till fler funktioner, antingen som egna filer i projektet eller inuti filen interchange.c ( som i så fall borde få ett annat namn ). Här nöjer vi oss med en funktion i vårt funktionsbibliotek! Lägg till en ny fil till projectet och ge den namnet interchange.c. I den filen skriver vi sedan funktionen interchange().

William Sandqvist Skapa Funktionsbibliotek Kompilera projektet. Execute, Compile. Nu skapas Library-filen med namnet LibFunk.a. Försöker man läsa den filen med en texteditor blir man inte “klokare” - din affärshemlighet är således skyddad!

William Sandqvist Använda funktionsbibliotek Skapa ett nytt projekt med Dev-C++, File, New, Project. Välj den vanliga typen Console application. Se nu till att filen LibFunk.a ( eller en kopia ) ligger i samma mapp som projektfilen. Skriv programmet som filen swap4.c. Lägg till filen LibFunk.h till projektet.

William Sandqvist Inställningar vid länkningen För att funktionen ska "hittas" vid länkningen måste vi göra några inställningar: Välj Project, Options, fliken Parameters och skriv till filnamnet LibFunk.a i rutan Linker. Tryck på Ok. Nu kan programmet kompileras och köras!

William Sandqvist Körningen void interchange(int * u, int * v) { int temp; temp = *u; *u =*v; *v = temp; } Programmet fungerar lika bra med funktionen i en öppen källkodsfil som i en hemlig binärkodsfil ! ”Öppen” källkod: ”Hemlig” binärkodsfil:

William Sandqvist Den hemliga lösningen till Lab1 Vi har gjort ett funktionsbibliotek för Lab1! Man kan ta med alla funktionerna eller någon av dem i sitt projekt i stället för egna funktioner, men eftersom de är kompilerade så kommer man inte att kunna se vad de innehåller! /* libLab1.h prototypes for functions in libLab1.a */ /* Prompts the user to input a Complex number */ /* returns the Complex number by reference */ void Cinput(double * real, double * imag); /* Calculates the product of two Complex numbers */ /* returns the Complex answer by reference */ void Cproduct(double a1, double b1, double a2, double b2, double * real, double * imag); /* Calculates the quotient of two Complex numbers */ /* returns the Complex answer by reference */ void Cquotient(double a1, double b1, double a2, double b2, double * real, double * imag); /* Calculates and returns the absolute value of a Complex number */ double Cabs(double real, double imag); /* Calculates and returns the argument of a Complex number */ double Carg(double real, double imag); /* Prints a Complex number */ void Cprint(double real, double imag);

William Sandqvist Testa funktionsblioteket Glöm inte att filen liblab1.a måste tas med vid länkningen. ( Med filen i arbetsbiblioteket, välj Project, Options, fliken Parameters och skriv till filnamnet liblab1.a i rutan Linker. Tryck på Ok ). /* testprogram with functions Cinput() and Cprint() */ #include #include #include #include "liblab1.h" /* deklaration of Cinput() and Cprint() */ int main(int argc, char *argv[]) { double realdel, imagdel; Cinput(&realdel, &imagdel); Cprint(realdel, imagdel); system("PAUSE"); return 0; }

William Sandqvist Körningen