programmation en cfouque/enseignement/ensta/cours/cours1.pdf · cours de programmation en c 3...
TRANSCRIPT
![Page 1: Programmation en Cfouque/enseignement/ensta/Cours/cours1.pdf · Cours de programmation en C 3 Langage de programmation Le processeur contrôle tout, mais il ne comprend que le langage](https://reader033.vdocuments.pub/reader033/viewer/2022042806/5f762363f89bce60604a628b/html5/thumbnails/1.jpg)
Cours de programmation en C
Programmation en C
Pierre-Alain FOUQUEDépartement d’Informatique
École normale supérieure
![Page 2: Programmation en Cfouque/enseignement/ensta/Cours/cours1.pdf · Cours de programmation en C 3 Langage de programmation Le processeur contrôle tout, mais il ne comprend que le langage](https://reader033.vdocuments.pub/reader033/viewer/2022042806/5f762363f89bce60604a628b/html5/thumbnails/2.jpg)
Cours de programmation en C 2
Plan
1 - Le Langage C2 - Présentation d’un programme3 - Le typage des données4 - Les opérateurs conditionnels5 - Les boucles conditionnelles while
![Page 3: Programmation en Cfouque/enseignement/ensta/Cours/cours1.pdf · Cours de programmation en C 3 Langage de programmation Le processeur contrôle tout, mais il ne comprend que le langage](https://reader033.vdocuments.pub/reader033/viewer/2022042806/5f762363f89bce60604a628b/html5/thumbnails/3.jpg)
Cours de programmation en C 3
Langage de programmation
Le processeur contrôle tout, mais il ne comprend que le langage machinesoit des séries de nombres qui désignent l’opération à effectuer
puis où l’effectuer spécifiques à chaque microprocesseur
⇒ Pas très facile à utiliser/pas portableLangage de programmation : interface homme-machine
![Page 4: Programmation en Cfouque/enseignement/ensta/Cours/cours1.pdf · Cours de programmation en C 3 Langage de programmation Le processeur contrôle tout, mais il ne comprend que le langage](https://reader033.vdocuments.pub/reader033/viewer/2022042806/5f762363f89bce60604a628b/html5/thumbnails/4.jpg)
Cours de programmation en C 4
Langage C
• Structures de contrôle• Usage des pointeurs
pour adresser la mémoire• Récursivité• Typage des donnéesen se limitant à ce qui peut
être traduit efficacementen langage machine
![Page 5: Programmation en Cfouque/enseignement/ensta/Cours/cours1.pdf · Cours de programmation en C 3 Langage de programmation Le processeur contrôle tout, mais il ne comprend que le langage](https://reader033.vdocuments.pub/reader033/viewer/2022042806/5f762363f89bce60604a628b/html5/thumbnails/5.jpg)
Cours de programmation en C 5
Un programme
• Programme = ensemble de modules inclusions (objets, données prédéfinis) types (nouveaux types d’objets) variables (« cases » mémoires à réserver) liste de fonctions
• Fonctions en-tête (vue de l’extérieur) mode opératoire : liste d’instructions
simples : terminées par « ; » composées : instructions simples entre « { … } »
![Page 6: Programmation en Cfouque/enseignement/ensta/Cours/cours1.pdf · Cours de programmation en C 3 Langage de programmation Le processeur contrôle tout, mais il ne comprend que le langage](https://reader033.vdocuments.pub/reader033/viewer/2022042806/5f762363f89bce60604a628b/html5/thumbnails/6.jpg)
Cours de programmation en C 6
Premier programme : « hello »
#include <stdio.h>
int main(){ printf(“Hello World !!\n”); return 0;}
![Page 7: Programmation en Cfouque/enseignement/ensta/Cours/cours1.pdf · Cours de programmation en C 3 Langage de programmation Le processeur contrôle tout, mais il ne comprend que le langage](https://reader033.vdocuments.pub/reader033/viewer/2022042806/5f762363f89bce60604a628b/html5/thumbnails/7.jpg)
Cours de programmation en C 6
Premier programme : « hello »
#include <stdio.h>
int main(){ printf(“Hello World !!\n”); return 0;}
inclusions
![Page 8: Programmation en Cfouque/enseignement/ensta/Cours/cours1.pdf · Cours de programmation en C 3 Langage de programmation Le processeur contrôle tout, mais il ne comprend que le langage](https://reader033.vdocuments.pub/reader033/viewer/2022042806/5f762363f89bce60604a628b/html5/thumbnails/8.jpg)
Cours de programmation en C 6
Premier programme : « hello »
#include <stdio.h>
int main(){ printf(“Hello World !!\n”); return 0;}
inclusions
![Page 9: Programmation en Cfouque/enseignement/ensta/Cours/cours1.pdf · Cours de programmation en C 3 Langage de programmation Le processeur contrôle tout, mais il ne comprend que le langage](https://reader033.vdocuments.pub/reader033/viewer/2022042806/5f762363f89bce60604a628b/html5/thumbnails/9.jpg)
Cours de programmation en C 6
Premier programme : « hello »
#include <stdio.h>
int main(){ printf(“Hello World !!\n”); return 0;}
fonction
inclusions
![Page 10: Programmation en Cfouque/enseignement/ensta/Cours/cours1.pdf · Cours de programmation en C 3 Langage de programmation Le processeur contrôle tout, mais il ne comprend que le langage](https://reader033.vdocuments.pub/reader033/viewer/2022042806/5f762363f89bce60604a628b/html5/thumbnails/10.jpg)
Cours de programmation en C 6
Premier programme : « hello »
#include <stdio.h>
int main(){ printf(“Hello World !!\n”); return 0;}
fonction
inclusions
![Page 11: Programmation en Cfouque/enseignement/ensta/Cours/cours1.pdf · Cours de programmation en C 3 Langage de programmation Le processeur contrôle tout, mais il ne comprend que le langage](https://reader033.vdocuments.pub/reader033/viewer/2022042806/5f762363f89bce60604a628b/html5/thumbnails/11.jpg)
Cours de programmation en C 6
Premier programme : « hello »
#include <stdio.h>
int main(){ printf(“Hello World !!\n”); return 0;}
fonction
inclusions
instruction
![Page 12: Programmation en Cfouque/enseignement/ensta/Cours/cours1.pdf · Cours de programmation en C 3 Langage de programmation Le processeur contrôle tout, mais il ne comprend que le langage](https://reader033.vdocuments.pub/reader033/viewer/2022042806/5f762363f89bce60604a628b/html5/thumbnails/12.jpg)
Cours de programmation en C 6
Premier programme : « hello »
#include <stdio.h>
int main(){ printf(“Hello World !!\n”); return 0;}
fonction
inclusions
instruction
![Page 13: Programmation en Cfouque/enseignement/ensta/Cours/cours1.pdf · Cours de programmation en C 3 Langage de programmation Le processeur contrôle tout, mais il ne comprend que le langage](https://reader033.vdocuments.pub/reader033/viewer/2022042806/5f762363f89bce60604a628b/html5/thumbnails/13.jpg)
Cours de programmation en C 6
Premier programme : « hello »
« main » : fonction principale seule fonction appelée lors du lancement du
programme⇒ distribue les tâches
#include <stdio.h>
int main(){ printf(“Hello World !!\n”); return 0;}
fonction
inclusions
instruction
![Page 14: Programmation en Cfouque/enseignement/ensta/Cours/cours1.pdf · Cours de programmation en C 3 Langage de programmation Le processeur contrôle tout, mais il ne comprend que le langage](https://reader033.vdocuments.pub/reader033/viewer/2022042806/5f762363f89bce60604a628b/html5/thumbnails/14.jpg)
Cours de programmation en C 7
Mode d’emploi
#include <stdio.h>
int main(){ printf(“Hello World !!\n”); return 0;}
![Page 15: Programmation en Cfouque/enseignement/ensta/Cours/cours1.pdf · Cours de programmation en C 3 Langage de programmation Le processeur contrôle tout, mais il ne comprend que le langage](https://reader033.vdocuments.pub/reader033/viewer/2022042806/5f762363f89bce60604a628b/html5/thumbnails/15.jpg)
Cours de programmation en C 7
Mode d’emploi
• Saisir le programmexemacs hello.c &
#include <stdio.h>
int main(){ printf(“Hello World !!\n”); return 0;}
![Page 16: Programmation en Cfouque/enseignement/ensta/Cours/cours1.pdf · Cours de programmation en C 3 Langage de programmation Le processeur contrôle tout, mais il ne comprend que le langage](https://reader033.vdocuments.pub/reader033/viewer/2022042806/5f762363f89bce60604a628b/html5/thumbnails/16.jpg)
Cours de programmation en C 7
Mode d’emploi
• Saisir le programmexemacs hello.c &
• Compiler le programmegcc -Wall hello.c -o hello
#include <stdio.h>
int main(){ printf(“Hello World !!\n”); return 0;}
![Page 17: Programmation en Cfouque/enseignement/ensta/Cours/cours1.pdf · Cours de programmation en C 3 Langage de programmation Le processeur contrôle tout, mais il ne comprend que le langage](https://reader033.vdocuments.pub/reader033/viewer/2022042806/5f762363f89bce60604a628b/html5/thumbnails/17.jpg)
Cours de programmation en C 7
Mode d’emploi
• Saisir le programmexemacs hello.c &
• Compiler le programmegcc -Wall hello.c -o hello
• Exécuterhello #include <stdio.h>
int main(){ printf(“Hello World !!\n”); return 0;}
![Page 18: Programmation en Cfouque/enseignement/ensta/Cours/cours1.pdf · Cours de programmation en C 3 Langage de programmation Le processeur contrôle tout, mais il ne comprend que le langage](https://reader033.vdocuments.pub/reader033/viewer/2022042806/5f762363f89bce60604a628b/html5/thumbnails/18.jpg)
Cours de programmation en C 7
Mode d’emploi
• Saisir le programmexemacs hello.c &
• Compiler le programmegcc -Wall hello.c -o hello
• Exécuterhello #include <stdio.h>
int main(){ printf(“Hello World !!\n”); return 0;}
![Page 19: Programmation en Cfouque/enseignement/ensta/Cours/cours1.pdf · Cours de programmation en C 3 Langage de programmation Le processeur contrôle tout, mais il ne comprend que le langage](https://reader033.vdocuments.pub/reader033/viewer/2022042806/5f762363f89bce60604a628b/html5/thumbnails/19.jpg)
Cours de programmation en C 7
Mode d’emploi
• Saisir le programmexemacs hello.c &
• Compiler le programmegcc -Wall hello.c -o hello
• Exécuterhello #include <stdio.h>
int main(){ printf(“Hello World !!\n”); return 0;}
![Page 20: Programmation en Cfouque/enseignement/ensta/Cours/cours1.pdf · Cours de programmation en C 3 Langage de programmation Le processeur contrôle tout, mais il ne comprend que le langage](https://reader033.vdocuments.pub/reader033/viewer/2022042806/5f762363f89bce60604a628b/html5/thumbnails/20.jpg)
Cours de programmation en C 8
Erreurs classiques
Les erreurs les plus classiques sont :• faute dans le nom d’une fonction
⇒ le compilateur ne la reconnaît pas
• oubli de « ; » en fin d’instruction simple
• utilisation d’une variable non déclarée⇒ le compilateur ne sait pas si c’est un entier, un
réel ou une chaîne de caractères !
• pas de fonction « main »
![Page 21: Programmation en Cfouque/enseignement/ensta/Cours/cours1.pdf · Cours de programmation en C 3 Langage de programmation Le processeur contrôle tout, mais il ne comprend que le langage](https://reader033.vdocuments.pub/reader033/viewer/2022042806/5f762363f89bce60604a628b/html5/thumbnails/21.jpg)
Cours de programmation en C 9
Fonction « main »
« main » : fonction principale fonction appelée lors du lancement
du programme aucune autre n’est exécutée
automatiquement⇒ indispensable
![Page 22: Programmation en Cfouque/enseignement/ensta/Cours/cours1.pdf · Cours de programmation en C 3 Langage de programmation Le processeur contrôle tout, mais il ne comprend que le langage](https://reader033.vdocuments.pub/reader033/viewer/2022042806/5f762363f89bce60604a628b/html5/thumbnails/22.jpg)
Cours de programmation en C 10
Programme générique
/* Commentaires */
/* Directives pour le préprocesseur */#include <stdio.h>#define TAILLE 3#define SQ(x) x*x
/* Nouveaux types */typedef int[TAILLE] tableau;
/* Variables globales */int globale;
![Page 23: Programmation en Cfouque/enseignement/ensta/Cours/cours1.pdf · Cours de programmation en C 3 Langage de programmation Le processeur contrôle tout, mais il ne comprend que le langage](https://reader033.vdocuments.pub/reader033/viewer/2022042806/5f762363f89bce60604a628b/html5/thumbnails/23.jpg)
Cours de programmation en C 10
Programme générique
Commentaires :à tout moment,entre /*…*/ /* Commentaires */
/* Directives pour le préprocesseur */#include <stdio.h>#define TAILLE 3#define SQ(x) x*x
/* Nouveaux types */typedef int[TAILLE] tableau;
/* Variables globales */int globale;
![Page 24: Programmation en Cfouque/enseignement/ensta/Cours/cours1.pdf · Cours de programmation en C 3 Langage de programmation Le processeur contrôle tout, mais il ne comprend que le langage](https://reader033.vdocuments.pub/reader033/viewer/2022042806/5f762363f89bce60604a628b/html5/thumbnails/24.jpg)
Cours de programmation en C 10
Programme générique
Commentaires :à tout moment,entre /*…*/ /* Commentaires */
/* Directives pour le préprocesseur */#include <stdio.h>#define TAILLE 3#define SQ(x) x*x
/* Nouveaux types */typedef int[TAILLE] tableau;
/* Variables globales */int globale;
Préprocesseur :• inclusions• constantes• macros
![Page 25: Programmation en Cfouque/enseignement/ensta/Cours/cours1.pdf · Cours de programmation en C 3 Langage de programmation Le processeur contrôle tout, mais il ne comprend que le langage](https://reader033.vdocuments.pub/reader033/viewer/2022042806/5f762363f89bce60604a628b/html5/thumbnails/25.jpg)
Cours de programmation en C 10
Programme générique
Commentaires :à tout moment,entre /*…*/
Types
/* Commentaires */
/* Directives pour le préprocesseur */#include <stdio.h>#define TAILLE 3#define SQ(x) x*x
/* Nouveaux types */typedef int[TAILLE] tableau;
/* Variables globales */int globale;
Préprocesseur :• inclusions• constantes• macros
![Page 26: Programmation en Cfouque/enseignement/ensta/Cours/cours1.pdf · Cours de programmation en C 3 Langage de programmation Le processeur contrôle tout, mais il ne comprend que le langage](https://reader033.vdocuments.pub/reader033/viewer/2022042806/5f762363f89bce60604a628b/html5/thumbnails/26.jpg)
Cours de programmation en C 10
Programme générique
Commentaires :à tout moment,entre /*…*/
Types
Variables globales
/* Commentaires */
/* Directives pour le préprocesseur */#include <stdio.h>#define TAILLE 3#define SQ(x) x*x
/* Nouveaux types */typedef int[TAILLE] tableau;
/* Variables globales */int globale;
Préprocesseur :• inclusions• constantes• macros
![Page 27: Programmation en Cfouque/enseignement/ensta/Cours/cours1.pdf · Cours de programmation en C 3 Langage de programmation Le processeur contrôle tout, mais il ne comprend que le langage](https://reader033.vdocuments.pub/reader033/viewer/2022042806/5f762363f89bce60604a628b/html5/thumbnails/27.jpg)
Cours de programmation en C 11
Macros
ATTENTION:• #define SQ(a) a*a
• Si on écrit SQ(a+b): on va obtenir a+b*a+b ≠(a+b)*(a+b)
⇒#define SQ(a) ((a)*(a))
#define MIN(a,b) ((a)<(b)?(a):(b))
![Page 28: Programmation en Cfouque/enseignement/ensta/Cours/cours1.pdf · Cours de programmation en C 3 Langage de programmation Le processeur contrôle tout, mais il ne comprend que le langage](https://reader033.vdocuments.pub/reader033/viewer/2022042806/5f762363f89bce60604a628b/html5/thumbnails/28.jpg)
Cours de programmation en C 12
Programme générique (suite) fonctions
int addition(int x, int y){ int z; z = x + y; return z;}
int main(){ int a,b,c; a = 3; b = 5; c = addition(a,b); printf(“%d+%d=%d\n”,a,b,c); return 0;}
![Page 29: Programmation en Cfouque/enseignement/ensta/Cours/cours1.pdf · Cours de programmation en C 3 Langage de programmation Le processeur contrôle tout, mais il ne comprend que le langage](https://reader033.vdocuments.pub/reader033/viewer/2022042806/5f762363f89bce60604a628b/html5/thumbnails/29.jpg)
Cours de programmation en C 12
Programme générique (suite) fonctions
int addition(int x, int y){ int z; z = x + y; return z;}
int main(){ int a,b,c; a = 3; b = 5; c = addition(a,b); printf(“%d+%d=%d\n”,a,b,c); return 0;}
En-tête
![Page 30: Programmation en Cfouque/enseignement/ensta/Cours/cours1.pdf · Cours de programmation en C 3 Langage de programmation Le processeur contrôle tout, mais il ne comprend que le langage](https://reader033.vdocuments.pub/reader033/viewer/2022042806/5f762363f89bce60604a628b/html5/thumbnails/30.jpg)
Cours de programmation en C 12
Programme générique (suite) fonctions
int addition(int x, int y){ int z; z = x + y; return z;}
int main(){ int a,b,c; a = 3; b = 5; c = addition(a,b); printf(“%d+%d=%d\n”,a,b,c); return 0;}
En-tête
![Page 31: Programmation en Cfouque/enseignement/ensta/Cours/cours1.pdf · Cours de programmation en C 3 Langage de programmation Le processeur contrôle tout, mais il ne comprend que le langage](https://reader033.vdocuments.pub/reader033/viewer/2022042806/5f762363f89bce60604a628b/html5/thumbnails/31.jpg)
Cours de programmation en C 12
Programme générique (suite) fonctions
int addition(int x, int y){ int z; z = x + y; return z;}
int main(){ int a,b,c; a = 3; b = 5; c = addition(a,b); printf(“%d+%d=%d\n”,a,b,c); return 0;}
En-têteDéclaration variables
![Page 32: Programmation en Cfouque/enseignement/ensta/Cours/cours1.pdf · Cours de programmation en C 3 Langage de programmation Le processeur contrôle tout, mais il ne comprend que le langage](https://reader033.vdocuments.pub/reader033/viewer/2022042806/5f762363f89bce60604a628b/html5/thumbnails/32.jpg)
Cours de programmation en C 12
Programme générique (suite) fonctions
int addition(int x, int y){ int z; z = x + y; return z;}
int main(){ int a,b,c; a = 3; b = 5; c = addition(a,b); printf(“%d+%d=%d\n”,a,b,c); return 0;}
En-têteDéclaration variables
![Page 33: Programmation en Cfouque/enseignement/ensta/Cours/cours1.pdf · Cours de programmation en C 3 Langage de programmation Le processeur contrôle tout, mais il ne comprend que le langage](https://reader033.vdocuments.pub/reader033/viewer/2022042806/5f762363f89bce60604a628b/html5/thumbnails/33.jpg)
Cours de programmation en C 12
Programme générique (suite) fonctions
int addition(int x, int y){ int z; z = x + y; return z;}
int main(){ int a,b,c; a = 3; b = 5; c = addition(a,b); printf(“%d+%d=%d\n”,a,b,c); return 0;}
En-têteDéclaration variablesInstruction simple
![Page 34: Programmation en Cfouque/enseignement/ensta/Cours/cours1.pdf · Cours de programmation en C 3 Langage de programmation Le processeur contrôle tout, mais il ne comprend que le langage](https://reader033.vdocuments.pub/reader033/viewer/2022042806/5f762363f89bce60604a628b/html5/thumbnails/34.jpg)
Cours de programmation en C 12
Programme générique (suite) fonctions
int addition(int x, int y){ int z; z = x + y; return z;}
int main(){ int a,b,c; a = 3; b = 5; c = addition(a,b); printf(“%d+%d=%d\n”,a,b,c); return 0;}
En-têteDéclaration variablesInstruction simple
![Page 35: Programmation en Cfouque/enseignement/ensta/Cours/cours1.pdf · Cours de programmation en C 3 Langage de programmation Le processeur contrôle tout, mais il ne comprend que le langage](https://reader033.vdocuments.pub/reader033/viewer/2022042806/5f762363f89bce60604a628b/html5/thumbnails/35.jpg)
Cours de programmation en C 12
Programme générique (suite) fonctions
int addition(int x, int y){ int z; z = x + y; return z;}
int main(){ int a,b,c; a = 3; b = 5; c = addition(a,b); printf(“%d+%d=%d\n”,a,b,c); return 0;}
En-têteDéclaration variablesInstruction simple
En-tête
![Page 36: Programmation en Cfouque/enseignement/ensta/Cours/cours1.pdf · Cours de programmation en C 3 Langage de programmation Le processeur contrôle tout, mais il ne comprend que le langage](https://reader033.vdocuments.pub/reader033/viewer/2022042806/5f762363f89bce60604a628b/html5/thumbnails/36.jpg)
Cours de programmation en C 12
Programme générique (suite) fonctions
int addition(int x, int y){ int z; z = x + y; return z;}
int main(){ int a,b,c; a = 3; b = 5; c = addition(a,b); printf(“%d+%d=%d\n”,a,b,c); return 0;}
En-têteDéclaration variablesInstruction simple
En-tête
![Page 37: Programmation en Cfouque/enseignement/ensta/Cours/cours1.pdf · Cours de programmation en C 3 Langage de programmation Le processeur contrôle tout, mais il ne comprend que le langage](https://reader033.vdocuments.pub/reader033/viewer/2022042806/5f762363f89bce60604a628b/html5/thumbnails/37.jpg)
Cours de programmation en C 12
Programme générique (suite) fonctions
int addition(int x, int y){ int z; z = x + y; return z;}
int main(){ int a,b,c; a = 3; b = 5; c = addition(a,b); printf(“%d+%d=%d\n”,a,b,c); return 0;}
En-têteDéclaration variablesInstruction simple
En-têteDéclaration variables
![Page 38: Programmation en Cfouque/enseignement/ensta/Cours/cours1.pdf · Cours de programmation en C 3 Langage de programmation Le processeur contrôle tout, mais il ne comprend que le langage](https://reader033.vdocuments.pub/reader033/viewer/2022042806/5f762363f89bce60604a628b/html5/thumbnails/38.jpg)
Cours de programmation en C 12
Programme générique (suite) fonctions
int addition(int x, int y){ int z; z = x + y; return z;}
int main(){ int a,b,c; a = 3; b = 5; c = addition(a,b); printf(“%d+%d=%d\n”,a,b,c); return 0;}
En-têteDéclaration variablesInstruction simple
En-têteDéclaration variables
![Page 39: Programmation en Cfouque/enseignement/ensta/Cours/cours1.pdf · Cours de programmation en C 3 Langage de programmation Le processeur contrôle tout, mais il ne comprend que le langage](https://reader033.vdocuments.pub/reader033/viewer/2022042806/5f762363f89bce60604a628b/html5/thumbnails/39.jpg)
Cours de programmation en C 12
Programme générique (suite) fonctions
int addition(int x, int y){ int z; z = x + y; return z;}
int main(){ int a,b,c; a = 3; b = 5; c = addition(a,b); printf(“%d+%d=%d\n”,a,b,c); return 0;}
En-têteDéclaration variablesInstruction simple
En-têteDéclaration variables
Instructions simples
![Page 40: Programmation en Cfouque/enseignement/ensta/Cours/cours1.pdf · Cours de programmation en C 3 Langage de programmation Le processeur contrôle tout, mais il ne comprend que le langage](https://reader033.vdocuments.pub/reader033/viewer/2022042806/5f762363f89bce60604a628b/html5/thumbnails/40.jpg)
Cours de programmation en C 13
Mémoire
La mémoire stocke indifféremment• le programme à exécuter
(série de codes en langage machine adressés au processeur)
• les variables manipulées par le programme
⇒ stockage par octets ou mots (blocs de 8 bits ou 32 bits)
![Page 41: Programmation en Cfouque/enseignement/ensta/Cours/cours1.pdf · Cours de programmation en C 3 Langage de programmation Le processeur contrôle tout, mais il ne comprend que le langage](https://reader033.vdocuments.pub/reader033/viewer/2022042806/5f762363f89bce60604a628b/html5/thumbnails/41.jpg)
Cours de programmation en C 14
Typage
Mais que code 01010111 ?• L’entier 87 (= 64+16+4+2+1)• Le flottant 0,00390625 (= 2.2-9)• Le caractère ‘X’• Une instruction en langage machine• …⇒ il faut associer un type à chaque
valeurLe typage définit le codage
![Page 42: Programmation en Cfouque/enseignement/ensta/Cours/cours1.pdf · Cours de programmation en C 3 Langage de programmation Le processeur contrôle tout, mais il ne comprend que le langage](https://reader033.vdocuments.pub/reader033/viewer/2022042806/5f762363f89bce60604a628b/html5/thumbnails/42.jpg)
Cours de programmation en C 15
Entiers : short, int,long et long long
En pratique, selon les types et machines, les entiers sont codés sur 8, 16, 32 ou 64 bits : (GCC sous Linux)
• short (16 bits) → +/- 32767• int/long (32 bits) → ~ +/- 2.109
• long long (64 bits) → ~ +/- 9.1018
Le qualitatif unsigned préciseque les entiers seront positifs⇒ plus besoin du bit de signe
![Page 43: Programmation en Cfouque/enseignement/ensta/Cours/cours1.pdf · Cours de programmation en C 3 Langage de programmation Le processeur contrôle tout, mais il ne comprend que le langage](https://reader033.vdocuments.pub/reader033/viewer/2022042806/5f762363f89bce60604a628b/html5/thumbnails/43.jpg)
Cours de programmation en C 16
Flottants : float,double et long double
• float (24 + 8 bits) Précision 2-23 Min 10-38 Max 3.1038
• double (53 + 11 bits) Précision 2-53 Min 2.10-308 Max 10308
• long double (64 + 16 bits) Précision 2-64 Min 10-4931 Max 104932
de -8388608 à 8388607 de -128 à 127mantisse exposant
![Page 44: Programmation en Cfouque/enseignement/ensta/Cours/cours1.pdf · Cours de programmation en C 3 Langage de programmation Le processeur contrôle tout, mais il ne comprend que le langage](https://reader033.vdocuments.pub/reader033/viewer/2022042806/5f762363f89bce60604a628b/html5/thumbnails/44.jpg)
Cours de programmation en C 17
Déclaration et initialisation
Dans un programme ou une fonction,on peut déclarer des variables,puis (ou simultanément) les initialiser
![Page 45: Programmation en Cfouque/enseignement/ensta/Cours/cours1.pdf · Cours de programmation en C 3 Langage de programmation Le processeur contrôle tout, mais il ne comprend que le langage](https://reader033.vdocuments.pub/reader033/viewer/2022042806/5f762363f89bce60604a628b/html5/thumbnails/45.jpg)
Cours de programmation en C 17
Déclaration et initialisation
Dans un programme ou une fonction,on peut déclarer des variables,puis (ou simultanément) les initialiser
#include <stdio.h>long a = 1034827498;float x = 1023.234;
int main(){ int b; double y; float z; b = 1234; y = 1.365; z=1.0/y; …
![Page 46: Programmation en Cfouque/enseignement/ensta/Cours/cours1.pdf · Cours de programmation en C 3 Langage de programmation Le processeur contrôle tout, mais il ne comprend que le langage](https://reader033.vdocuments.pub/reader033/viewer/2022042806/5f762363f89bce60604a628b/html5/thumbnails/46.jpg)
Cours de programmation en C 17
Déclaration et initialisation
Dans un programme ou une fonction,on peut déclarer des variables,puis (ou simultanément) les initialiser
#include <stdio.h>long a = 1034827498;float x = 1023.234;
int main(){ int b; double y; float z; b = 1234; y = 1.365; z=1.0/y; …
Lors de la déclaration,le contenu
de la variableest aléatoire !
![Page 47: Programmation en Cfouque/enseignement/ensta/Cours/cours1.pdf · Cours de programmation en C 3 Langage de programmation Le processeur contrôle tout, mais il ne comprend que le langage](https://reader033.vdocuments.pub/reader033/viewer/2022042806/5f762363f89bce60604a628b/html5/thumbnails/47.jpg)
Cours de programmation en C 18
Opérateurs sur les nombres
Les entiers/flottants peuvent être manipulésgrâce aux opérateurs classiques suivants :
• a + b : addition• a - b : soustraction• a * b : multiplication• a / b : division (division euclidienne sur les entiers) (division flottante sur les réels)
• a % b : modulo sur les entiers (reste de la division euclidienne)
![Page 48: Programmation en Cfouque/enseignement/ensta/Cours/cours1.pdf · Cours de programmation en C 3 Langage de programmation Le processeur contrôle tout, mais il ne comprend que le langage](https://reader033.vdocuments.pub/reader033/viewer/2022042806/5f762363f89bce60604a628b/html5/thumbnails/48.jpg)
Cours de programmation en C 19
Affichage des variables
printf affiche sur la sortie standard (écran)le contenu de variables :
%d pour un int ou long %f pour un float ou double
![Page 49: Programmation en Cfouque/enseignement/ensta/Cours/cours1.pdf · Cours de programmation en C 3 Langage de programmation Le processeur contrôle tout, mais il ne comprend que le langage](https://reader033.vdocuments.pub/reader033/viewer/2022042806/5f762363f89bce60604a628b/html5/thumbnails/49.jpg)
Cours de programmation en C 19
Affichage des variables
printf affiche sur la sortie standard (écran)le contenu de variables :
%d pour un int ou long %f pour un float ou double
… printf(“a = %d et b = %d”,a,b); printf(“x = %f et y = %f”,x,y); return 0;}
![Page 50: Programmation en Cfouque/enseignement/ensta/Cours/cours1.pdf · Cours de programmation en C 3 Langage de programmation Le processeur contrôle tout, mais il ne comprend que le langage](https://reader033.vdocuments.pub/reader033/viewer/2022042806/5f762363f89bce60604a628b/html5/thumbnails/50.jpg)
Cours de programmation en C 20
Chaînes de bits
• x & y = x AND y• x | y = x OR y• x ^ y = x XOR y
opère bit à bit.• x << 8 = décalage de 8 bits vers la gauche
(correspond à la multiplication par 2**8 modulo 2**32)
• x >> 5 = décalage de 5 bits vers la droite• ~x = complément à 1 de x
![Page 51: Programmation en Cfouque/enseignement/ensta/Cours/cours1.pdf · Cours de programmation en C 3 Langage de programmation Le processeur contrôle tout, mais il ne comprend que le langage](https://reader033.vdocuments.pub/reader033/viewer/2022042806/5f762363f89bce60604a628b/html5/thumbnails/51.jpg)
Cours de programmation en C 21
Représentation dans d’autre
• Décimale: Exemple: 1234• Octale: Premier chiffre est un zéro.
Exemple: 0177• Hexadécimale: commence par 0x ou 0X. Ex: 0x1BF et 0XF2A
• Pour imprimer un entier sous forme hexadécimal
• int a; printf(“%x”,a);
![Page 52: Programmation en Cfouque/enseignement/ensta/Cours/cours1.pdf · Cours de programmation en C 3 Langage de programmation Le processeur contrôle tout, mais il ne comprend que le langage](https://reader033.vdocuments.pub/reader033/viewer/2022042806/5f762363f89bce60604a628b/html5/thumbnails/52.jpg)
Cours de programmation en C
scanf
• fonctionne à l’inverse de la fonction printf
• entrer une valeur dans une variable• appeler scanf avec un format et une
variable avec modification de la variable
• int a;• printf(“Entrer une valeur: ”);• scanf(“%d”,&a);
22
![Page 53: Programmation en Cfouque/enseignement/ensta/Cours/cours1.pdf · Cours de programmation en C 3 Langage de programmation Le processeur contrôle tout, mais il ne comprend que le langage](https://reader033.vdocuments.pub/reader033/viewer/2022042806/5f762363f89bce60604a628b/html5/thumbnails/53.jpg)
Cours de programmation en C
Exécution conditionnelleEn fonction du résultat d’un test, on peut
souhaiter exécuter une instruction, ou pas :
![Page 54: Programmation en Cfouque/enseignement/ensta/Cours/cours1.pdf · Cours de programmation en C 3 Langage de programmation Le processeur contrôle tout, mais il ne comprend que le langage](https://reader033.vdocuments.pub/reader033/viewer/2022042806/5f762363f89bce60604a628b/html5/thumbnails/54.jpg)
Cours de programmation en C
Exécution conditionnelleEn fonction du résultat d’un test, on peut
souhaiter exécuter une instruction, ou pas :
if (a > 0) printf(“Positif \n”);
![Page 55: Programmation en Cfouque/enseignement/ensta/Cours/cours1.pdf · Cours de programmation en C 3 Langage de programmation Le processeur contrôle tout, mais il ne comprend que le langage](https://reader033.vdocuments.pub/reader033/viewer/2022042806/5f762363f89bce60604a628b/html5/thumbnails/55.jpg)
Cours de programmation en C
Exécution conditionnelleEn fonction du résultat d’un test, on peut
souhaiter exécuter une instruction, ou pas :
if (a > 0) printf(“Positif \n”);
Une alternative:
![Page 56: Programmation en Cfouque/enseignement/ensta/Cours/cours1.pdf · Cours de programmation en C 3 Langage de programmation Le processeur contrôle tout, mais il ne comprend que le langage](https://reader033.vdocuments.pub/reader033/viewer/2022042806/5f762363f89bce60604a628b/html5/thumbnails/56.jpg)
Cours de programmation en C
Exécution conditionnelleEn fonction du résultat d’un test, on peut
souhaiter exécuter une instruction, ou pas :
if (a > 0) printf(“Positif \n”);
Une alternative:if (a > 0) printf(“Positif \n”);else printf(“Négatif ou nul\n”);
![Page 57: Programmation en Cfouque/enseignement/ensta/Cours/cours1.pdf · Cours de programmation en C 3 Langage de programmation Le processeur contrôle tout, mais il ne comprend que le langage](https://reader033.vdocuments.pub/reader033/viewer/2022042806/5f762363f89bce60604a628b/html5/thumbnails/57.jpg)
Cours de programmation en C
Un test ?
Le résultat d’un test est un entier :nul = fauxnon nul = vrai
Opérateurs de test• a==b : test d’égalité• a!=b : test de différence• a<b ou a>b : comparaison stricte• a<=b ou a>=b : comparaison large
![Page 58: Programmation en Cfouque/enseignement/ensta/Cours/cours1.pdf · Cours de programmation en C 3 Langage de programmation Le processeur contrôle tout, mais il ne comprend que le langage](https://reader033.vdocuments.pub/reader033/viewer/2022042806/5f762363f89bce60604a628b/html5/thumbnails/58.jpg)
Cours de programmation en C
Combinaison de tests
Il est possible de combiner (négation, conjonction, disjonction, etc) des tests
• (!(<test>)) : négation de <test>• ((<test1>) && (<test2>)) :
conjonction (<test1> ET <test2>)• ((<test1>) || (<test2>)) :
disjonction (<test1> OU <test2>)
![Page 59: Programmation en Cfouque/enseignement/ensta/Cours/cours1.pdf · Cours de programmation en C 3 Langage de programmation Le processeur contrôle tout, mais il ne comprend que le langage](https://reader033.vdocuments.pub/reader033/viewer/2022042806/5f762363f89bce60604a628b/html5/thumbnails/59.jpg)
Cours de programmation en C
Remarques sur les tests
• Ne pas hésiter à mettre des parenthèses• Aucun ordre n’est respecté à l’exécution
il faut donc veiller à ce que tous les testset sous-tests puissent être effectuéssans faire « planter » le programme !
• Une seule instruction est permise après le if ou le elsesi plusieurs instructions sont conditionnées
par le résultat du test⇒ instructions composées « {…} »
![Page 60: Programmation en Cfouque/enseignement/ensta/Cours/cours1.pdf · Cours de programmation en C 3 Langage de programmation Le processeur contrôle tout, mais il ne comprend que le langage](https://reader033.vdocuments.pub/reader033/viewer/2022042806/5f762363f89bce60604a628b/html5/thumbnails/60.jpg)
Cours de programmation en C
Boucles conditionnelles
En C, il est possible de faire répéterune instruction un grand nombrede fois :boucles
• nombre d’itérations fixé : for (cf. cours suivant)
• nombre d’itérations dépendant d’un test : while et do … while
![Page 61: Programmation en Cfouque/enseignement/ensta/Cours/cours1.pdf · Cours de programmation en C 3 Langage de programmation Le processeur contrôle tout, mais il ne comprend que le langage](https://reader033.vdocuments.pub/reader033/viewer/2022042806/5f762363f89bce60604a628b/html5/thumbnails/61.jpg)
Une instruction est exécutée,tant qu’un test est satisfait :
<test>
<instruction>
oui
non
Boucle while
![Page 62: Programmation en Cfouque/enseignement/ensta/Cours/cours1.pdf · Cours de programmation en C 3 Langage de programmation Le processeur contrôle tout, mais il ne comprend que le langage](https://reader033.vdocuments.pub/reader033/viewer/2022042806/5f762363f89bce60604a628b/html5/thumbnails/62.jpg)
Une instruction est exécutée,tant qu’un test est satisfait :
while <test> <test>
<instruction>
oui
non
Boucle while
![Page 63: Programmation en Cfouque/enseignement/ensta/Cours/cours1.pdf · Cours de programmation en C 3 Langage de programmation Le processeur contrôle tout, mais il ne comprend que le langage](https://reader033.vdocuments.pub/reader033/viewer/2022042806/5f762363f89bce60604a628b/html5/thumbnails/63.jpg)
Une instruction est exécutée,tant qu’un test est satisfait :
while <test> <instruction>
<test>
<instruction>
oui
non
Boucle while
![Page 64: Programmation en Cfouque/enseignement/ensta/Cours/cours1.pdf · Cours de programmation en C 3 Langage de programmation Le processeur contrôle tout, mais il ne comprend que le langage](https://reader033.vdocuments.pub/reader033/viewer/2022042806/5f762363f89bce60604a628b/html5/thumbnails/64.jpg)
Une instruction est exécutée,tant qu’un test est satisfait :
while <test> <instruction>
<test>
<instruction>
oui
non
⇒ l’instruction peut ne jamais être exécutée
Boucle while
![Page 65: Programmation en Cfouque/enseignement/ensta/Cours/cours1.pdf · Cours de programmation en C 3 Langage de programmation Le processeur contrôle tout, mais il ne comprend que le langage](https://reader033.vdocuments.pub/reader033/viewer/2022042806/5f762363f89bce60604a628b/html5/thumbnails/65.jpg)
Une instruction est exécutée,puis répétée tant qu’un test est satisfait :
Boucle do … while
![Page 66: Programmation en Cfouque/enseignement/ensta/Cours/cours1.pdf · Cours de programmation en C 3 Langage de programmation Le processeur contrôle tout, mais il ne comprend que le langage](https://reader033.vdocuments.pub/reader033/viewer/2022042806/5f762363f89bce60604a628b/html5/thumbnails/66.jpg)
Une instruction est exécutée,puis répétée tant qu’un test est satisfait :
do
Boucle do … while
![Page 67: Programmation en Cfouque/enseignement/ensta/Cours/cours1.pdf · Cours de programmation en C 3 Langage de programmation Le processeur contrôle tout, mais il ne comprend que le langage](https://reader033.vdocuments.pub/reader033/viewer/2022042806/5f762363f89bce60604a628b/html5/thumbnails/67.jpg)
Une instruction est exécutée,puis répétée tant qu’un test est satisfait :
do <instruction>
Boucle do … while
![Page 68: Programmation en Cfouque/enseignement/ensta/Cours/cours1.pdf · Cours de programmation en C 3 Langage de programmation Le processeur contrôle tout, mais il ne comprend que le langage](https://reader033.vdocuments.pub/reader033/viewer/2022042806/5f762363f89bce60604a628b/html5/thumbnails/68.jpg)
Une instruction est exécutée,puis répétée tant qu’un test est satisfait :
do <instruction>while <test>
Boucle do … while
![Page 69: Programmation en Cfouque/enseignement/ensta/Cours/cours1.pdf · Cours de programmation en C 3 Langage de programmation Le processeur contrôle tout, mais il ne comprend que le langage](https://reader033.vdocuments.pub/reader033/viewer/2022042806/5f762363f89bce60604a628b/html5/thumbnails/69.jpg)
Une instruction est exécutée,puis répétée tant qu’un test est satisfait :
do <instruction>while <test>
<test>
<instruction>
oui
non
Boucle do … while
![Page 70: Programmation en Cfouque/enseignement/ensta/Cours/cours1.pdf · Cours de programmation en C 3 Langage de programmation Le processeur contrôle tout, mais il ne comprend que le langage](https://reader033.vdocuments.pub/reader033/viewer/2022042806/5f762363f89bce60604a628b/html5/thumbnails/70.jpg)
Une instruction est exécutée,puis répétée tant qu’un test est satisfait :
do <instruction>while <test>
⇒ l’instruction est toujours exécutée au
moins une fois<test>
<instruction>
oui
non
Boucle do … while
![Page 71: Programmation en Cfouque/enseignement/ensta/Cours/cours1.pdf · Cours de programmation en C 3 Langage de programmation Le processeur contrôle tout, mais il ne comprend que le langage](https://reader033.vdocuments.pub/reader033/viewer/2022042806/5f762363f89bce60604a628b/html5/thumbnails/71.jpg)
Cours de programmation en C
Remarques sur les boucles
• Une seule instruction est permisedans la boucle while <test> <instruction>
do <instruction> while <test>;
si plusieurs instructions doivent être répétées⇒ instructions composées « {…} »
• L’indentation aide à repérer ce qui est répété (avec l’aide d’emacs également)
![Page 72: Programmation en Cfouque/enseignement/ensta/Cours/cours1.pdf · Cours de programmation en C 3 Langage de programmation Le processeur contrôle tout, mais il ne comprend que le langage](https://reader033.vdocuments.pub/reader033/viewer/2022042806/5f762363f89bce60604a628b/html5/thumbnails/72.jpg)
Cours de programmation en C 31
Ouvrages de référence
• Kernigham & Ritchie : Le langage C• Bracquelaire: Méthodologie de la
programmation en C
• Sedgewick : Algorithmes en C• Cormen, Leicerson, Rivest, Stein :
Introduction à l’algorithmique• Knuth : The Art of Computer Programming