Datastrukturer. Typdeklarationer. Ny datastruktur i C- struct. exempel. Ofta bra att kunna fšra ihop information av olika datatyper till en enhet.



Relevanta dokument
Programmeringsteknik för Ingenjörer VT06. Föreläsning 10

#include <stdio.h> #include <string.h>

TDDC76 - Programmering och Datastrukturer

Kapitel 6. Hakparenteser fšr att ange index MŒnga všrden av samma typ

Fortsä'ning Pekare. Ulf Assarsson. Originalslides av Viktor Kämpe

Översikt Introduktion DST 1. Nicholas Wickström. IDE, Högskolan i Halmstad. N. Wickström

TDDC76 - Programmering och Datastrukturer

Kapitel 6. Kapitel 6. Hakparenteser fšr att ange index float[] priser = new float[500]; frekvens[4] boolean[] flaggor;

Fortsä'ning Pekare. Ulf Assarsson. Originalslides av Viktor Kämpe

TDP004. Minne och pekare. Eric Elfving Institutionen för datavetenskap

Skriv i mån av plats dina lösningar direkt i tentamen. Skriv ditt kodnummer längst upp på varje blad.

Övning från förra gången: readword

Johan Karlsson Datavetenskap för teknisk kemi, 10p, moment 1 Datavetenskap Umeå Universitet. Tentamen

Poster ( structar ) Postdeklarationer

Objekt och klasser - Introduktion. Objekt. SparKonto.java 2. SparKonto.java 1. Konton.java. Ett objekt har: Ett bankkonto

DatortillŠmpningar. Det har hšnt nœgot!

Objekt och klasser - Introduktion. Objekt. Spar_Konto 2. Spar_Konto 1. Konton. Ett objekt har: Ett bankkonto. public void uttag(double belopp)

Indicerade variabler

Programmering i C++ EDA623 Typer. EDA623 (Föreläsning 4) HT / 33

Föreläsning 12. struct

*Pekarvärden *Pekarvariabler & *

Funktionspekare, inledning: funktionsanropsmekanismen. Anrop via pekare

TDIU01 - Programmering i C++, grundkurs

Arrays (indicerade variabler) Föreläsning 6

Grundläggande C-programmering del 2 Pekare och Arrayer. Ulf Assarsson

Social kompetens/všrdegrund

struct egendefinierad typ struct LECTURE_TYPE { char teacher[99]; float lengthinminutes; char type; /* L = lecture, E = exercise */ };

Arrays (indicerade variabler) Föreläsning 4

Föreläsning 9. struct

Grundläggande C-programmering del 2 Pekare och Arrayer. Ulf Assarsson

TDIU01 - Programmering i C++, grundkurs

2 Pekare och dynamiska variabler.

BMI = (vikt i kg) / (längd i m) 2. Lösningsförslag

Ulf Assarsson. Grundläggande C-programmering del 2 Pekare och Arrayer. Läromoment:

Programmering av inbyggda system. Pekare och Arrayer. Viktor Kämpe

Lösningar till uppgifterna sätts ut på kurssidan på nätet i dag kl Omtentamen i Programmering C, Fri, Kväll,

Abstrakta datastrukturer

Indexerade variabler

TDIU01 - Programmering i C++, grundkurs

Programmera i C Varför programmera i C när det finns språk som Simula och Pascal??

Enkla datatyper minne

Pekare. Pekare. Varför använder vi pekare? Vad är en pekare? Pekare. Deklaration/initiering av pekare

Lösningar till uppgifterna sätts ut på kurssidan på nätet i dag kl Tentamen i Programmering C, Fri, Kväll,

Programmering av inbyggda system. Pekare och Arrayer. Ulf Assarsson. Originalslides av Viktor Kämpe

Newtons metod i en och flera variabler

Objektorienterad programmering Föreläsning 5

Tentamen *:58/ID100V Programmering i C Exempel 3

Övningar Dag 2 En första klass

BINÄRA TRÄD. (X = pekarvärdet NULL): struct int_bt_node *pivot, *ny; X X X 12 X X 12 X X -3 X X

Lšneadministration Handbok

Föreläsning 4. Kö Implementerad med array Implementerad med länkad lista Djup kontra bredd Bredden först mha kö

Heltalsrepresentation. Fler byggstenar. Overflow och Underflow. TvŒ-komplement. FlyttalsvŠrden. Fyra heltalstyper. Tecken-bit

Dynamiskt minne. Vad är dynamiskt minne Motivering Hur gör man i C Övningar

TDIU01 - Programmering i C++, grundkurs

Innehåll. EDAf30: Programmering i C++, 7.5 hp. EDAf30: Programmering i C++, 7.5 hp Viktiga skillnader mot Java

