Presentation laddar. Vänta.

Presentation laddar. Vänta.

© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Gruppövning 0.

Liknande presentationer


En presentation över ämnet: "© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Gruppövning 0."— Presentationens avskrift:

1 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Gruppövning 0

2 Datastrukturer och algoritmer VT 2003 2 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 2 Innehåll  Att programmera stora C-program  Att skriva C-program oText-editor oKompilering oLänkning oMake  ADT i C

3 Datastrukturer och algoritmer VT 2003 3 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 3 C-Progammering  Utvecklingsmiljöer  Visual-studio, Borland-C,… oProjekt  Texteditorer, kompilering,…  Skrivkoden i emacs, vi, pico,Word,…  Kompilera och länka med gcc, cc eller annan kompilator  Automatisera med make-kommandot

4 Datastrukturer och algoritmer VT 2003 4 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 4 Ett c-program  Alla identifierare som ett program skall använda måste vara deklarerade före användningen.  Variabler, ”konstanter”, funktioner*  Varför? För att komplilatorn skall kunna kontrollera:  Typerna  Räckvidden  Funktioner ett litet undantag  Funktioner som anropas antas att de returnerar int, om man inte sagt något annat #includes #defines //prototyper //globals //Declaration of functions main() { }

5 Datastrukturer och algoritmer VT 2003 5 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 5 Ett c-program  Veta vilken ordning funktioner skall vara, kan vara ett problem!  Ett sätt att komma runt detta är att använda funktionsprototyper, som i princip bara talar om vilken gränsyta en funktion har. void foo(int,int); int *bar(int, *char);

6 Datastrukturer och algoritmer VT 2003 6 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 6 C ett litet språk  C har en liten kärna, men kan byggas ut…  C:s standardbibliotek libc.a innehåller en massa nyttiga funktioner, och länkas alltid in vid kompilering, tex printf(”Hejsan”);  ”Dessa är i princip bara att anropa”  Men hur vet kompilatorn gränsytan till strlen?  Prototyp extern int strlen(*char); length = strlen(string);

7 Datastrukturer och algoritmer VT 2003 7 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 7 Mer om kodbibliotek  Det finns färdiga protyper för standardbiblitoeket som man kan använda #include  Mattefunktioner lite speciellt  math.a är ett bibliotek med mattematiska fuktioner, men det länkas inte i automatisk, utan man måste tala om att math.a skall länkas med. Mer om detta snart Innehåller prototyper datadeklarationer och konstanter

8 Datastrukturer och algoritmer VT 2003 8 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 8 Kompilering  cc test.c => a.out som är körbar  cc test.c -o kalle => kalle som är körbar  cc test.c -o kalle -lm => länkar med math.a  cc -c test.c => test.o som är en objektkodsfil, ej körbar

9 Datastrukturer och algoritmer VT 2003 9 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 9 Att dela på ett program  cc -o del1.c del2.c del3.c del4.c arvid => arvid som är körbar  cc -c del1.c  cc -c del2.c  cc -c del3.c  cc -c del4.c  Slå/länka ihop alla objektfilerna till en körbar fil  cc -o del1.o del2.o del3.o del4.o arvid => arvid som är körbar del1.c innehåller main () del2.c del3.c del4.c

10 Datastrukturer och algoritmer VT 2003 10 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 10 Vad tjänar vi på detta?  Om vi vill ändra i programmet så måste man kompilera om det  Första stegen i kompileringen är långsam  Sista steget, länkning är relativt snabbt  Om vi vill ändra i koden som är i del2.c så behöver vi bara:  cc -c del2.c  cc -o del1.o del2.o del3.o del4.o arvid  Ett problem är att kompilatorn inte kommer ihåg identifierare och typer mellan delarna! cc -o del1.c del2.c del3.c del4.c arvid del1.c innehåller main () del2.c del3.c del4.c

11 Datastrukturer och algoritmer VT 2003 11 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 11 Mer om separatkompilering  Två sätt 1.Alla delar gör samma typ- och prototypdeklarationer, åtminstone av de delar de ska använda 2.Använd.h-filer (header filer), med typer, konstanter, prototyper  En för varje del  En gemensam för en helhet test.h //del1.c #include ”test.h” //del2.c #include ”test.h” //del3.c #include ”test.h” //del4.c #include ”test.h”

12 Datastrukturer och algoritmer VT 2003 12 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 12 ADT i C-program  Några idéer med abstrakta datatyper  Modularisering  ”Information hiding”  Abstraktion  Återanvändning

13 Datastrukturer och algoritmer VT 2003 13 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 13  C ger inte något bra stöd åt ADT, men vi gör så gott vi kan  Datatyp = Operationer + Data  Datatyp = Gränssnitt + Implementation ADT i C-program stack.hstack.c stack.o

14 Datastrukturer och algoritmer VT 2003 14 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 14  stack.h protoyper, …  stack.c implementation men ingen main()  Gör detta för att datatyper du har  Länka in dina.o filer där du behöver dom  Typ stacktest.c som innehåller main() ADT i C-program stack.hstack.c stack.o länkning

15 Datastrukturer och algoritmer VT 2003 15 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 15 Egna bibliotek  Bunta ihop alla dina datatyper till ett bibliotek typ math.a  ar rv ADT.a *.o  ranlib ADT.a st.o bibliotek qu.oli.o

16 Datastrukturer och algoritmer VT 2003 16 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 16 ”Automatisk kompilering”  make kommandot…  Används för att genomföra ”hela” kompileringen i ett steg - mest för att förenkla och för att undvika misstag  Make använder filen Makefile  Makefile beskriver komplieringsprocessen  Bara de filer som är förändrade kompileras, för att användas i länkningsfasen

17 Datastrukturer och algoritmer VT 2003 17 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 17 Makefile…  Targets är en viktig del i en ”Makefile” test: main.o del1.o del2.o del3.o del4.o #vilka filer den ska kolla cc main.o del1.o del2.o del3.o del4.o -lm -o test main.o: main.c test.h #vilka filer den ska kolla cc -c main.c del1.o: del1.c test.h #vilka filer den ska kolla cc - c del1.c del2.o: del2.c test.h #vilka filer den ska kolla cc - c del2.c del3.o: del3.c #vilka filer den ska kolla cc - c del3.c del4.o: del5.c test.h #vilka filer den ska kolla cc - c del4.c

18 Datastrukturer och algoritmer VT 2003 18 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 18 Makefile…  Variabler i makefiler CFLAGS = -g -lm OBJS = main.o del1.o del2.o del3.o del4.o test: $(OBJS) Cc $(OBJS) $(CFLAGS) -o $@  $@ Referear till namnet på aktuellt target

19 Datastrukturer och algoritmer VT 2003 19 © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 19 Mera om make  make -t kompilerar om allt ”dvs touch på alla filer först”  make -n rapporterar allt som utförs  make -d talar om varför saker händer


Ladda ner ppt "© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Gruppövning 0."

Liknande presentationer


Google-annonser