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



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

*Pekarvärden *Pekarvariabler & *

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

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

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

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

Repetition C-programmering

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

Introduktion C-programmering

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

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

Tentamen *:58/ID100V Programmering i C Exempel 3

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

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

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

Agenda. Arrayer deklaration, åtkomst Makron Flerdimensionella arrayer Initiering Strängar Funktioner och arrayer. Övningar nu och då

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

tentaplugg.nu av studenter för studenter

Föreläsning 12. struct

TDIU01 - Programmering i C++, grundkurs

Funktionspekare, inledning: funktionsanropsmekanismen. Anrop via pekare

Programmeringsteknik med C och Matlab

Skizz till en enkel databas

TDDC76 - Programmering och Datastrukturer

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

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek

Programmering i C, 7,5 hp

Föreläsning 13. In- och utmatning

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

2 Pekare och dynamiska variabler.

Föreläsning 9. struct

Loopar och datatyper. Föreläsning 3

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

Övning 3 i 2D1324. Strukturering h filer deklaration vs definition Debuggning gdb Preprocessorn #define assert(s) FILE LINE Länkning

En kort text om programmering i C.

HI1024, Programmering, grundkurs, 8hp KTH STH TENTAMEN. HI1024:TEN2 - Praktisk tentamen Tid: Fredagen den 21 oktober 2011,

Poster ( structar ) Postdeklarationer

Länkade listor kan ingå som en del av språket, dock ej i C Länkade listor är ett alternativ till:

Föreläsning 11. Strängar

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

Loopar och datatyper. Föreläsning 3

Föreläsning 10. Pekare (Pointers)

Det finns många flaggor till g++,

Exempel ( )

Vad har vi lärt oss så här långt Vad är en sträng? Strängkonstanter. Att skriva ut och läsa in strängar. Att arbeta med strängar.

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

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

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

TDDC76 - Programmering och Datastrukturer

Heltal(int) Programmeringsteknik 54

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program

Enkla datatyper minne

översiktskurs (5DV031)

Tentamen i. för D1 m fl, även distanskursen. lördag 28 maj 2011

Nedan skapar vi klassen Person innehållande datamedlemmar för förnamn, efternamn, ålder, längd och vikt:

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

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program

Abstrakta datastrukturer

TDIU01 - Programmering i C++, grundkurs

Programmering av inbyggda system. Kodningskonventioner. Viktor Kämpe

Föreläsning 2. Täcker material från lektion 1, 2, 3 och 4:

Symboliska konstanter const

Pekare och arrayer. Indexering och avreferering

Deklarera en struct som kan användas för att representera en rät linje

Hantering av textsträngar och talsträngar. William Sandqvist

Programmering, grundkurs, 8.0 hp HI1024, HI1900 etc., Tentamen TEN1. Måndagen den 10 januari 2011,

Minnestilldelning (allokering) och frigörande (avallokering) av minne

Det objektorienterade synsättet. Objekt. Datorprogrammet kan uppfattas som en slags modell av den verklighet programmet skall samverka med.

Innehåll. 1 Deklarationer, scope och livstid. 2 Användardefinierade typer. 4 In- och utmatning. 5 Operatoröverlagring. 6 namnrymder (namespace)

.c och.h filer. Programmeringsteknik 113

C++ - En introduktion

Programmering, grundkurs, 8.0 hp HI1024, omtentamen, TEN1. Tisdagen den 7 juni 2011,

Funktioner och programstruktur. Föreläsning 5

Innehåll. Pekare Syntax

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

TDIU01 Programmering i C++

Ett enkelt program i C++, hello.cpp. #include <iostream> int main() { std::cout << "Hello World\n"; return 0; } C++, Övning 1

Föreläsning 4. Val, boolska värden, läsbarhet, osv

grundläggande C++, funktioner m.m.

Programmering i C. Vad är C? Målsättning. Litteratur. Jämförelse med Java. Exempel : Ett program som skriver ut texten Hello, world

Exempelsamling Assemblerprogrammering

Programmeringsteknik med C och Matlab

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

Avancerad SSL-programmering II

Funktioner och programstruktur. Föreläsning 5

Tommy Färnqvist, IDA, Linköpings universitet

Innehåll. 1 Deklarationer, scope och livstid. 2 Användardefinierade typer. 4 Operatoröverlagring. 5 In- och utmatning. 6 namnrymder (namespace)

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

Kapitel 1. C++-programmets beståndsdelar. C++-programmets beståndsdelar. Kapitel 1 grunderna i C++

Innehåll. Pekare Exempel

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

TDDC77 Objektorienterad Programmering

Filer och structer Del 2

Operatorer Tilldelning Kodblock { } if satsen Logiska uttryck Att programmera

Innehåll. Pekare Exempel

1 Klasser och objektorientering Vad är objektorientering?

Assemblerprogrammering för ARM del 3

Uppgifter till praktiska tentan, del A. (7 / 27)

GU / Chalmers Campus Lindholmen Tentamen Programutveckling LEU 482 / TIG167

C++-programmets beståndsdelar

Transkript:

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

Dagens föreläsning Repetition Strukturer Programmeringsteknik för ingenjörer, VT06 2

Deklaration: char name1[10]; char *name2; Repetition - Strängar Deklaration + tilldelning: char name1[10] = Janne ; char *name2 = Janne ; char name1[10] = { J, a, n, n, e, \0 }; char *name2= { J, a, n, n, e, \0 }; Programmeringsteknik för ingenjörer, VT06 3

Repetition - Strängar Tilldelning Utan minnesallokering char name1[10]; char *name2;... name1 = Janne ; name2 = Janne ; name1[3] = b ; name2[3] = b ; //Specialfall! strcpy(name1, Test ); strcpy(name2, Test ); Programmeringsteknik för ingenjörer, VT06 4

