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

Slides:



Advertisements
Liknande presentationer
Föreläsning1. • Boken?!?! • Vad är ett program? • Kompilerande-Interpreterande • Programmeringsmiljö • Hello World! • Att programmera och ett enkelt program.
Advertisements

© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2004 Datastrukturer och algoritmer Föreläsning 4.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning
Anders Sjögren Lagringsklasser •en variabel i C har två attribut –type( int, float, char..... ) –lagringsklass( auto, extern, register, static ) •lagringsklassens.
Programstruktur: C för enchipsdatorer
Funktioner och programorganisation
Programmeringsteknik Föreläsning 13 Skolan för Datavetenskap och kommunikation.
De fundamentala datatyperna
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning 4.
Föreläsning 1.
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.
Arrays Indicerade variabler.
Välkommen Vahid Mosavat
Att programmera i språket Java
DoA VT -07 © Anders Broberg, Lena Kallin Westin, P = ((C,F,3), (B,D,3), (C,G,4),(A,F,4), (A,R,4), (C,D,5), (E,G,6), (B,R,6), (A,E,6), (A,C,8)) A.
Föreläsning 2 Datalogi för E1 2D1343
Föreläsning 6 Referenser Objekt som parametrar public/private Klassvariabler och klassmetoder.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning 1.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning 1.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning 6 Asymtotisk analys.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Föreläsning 7 Träd.
i olika programmeringsspråk
Java. Kortfattat om Java Syntaxen påminner i hög grad om C++ Stöd för objektorientering Kod kan köras i en virtuell maskin som finns tillgänglig för nästan.
Sid period2CD5250 OOP med C++ Mats Medin MDH/IDT Objektbaserad programmering –Grundläggande om klasser och objekt – (Arv får vänta)  Iden med klasser.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2004 Datastrukturer och algoritmer Föreläsning 3.
Programmering B PHP Lektion 2
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.
OOP F4:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 4 Metoder klass-metoder instans-metoder.
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
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; }
Programmering B PHP Lektion 2
Föreläsning 4 Kö Implementerad med array Implementerad med länkad lista Djup kontra bredd Bredden först mha kö.
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.
William Sandqvist C:s minnesmodell.
Mitt första Java program Mahmud Al Hakim Copyright, Mahmud Al Hakim, 1.
Modulär programutveckling
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Metoder -Lokala variabler -Mera om klasser: -Nyckelorden.
För utveckling av verksamhet, produkter och livskvalitet. -Algoritmer och Datastrukturer- -Algoritm analys och sökning algoritmer- Kap 5 -Algoritmer och.
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
Objektorienterad Programmering i C++ I
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.
Läsbar prolog CM 8.1. allmäna principer correctness user-friendliness efficiency readability modifiability robustness documentation.
Problemlösningsmetodik
Föreläsning 1. Innehåll Introduktion till objektorientering –OOP (objektorienterad programmering) –Objekt, instanser, klasser C++ –OO i C++ –Standardbibliotek.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 5 ( ) INNEHÅLL: -Metoder.
F4 - Funktioner & parametrar 1 Programmeringsteknik, 4p vt-00 Modularisering ”svarta lådor” Väl definierade arbetsuppgifter Enklare validering Enklare.
För utveckling av verksamhet, produkter och livskvalitet. Stack och Kö - Implementering - Tilllämpningar.
Föreläsning 4 programmeringsteknik och Matlab 2D1312/ 2D1305
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Föreläsning 12 Sökning och Sökträd.
Anders Sjögren Deklarationsområde och funktioner.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning 13 Sortering.
F2 1 Programmeringsteknik, 4p vt-00 Kommentarer Allt mellan /* och */ Varje kommentar byts ut mot en blank av kompilatorn /* Exempel på uttryck, tilldelningsoperatorn.
Programmeringsteknik för K och Media
© Anders Broberg, Lena Kallin Westin, 2007 Datastrukturer och algoritmer Föreläsning 10.
© Anders Broberg, Lena Kallin Westin, 2007 Datastrukturer och algoritmer Föreläsning 14.
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å.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning 14.
1 Föreläsning 2 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
Föreläsning4 Repetition slingor Metoder. while-sats består av följande delar: 1. while 2. Villkor-sats (condition) 3. uttryck (statement) while-sats int.
1 Föreläsning 6 Repetition på metoder Referenser Objekt som parametrar public/private Klassvariabler och klassmetoder.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning 16.
Föreläsning 3 Väsentliga delar i ett Javaprogram Input i paketet extra
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.
Presentationens avskrift:

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

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

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 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

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 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() { }

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 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);

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 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);

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 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

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 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

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 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

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 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

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 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”

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

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin,  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

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin,  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

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 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

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, ”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

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 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

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 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

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 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