Skizz till en enkel databas

C++ - En introduktion

Funktionens deklaration

KLASSER. Inkapsling Abstrakt datatyp Public och private. Klassmedlemmar Datamedlemmar Exempel Funktionsmedlemmar

Programmering av inbyggda system. Kodningskonventioner. Viktor Kämpe

6 Lågnivåprogrammering

Programmering, grundkurs, 8.0 hp, Elektro, KTH, hösten Detta är andra problemlösningsföreläsningen, vi diskuterar problemen ur Problem II.

Välkommen till. Datastrukturer, algoritmer och programkonstruktion. eller DOA

1 Programmering i Java. Program element - Introduktion. Exempel. Exempel. Kapitel 3:

3 Listor. 3.1 Envägslistor

Heltal(int) Programmeringsteknik 54

Att använda pekare i. C-kod

Dagens föreläsning. Specialtecken. Mer om printf. Formateringssträngar. Mer om scanf. Programmeringsteknik för Ingenjörer VT05

Föreläsning 6. Slumptal Testa slumptal Slumptal för olika fördelningar Grafer Datastrukturen graf

m Animering m Bilder m Grafik m Diskret representation -> kontinuerlig m En interpolerande funktion anvšnds fšr att

TDIU01 Programmering i C++

SORTERING OCH SÖKNING

Fråga 13. Skriv en loop som fyller arrayen int v[100] med talen

L SNINGSF RSLAG TILL TENTAMEN PROGRAMMERING I JAVA, 5P

HI1024, Programmering, grundkurs, 8hp KTH STH TENTAMEN. HI1024:TEN1 - Teoretisk tentamen Tid: Torsdagen den 20 oktober 2011,

4 Sammansatta datatyper

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

Användning av stack: evaluera uttryck i RPN

Kapitel 3. Synlighet. Kapitel 3 - Klassanvändning, operatorer och pekare. Synlighet

Symboliska konstanter const

Namn:... Klass:... Pnr:... Omtentamen i Programmeringsmetodik, 5p, D1 och E1,

Föreläsning 13. In- och utmatning

Synlighet. Namespace Scope-operatorn Klasser Vänner

C-programmering, föreläsning 2 Jesper Wilhelmsson

(Lösningsförslag finns sist i denna fil.)

Exempel ( )

Programmeringsteknik med C och Matlab

.c och.h filer. Programmeringsteknik 113

Programmering, grundkurs, 8.0 hp, Elektro, KTH, hösten Nu till dagens ämne: Vi rekapitulerar det första problemet ur ProblemI:

C++ Slumptalsfunktioner + switch-satsen

Funktioner och programstruktur. Föreläsning 5

Funktioner och programstruktur. Föreläsning 5

tentaplugg.nu av studenter för studenter

Tommy Färnqvist, IDA, Linköpings universitet

Det finns många flaggor till g++,

TDDC76 - Programmering och Datastrukturer

Tecken & Strängar. Kapitel 7

Lämna in ifylld kursvärdering tillsammans med tentamen! Lösningarna till tentamensuppgifterna sätts ut på kurssidan på nätet i dag kl 13.

VerksamhetsberŠttelse

Föreläsning 5. Träd Binära träd Binärt sökträd som ADT Implementering av binärt sökträd Travestera binärt sökträd Sökning Insättning/borttagning

Transkript:

Typdeklarationer Datastrukturer AnvŠnds fšr att ge beskrivande namn fšr en typ typedef typ typnamn; typedef unsigned int PosInt; PosInt slumptal; Ofta bra att kunna fšra ihop information av olika datatyper till en enhet. Ett exempel : du vill organisera dina (mœnga) bšcker En bok kan t.ex. beskrivas av Ð Titel Ð Fšrfattare Ð UtgivingsŒr Ð Om den Šr utlœnad, i sœ fall till vem Ð É 1 3 exempel typedef double ** MatrisTyp; void skrivmatris(matristyp matris,int m,int n); void main(void) MatrisTyp a; int i,j; a = calloc(4,sizeof(double *)); for (i=0;i<4;i++) a[i] = calloc(3,sizeof(double)); srand(time(null)); /* slumptalsfrö */ for (i=0;i<4;i++) for (j=0;j<3;j++) a[i][j] = rand()%100-50.0; skrivmatris(a,4,3); /* main */ Prototyp 2 struct tagnamn ; medlemmar Nu kan variabler deklareras med struct tagnamn var1,var2,var3; Ny datastruktur i C- struct tagnamn kan utelšmnas men dœ mœste alla variabler deklareras mellan och ; och inga ytterligare dekl. kan gšras 4 1 2

