GESPRG Les 8 Gestructureerd programmeren in C. 101 Array Meerdere variabelen van hetzelfde type kun je samennemen in één array variabele. Stel in een.

Slides:



Advertisements
Verwante presentaties

Advertisements





Inleiding programmeren in C++ Life Science & Technology 1 maart Universiteit Leiden.
Vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Een programma opbouwen.
HM-ES-th1 Les 9 Hardware/Software Codesign with SystemC.
Gestructureerd programmeren in C
Vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Onderwerpen voor vandaag Gelinkte lijsten Finite State.
PROS2 Les 11 Programmeren en Software Engineering 2.
GESPRG Les 14 Gestructureerd programmeren in C. 174 Details! The devil is in the details.
Inkomen les 10 Zelftest Inzichtvragen
Omgevingen zijn dan geïmplementeerd als Symbol Tables. Symbol Table mapt een symbool met een Binding Meerdere noties van binding –Meerdere manieren te.

Instructie Programmeren Debuggen 5JJ70. Debuggen: Wat is het probleem Je programma compileert, maar werkt niet zoals verwacht, wat nu? Vraag je af: wat.
1 Tentamen 21 januari 2008 uitleg Algemene kennisvragen a)“Wat verstaan we onder de complexiteit van een algoritme?” –Cruciaal: wat gebeurt er met.

