Programmation en C Programmation en C Types fondamentaux

  • Slides: 46
Download presentation
Programmation en C

Programmation en C

Programmation en C – Types fondamentaux • Entier –short (16 bits), int (32 bits),

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 unsigned char unsigned short int unsigned long float double Longueur

Programmation en C Type unsigned char unsigned short int unsigned long float double Longueur Valeurs min/max 8 bits 0 à 255 8 bits -128 à 127 16 bits 0 à 65 535 16 bits -32 768 à 32 767 32 bits 0 à 4 294 967 295 32 bits -2 147 483 648 à 2 147 483 647 32 bits 0 à 4 294 967 295 32 bits -2 147 483 648 à 2 147 48 , 647 32 bits 3. 4 * 10^-38 à 3. 4 * 10^38 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

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_joueur 1, nom_joueur 2 • Exemples d’identificateur invalides – 1 nom, #toto, ceci n’est pas valide (à cause des espaces)

Programmation en C – Variables • On définit une variable par son type suivi

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 : Signifie que c’est optionnel type nom [= valeur]; • Exemples : int age; double salaire; int somme = 0;

Programmation en C • Opérateurs • Arithmétique +, - , * , / ,

Programmation en C • Opérateurs • Arithmétique +, - , * , / , % (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

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) 1. printf(message entre guillemets); –

Programmation en C • Instruction d’affichage printf (3 variantes) 1. printf(message entre guillemets); – Exemple : printf("Bonjour tout le monde "); 2. printf(format d’affichage entre guillemets, valeurs); – Exemple : printf("%c", 65); //affiche ‘A’ (avec code ASCII 65) 3. printf(message et format d’affichage entre guillemets, valeurs); – Exemple : printf("n. Votre salaire est : %lf ", salaire); – Il peut y avoir plusieurs formats d’affichage dans un même message – Exemple : – printf("n. Votre salaire est : %lf pour le taux = %lf ", salaire, taux);

Programmation en C • Saisie clavier (avec scanf) – On doit spécifier le type

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 :

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 : •

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 – Ce sont des commandes qui sont

Programmation en C • Commande au préprocesseur – 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

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 • Programme de calcul de salaire en C #include <stdio. h>

Programmation en C • Programme de calcul de salaire en C #include <stdio. h> #include <stdlib. h> int main(void) { Commandes au préprocesseur Entête et début de bloc double taux; double nb_heure; double salaire; Déclaration des variables printf( nn. Entrez le taux horaire svp : ); scanf( %lf , &taux); printf( nn. Entrez le nombre d’heures travaillees : ); scanf( %lf , &nb_heures); Sollicitations à l’écran Saisie dans la variable taux Saisie dans la variable nb_heures salaire = taux * nb_heures; printf( nn. Votre salaire de brut est : %lf , salaire); return EXIT_SUCCESS; } return et fin de bloc Calcul et affichage du salaire

 • Ajout de commentaires #include <stdio. h> #include <stdlib. h> /* Programme qui

• 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( nn. Entrez le taux horaire svp : ); scanf( %lf , &taux); //sollicitation du nombre d’heures travaillees printf( nn. Entrez le nombre d’heures travaillees : ); scanf( %lf , &nb_heures); //calcul et affichage du salaire = taux * nb_heures; printf( nn. Votre salaire de brut est : %lf , salaire); return EXIT_SUCCESS; } Commentaires en bloc avec /* */ Commentaires ligne par ligne avec //

Programmation en C • Instruction de sélection • Si-Sinon Si • Équivalent en C

Programmation en C • Instruction de sélection • Si-Sinon Si • Équivalent en C – if-else if

Programmation en C • Expression – N’importe quelle valeur après évaluation. – Une expression

Programmation en C • Expression – 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 – Instruction qui permet de sélectionner le

Programmation en C • Instruction de sélection – 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 : Si (expression booléenne) tâches à exécuter si

Programmation en C • Forme générale : 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 fin

Programmation en C • En C if (expression) { instructions à exécuter si l’expression

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);

Programmation en C • Exemple 1: if (x > 2) printf(" %d ", x); x++; • Exemple 2 : if (3 < x < -1) printf("? ? ? ? "); • Exemple 3 : if (x = 8) printf("? ? ? "); 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 • Exercice : Écrivez un programme qui saisit un nombre entier

Programmation en C • 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 – Il est possible de faire exécuter des instructions

Programmation en C • Si-Sinon – 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 fin

Programmation en C • En C if (expression) { instructions à exécuter si l’expression

Programmation en C • En C if (expression) { 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 • Exercice : Écrire un programme qui saisit un nombre entier

Programmation en C • 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 à

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

#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 "); if (nombre < 0) printf("négatif n"); else printf("positif n"); } return EXIT_SUCCESS; }

Programmation en C • Truc – Si on a les mêmes instructions qui se

Programmation en C • Truc – 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

#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"); else printf("positif n"); return EXIT_SUCCESS; }

Programmation en C • Instruction de sélections multiples – Si-Sinon Si • Forme générale

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) tâches à exécuter si l’expression est vraie Sinon Si (expression booléenne 3) tâches à exécuter si l’expression est vraie. . . 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

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

Programmation en C Les abréviations du C

Programmation en C • Chaque instruction d’affectation a une abréviation X = X +

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 •

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++); Affiche 1 et tour = tour + 1 Exemple 2 : int tour = 1; printf("%d", ++tour); tour = tour + 1 et Affiche 2

Instructions itératives

Instructions itératives

Programmation en C • Instruction itérative (de répétition ou boucle) – Instruction qui permet

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 : Tant que (expression booléenne) tâches à répéter

Programmation en C • Forme générale : 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 fin

Programmation en C • En C while (expression) { instructions à répéter tant que

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.

Programmation en C • Exemple 1: int x = 5; while (x > 0)

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

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.

Programmation en C • Exemple 2: int x = 5; while (x > 0)

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,

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 • Exercice : Écrivez un programme qui saisit un nombre entier

Programmation en C • 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

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 – 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. . .

 • Exemple : Validation d’un nombre entré qui doit être entre 1 et

• 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; Condition d’entrée multiple //première sollicitation du nombre printf("nn Entrez un nombre entre %d et %d svp: ", MIN, MAX); scanf ("%d", &nombre); //tant que le nombre est invalide, on avise et on redemande Structure if imbriquée while (nombre < MIN || nombre > MAX){ if (nombre < MIN) printf("nn Désolé, mais le nombre doit être positif"); else printf("nn Désolé, mais le nombre doit être inférieur ou égal à 10"); printf("nn Entrez un nombre entre %d et %d svp: ", MIN, MAX); scanf ("%d", &nombre); Convergence vers la } printf("nn. Votre nombre %d est valide. « , nombre); condition d’arrêt return EXIT_SUCCESS; }

FIN DU COURS

FIN DU COURS