Bok struct Bok ; struct Bok Šr nu en typbeskrivning och kan anv. fšr att deklarera variabler struct Bok b; 5 Bok - utan tag struct b1,b2,b3; b1, b2 och b3 variabler av denna typ Inga ytterligare variabler kan deklareras Omšjligt att anv. fšr parameteršverfšring 6 3 Skapa en ny datatyp Namnge den nya datastrukturen med typedef typedef typ typnamn; Utan tagnamn : hela typdef. in mellan typedef och typnamn Med tagnamn : Bok Bok Tags är inte vanliga identifierare Bok Šr nu typnamn och kan anv. fšr att deklarera variabler Bok b; 7 Medlemmarna Fšr att nœ ett enskilt všrde i en struct sœ anvšnder man punktoperatorn structvariabel.medlem Medlemmen hanteras precis som en enkel variabel av samma typ som medlemmen b.titel = "Bilbo - en hobbits äventyr"; b.forfattare = "J.J.R. Tolkien"; b.utgivningsar = 1935; Medlemsidentifierarna mœste vara unika inom structen Structar kopieras medlem fšr medlem (Šven fšlt) Bok b,annanbok; /* b får värden enligt ovan */ annanbok = b; /* all information kopieras */ 8 4

#include <stdio.h> Bok b; b.titel = malloc(25*sizeof(char)); b.forfattare = malloc(25*sizeof(char)); b.titel = "Bilbo - en hobbits äventyr"; b.forfattare = "J.J.R. Tolkien"; b.utgivningsar= 1935; exempel Bok printf("titel : %s \n",b.titel); printf("författare : %s \n",b.forfattare); printf("antal sidor : %d\n",b.utgivningsar); return 0; /* main */ 9 kšrning Titel : Bilbo - en hobbits äventyr Författare : J.J.R. Tolkien Utgivningsår : 1935 10 5 Pekare & structar Flera skšl till att všlja att anvšnda pekare till ett všrde (parameteršverfšring pass-by-reference, dynamisk minnesallokering). Fungerar bra Šven med struct Punktoperatorn fœr bara anvšndas pœ en struct, inte pœ en pekare till en struct *p Šr den struct som p pekar pœ I Bok-exemplet Bok *p; (*p).titel = malloc(25*sizeof(char)); (*p).forfattare = malloc(25*sizeof(char)); 11 -> - operatorn I stšllet fšr punkt-operatorn kan man nu anvšnda structpekarvariabel->medlem Detta ger ett lite enklare skrivsštt fšr pekare till structar Bok *p; p->titel = malloc(25*sizeof(char)); p->forfattare = malloc(25*sizeof(char)); 12 6

#include <stdio.h> exempel BokPek Bok *b; (*b).titel = malloc(25*sizeof(char)); (*b).forfattare = malloc(25*sizeof(char)); (*b).titel = "Bilbo - en hobbits äventyr"; (*b).forfattare = "J.J.R. Tolkien"; (*b).utgivningsar= 1935; printf("titel : %s \n",(*b).titel); printf("författare : %s \n",(*b).forfattare); printf("antal sidor : %d\n",(*b).utgivningsar); return 0; /* main */ 13 #include <stdio.h> #include <stdlib.h> int antsidor; Bok *lista; int i; int n = 3; lista = calloc(25,sizeof(bok)); exempel BokLista for (i=0; i <= n-1;i++) lista[i].titel = calloc(25,sizeof(char)); lista[i].forfattare = calloc(25,sizeof(char)); 14 7 BokLista for (i=0; i <= n-1;i++) printf("titel[%d] : ",i); gets(lista[i].titel); printf("författare : "); gets(lista[i].forfattare); printf("utgivningsår : "); scanf("%d",&lista[i].utgivningsar); getchar(); skrivbibliotek(lista,n); 15 skrivbibliotek void skrivbibliotek(bok *bib, int antal) int i; for (i=0; i <= antal-1;i++) printf("bok #%d\n",i); printf("titel : %s\n",bib[i].titel); printf("författare : %s\n",bib[i].forfattare); printf("utgivningsår : %d\n\n",bib[i].utgivningsar); /* skrivbibliotek */ 16 8

Titel[0] : Emil i Lönneberga Författare : Astrid lindgren Utgivningsår : 1967 Titel[1] : A book on C Författare : Kelley, Pohl Utgivningsår : 1998 Titel[2] : Telefonkatalogen Författare : Telia Utgivningsår : 1999 Bok #0 Titel : Emil i Lönneberga Författare : Astrid Lindgren Utgivningsår : 1967 Bok #1 Titel : A Book on C Författare : Kelley,Pohl Utgivningsår : 1998 Bok #2 Titel : Telefonkatalogen Författare : Telia Utgivningsår : 1999 kšrning 17 9