Modula vs Java MODULE Show; CONST PI = ; TYPE PointRc = RECORD x,y : INTEGER; speed : REAL; angle : REAL; END; VAR a,b : PointRc; BEGIN.
Hoofdstuk 6: Controle structuren
Algoritmiek Arrays: wat zijn dat en wat kun je ermee? Loops: hoe hou je ze in bedwang? Hoorcollege 6 - Ma. 9 okt L.M. Bosveld-de Smet.
Numerieke Natuurkunde
Algoritmen en Datastructuren (ALDAT) EVMINX4 Week 6.
MICPRG Les 11 Microcontroller Programmeren in C. 112 Datastructuren in C Werkgeheugen (PC en microcontroller): Statische datastructuren (vaste grootte):
GESPRG Les 9 Gestructureerd programmeren in C dimensionale array Array van array’s int i = 31; int a[4] = {7, 23, 6, 2}; int m[2][4] = { {1, 1,
Real-Time Systems (RTSYST) Week IPC inter process communication Shared variabele based (H5) Message based (H6) Kan ook gebruikt worden in systemen.
GESPRG Les 12 Gestructureerd programmeren in C. 152 Huiswerk Uitwerking void reverse(int a[], int n) { int first = 0, last = n - 1; while (first < last)
GESPRG Les 7 Gestructureerd programmeren in C. 92 Verwisselen Schrijf een functie waarmee twee int variabelen verwisseld kunnen worden. void wissel(int.
Opgave 1a: afronden int n=5; double a, b, c, d; a = n * 1.5; b = n * 3 / 2; c = n / 2 * 3; d = 3 / 2 * n; a b c d
Eerste deeltoets Uitwerking. Resultaten Gemiddeld: 6,01 Tips voor de volgende keer: – Werk in klad uit, schrijf duidelijk – Oefenen met loops en tellertjes.
Hoorcollege 7 Collections, arrays. Programma ‘Snowflakes’ Sneeuwvlok object.
Inleiding programmeren in C++ Life Science & Technology 9 februari Universiteit Leiden.
JAVA1 H 22. COLLECTIONS FRAMEWORK. 1. INLEIDING. Collections framework Is een verzameling van data structuren, interfaces en algoritmen Meest voorkomende.
HOOFDSTUK 7 ARRAYS 7.1.     INLEIDING Array
Deel I: Programmeertaal C 6. Arrays en Pointers
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren 1 Les 3 - onderwerpen Het.
KPRES1 : C vervolg Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology Les 2 sheet 1 Wat gaan we doen:  Een (vaste) melodie.
Vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Onderwerpen voor vandaag Het ARM bord met wat library functies.
2PROJ5 – PIC assembler Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 1 Les 3 - onderwerpen Instruction timing Shadow.
DU2PRES1 : C vervolg Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Beginselen van C opgaves… volgende week: ARM.
Vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Onderwerpen voor vandaag GUI  command line redirection.
TOPIC O: Pointers | pag. 1 Pointer = adres in het geheugen, is zelf geen geheugen! Expliciet geheugen aanvragen vóór gebruik.
PHP & MYSQL LES 02 PHP & FORMULIEREN. PHP & MYSQL 01 PHP BASICS 02 PHP & FORMULIEREN 03 PHP & DATABASES 04 CMS: BEST PRACTICE.
Hoofdstuk 5 Interactie. Controls Form Label Button Label TextBox.
Algoritme Inhoud: Definitie algoritme Recursieve algoritmes Opgaven
C++ C++ als een verbetering van C Abstracte datatypen met classes Constructoren en destructoren Subklassen binding van functies 1.
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 C programmeren voor niet-C programmeurs les 2 definitie.
Tircms02-p les 4 Preprocessor In- en uitvoer Diversen.
Tircms03-p les 7 Standaardfuncties. In header opnemen bijv: using namespace std // C++ // oude C.
Tircms03-p les 2 Hfdst 3,4 Meer operatoren Functies.
Tircms02-p les 3 Functies Strings Structuren. Functies 1. main() 2. { int k; k = 10 ; printf(“%d\n”,fac(k)); } 3. int fac(n) int n; 4. { int f; f= 1;
Tircms02-p les 2 Meer operatoren Arrays en pointers Types en conversie.
tircms02-p les 1 Operating Systems practicum
1 PI1 week 9 Complexiteit Sorteren Zoeken. 2 Complexiteit van algoritmen Hoeveel werk kost het uitvoeren van een algoritme (efficiëntie)? –tel het aantal.
Havo 5: Stoffen en Materialen
VAN KEUKENBLAD TOT FRIKANDEL presentatie door Koen Ongkiehong
Jorismavo Examenvoorlichting
Klaar met de toets? Lees aandachtig het samenvattingenblad hst 6
Risico’s en de vertaling naar wettelijke uitgangspunten
Stedelijke bevolking 50% wereldwijd (70% verwacht) 75% in Europa
Co-creatie in de Master Health Care & Social Work
Maurits Hendriks Technisch Directeur Chef de Mission
Welkom Brussel, 25/02/2017.
Tinpro015b-les 1 C++ voor C-kenners Voor Technische Informatica.
Tinpro015b-les3 Hfdst 3,4 Meer operatoren Functies.
Tinpro015b-les6 Templates.
Software Development fundamentals
Gameprogrammeren: Arrays
Transcript van de presentatie:

GESPRG Les 8 Gestructureerd programmeren in C

101 Array Meerdere variabelen van hetzelfde type kun je samennemen in één array variabele. Stel in een embedded systeem wordt ieder uur de temperatuur gemeten en opgeslagen. Aparte variabele voor elk uur: double temp0, temp1, temp2, temp3, temp4, temp5, temp6, temp7, temp8, temp9, temp10, temp11, temp12, temp13, temp14, temp15, temp16, temp17, temp18, temp19, temp20, temp21, temp22, temp23; Array variabele: double temp[24]; Voordeel?

102 Array double temp[24]; Index begint bij 0. Element kan geselecteerd worden met index operator [] temp[2] = 4.1; temp[16] = 3.7; temp[12] = temp[2] + temp[16]; index In elk hokje past een double

103 Random access Elk array element kan net zo snel bereikt worden. Executietijd van temp[i] is onafhankelijk van de waarde van i. Hoe kan dat? adres van element i  beginadres van de array + i * aantal bytes per hokje &temp[i]  &temp[0] + i * sizeof temp[0] In elk hokje past een double

104 Voorbeeld array #include int main(void) { double temp[24], totaal; int i; for (i = 0; i < 24; i = i + 1) { printf("Geef temperatuur om %d uur: ", i); scanf("%lf", &temp[i]); } totaal = 0.0; for (i = 0; i < 24; i = i + 1) { totaal = totaal + temp[i]; } printf("Gem. temp. is %f graden.", totaal / 24); fflush(stdin); getchar(); return 0; }

105 Initialiseren int i = 8; int rij[] = { 23, 4, 2, 5 }; int rij[10] = { 23, 4, 2, 5 }; Aantal elementen hoeft niet opgegeven te worden (wordt in dit geval 4). Aantal elementen mag wel opgegeven te worden Elementen 4 t/m 9 worden in dit geval met 0 geïnitialiseerd.

106 Array en functies Array als returnwaarde. Niet mogelijk in C! Array als parameter. Altijd call by reference. Beginadres van de array wordt doorgegeven.

#include void leesin(double a[], int n) { int i; for (i = 0; i < n; i = i + 1) { printf("Geef element %d: ", i); scanf("%lf", &a[i]); } int main(void) { double d[5]; leesin(d, 5); … 107 Array functie parameter Beginadres van de array wordt doorgegeven! Aantal elementen moet als aparte parameter doorgegeven worden!

108 Array functie parameter #include void leesin(double a[], int n) { int i; for (i = 0; i < n; i = i + 1) { printf("Geef element %d: ", i); scanf("%lf", &a[i]); } int main(void) { double d[5]; leesin(&d[0], 5); … Alternatieve manier om argument door te geven

109 Array functie parameter #include void leesin(double *a, int n) { int i; for (i = 0; i < n; i = i + 1) { printf("Geef element %d: ", i); scanf("%lf", &a[i]); } int main(void) { double d[5]; leesin(d, 5); … Alternatieve manier om parameter te declareren

110 Array functie parameter #include void leesin(double *a, int n) { int i; for (i = 0; i < n; i = i + 1) { printf("Geef element %d: ", i); scanf("%lf", a + i); } int main(void) { double d[5]; leesin(d, 5); … Alternatieve manier om adres van element te specificeren &a[i]  a + i a[i]  *(a + i)

111 #include void leesin(double a[], int n) { int i; for (i = 0; i < n; i = i + 1) { printf("Geef element %d: ", i); scanf("%lf", &a[i]); } int main(void) { double d[5]; leesin(d, sizeof d / sizeof d[0]); … Alternatieve manier om aantal elementen door te geven Voordeel? Array functie parameter

112 Idee! WERKT NIET #include void leesin(double a[]) { int i; for (i = 0; i < sizeof a / sizeof a[0]; i = i + 1) { printf("Geef element %d: ", i); scanf("%lf", &a[i]); } int main(void) { double d[5]; leesin(d); … Er wordt niets ingelezen! sizeof a = size of adres!

113 Array functie parameter … double gem(double a[], int n) { int i; double totaal = 0.0; for (i = 0; i < n; i = i + 1) { totaal = totaal + a[i]; } if (n > 0) return totaal / n; else return 0; } int main(void) { double d[5]; size_t s = sizeof d / sizeof d[0]; leesin(d, s); printf("Het gemiddelde is %f", gem(d, s)); sizeof operator geeft getal van type size_t

114 Huiswerk Schrijf een functie reverse waarmee de inhoud van een rij gehele getallen omgedraaid kan worden. Als de rij de getallen 0, 1, 2 en 3 bevat dan moet de rij na afloop van de functie de getallen 3, 2, 1 en 0 bevatten. Bestudeer C boek: paragraaf 3.7. paragrafen 6.1, 6.4 en 6.6. Maak opdrachten: 8 van paragraaf 6.18.