Académique Documents
Professionnel Documents
Culture Documents
15 mai 2006
Avant-propos
Ce cours en libre acc`s repose sur trois partis pris : e le choix dun langage algorithmique minimal, francis ; e le choix du langage C, mais en utilisant le compilateur C++, pour bncier damliorations reconnues en gnie logiciel ; e e e e enn le choix dun logiciel libre : Dev-C++ (environnement de dveloppement intgr tlchargeable sur le site e e e ee http ://www.bloodshed.net).
Cette deuxi`me version est destine ` voluer en fonction des e e ae remarques mises. e
Avant-propos
Ce cours en libre acc`s repose sur trois partis pris : e le choix dun langage algorithmique minimal, francis ; e le choix du langage C, mais en utilisant le compilateur C++, pour bncier damliorations reconnues en gnie logiciel ; e e e e enn le choix dun logiciel libre : Dev-C++ (environnement de dveloppement intgr tlchargeable sur le site e e e ee http ://www.bloodshed.net).
Cette deuxi`me version est destine ` voluer en fonction des e e ae remarques mises. e
Avant-propos
Ce cours en libre acc`s repose sur trois partis pris : e le choix dun langage algorithmique minimal, francis ; e le choix du langage C, mais en utilisant le compilateur C++, pour bncier damliorations reconnues en gnie logiciel ; e e e e enn le choix dun logiciel libre : Dev-C++ (environnement de dveloppement intgr tlchargeable sur le site e e e ee http ://www.bloodshed.net).
Cette deuxi`me version est destine ` voluer en fonction des e e ae remarques mises. e
Remerciements
Les corrections des versions prcdentes doivent beaucoup ` e e a rey, Georges Vincents, Fanny Jambon et Michelle Nicolas Fe Cordeau, ` qui je sais gr de leurs conseils ou lectures attentives. a e
Sommaire de la Partie 1
Introduction ` linformatique a Environnement matriel e Environnement logiciel Langages Production des programmes Historique Mthodologie e
Sommaire de la Partie 2
Les bases de la programmation Algorithme C Programme Importance des notations Types de base Variable et aectation Entres/Sorties e Instruction Condition Trace dun algorithme
Sommaire de la Partie 3
Les instructions en algorithmique et en C Oprateurs arithmtiques e e Oprateurs relationnels e Oprateurs boolens e e Oprateurs binaires e Priorits des oprateurs e e
Sommaire de la Partie 4
Les structures en algorithmique et en C Slection e Boucle Faire .. TantQue Boucle TantQue .. FinTantQue Boucle Pour .. FinPour Ruptures de boucle
Sommaire de la Partie 5
Sommaire de la Partie 6
Les pointeurs, tableaux et procdures e Procdures e Pointeurs Passage des arguments par adresse Relation avec les tableaux
Sommaire de la Partie 7
Quelques aspects avancs du langage C e Entres/Sorties sur chiers e Cha nes de caract`res e Structures Allocation programme e Arguments du main()
Lordinateur
Dnition e Automate dterministe ` composants lectroniques. e a e Lordinateur comprend entre autres : un microprocesseur avec une UC (Unit de Contrle), une e o UAL (Unit Arithmtique et Logique), une horloge, une e e mmoire cache rapide ; e de la mmoire vive (RAM), contenant les instructions et les e donnes. La RAM est forme de cellules binaires organises en e e e mot de 8 bits (octet) ; des priphriques : entres/sorties, mmoires mortes (disque e e e e dur, CD-ROM. . . ), rseau. . . e
Lordinateur
Dnition e Automate dterministe ` composants lectroniques. e a e Lordinateur comprend entre autres : un microprocesseur avec une UC (Unit de Contrle), une e o UAL (Unit Arithmtique et Logique), une horloge, une e e mmoire cache rapide ; e de la mmoire vive (RAM), contenant les instructions et les e donnes. La RAM est forme de cellules binaires organises en e e e mot de 8 bits (octet) ; des priphriques : entres/sorties, mmoires mortes (disque e e e e dur, CD-ROM. . . ), rseau. . . e
Lordinateur
Dnition e Automate dterministe ` composants lectroniques. e a e Lordinateur comprend entre autres : un microprocesseur avec une UC (Unit de Contrle), une e o UAL (Unit Arithmtique et Logique), une horloge, une e e mmoire cache rapide ; e de la mmoire vive (RAM), contenant les instructions et les e donnes. La RAM est forme de cellules binaires organises en e e e mot de 8 bits (octet) ; des priphriques : entres/sorties, mmoires mortes (disque e e e e dur, CD-ROM. . . ), rseau. . . e
Lordinateur
Dnition e Automate dterministe ` composants lectroniques. e a e Lordinateur comprend entre autres : un microprocesseur avec une UC (Unit de Contrle), une e o UAL (Unit Arithmtique et Logique), une horloge, une e e mmoire cache rapide ; e de la mmoire vive (RAM), contenant les instructions et les e donnes. La RAM est forme de cellules binaires organises en e e e mot de 8 bits (octet) ; des priphriques : entres/sorties, mmoires mortes (disque e e e e dur, CD-ROM. . . ), rseau. . . e
Le syst`me dexploitation : ensemble des programmes qui e g`rent les ressources matrielles et logicielles ; il propose une e e aide au dialogue entre lutilisateur et lordinateur : linterface textuelle (interpr`te de commande) ou graphique (gestionnaire e de fentres). Il est souvent multitche et parfois e a multiutilisateur ; les programmes applicatifs ddis ` des tches particuli`res. Ils e e a a e sont forms dune srie de commandes contenues dans un e e programme source crit dans un langage compris par e lordinateur.
Le syst`me dexploitation : ensemble des programmes qui e g`rent les ressources matrielles et logicielles ; il propose une e e aide au dialogue entre lutilisateur et lordinateur : linterface textuelle (interpr`te de commande) ou graphique (gestionnaire e de fentres). Il est souvent multitche et parfois e a multiutilisateur ; les programmes applicatifs ddis ` des tches particuli`res. Ils e e a a e sont forms dune srie de commandes contenues dans un e e programme source crit dans un langage compris par e lordinateur.
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Introduction ` linformatique a Production des programmes
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Introduction ` linformatique a Production des programmes
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Introduction ` linformatique a Production des programmes
Annes 50 (approches exprimentales) : FORTRAN, LISP, e e COBOL. . . Annes 60 (langages universels) : ALGOL, PL/1, PASCAL. . . e Annes 70 (gnie logiciel) : C, MODULA-2, ADA. . . e e Annes 8090 (programmation objet) : C++, Labview, Eiel, e Matlab. . . Annes 902000 (langages interprts objet) : Java, Perl, e ee tcl/Tk, Ruby, Python. . . Parmi des centaines de langages crs, une minorit est vraiment ee e utilise. e
Annes 50 (approches exprimentales) : FORTRAN, LISP, e e COBOL. . . Annes 60 (langages universels) : ALGOL, PL/1, PASCAL. . . e Annes 70 (gnie logiciel) : C, MODULA-2, ADA. . . e e Annes 8090 (programmation objet) : C++, Labview, Eiel, e Matlab. . . Annes 902000 (langages interprts objet) : Java, Perl, e ee tcl/Tk, Ruby, Python. . . Parmi des centaines de langages crs, une minorit est vraiment ee e utilise. e
Annes 50 (approches exprimentales) : FORTRAN, LISP, e e COBOL. . . Annes 60 (langages universels) : ALGOL, PL/1, PASCAL. . . e Annes 70 (gnie logiciel) : C, MODULA-2, ADA. . . e e Annes 8090 (programmation objet) : C++, Labview, Eiel, e Matlab. . . Annes 902000 (langages interprts objet) : Java, Perl, e ee tcl/Tk, Ruby, Python. . . Parmi des centaines de langages crs, une minorit est vraiment ee e utilise. e
Annes 50 (approches exprimentales) : FORTRAN, LISP, e e COBOL. . . Annes 60 (langages universels) : ALGOL, PL/1, PASCAL. . . e Annes 70 (gnie logiciel) : C, MODULA-2, ADA. . . e e Annes 8090 (programmation objet) : C++, Labview, Eiel, e Matlab. . . Annes 902000 (langages interprts objet) : Java, Perl, e ee tcl/Tk, Ruby, Python. . . Parmi des centaines de langages crs, une minorit est vraiment ee e utilise. e
Annes 50 (approches exprimentales) : FORTRAN, LISP, e e COBOL. . . Annes 60 (langages universels) : ALGOL, PL/1, PASCAL. . . e Annes 70 (gnie logiciel) : C, MODULA-2, ADA. . . e e Annes 8090 (programmation objet) : C++, Labview, Eiel, e Matlab. . . Annes 902000 (langages interprts objet) : Java, Perl, e ee tcl/Tk, Ruby, Python. . . Parmi des centaines de langages crs, une minorit est vraiment ee e utilise. e
Dnition e Moyen datteindre un but en rptant un nombre ni de fois un e e nombre ni dinstructions. Donc, un algorithme se termine en un temps ni.
Dnition e Moyen datteindre un but en rptant un nombre ni de fois un e e nombre ni dinstructions. Donc, un algorithme se termine en un temps ni.
on double la racine courante : 1 2 = 2 on cherche n tel que 2n n 278. Soit n = 9 on retire 29 9 = 261 du reste. Soit 17 on abaisse le groupe suivant : 1715
Le langage algorithmique
Lexemple prcdent illustre la dicult de dcrire compl`tement e e e e e et sans ambigu e un processus non trivial. Do` le besoin de t u formaliser un langage de description des algorithmes. Le langage algorithmique choisi doit tre simple, clair et prcis. e e Nous utiliserons un langage francis form dune vingtaine de mots e e rservs. e e
Le langage algorithmique
Lexemple prcdent illustre la dicult de dcrire compl`tement e e e e e et sans ambigu e un processus non trivial. Do` le besoin de t u formaliser un langage de description des algorithmes. Le langage algorithmique choisi doit tre simple, clair et prcis. e e Nous utiliserons un langage francis form dune vingtaine de mots e e rservs. e e
Le langage algorithmique
Lexemple prcdent illustre la dicult de dcrire compl`tement e e e e e et sans ambigu e un processus non trivial. Do` le besoin de t u formaliser un langage de description des algorithmes. Le langage algorithmique choisi doit tre simple, clair et prcis. e e Nous utiliserons un langage francis form dune vingtaine de mots e e rservs. e e
On y ajoutera des fonctions utiles, par exemple : Alea(n), qui fournit un entier au hasard entre 0 et n 1, plus toutes les fonctions mathmatiques usuelles : sin(x), arccos(x), e tanh(x), log(x). . .
On y ajoutera des fonctions utiles, par exemple : Alea(n), qui fournit un entier au hasard entre 0 et n 1, plus toutes les fonctions mathmatiques usuelles : sin(x), arccos(x), e tanh(x), log(x). . .
restrict return short signed sizeof static struct switch typedef union
Programme et algorithme
Dnition e Un programme est la traduction dun algorithme en un langage compilable ou interprtable par un ordinateur. e Il est souvent crit en plusieurs parties, dont une qui pilote les e autres, le programme principal.
Programme et algorithme
Dnition e Un programme est la traduction dun algorithme en un langage compilable ou interprtable par un ordinateur. e Il est souvent crit en plusieurs parties, dont une qui pilote les e autres, le programme principal.
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Les bases de la programmation Importance des notations
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Les bases de la programmation Importance des notations
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Les bases de la programmation Importance des notations
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Les bases de la programmation Importance des notations
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Les bases de la programmation Importance des notations
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Les bases de la programmation Types de base
Le type boolen e
Ensemble de dnition : B = {FAUX , VRAI } e Oprations boolennes : e e Non boolen e a VRAI FAUX NON(a) FAUX VRAI OU et ET boolens e a FAUX FAUX VRAI VRAI b FAUX VRAI FAUX VRAI a OU b a ET b FAUX FAUX VRAI FAUX VRAI FAUX VRAI VRAI
a, b : bool e en
bool a, b ;
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Les bases de la programmation Types de base
Le type boolen e
Ensemble de dnition : B = {FAUX , VRAI } e Oprations boolennes : e e Non boolen e a VRAI FAUX NON(a) FAUX VRAI OU et ET boolens e a FAUX FAUX VRAI VRAI b FAUX VRAI FAUX VRAI a OU b a ET b FAUX FAUX VRAI FAUX VRAI FAUX VRAI VRAI
a, b : bool e en
bool a, b ;
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Les bases de la programmation Types de base
Le type boolen e
Ensemble de dnition : B = {FAUX , VRAI } e Oprations boolennes : e e Non boolen e a VRAI FAUX NON(a) FAUX VRAI OU et ET boolens e a FAUX FAUX VRAI VRAI b FAUX VRAI FAUX VRAI a OU b a ET b FAUX FAUX VRAI FAUX VRAI FAUX VRAI VRAI
a, b : bool e en
bool a, b ;
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Les bases de la programmation Types de base
Le type boolen e
Ensemble de dnition : B = {FAUX , VRAI } e Oprations boolennes : e e Non boolen e a VRAI FAUX NON(a) FAUX VRAI OU et ET boolens e a FAUX FAUX VRAI VRAI b FAUX VRAI FAUX VRAI a OU b a ET b FAUX FAUX VRAI FAUX VRAI FAUX VRAI VRAI
a, b : bool e en
bool a, b ;
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Les bases de la programmation Types de base
Le type entier
n1, n2 : entier
int n1, n2 ;
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Les bases de la programmation Types de base
Le type entier
n1, n2 : entier
int n1, n2 ;
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Les bases de la programmation Types de base
Le type entier
n1, n2 : entier
int n1, n2 ;
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Les bases de la programmation Types de base
Le type entier
n1, n2 : entier
int n1, n2 ;
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Les bases de la programmation Types de base
Le type ottant
x1, x2 : ottant
float x1, x2 ;
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Les bases de la programmation Types de base
Le type ottant
x1, x2 : ottant
float x1, x2 ;
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Les bases de la programmation Types de base
Le type ottant
x1, x2 : ottant
float x1, x2 ;
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Les bases de la programmation Types de base
Le type ottant
x1, x2 : ottant
float x1, x2 ;
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Les bases de la programmation Types de base
Le type caract`re e
c1, c2 : caract`re e
char c1, c2 ;
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Les bases de la programmation Types de base
Le type caract`re e
c1, c2 : caract`re e
char c1, c2 ;
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Les bases de la programmation Types de base
Le type caract`re e
c1, c2 : caract`re e
char c1, c2 ;
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Les bases de la programmation Types de base
Le type caract`re e
c1, c2 : caract`re e
char c1, c2 ;
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Les bases de la programmation Types de base
La table ASCII code tous les caract`res usuels (tats-uniens) sur 7 e e bits (128 positions). Sur un octet (8 bits), en C, on dispose : du type char dni sur [128..127] ; e du type unsigned char dni sur [0..255]. e
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Les bases de la programmation Types de base
La table ASCII code tous les caract`res usuels (tats-uniens) sur 7 e e bits (128 positions). Sur un octet (8 bits), en C, on dispose : du type char dni sur [128..127] ; e du type unsigned char dni sur [0..255]. e
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Les bases de la programmation Types de base
Le type int en C peut tre quali par un modicateur. e e Avec Dev-C++ sous Windows : short int (2 octets) : [32768..32767] unsigned short int (2 octets) : [0..65535] int (4 octets) : [2147483648..2147483647] unsigned int (4 octets) : [0..4294967295] long int (4 octets) : [2147483648..2147483647] unsigned long int (4 octets) : [0..4294927295]
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Les bases de la programmation Types de base
Il existe deux types ottant en C : float et double. Avec Dev-C++ sous Windows : float (4 octets) : [1.17549435 1038 ..3.40282347 1038 ] double (8 octets) : [2.225073858507201410308 ..1.797693134862315810308 ]
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Les bases de la programmation Variable et aectation
Les variables
Variable Cest un nom donn ` une valeur. ea Un nom de variable reprsente une et une seule valeur qui peut e voluer au cours du temps (la valeur antrieure est perdue). e e Dclaration e On dclare une variable en lui donnant un nom et un type. e Dclaration algorithmique : e Dclaration C : e tension, puissance : ottant
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Les bases de la programmation Variable et aectation
Les variables
Variable Cest un nom donn ` une valeur. ea Un nom de variable reprsente une et une seule valeur qui peut e voluer au cours du temps (la valeur antrieure est perdue). e e Dclaration e On dclare une variable en lui donnant un nom et un type. e Dclaration algorithmique : e Dclaration C : e tension, puissance : ottant
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Les bases de la programmation Variable et aectation
Les variables
Variable Cest un nom donn ` une valeur. ea Un nom de variable reprsente une et une seule valeur qui peut e voluer au cours du temps (la valeur antrieure est perdue). e e Dclaration e On dclare une variable en lui donnant un nom et un type. e Dclaration algorithmique : e Dclaration C : e tension, puissance : ottant
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Les bases de la programmation Variable et aectation
Les variables
Variable Cest un nom donn ` une valeur. ea Un nom de variable reprsente une et une seule valeur qui peut e voluer au cours du temps (la valeur antrieure est perdue). e e Dclaration e On dclare une variable en lui donnant un nom et un type. e Dclaration algorithmique : e Dclaration C : e tension, puissance : ottant
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Les bases de la programmation Variable et aectation
Laectation
Dnition e Cest lopration qui permet de donner une valeur ` une variable. e a Dans une aectation, le membre de gauche reoit le membre de c droite (ce qui ncessite deux temps dhorloge dirents). e e Notations algorithmiques : index 3 i i +1 Notations C : index = 3 ; // Attention ! i = i + 1 ; // ce nest pas lgalit mathmatique e e e
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Les bases de la programmation Variable et aectation
Laectation
Dnition e Cest lopration qui permet de donner une valeur ` une variable. e a Dans une aectation, le membre de gauche reoit le membre de c droite (ce qui ncessite deux temps dhorloge dirents). e e Notations algorithmiques : index 3 i i +1 Notations C : index = 3 ; // Attention ! i = i + 1 ; // ce nest pas lgalit mathmatique e e e
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Les bases de la programmation Variable et aectation
Laectation
Dnition e Cest lopration qui permet de donner une valeur ` une variable. e a Dans une aectation, le membre de gauche reoit le membre de c droite (ce qui ncessite deux temps dhorloge dirents). e e Notations algorithmiques : index 3 i i +1 Notations C : index = 3 ; // Attention ! i = i + 1 ; // ce nest pas lgalit mathmatique e e e
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Les bases de la programmation Variable et aectation
Les constantes
Dnition e Cest une variable qui ne change pas de valeur au cours du programme. Une constante doit toujours recevoir une valeur d`s sa dclaration. e e Notation algorithmique : Notation C : phi 1.618 : ottant
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Les bases de la programmation Variable et aectation
Les constantes
Dnition e Cest une variable qui ne change pas de valeur au cours du programme. Une constante doit toujours recevoir une valeur d`s sa dclaration. e e Notation algorithmique : Notation C : phi 1.618 : ottant
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Les bases de la programmation Variable et aectation
Les constantes
Dnition e Cest une variable qui ne change pas de valeur au cours du programme. Une constante doit toujours recevoir une valeur d`s sa dclaration. e e Notation algorithmique : Notation C : phi 1.618 : ottant
Les entres/sorties e
Ces deux oprations de base permettent de dialoguer : soit on e saisit une valeur (i-e lordinateur attend une valeur pour une variable), soit on lache ` lcran. a e Notations algorithmiques : AFFICHER(Entrez une couleur primaire) SAISIR(couleurPrim) Notations C : cout << "Entrez une couleur primaire" ; cin >> couleurPrim ;
Les entres/sorties e
Ces deux oprations de base permettent de dialoguer : soit on e saisit une valeur (i-e lordinateur attend une valeur pour une variable), soit on lache ` lcran. a e Notations algorithmiques : AFFICHER(Entrez une couleur primaire) SAISIR(couleurPrim) Notations C : cout << "Entrez une couleur primaire" ; cin >> couleurPrim ;
Les entres/sorties e
Ces deux oprations de base permettent de dialoguer : soit on e saisit une valeur (i-e lordinateur attend une valeur pour une variable), soit on lache ` lcran. a e Notations algorithmiques : AFFICHER(Entrez une couleur primaire) SAISIR(couleurPrim) Notations C : cout << "Entrez une couleur primaire" ; cin >> couleurPrim ;
Une instruction est une expression du langage qui peut tre e soit simple soit compose (on parle alors dun bloc e dinstructions). En algorithmique :
on crit une instruction simple par ligne ; e un bloc dinstruction, dans une structure, est dlimit par un e e dbut et une n. e
en C :
une instruction simple est suivie par un terminateur ( ;) le point virgule ; un bloc dinstructions est un ensemble dinstructions simples, encadr par une paire daccolades : { bloc instructions }. e
Une instruction est une expression du langage qui peut tre e soit simple soit compose (on parle alors dun bloc e dinstructions). En algorithmique :
on crit une instruction simple par ligne ; e un bloc dinstruction, dans une structure, est dlimit par un e e dbut et une n. e
en C :
une instruction simple est suivie par un terminateur ( ;) le point virgule ; un bloc dinstructions est un ensemble dinstructions simples, encadr par une paire daccolades : { bloc instructions }. e
Une instruction est une expression du langage qui peut tre e soit simple soit compose (on parle alors dun bloc e dinstructions). En algorithmique :
on crit une instruction simple par ligne ; e un bloc dinstruction, dans une structure, est dlimit par un e e dbut et une n. e
en C :
une instruction simple est suivie par un terminateur ( ;) le point virgule ; un bloc dinstructions est un ensemble dinstructions simples, encadr par une paire daccolades : { bloc instructions }. e
. . . et de choix logiques
Dnition e Une condition est une expression crite entre parenth`ses ` valeur e e a boolenne. e Une condition permet de prendre une dcision lmentaire suivant e ee son rsultat : VRAI ou FAUX . e Dans un langage, les conditions sont mises en uvre par des structures de contrle. o
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Les bases de la programmation Trace dun algorithme
Cette technique permet de suivre pas ` pas lexcution dun a e algorithme. On numrote les instructions de lalgorithme et, dans un tableau, e on suit lvolution des variables intressantes : e e Algorithme inconnu DbutDclaration e e a, b : entier FinDclaration e 1 a4 2 b 11 3 aba 4 b ba 5 aa+b Trace de lalgorithme No 1 2 3 4 5 a 4 7 4 11 b 11
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Les bases de la programmation Trace dun algorithme
Cette technique permet de suivre pas ` pas lexcution dun a e algorithme. On numrote les instructions de lalgorithme et, dans un tableau, e on suit lvolution des variables intressantes : e e Algorithme inconnu DbutDclaration e e a, b : entier FinDclaration e 1 a4 2 b 11 3 aba 4 b ba 5 aa+b Trace de lalgorithme No 1 2 3 4 5 a 4 7 4 11 b 11
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Les bases de la programmation Trace dun algorithme
Cette technique permet de suivre pas ` pas lexcution dun a e algorithme. On numrote les instructions de lalgorithme et, dans un tableau, e on suit lvolution des variables intressantes : e e Algorithme inconnu DbutDclaration e e a, b : entier FinDclaration e 1 a4 2 b 11 3 aba 4 b ba 5 aa+b Trace de lalgorithme No 1 2 3 4 5 a 4 7 4 11 b 11
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Les instructions en algorithmique et en C Oprateurs arithmtiques e e
a+b ab a ab a/b a%b (attention ` la division enti`re) a e (pour les types entiers) pr : ++a ou post : a++ e pr : --a ou post : a-e
incrmentation ++ e dcrmentation -e e
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Les instructions en algorithmique et en C Oprateurs relationnels e
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Les instructions en algorithmique et en C Oprateurs boolens e e
oprateur e ngation e ou et
algorithmique NON(a) a OU b a ET b
C !a a || b a && b
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Les instructions en algorithmique et en C Oprateurs binaires e
Ces oprateurs C, tr`s proches de la machine, servent ` manipuler e e a des mots bit ` bit, par exemple pour faire des masques : a et binaire & ou binaire | a & b a | b a ^ b a << b a >> b ~a (ngation bit ` bit) e a
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Les instructions en algorithmique et en C Priorits des oprateurs e e
Il est sage dutiliser la r`gle pratique suivante : e Niveau de priorit e 1 2 Oprateurs e * + arithmtiques e / -
Slection simple : notation algorithmique e Si (condition) bloc instructions FinSi Slection simple : notation C e
if(condition) bloc_instructions
Slection simple : notation algorithmique e Si (condition) bloc instructions FinSi Slection simple : notation C e
if(condition) bloc_instructions
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Les structures en algorithmique et en C Boucle Faire .. TantQue
Boucle Faire .. TantQue : notation algorithmique Faire bloc instructions TantQue(condition) Boucle Faire .. TantQue : notation C
do bloc_instructions while(condition);
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Les structures en algorithmique et en C Boucle Faire .. TantQue
Boucle Faire .. TantQue : notation algorithmique Faire bloc instructions TantQue(condition) Boucle Faire .. TantQue : notation C
do bloc_instructions while(condition);
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Les structures en algorithmique et en C Boucle Faire .. TantQue
Faire exemple 2 de saisie ltre e Acher(Entrez un entier [4..9] : ) Saisir(n) TantQue((n < 4)OU(n > 9))
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Les structures en algorithmique et en C Boucle Faire .. TantQue
do // Exemple 1 de saisie filtree { cout << "Entrez un entier < 4 : "; cin >> n; } while(n >= 4);
do // Exemple 2 de saisie filtree { cout << "Entrez un entier [4 .. 9] : "; cin >> n; } while((n < 4) || (n > 9));
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Les structures en algorithmique et en C Boucle TantQue .. FinTantQue
Boucle TantQue .. FinTantQue TantQue (condition) bloc instructions FinTantQue Boucle Faire .. TantQue : notation C
while(condition) bloc_instructions
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Les structures en algorithmique et en C Boucle TantQue .. FinTantQue
Boucle TantQue .. FinTantQue TantQue (condition) bloc instructions FinTantQue Boucle Faire .. TantQue : notation C
while(condition) bloc_instructions
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Les structures en algorithmique et en C Boucle TantQue .. FinTantQue
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Les structures en algorithmique et en C Boucle TantQue .. FinTantQue
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Les structures en algorithmique et en C Boucle Pour .. FinPour
O` expression 1 initialise la variable de contrle, expression 2 u o donne la condition de rebouclage et expression 3 incrmente la e variable de contrle en n de bloc instructions. o
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Les structures en algorithmique et en C Boucle Pour .. FinPour
O` expression 1 initialise la variable de contrle, expression 2 u o donne la condition de rebouclage et expression 3 incrmente la e variable de contrle en n de bloc instructions. o
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Les structures en algorithmique et en C Boucle Pour .. FinPour
DbutProgramme e Calcul de factorielle 5 DbutDclaration e e n 5, fact 1, cpt : entier FinDclaration e Pour cpt Dans [1..n] ParPasDe 1 fact fact*cpt FinPour Acher(5 ! = , fact) FinProgramme
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Les structures en algorithmique et en C Boucle Pour .. FinPour
#include <iostream> using namespace std; int main(void) { long n = 5, fact = 1; for(long cpt = 1; cpt <= n; cpt = cpt + 1) { fact = fact * cpt; } cout << n << "! = " << fact << endl << endl; system("PAUSE"); return 0; }
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Les structures en algorithmique et en C Ruptures de boucle
Le langage C ore deux instructions : break provoque la n prmature de la boucle while, do ou e e for qui contient directement le break ; continue provoque le rebouclage immdiat, comme si on e venait dexcuter la derni`re instruction du corps de la boucle. e e
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Les structures en algorithmique et en C Ruptures de boucle
Le langage C ore deux instructions : break provoque la n prmature de la boucle while, do ou e e for qui contient directement le break ; continue provoque le rebouclage immdiat, comme si on e venait dexcuter la derni`re instruction du corps de la boucle. e e
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Les structures en algorithmique et en C Ruptures de boucle
Le langage C ore deux instructions : break provoque la n prmature de la boucle while, do ou e e for qui contient directement le break ; continue provoque le rebouclage immdiat, comme si on e venait dexcuter la derni`re instruction du corps de la boucle. e e
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Les structures en algorithmique et en C Ruptures de boucle
break : exemple C
for(int i = 0; i < n; i = i + 1) { for(int j = 0; j < m; j = j + 1) { if(a[j] == x) { break; // sort du second for } } if(b[i] == x) { break; // sort du premier for } }
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Les structures en algorithmique et en C Ruptures de boucle
continue : exemple C
while(x < 2) { x = f(x); if(g(x) > x) { continue; // boucle directement sur while } x = h(x); }
Une fonction ne modie pas la valeurs de ses arguments en entre ; e elle se termine par une instruction de retour qui rend un rsultat et un seul ; e on lutilise toujours dans une expression (aectation, achage. . . ).
Une fonction ne modie pas la valeurs de ses arguments en entre ; e elle se termine par une instruction de retour qui rend un rsultat et un seul ; e on lutilise toujours dans une expression (aectation, achage. . . ).
Une fonction ne modie pas la valeurs de ses arguments en entre ; e elle se termine par une instruction de retour qui rend un rsultat et un seul ; e on lutilise toujours dans une expression (aectation, achage. . . ).
Notation algorithmique
Lcriture dune fonction requiert un en-tte et un corps : e e len-tte comprend : DbutFonction, le nom de la fonction, e e une liste darguments entre parenth`ses, puis le type de la e fonction. Les arguments sont spars par une virgule et sont e e nots e nom arg : type arg ; le corps se termine par FinFonction prcd dune e e e instruction de retour dune expression de mme type que la e fonction. Exemple : DbutFonction Doubler( x : ottant) : ottant e Retourner (2 x) FinFonction
Notation algorithmique
Lcriture dune fonction requiert un en-tte et un corps : e e len-tte comprend : DbutFonction, le nom de la fonction, e e une liste darguments entre parenth`ses, puis le type de la e fonction. Les arguments sont spars par une virgule et sont e e nots e nom arg : type arg ; le corps se termine par FinFonction prcd dune e e e instruction de retour dune expression de mme type que la e fonction. Exemple : DbutFonction Doubler( x : ottant) : ottant e Retourner (2 x) FinFonction
Notation algorithmique
Lcriture dune fonction requiert un en-tte et un corps : e e len-tte comprend : DbutFonction, le nom de la fonction, e e une liste darguments entre parenth`ses, puis le type de la e fonction. Les arguments sont spars par une virgule et sont e e nots e nom arg : type arg ; le corps se termine par FinFonction prcd dune e e e instruction de retour dune expression de mme type que la e fonction. Exemple : DbutFonction Doubler( x : ottant) : ottant e Retourner (2 x) FinFonction
Notation C 1/2
Lcriture dune fonction requiert un en-tte et un corps : e e len-tte comprend : le type de retour, le nom de la fonction e suivit dune liste darguments entre parenth`ses. Les e arguments sont spars par une virgule et sont nots : e e e type arg nom arg, type arg nom arg, ... le corps est un bloc dinstructions prcd dune instruction de e e e retour dune expression de mme type que la fonction. e Exemple :
float Doubler(float x) { return 2.0*x; }
Notation C 1/2
Lcriture dune fonction requiert un en-tte et un corps : e e len-tte comprend : le type de retour, le nom de la fonction e suivit dune liste darguments entre parenth`ses. Les e arguments sont spars par une virgule et sont nots : e e e type arg nom arg, type arg nom arg, ... le corps est un bloc dinstructions prcd dune instruction de e e e retour dune expression de mme type que la fonction. e Exemple :
float Doubler(float x) { return 2.0*x; }
Notation C 1/2
Lcriture dune fonction requiert un en-tte et un corps : e e len-tte comprend : le type de retour, le nom de la fonction e suivit dune liste darguments entre parenth`ses. Les e arguments sont spars par une virgule et sont nots : e e e type arg nom arg, type arg nom arg, ... le corps est un bloc dinstructions prcd dune instruction de e e e retour dune expression de mme type que la fonction. e Exemple :
float Doubler(float x) { return 2.0*x; }
Notation C 2/2
Une fonction poss`de trois aspects : e le prototype : cest la dclaration ncessaire avant tout ; e e lappel : cest lutilisation dune fonction ` lintrieur dune a e autre fonction (par exemple le programme principal) ; la dnition : cest lcriture proprement dite de la fonction, e e en-tte et corps. e
Notation C 2/2
Une fonction poss`de trois aspects : e le prototype : cest la dclaration ncessaire avant tout ; e e lappel : cest lutilisation dune fonction ` lintrieur dune a e autre fonction (par exemple le programme principal) ; la dnition : cest lcriture proprement dite de la fonction, e e en-tte et corps. e
Notation C 2/2
Une fonction poss`de trois aspects : e le prototype : cest la dclaration ncessaire avant tout ; e e lappel : cest lutilisation dune fonction ` lintrieur dune a e autre fonction (par exemple le programme principal) ; la dnition : cest lcriture proprement dite de la fonction, e e en-tte et corps. e
Notation C 2/2
Une fonction poss`de trois aspects : e le prototype : cest la dclaration ncessaire avant tout ; e e lappel : cest lutilisation dune fonction ` lintrieur dune a e autre fonction (par exemple le programme principal) ; la dnition : cest lcriture proprement dite de la fonction, e e en-tte et corps. e
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Les fonctions Le passage des arguments
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Les fonctions Le passage des arguments
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Les fonctions Le passage des arguments
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Les fonctions Le passage des arguments
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Les fonctions Le passage des arguments
Dnition e Une fonction rcursive peut sappeler elle-mme. e e Cest le cas des fonctions mathmatiques dnies par rcurrence : e e e n! 1 si n = 0 n (n 1)! si n 1
Bien que cette mthode soit souvent plus dicile ` comprendre et e a ` coder que la mthode classique dite itrative, elle est dans a e e certains cas lapplication la plus directe de sa dnition e mathmatique. e
Dnition e Une fonction rcursive peut sappeler elle-mme. e e Cest le cas des fonctions mathmatiques dnies par rcurrence : e e e n! 1 si n = 0 n (n 1)! si n 1
Bien que cette mthode soit souvent plus dicile ` comprendre et e a ` coder que la mthode classique dite itrative, elle est dans a e e certains cas lapplication la plus directe de sa dnition e mathmatique. e
Dnition e Une fonction rcursive peut sappeler elle-mme. e e Cest le cas des fonctions mathmatiques dnies par rcurrence : e e e n! 1 si n = 0 n (n 1)! si n 1
Bien que cette mthode soit souvent plus dicile ` comprendre et e a ` coder que la mthode classique dite itrative, elle est dans a e e certains cas lapplication la plus directe de sa dnition e mathmatique. e
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Les pointeurs, tableaux et procdures e Procdures e
Gnralisant la notion de fonction, les procdures permettent e e e de modier la valeur de plusieurs de leurs arguments ; Notation algorithmique proche de celle des fonctions, sauf :
DbutProcdure . . . FinProcdure e e e pas de type de retour (donc pas dinstruction Retourner) les arguments peuvent encore tre en entre () non modis, e e e mais peuvent aussi tre modis en tant soit en sortie () e e e soit en entre/sortie () e
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Les pointeurs, tableaux et procdures e Procdures e
Gnralisant la notion de fonction, les procdures permettent e e e de modier la valeur de plusieurs de leurs arguments ; Notation algorithmique proche de celle des fonctions, sauf :
DbutProcdure . . . FinProcdure e e e pas de type de retour (donc pas dinstruction Retourner) les arguments peuvent encore tre en entre () non modis, e e e mais peuvent aussi tre modis en tant soit en sortie () e e e soit en entre/sortie () e
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Les pointeurs, tableaux et procdures e Procdures e
Gnralisant la notion de fonction, les procdures permettent e e e de modier la valeur de plusieurs de leurs arguments ; Notation algorithmique proche de celle des fonctions, sauf :
DbutProcdure . . . FinProcdure e e e pas de type de retour (donc pas dinstruction Retourner) les arguments peuvent encore tre en entre () non modis, e e e mais peuvent aussi tre modis en tant soit en sortie () e e e soit en entre/sortie () e
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Les pointeurs, tableaux et procdures e Procdures e
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Les pointeurs, tableaux et procdures e Procdures e
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Les pointeurs, tableaux et procdures e Pointeurs
Dnition e Cest une variable qui contient ladresse dune autre variable. Un objet dont la valeur est une adresse doctet est donc un pointeur. Un pointeur est typ (pointeur dint, de double, de e char. . . ). Il existe un pointeur particulier, NULL, qui est dni dans e <stddef.h>
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Les pointeurs, tableaux et procdures e Pointeurs
Dnition e Cest une variable qui contient ladresse dune autre variable. Un objet dont la valeur est une adresse doctet est donc un pointeur. Un pointeur est typ (pointeur dint, de double, de e char. . . ). Il existe un pointeur particulier, NULL, qui est dni dans e <stddef.h>
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Les pointeurs, tableaux et procdures e Pointeurs
Dnition e Cest une variable qui contient ladresse dune autre variable. Un objet dont la valeur est une adresse doctet est donc un pointeur. Un pointeur est typ (pointeur dint, de double, de e char. . . ). Il existe un pointeur particulier, NULL, qui est dni dans e <stddef.h>
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Les pointeurs, tableaux et procdures e Pointeurs
Dnition e Cest une variable qui contient ladresse dune autre variable. Un objet dont la valeur est une adresse doctet est donc un pointeur. Un pointeur est typ (pointeur dint, de double, de e char. . . ). Il existe un pointeur particulier, NULL, qui est dni dans e <stddef.h>
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Les pointeurs, tableaux et procdures e Pointeurs
Notations et dclaration e
Le C introduit deux oprateurs sur les pointeurs : e loprateur & qui dsigne ladresse dune variable ; e e loprateur * qui donne la valeur de lobjet point. e e Dclaration et manipulation : e int *p ; // p : pointeur dint (cest une adresse) int x = 3 ; // x est un int qui vaut 3 p = &x ; // p pointe vers ladresse de x cout << *p ; // affiche 3
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Les pointeurs, tableaux et procdures e Pointeurs
Notations et dclaration e
Le C introduit deux oprateurs sur les pointeurs : e loprateur & qui dsigne ladresse dune variable ; e e loprateur * qui donne la valeur de lobjet point. e e Dclaration et manipulation : e int *p ; // p : pointeur dint (cest une adresse) int x = 3 ; // x est un int qui vaut 3 p = &x ; // p pointe vers ladresse de x cout << *p ; // affiche 3
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Les pointeurs, tableaux et procdures e Pointeurs
Notations et dclaration e
Le C introduit deux oprateurs sur les pointeurs : e loprateur & qui dsigne ladresse dune variable ; e e loprateur * qui donne la valeur de lobjet point. e e Dclaration et manipulation : e int *p ; // p : pointeur dint (cest une adresse) int x = 3 ; // x est un int qui vaut 3 p = &x ; // p pointe vers ladresse de x cout << *p ; // affiche 3
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Les pointeurs, tableaux et procdures e Passage des arguments par adresse
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Les pointeurs, tableaux et procdures e Passage des arguments par adresse
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Les pointeurs, tableaux et procdures e Relation avec les tableaux
Lutilisation des pointeurs ` la place des tableaux implique une a gestion de la mmoire (cf Allocation programme en annexe). e e
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Les pointeurs, tableaux et procdures e Relation avec les tableaux
Lutilisation des pointeurs ` la place des tableaux implique une a gestion de la mmoire (cf Allocation programme en annexe). e e
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Les pointeurs, tableaux et procdures e Relation avec les tableaux
Lutilisation des pointeurs ` la place des tableaux implique une a gestion de la mmoire (cf Allocation programme en annexe). e e
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Les pointeurs, tableaux et procdures e Relation avec les tableaux
Lutilisation des pointeurs ` la place des tableaux implique une a gestion de la mmoire (cf Allocation programme en annexe). e e
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Quelques aspects avancs du langage C e Entres/Sorties sur chiers e
En C, un chier ASCII est gr par un tampon dentre-sortie ee e e appel un ux de type FILE*. En dclarant : FILE *fic ; la e biblioth`que standard (en-tte <stdio.h>) permet : e e louverture du ux : fic = fopen(nomFichier, mode) ; o` mode est w (criture) ou r (lecture) ; u e lcriture dans le ux : fprintf(fic, "format", vars) ; e la saisie depuis le ux : fscanf(fic, "format", vars) ; la fermeture du ux : fclose(fic) ; (Voir les formats en annexe.)
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Quelques aspects avancs du langage C e Entres/Sorties sur chiers e
En C, un chier ASCII est gr par un tampon dentre-sortie ee e e appel un ux de type FILE*. En dclarant : FILE *fic ; la e biblioth`que standard (en-tte <stdio.h>) permet : e e louverture du ux : fic = fopen(nomFichier, mode) ; o` mode est w (criture) ou r (lecture) ; u e lcriture dans le ux : fprintf(fic, "format", vars) ; e la saisie depuis le ux : fscanf(fic, "format", vars) ; la fermeture du ux : fclose(fic) ; (Voir les formats en annexe.)
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Quelques aspects avancs du langage C e Entres/Sorties sur chiers e
En C, un chier ASCII est gr par un tampon dentre-sortie ee e e appel un ux de type FILE*. En dclarant : FILE *fic ; la e biblioth`que standard (en-tte <stdio.h>) permet : e e louverture du ux : fic = fopen(nomFichier, mode) ; o` mode est w (criture) ou r (lecture) ; u e lcriture dans le ux : fprintf(fic, "format", vars) ; e la saisie depuis le ux : fscanf(fic, "format", vars) ; la fermeture du ux : fclose(fic) ; (Voir les formats en annexe.)
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Quelques aspects avancs du langage C e Entres/Sorties sur chiers e
En C, un chier ASCII est gr par un tampon dentre-sortie ee e e appel un ux de type FILE*. En dclarant : FILE *fic ; la e biblioth`que standard (en-tte <stdio.h>) permet : e e louverture du ux : fic = fopen(nomFichier, mode) ; o` mode est w (criture) ou r (lecture) ; u e lcriture dans le ux : fprintf(fic, "format", vars) ; e la saisie depuis le ux : fscanf(fic, "format", vars) ; la fermeture du ux : fclose(fic) ; (Voir les formats en annexe.)
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Quelques aspects avancs du langage C e Entres/Sorties sur chiers e
En C, un chier ASCII est gr par un tampon dentre-sortie ee e e appel un ux de type FILE*. En dclarant : FILE *fic ; la e biblioth`que standard (en-tte <stdio.h>) permet : e e louverture du ux : fic = fopen(nomFichier, mode) ; o` mode est w (criture) ou r (lecture) ; u e lcriture dans le ux : fprintf(fic, "format", vars) ; e la saisie depuis le ux : fscanf(fic, "format", vars) ; la fermeture du ux : fclose(fic) ; (Voir les formats en annexe.)
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Quelques aspects avancs du langage C e Entres/Sorties sur chiers e
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Quelques aspects avancs du langage C e Cha nes de caract`res e
Dans leur reprsentation interne, ils doivent tre termins par le e e e caract`re nul (valeur sentinelle) pour en dtecter la n. On parle de e e cha bien forme. ne e On les dclare soit comme un tableau de caract`res (qui est donc e e modiable), soit comme un pointeur de caract`res (cha littrale e ne e constante).
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Quelques aspects avancs du langage C e Cha nes de caract`res e
Dans leur reprsentation interne, ils doivent tre termins par le e e e caract`re nul (valeur sentinelle) pour en dtecter la n. On parle de e e cha bien forme. ne e On les dclare soit comme un tableau de caract`res (qui est donc e e modiable), soit comme un pointeur de caract`res (cha littrale e ne e constante).
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Quelques aspects avancs du langage C e Cha nes de caract`res e
Dans leur reprsentation interne, ils doivent tre termins par le e e e caract`re nul (valeur sentinelle) pour en dtecter la n. On parle de e e cha bien forme. ne e On les dclare soit comme un tableau de caract`res (qui est donc e e modiable), soit comme un pointeur de caract`res (cha littrale e ne e constante).
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Quelques aspects avancs du langage C e Cha nes de caract`res e
Les fonctions de traitements de cha nes sont dnies dans len-tte e e <string.h>. Les principales sont : longueur : fonction strlen ; comparaison : fonction strcmp ; recopie : fonction strcpy ; concatnation : fonction strcat. e
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Quelques aspects avancs du langage C e Cha nes de caract`res e
Les fonctions de traitements de cha nes sont dnies dans len-tte e e <string.h>. Les principales sont : longueur : fonction strlen ; comparaison : fonction strcmp ; recopie : fonction strcpy ; concatnation : fonction strcat. e
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Quelques aspects avancs du langage C e Cha nes de caract`res e
Les fonctions de traitements de cha nes sont dnies dans len-tte e e <string.h>. Les principales sont : longueur : fonction strlen ; comparaison : fonction strcmp ; recopie : fonction strcpy ; concatnation : fonction strcat. e
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Quelques aspects avancs du langage C e Cha nes de caract`res e
Les fonctions de traitements de cha nes sont dnies dans len-tte e e <string.h>. Les principales sont : longueur : fonction strlen ; comparaison : fonction strcmp ; recopie : fonction strcpy ; concatnation : fonction strcat. e
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Quelques aspects avancs du langage C e Cha nes de caract`res e
Les fonctions de traitements de cha nes sont dnies dans len-tte e e <string.h>. Les principales sont : longueur : fonction strlen ; comparaison : fonction strcmp ; recopie : fonction strcpy ; concatnation : fonction strcat. e
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Quelques aspects avancs du langage C e Cha nes de caract`res e
// fonction strcpy(), version pointeurs de caracteres void strcpy(char *s, char *t) { while(*s++ = *t++) ; }
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Quelques aspects avancs du langage C e Cha nes de caract`res e
// fonction strcpy(), version pointeurs de caracteres void strcpy(char *s, char *t) { while(*s++ = *t++) ; }
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Quelques aspects avancs du langage C e Structures
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Quelques aspects avancs du langage C e Structures
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Quelques aspects avancs du langage C e Structures
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Quelques aspects avancs du langage C e Structures
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Quelques aspects avancs du langage C e Structures
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Quelques aspects avancs du langage C e Allocation programme e
Lorsquon utilise un tableau, on doit le dclarer en prcisant son e e type et sa taille. La taille est parfois inconnue a priori, on doit la grer ` lexcution. On parle dallocation programme ou de e a e e tableaux dynamiques. La biblioth`que standard C ore une fonction dallocation, malloc, e qui attend une taille doctets ` allouer et retourne un pointeur de a void (void *), et une fonction de dsallocation, free, qui reoit e c ladresse dune zone mmoire alloue par malloc (un pointeur) et e e la rend au syst`me dexploitation. e
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Quelques aspects avancs du langage C e Allocation programme e
Lorsquon utilise un tableau, on doit le dclarer en prcisant son e e type et sa taille. La taille est parfois inconnue a priori, on doit la grer ` lexcution. On parle dallocation programme ou de e a e e tableaux dynamiques. La biblioth`que standard C ore une fonction dallocation, malloc, e qui attend une taille doctets ` allouer et retourne un pointeur de a void (void *), et une fonction de dsallocation, free, qui reoit e c ladresse dune zone mmoire alloue par malloc (un pointeur) et e e la rend au syst`me dexploitation. e
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Quelques aspects avancs du langage C e Allocation programme e
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Quelques aspects avancs du langage C e Arguments du main()
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Quelques aspects avancs du langage C e Arguments du main()
Cours dAlgorithmique et de Langage C 2005 - v 3.0 Quelques aspects avancs du langage C e Arguments du main()
Annexes
%d : int, %hd : short int, %ld : long int %u : unsigned int %o : conversion octale %x : conversion hxadcimale e e %c : char %s : char[] ou char* %f : float %lf : double