P. 1 Vakgroep Informatietechnologie Scanf voorbeeld #include int main(void) { int i=-1,j=-1,k=-1,l=-1; int b; b=scanf("%d %d %d %d",&i,&j,&k,&l); printf("res=%d.

Slides:



Advertisements
Verwante presentaties

Advertisements

PROS2 Les 13 Programmeren en Software Engineering 2.
Objectgeoriënteerd Programmeren in C++




Embedded systemen Embedded software.
Instructie Programmeren Task 1 5JJ70. Task 1.1: Hello World •Klik naast de laatste accolade in de grijze kantlijn om een breakpoint neer te zetten, anders.
Vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Een programma opbouwen.
Componenten van een algoritme Variabelen en hun Inhoud Instructies Sekwenties (van instructies) Selecties (tussen instructies) Herhalingen (van instructies)
Ronde (Sport & Spel) Quiz Night !
BESTURINGS SYSTEMEN Vincent Naessens.
Gestructureerd programmeren in C
1 Device driver. 2 Hardware Operating Systeem Prog1Prog2 System calls/ API Device drivers Gebruiker afschermen van de hardware.
Inleiding programmeren in C++ Life Science & Technology 19 januari Universiteit Leiden.
GESPRG Les 14 Gestructureerd programmeren in C. 174 Details! The devil is in the details.

Instructie Programmeren Task 1 5JJ70. Task 1.1: Hello World Klik naast de laatste accolade in de grijze kantlijn om een breakpoint neer te zetten, anders.
Instructie Programmeren Debuggen 5JJ70. Debuggen: Wat is het probleem Je programma compileert, maar werkt niet zoals verwacht, wat nu? Vraag je af: wat.

