Programmation en C
Programmation en C Types fondamentaux Entier short (16 bits), int (32 bits), long (32 bits) Réel float (32 bits), double (64 bits) Caractère char (8 bits) Booléens sont représentés par 0 (faux) et 1(vrai) Tous ces types peuvent être préfixés de unsigned (types non-signés strictement positifs)
Programmation en C Type Longueur Valeurs min/max unsigned char 8 bits 0 à 255 char 8 bits -128 à127 unsigned short int 16 bits 0 à 65 535 short int 16 bits -32 768 à 32 767 unsigned int 32 bits 0 à 4 294 967 295 int 32 bits -2 147 483 648 à 2 147 483 647 unsigned long 32 bits 0 à 4 294 967 295 long 32 bits -2 147 483 648 à 2 147 48 ,647 float 32 bits 3.4 * 10^-38 à 3.4 * 10^38 double 64 bits 1.8 * 10^-308 à 1.8 * 10^+308
Programmation en C Variables Un identificateur de variable est le nom qu’on désire lui donner. Un identificateur doit obligatoirement commencer par une lettre. Le seul symbole permis est le petit souligné ( _ ). Le langage est sensible à la casse. Exemples d’identificateur valides Nom, prenom, nom_joueur1, nom_joueur2 Exemples d’identificateur invalides 1nom, #toto, ceci n’est pas valide (à cause des espaces)
Programmation en C Variables On définit une variable par son type suivi d’un identificateur de variable suivi, optionnellement, d’une affectation de valeur. Tout cela terminé par un point virgule. Forme générale : type nom [= valeur]; Exemples : int age; double salaire; int somme = 0; Signifie que c’est optionnel
Programmation en C Opérateurs Arithmétique Booléen Relationnel +, - , * , / , % (modulo) Booléen && (et), || (ou), ! (non) Relationnel <, >, <=, >=, == et != égal différent
Programmation en C Instruction d’affectation En C le symbole pour l’affectation est = Pour mettre la valeur 2,45 en mémoire dans une variable nommée salaire, il suffit de faire : salaire = 2.45; Pour augmenter une variable de 1, il suffit de faire : x = x + 1; Sortie écran simple (avec printf) On doit spécifier le type des valeurs à afficher à l’aide d’un format d’affichage Format d’affichage %d = entier %lf = réel (double) %c = caractère \n = sauter une ligne à l’écran
Programmation en C Instruction d’affichage printf (3 variantes) printf(message entre guillemets); Exemple : printf("Bonjour tout le monde "); printf(format d’affichage entre guillemets, valeurs); Exemple : printf("%c", 65); //affiche ‘A’ (avec code ASCII 65) printf(message et format d’affichage entre guillemets, valeurs); Exemple : printf("\nVotre salaire est : %lf ", salaire); Il peut y avoir plusieurs formats d’affichage dans un même message Exemple : printf("\nVotre salaire est : %lf pour le taux = %lf ", salaire, taux);
Programmation en C Saisie clavier (avec scanf) On doit spécifier le type des valeurs à afficher à l’aide d’un format de lecture Format de lecture %d = entier %lf = réel %c = caractère
Programmation en C Instruction scanf scanf("format de lecture", &id_variable); Exemple : printf("Entrez votre taux horaire svp : "); scanf("%lf ", &taux_horaire); Le & est vital devant le nom de la variable.
Programmation en C Programme principal Nos programmes en C contiennent : Commande au préprocesseur #include et #define //commentaire d’en-tête du programme principal int main(void) { //début d’un bloc de code Déclaration de variables; Instructions; return EXIT_SUCCESS; } //fin du bloc
Programmation en C Commande au préprocesseur #include Ce sont des commandes qui sont exécutées avant la compilation. #include Permet d’inclure des librairies de fonctions utilitaires nécessaire. #include <stdio.h> //permet d’utiliser printf et scanf #include <stdlib.h> //permet d’utiliser EXIT_SUCCESS #include <math.h> //permet d’utiliser cos, sin, sqrt, … … //nous en verrons d’autres plus tard
Programmation en C Commande au préprocesseur #define Permet de donner des noms à des valeurs constantes du programme. Nous les mettrons toujours en majuscules. #define TRUE 1 #define FALSE 0 #define MAX_HEURE 40.0 ***À NOTER : Il n’y a pas de ; à la fin!
Programmation en C Commandes au préprocesseur Entête et début de bloc Programme de calcul de salaire en C #include <stdio.h> #include <stdlib.h> int main(void) { double taux; double nb_heure; double salaire; printf(\n\nEntrez le taux horaire svp : ); scanf(%lf ,&taux); printf(\n\nEntrez le nombre d’heures travaillees : ); scanf(%lf ,&nb_heures); salaire = taux * nb_heures; printf(\n\nVotre salaire de brut est : %lf ,salaire); return EXIT_SUCCESS; } Commandes au préprocesseur Entête et début de bloc Déclaration des variables Sollicitations à l’écran Saisie dans la variable taux Saisie dans la variable nb_heures Calcul et affichage du salaire return et fin de bloc
Commentaires en bloc avec /* */ Ajout de commentaires #include <stdio.h> #include <stdlib.h> /* Programme qui calcule un salaire brut à partir * d’un taux horaire et d’un nombre d’heures travaillées */ int main(void) { double taux; //sert à la saisie du taux horaire double nb_heure; // sert à la saisie du nombre d’heures double salaire; //sert au calcul du salaire //sollicitation du taux horaire printf(\n\nEntrez le taux horaire svp : ); scanf(%lf ,&taux); //sollicitation du nombre d’heures travaillees printf(\n\nEntrez le nombre d’heures travaillees : ); scanf(%lf ,&nb_heures); //calcul et affichage du salaire salaire = taux * nb_heures; printf(\n\nVotre salaire de brut est : %lf ,salaire); return EXIT_SUCCESS; } Commentaires en bloc avec /* */ Commentaires ligne par ligne avec //
Programmation en C Équivalent en C Instruction de sélection if if-else Si Si-Sinon Si-Sinon Si Équivalent en C if if-else if-else if
Programmation en C Expression Expression booléenne N’importe quelle valeur après évaluation. Une expression a un type L’affectation est une expression égale à la valeur affectée (exemple : x = 5, vaut 5). Exemples d’expressions : x, 5, (x == y), x = y = z = 0 Expression booléenne Tout ce qui donne comme résultat vrai (≠ 0) ou faux (0)
Programmation en C Instruction de sélection Si (dans le monde réel) Instruction qui permet de sélectionner le code à exécuter selon l’évaluation d’une expression booléenne (vrai/faux) ou numérique (≠ 0 / 0). Si (dans le monde réel) Cette instruction de sélection permet de sélectionner les tâches à exécuter si l’évaluation d’une expression donne vraie.
Programmation en C Forme générale : Exemple (en pseudo-code) Si (expression booléenne) tâches à exécuter si l’expression est vraie fin Exemple (en pseudo-code) Si (j’ai assez d’argent), je vais au cinéma
Programmation en C En C if (expression) { instructions à exécuter si l’expression est différente de zéro (vraie) } Les parenthèses sont obligatoires Les accolades délimitent ce qu’on appelle un bloc de code. Le code d’un bloc doit être indenté (décalé) vers la droite. Si les accolades sont manquantes, seule la première instruction est calculée comme faisant partie du if.
Programmation en C Exemple 1: if (x > 2) printf(" %d ", x); x++; Sera toujours exécutée car il n’y a pas d’accolades { } Ne sera jamais exécutée car 3 < x donnera 0 ou 1 et sera nécessairement > -1 Sera toujours exécutée car x = 8 donne 8, donc toujours vrai
Programmation en C #include <stdio.h> #include <stdlib.h> Exercice : Écrivez un programme qui saisit un nombre entier et qui affiche si le nombre est négatif. #include <stdio.h> #include <stdlib.h> int main(void) { int nombre; printf("Entrez un nombre svp : "); scanf ("%d", &nombre); if (nombre < 0) printf("Votre nombre est négatif \n"); return EXIT_SUCCESS; }
Programmation en C Si-Sinon Forme générale : Exemple Il est possible de faire exécuter des instructions dans le cas contraire de l’évaluation d’une expression. Forme générale : Si (expression booléenne) tâches à exécuter si l’expression est vraie Sinon tâches à exécuter si l’expression est fausse fin Exemple Si (j’ai assez d’argent), je vais au cinéma Sinon, je reste à la maison
Programmation en C if (expression) { } else { En C instructions à exécuter si l’expression est différente de 0 } else { instructions à exécuter si l’expression est égale à 0 La règle pour les accolades s’applique encore soit que si les accolades sont manquantes, seule la première instruction est calculée comme faisant partie du else.
Programmation en C #include <stdio.h> #include <stdlib.h> Exercice : Écrire un programme qui saisit un nombre entier et qui affiche si le nombre est pair ou si le nombre est impair. #include <stdio.h> #include <stdlib.h> int main(void) { int nombre; printf("Entrez un nombre svp : "); scanf ("%d", &nombre); if (nombre % 2 == 0) printf("Votre nombre est pair \n"); else printf("Votre nombre est impair \n"); return EXIT_SUCCESS; }
Programmation en C On peut mettre plusieurs instructions de sélection imbriquées (une à l’intérieur de l’autre) Exercice : Écrire un programme qui saisit un nombre entier. On affiche si le nombre est pair et on affiche s’il est positif ou négatif. Même chose pour un nombre impair.
#include <stdio.h> #include <stdlib.h> int main(void) { int nombre; printf("Entrez un nombre svp : "); scanf ("%d", &nombre); if (nombre % 2 == 0) { printf("Votre nombre est pair et "); if (nombre < 0) printf("négatif \n"); else printf("positif \n"); } else { printf("Votre nombre est impair et "); return EXIT_SUCCESS;
Programmation en C Truc Cela évite la répétition inutile de code! Si on a les mêmes instructions qui se répètent dans le if et dans le else, on peut les sortir et les mettre avant ou après le bloc (selon le cas). Cela évite la répétition inutile de code!
#include <stdio.h> #include <stdlib.h> int main(void){ //version corrigée! int nombre; printf("Entrez un nombre svp : "); scanf ("%d", &nombre); if (nombre % 2 == 0) printf("Votre nombre est pair et "); else printf("Votre nombre est impair et "); if (nombre < 0) printf("négatif \n"); printf("positif \n"); return EXIT_SUCCESS; }
Programmation en C Instruction de sélections multiples Si-Sinon Si Forme générale : Si (expression booléenne 1) tâches à exécuter si l’expression est vraie Sinon Si (expression booléenne 2) Sinon Si (expression booléenne 3) ... Sinon //optionnel ici tâches à exécuter si rien n’a été évalué à VRAI fin
Programmation en C Exemple Si (j’ai au moins $30.00), Je vais au restaurant Sinon Si (j’ai au plus $15.00), Je vais au cinéma Sinon Si (j’ai au plus $5.00), Je vais à la crèmerie Sinon, Je reste à la maison fin
Programmation en C Les abréviations du C
Chaque instruction d’affectation a une abréviation Programmation en C Chaque instruction d’affectation a une abréviation X = X + 3 X += 3 X = X – 3 X -= 3 X = X * 4 X *= 4 X = X % 2 X %= 2 X = X / 5 X /= 5 X =X + 1 X++ X = X – 1 X--
Programmation en C Différence entre x++ et ++x X++ : post incrémentation L’expression entière est évaluée avant l’incrémentation ++X : pré incrémentation L’incrémentation se fait avant l’évaluation de l’expression Exemple 1 : int tour = 1; printf("%d", tour++); Exemple 2 : int tour = 1; printf("%d", ++tour); Affiche 1 et tour = tour + 1 tour = tour + 1 et Affiche 2
Instructions itératives
Programmation en C Instruction itérative (de répétition ou boucle) Instruction qui permet de répéter du code à exécuter selon l’évaluation d’une expression booléenne (vrai/faux) ou numérique (≠ 0 / 0). Tant que (dans le monde réel) Cette instruction permet de répéter les tâches à exécuter si l’évaluation d’une expression donne vraie.
Programmation en C Forme générale : Exemple Tant que (expression booléenne) tâches à répéter tant que l’expression est vraie fin Exemple Tant que (il ne m’a pas payé), je ne lui parle plus
Programmation en C En C while (expression) { instructions à répéter tant que l’expression est différente de zéro (vraie) } Les parenthèses sont obligatoires Les accolades délimitent ce qu’on appelle un bloc de code. Le code d’un bloc doit être indenté (décalé) vers la droite. Si les accolades sont manquantes, seule la première instruction est calculée comme faisant partie du while.
Exemple 1: int x = 5; while (x > 0) { printf("%d ", x); x--; } Programmation en C Exemple 1: int x = 5; while (x > 0) { printf("%d ", x); x--; } Condition d’entrée dans la boucle Réponses : 5 4 3 2 1
Programmation en C Mise en garde La condition d’arrêt est le contraire de la condition d’entrée. Entrée : x > 0 Arrêt : x <= 0 Il faut toujours au moins une instruction à l’intérieur de la boucle qui permet de converger vers la condition d’arrêt de la boucle sinon ce sera une boucle infinie.
Exemple 2: int x = 5; while (x > 0) printf("%d ", x); x--; Programmation en C Exemple 2: int x = 5; while (x > 0) printf("%d ", x); x--; Boucle infinie : seulement la première instruction fait partie de la boucle. Pas de convergence vers la condition d’arrêt.
Programmation en C Exercice : Dites ce que vaudront les valeurs de x, y et z après l’exécution de cette boucle int x = 5; int y = 3; int z = 3; while (y) { x %= z++; y = y - 1; } Réponses: x = 2; y = 0; z = 6
Programmation en C initialisation Exercice : Écrivez un programme qui saisit un nombre entier et qui affiche tous les nombres de 1 jusqu’à la valeur entrée. #include <stdio.h> #include <stdlib.h> int main(void) { int nombre; //nombre à saisir int tour; //sert à compter les tours de boucle printf("Entrez un nombre svp : "); scanf ("%d", &nombre); //affiche toutes les valeurs //prises par la variable TOUR tour = 1; while (tour <= nombre) { printf("%d ", tour); tour++; } return EXIT_SUCCESS; initialisation Analyse de la condition d’arrêt de la boucle Convergence vers la condition d’arrêt
Programmation en C Il n’y a pas de restriction sur ce que peut contenir un bloc d’instructions affectation, affichage, lecture, opérations if, if-else, if-else if une autre boucle while En d’autres termes on peut imbriquer des instructions de sélection et d’itération à l’intérieur de d’autres instructions de sélection et/ou d’itération...
Condition d’entrée multiple Exemple : Validation d’un nombre entré qui doit être entre 1 et 10 #include <stdio.h> #include <stdlib.h> #define MIN 1 #define MAX 10 int main(void) { int nombre; //première sollicitation du nombre printf("\n\n Entrez un nombre entre %d et %d svp: ", MIN,MAX); scanf ("%d", &nombre); //tant que le nombre est invalide, on avise et on redemande while (nombre < MIN || nombre > MAX){ if (nombre < MIN) printf("\n\n Désolé, mais le nombre doit être positif"); else printf("\n\n Désolé, mais le nombre doit être inférieur ou égal à 10"); } printf("\n\nVotre nombre %d est valide. « , nombre); return EXIT_SUCCESS; Condition d’entrée multiple Structure if imbriquée Convergence vers la condition d’arrêt
FIN DU COURS