Repetition - Strängar Tilldelning Med minnesallokering char name1[10]; char *name2 = (char *) malloc(10*sizeof(char));... name1 = Janne ; name2 = Janne ; // Tappar bort minnet! name1[3] = b ; name2[3] = b ; // Går bra nu strcpy(name1, Test ); strcpy(name2, Test ); Programmeringsteknik för ingenjörer, VT06 5

Sammansatta datatyper Arrayer finns för sekvenser av data med samma typ. Vad gör man med relaterat data av olika datatyper? char *fname1 = "Adam"; char *lname2 = "Hansson"; int age1 = 23; char *fame2 = "Eva"; char *lame2 = "Ögren"; int age2 = 27; Programmeringsteknik för ingenjörer, VT06 6

Strukturer struct person { char *fname; char *lname; int age; }; För att få tillgång till medlemmar av en struktur används punktoperatorn. ( genetiv s) struct person p1; p1.fname = Adam ; p1.lname = Hansson ; p1.age = 23; Programmeringsteknik för ingenjörer, VT06 7

Strukturer Utelämnar man namntaggen till en struktur, kan strukturen inte användas till ytterligare deklarationer. struct { int r,g,b; } red, green, blue; Tre variabler skapas Detta till skillnad mot om den tas med: struct colour { int r, g, b; }; struct colour red; struct colour green; struct colour blue; Programmeringsteknik för ingenjörer, VT06 8

typedef struct Vanligtvis använder man typedef tillsammans med strukturer. typedef struct { double re; double im; } complex_t; /* ny datatyp */ complex_t a, b; a.re = 12.4; a.im = 3.4; Programmeringsteknik för ingenjörer, VT06 9

Åtkomst och tilldelning Även strukturer kan initieras vid deklarationen. complex_t a = {1.0, 2.45}; complex_t v[2] = {{1.4, 0.23}, {-1.4, 5.1}}; struct person p = {"Adam", "Hansson", 23}; Man kan även initiera en hel struktur med värde noll (alla bitar satta till noll). complex_t c[4] = {0}; Programmeringsteknik för ingenjörer, VT06 10

#include <stdio.h> typedef struct { double re; double im; } complex_t; int main (void) { complex_t a,b; a.re = 3.5; b.re = a.re + 1.0; scanf("%lf %lf",&a.im, &b.im); printf("a:<%.2f+%.2fi> b:<%.2f+%.2fi>\n",a.re,a.im,b.re,b.im); if (a.re == b.re && a.im == b.im) printf("a and b equal\n"); else printf("a and b not equal\n"); 12.5 65.3 a:<3.50+12.50i> b:<4.50+65.30i> a and b not equal } return 0; Programmeringsteknik för ingenjörer, VT06 11

#include <stdio.h> #define N 10 typedef struct{ char fnamn[n]; char enamn[n]; unsigned int age; } person_t; int main(void){ int n,i,sum=0; char sin[10*n]; printf("hur många namn vill du mata in? ");scanf("%d",&n); person_t P[n]; for(i=0;i<n;i++){ printf( Ange förnamnet på person %d: ",i+1); scanf("%s",sin); strncpy(p[i].fnamn,sin,n); printf(" Ange efternamnet på person %d: ",i+1); scanf("%s",sin); strncpy(p[i].enamn,sin,n); printf("ange person %d ålder: ",i+1); scanf("%d",&(p[i].age)); } for(i=0;i<n;i++) sum+=p[i].age; printf("personernas sammanlagda ålder är %d\n",sum); } Programmeringsteknik för ingenjörer, VT06 12

Strukturer som in/ut-data Strukturer kan användas som in och utdata till funktioner. typedef struct { int x; int y; } coordinate_t; Skickas Call-by-value och får returneras: coordinate_t move(coordinate_t p, int dx, int dy) { p.x += dx; p.y += dy; return p; } Programmeringsteknik för ingenjörer, VT06 13

Referering I C finns operatorn -> för att göra accesser till medlemmar i en struktur via en pekare. int read_complex(complex_t *comp) { int result = 0; result += scanf("%lf",&comp->re); result += scanf("%lf",&comp->im); if (result < 2) return 0; return 1; } (Lika för arrayer: v[0]->re = 34.5;) Programmeringsteknik för ingenjörer, VT06 14

Exempel: Strukturer och dynamiskt minne complex_t *a =(complex_t*)malloc(sizeof(complex_t)); complex *v[n]; a->im = 3.0 //(*a).im = 3.0; a->re = 0.2 //(*a).re = 0.2; v[0] = (complex_t *)malloc(sizeof(complex_t)); v[0]->im = 5.1 //(*(v[0])).im = 5.1; v[0]->re = 2.8 //(*(v[0])).re = 2.8; Programmeringsteknik för ingenjörer, VT06 15

#include <stdio.h> Pekare i strukturer typedef struct { int *x; int *y; } xy_t; int main (void) { int a = 7, b = 8; xy_t xy; xy.x = &a; xy.y = &b; *xy.x = 12; // *(xy.x) *xy.y = 14; // *(xy.y) printf("a:%d b:%d\n",a,b); return 0; } Skriver ut: a:12 b:14 Programmeringsteknik för ingenjörer, VT06 16

Pekare i strukturpekare Exempel: int a = 7, b = 8; xy_t *xy; xy = (xy_t *) malloc(sizeof(xy_t)); xy->x = &a; xy->y = &b; *xy->x = 12; // *(xy->x); *(*xy).x = 12; *xy->y = 14; // *(xy->y); *(*xy).y = 14; printf("a:%d b:%d\n",a,b); free(xy); Skriver ut: a:12 b:14 Programmeringsteknik för ingenjörer, VT06 17