Phoenix Contact ILC150ETH F. Rubben, Ing.. Phoenix Contact ILC150ETH F. Rubben, Ing.
Hoofdstuk 6: Controle structuren
1 SOCS Hoofdstuk 1 Computerarchitectuur. 2 Overzicht Eenvoudig C Arrays Functies Records Dynamische gegevenstructuren Macro’s C.
1 SOCS Hoofdstuk 1 Programmeertaal C. 2 Kenmerken van C Hogere programmeertaal  Grote verzameling types, strenge type controle  Zelf nieuwe types definiëren.
VHDL Peter Slaets KHLim Functies en procedures Functies –type conversie functies »bit vector to integer en omgekeerd –verkorte componenten met maar 1 output.
Parallelle Algoritmen String matching. 1 Beter algoritme patroonanalyse Bottleneck in eenvoudig algoritme: WITNESS(j) (j = kandidaat in eerste i-blok)
Numerieke Natuurkunde
MICPRG Les 11 Microcontroller Programmeren in C. 112 Datastructuren in C Werkgeheugen (PC en microcontroller): Statische datastructuren (vaste grootte):
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.
JAVA -- H51 CONSTRUCTOR –- COPY-CONSTRUCTOR 1Constructor: Dezelfde naam als de klasse Wordt uitgevoerd d.m.v. new Initialisatie van de (private) attributen.
Oefeningen Hoofdstuk 3.
Werken aan Intergenerationele Samenwerking en Expertise.
Algoritmiek Object-georiënteerd Programmeren
Algoritmiek Dataweergave en bewerking Hoorcollege 2 - Ma. 11 sept L.M. Bosveld-de Smet.
1 Datastructuren Introductie tot de programmeeropgaven in C++ Jan van Rijn
6.1 Inleiding HOOFDSTUK 6 METHODEN
Hoofdstuk 3: Inleiding tot Java Applets
Vakgroep Informatietechnologie – SoftwareOntwikkeling 1 SoftwareOntwikkeling 1 Conditionele compilatie in C met de macropreprocessor.
Deel I: Programmeertaal C 6. Arrays en Pointers
P. 1 Vakgroep Informatietechnologie Structuur Deel II C++ Classes Namespaces Type casting Reference types Constructors en Destructors Memory Management.
P. 1 Deel I: Programmeertaal C 4. Functies en Macro’s Prof.Dr.Ir. Filip De Turck.
Mail: Jan Zuurbier  Mail:
LauwersCollege Buitenpost Java Applet programma dat op een website zichtbaar is Java Application programma dat zelfstandig werkt Javascript Scripttaal.
Power PC Assembler. Assembler toolkit bevat Assembler zelf Linkerlibrarian.
Looking at Code Size and Performance Kevin Muys.  Hoe efficiënt is C++ vergeleken met C  Hoe beïnvloed C++ het benodigde geheugen  Oplossingen voor.
Opgave 1a: void nvoid staat in de header van een methode die geen resultaatwaarde heeft nde aanroep van een void-methode is dan een opdracht i.p.v. een.
Inleiding Informatica Prof. Dr. O. De Troyer Hoofdstuk 3: Werken met numerieke gegevens.
De financiële functie: Integrale bedrijfsanalyse©
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 C programmeren voor niet-C programmeurs les 2 definitie.
1 Zie ook identiteit.pdf willen denkenvoelen 5 Zie ook identiteit.pdf.
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.
Computertechniek 2 – ARM assembler Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1  programma draaien vanuit ROM.
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
Les 1: Zaterdag 10 mei 2014 Wim Peeters
JAVA: een platformonafhankelijke taal
PEMSY1http:// 1  Herhaling nieuwe instructies van vorige week  nieuw: combineren van assembler en C  oefeningen: assembler.
AWK A Pattern scanning and processing language made by Aho Weinberger Kernighan and explained by Albert Montijn.
Tircms03-p les 1 C++ voor C-kenners Voor Technische Informatica.
Programma zonder window commandline interface. Commandline programma public static void main (String [ ] params) { System. out. println (“Hoi allemaal!”);
De laatste essentiele dingen.  Classes ◦ Syntax ◦ Constructors & Destructors  Header & Source Files ◦ Waar gebruiken we dit voor  Compiler Theorie.
Java voor beginners Doel: Een spel maken in LWJGL Door: Jim van Leeuwen.
De programmeertaal C++
Tinpro015b-les 1 C++ voor C-kenners Voor Technische Informatica.
Tinpro015b-les3 Hfdst 3,4 Meer operatoren Functies.
Transcript van de presentatie:

p. 1 Vakgroep Informatietechnologie Scanf voorbeeld #include int main(void) { int i=-1,j=-1,k=-1,l=-1; int b; b=scanf("%d %d %d %d",&i,&j,&k,&l); printf("res=%d ",b); printf("i=%d j=%d k=%d l=%d\n", i,j,k,l); return 0; } > res=4 i=5 j=6 k=7 l=8 5 6 * 9 -> res=2 i=5 j=6 k=-1 l= > res=4 i=5 j=6 k=7 l=8 (zie verder blz )

p. 2 Vakgroep Informatietechnologie Variabele argumenten / Macro Cfr boek blz 435 Macro voorbeeld: /* stringization.c */ #include #define PRINTVAR(t,x)printf(" "#x " = %" #t" ",x) int main(void) { double d=1.0; char c='a'; d+=c; PRINTVAR(f,d); PRINTVAR(c,c); return 0; } Output: d = c = a Boek blz. 64: string-constanten die door wit ruimte van elkaar gescheiden zijn, worden door de compiler tot een enkele string aaneengeregen.

p. 3 Vakgroep Informatietechnologie Prefix / Postfix operator n = ++a + a++; (gcc: a=10 -> n=22, a=12) n = a++ + a++; (gcc: a=10 -> n=20, a=12) Machine afhankelijk (mogelijks compiler warning) (cfr boek blz 79, oef 15) Sterk afgeraden om tweemaal prefix/ postfix operator op dezelfde variable te gebruiken!

p. 4 Deel I: Programmeertaal C 5. Programma Modulariteit en Preprocessor Prof.Dr.Ir. Filip De Turck

p. 5 Vakgroep Informatietechnologie Typisch C-bestand #include #definePI void einde(void); int main(void) { double pi_2; pi_2=PI*PI; printf("Het kwadraat van pi is %lf\n",pi_2); einde(); return 0; } void einde(void) { printf("Einde programma...\n"); } Preprocessor instructies Globale declaraties Module “main” Module “einde”

p. 6 Vakgroep Informatietechnologie Typisch C-bestand Preprocessor instructies Globale declaraties Module “main” Module A Module B Module... opdrachten Declaratie Assignatie Functie-oproep Controle Lege opdracht

p. 7 Vakgroep Informatietechnologie C-programma C-bestand module 1 module 2 module 3... C-bestand module 1 module 2 module 3... C-bestand module 1 module 2 module 3... linker modules kunnen naar elkaar verwijzen module-namen uniek ! slechts 1 module main() per executable !

p. 8 Vakgroep Informatietechnologie Header files bestand1.c  module 1  module 2  module 3 ... bestand2.c  module 1  module 2  module 3 ... Probleem: Bij compilatie bestand1.c moet nagekeken worden of oproep geldig is! correct aantal argumenten correct type argumenten correct return type oproep Slechte oplossing : globale declaratie letterlijk in bestand1.c opnemen (waarom slecht?)

p. 9 Vakgroep Informatietechnologie C oplossing: header files bestand1.c  module 1  module 2  module 3 ... bestand2.c  module 1  module 2  module 3 ... oproep bestand2.h “black box” beschrijving extern toegankelijke modules #include “bestand2.h”

p. 10 Vakgroep Informatietechnologie Header file & library i2c.h... /* i2ctimer.c */ int time_cmd(COMMAND_PARAMS *cmdbuff); void rst_timer_isr(void); void timer_init (void); void prnt_time(void); void asctime(void); i2c.o _time_cmd _rst_timer_isr _timer_init _prnt_time _asctime main.c... #include int main(void) {… rst_timer_isr(); …} Compile Link i2c executable !

p. 11 Vakgroep Informatietechnologie C-taal systeem Standaard C-header bestanden Gecompileerde C-bibliotheken Eigen C-bestanden Eigen header-bestanden # include # include “eigen.h”... C-systeem Beschikbaar op het systeem

p. 12 Vakgroep Informatietechnologie Modules in C C-bestand  module 1  module 2  module 3 ... C-bestand  module 1  module 2  module 3 ... C-bestand  module 1  module 2  module 3 ...  gestructureerd paradigma basisbouwsteen = functie  modulariteit op hoger niveau (niet opgelegd in C) basisbouwsteen = compilatie-eenheid  C++, Java: basisbouwsteen = klasse Compilatie-eenheid

p. 13 Vakgroep Informatietechnologie Naamgeving bestanden Windows-familieUNIX-familie Bronbestand*.c*.c Objectbestand*.obj*.o Bibliotheekbestand*.lib*.a Uitvoerbaar bestand*.exea.out

p. 14 Vakgroep Informatietechnologie De C preprocessor  Conditionele compiliatie  Voorgedefinieerde macro’s  Assert macro  Implementatie van modulariteit: include files TEST.h TEST.c PreprocessorCompiler TEST.o

p. 15 Vakgroep Informatietechnologie De C preprocessor: conditionele compilatie Doel :  portabiliteit  faciliteit tijdens ontwikkeling #if #ifdef #ifndef … #endif gecompileerd indien !=0 gedefinieerd niet gedefinieerd verwante directieven: #else en #elif

p. 16 Vakgroep Informatietechnologie Conditionele compilatie: sleutelwoorden #ifdef logische operatoren &&,|| en ! toegelaten #if defined(HP)&&(defined(DEBUG)||defined(TEST)) printf(“Voorlopige versie voor HP”); #endif #if defined #if defined( ) #undef

p. 17 Vakgroep Informatietechnologie Conditionele compilatie: portabiliteit Portabiliteit #define MAC #include … #ifdef MAC #include #elif defined SUN #include #else #include #endif header1.h

p. 18 Vakgroep Informatietechnologie Conditionele compilatie Ontwikkeling #define DEBUG … #ifdef DEBUG printf(“a= %d”,a); #endif …

p. 19 Vakgroep Informatietechnologie C preprocessor: voorgedefinieerde macro’s  __DATE__ string met de datum  __FILE__ string met de filename  __LINE__ integer huidige lijnnummer  __STDC__ ANSI C (1) of niet (!=1)  __TIME__ string met de tijd #line wijzigt de waarde van __LINE__ en __FILE__ Blz

p. 20 Vakgroep Informatietechnologie Voorgedefinieerde macro’s: voorbeeld #include #define VERSION "Release 3.0" #define DEBUG void main() { short volatile timer; printf(" Release information: %s \n %s \n", VERSION, __FILE__ ); printf(" Modification on %s at %s \n", __DATE__, __TIME__); #ifdef DEBUG printf("DEBUG> at line %d: value of local timer : %d \n\n", __LINE__, timer); #endif }

p. 21 Vakgroep Informatietechnologie Uitvoering voorgedefinieerde macro’s Release information: Release 3.0 C:\Courses\Examples\Predefined_macros.c Modification on Oktober at 15:37:03 DEBUG> at line 15: value of local timer : Press any key to continue

p. 22 Vakgroep Informatietechnologie De C preprocessor: Assert macro Assert  Biedt de mogelijkheid om een runtime check op een expressie uit te voeren.  Als de assert() faalt: abort() wordt opgeroepen. printf(”Integer input range in [0;10]: \n"); scanf("%d", &input); assert(input > 0 && input <10); Blz

p. 23 Vakgroep Informatietechnologie Uitvoering assert() Integer input range in [0,10]: 88 Assertion failed: input > 0 && input <10, file C:\Courses\Predefined_macros.c, line 19 Press any key to continue

p. 24 Vakgroep Informatietechnologie Compile time checks: #error #ifdef MOTOROLA #error ERROR: Only Mac or Win32 targets supported! #endif Compiling... Predefined_macros.cpp C:\Courses\Examples\Predefined_macros.c (10) : fatal error C1189: #error : ERROR: Only Mac or Win32 targets supported! Error executing cl.exe.