Cours de Programmation CFSS - Partie 1 & 2 PDF
Document Details
Uploaded by Deleted User
CFSS
Salma KSIBI
Tags
Related
- Culture Informatique - 3ème - 2024-2025 - PDF
- Licence Informatique 1ère Année - Introduction à la Programmation (1) PDF
- Polycopié Algorithmique L1 PDF
- Cours de Programmation Informatique - Concepts de Base 2024-2025
- Algorithmique Avancé et Complexité PDF
- Les Bases de Programmation en C - Université Sultan Moulay Slimane - PDF
Summary
Ce document est un cours sur la programmation en langage C, destiné aux débutants. Il présente des concepts fondamentaux en informatique et en algorithmique, ainsi que des exemples de base de programmation.
Full Transcript
05/11/2024 ATELIER DE PROGRAMMATION Salma KSIBI Docteur Ingénieur en Informatique Description et objectifs du cours Le cours s’adresse aux débutants à la programmation. Il ne demande pas de prérequis,...
05/11/2024 ATELIER DE PROGRAMMATION Salma KSIBI Docteur Ingénieur en Informatique Description et objectifs du cours Le cours s’adresse aux débutants à la programmation. Il ne demande pas de prérequis, particuliers, ni de connaissances mathématiques poussées. Objectifs : Apprendre les bases de la programmation Se familiariser aux vocabulaires de programmation Ecrire et compiler un programme en langage C 1 05/11/2024 Plan du Cours Chapitre 1: Introduction à la programmation Chapitre 2: Conception des Algorithmes Chapitre 3: Les outils de programmation Chapitre 4: Les bases du langage C I. Introduction à la programmation C II. Syntaxe de base et premiers programmes III. Variables et types de données IV. Entrées et sorties V. Conditions et structures de contrôle VI. Boucles et structures répétitives VII. Fonctions VIII. Tableaux et chaines de caractères IX. Pointeurs X. Structures et utilisation des données CHAPITRE 1 INTRODUCTION A LA PROGRAMMATION 2 05/11/2024 C’est quoi l’informatique L’informatique est un mot composé de deux mots: Infor ation + Auto matique = Informatique Définition: L’informatique est une science de traitement automatique de l’information par une machine (Ordinateur) Le traitement: Le traitement est un ensemble d’opération effectuées sur l’information (Calcul, géstion, tri, traitement d’image, ….) C’est quoi l’informatique Système informatique: Le système informatique est un ensemble d’éléments en interaction entre eux en vue de traiter automatiquement l’information. Les élément informatiques: Éléments matériaux: l’écran, l’unité centrale, un clavier, une souris, …. logiciels: c’est tous les systèmes de base (code, programmes) 3 05/11/2024 Objectif de l’informatique Pallier les insuffisances humaines en matière de performance de calcul (résoudre des problèmes complexes) Accroître la performance du couple homme-machine (temps de réponse et qualité du résultat) Programmer, c’est quoi? Programmer signifie réaliser des « programmes informatiques ». Les programmes demandent à l'ordinateur d'effectuer des actions. L’ordinateur est rempli de programmes en tous genres : La calculatrice est un programme ; Le traitement de texte est un programme ; Le logiciel de « chat » est un programme ; Les jeux vidéo sont des programmes, etc. 4 05/11/2024 C’est quoi un « programme» ? Un programme est un “algorithme” traduit dans un langage de programmation (par exemple en C). Un algorithme est la description d'une suite d'actions (écrites dans un langage plus ou moins proche d’une langue naturelle: Français) à effectuer, dans un ordre donné, pour parvenir à un résultat. Problème Algorithme Question à résoudre par une Description d’un ensemble solution informatique d'actions Instance d'un problème = entrée Exécution dans un certain ordre nécessaire pour calculer une solution Produire solution informatique du problème au problème Étapes de la construction d’un programme Problème Algorithme Transcription Description formelle Programme Compilation Langage de programmation Solution Exécution Ordinateur Langage machine 5 05/11/2024 Mise au point d’un programme Un ordinateur est une machine capable d’exécuter des opérations, données par l’homme, à une très grande vitesse. Pour réaliser un programme, on doit indiquer à l’ordinateur toutes les opérations à effectuer. Ces opérations doivent être comprises par l’ordinateur. Problème Instructions Ordinateur Mise au point d’un programme L’ordinateur est une machine qui ne comprend que son propre langage, qui est le langage binaire (que des 0 et des 1)! Par exemple, pour demander à l’ordinateur d’afficher la lettre « A » à l’écran, il faut lui écrire un certain message comme: 0110101100110010101011010. C'est le langage informatique de l’ordinateur, appelé langage binaire. Problème: Comment parler à l'ordinateur plus simplement qu'en binaire avec des 0 et des 1 ?!! 6 05/11/2024 Mise au point d’un programme L'idée c'est d'inventer de nouveaux langages qui seraient ensuite traduits en binaire pour l'ordinateur! Exemple 1: Donc la phrase « Affiche un « A » à l’écran» sera traduite par le programme de «traduction» en quelque chose comme: «0110101100110010101011010». Exemple 2: Donc la phrase « Fais le calcul 3 + 5 » qui sera traduite par le programme de « traduction» en quelque chose comme : «0010110110010011010011110». Mise au point d’un programme ►Pour pouvoir effectuer un traitement donné, la machine doit disposer du programme exécutable correspondant. Ce programme doit se trouver en mémoire et doit alors être codé en binaire (langage machine). ►Un langage de programmation permet au programmeur d'écrire son programme suivant une grammaire qui peut être, soit celle du langage machine même, soit une grammaire facilement interprétable par la machine ou pouvant être traduite en langage machine au moyen d'un outil logiciel dit compilateur du langage. 7 05/11/2024 Mise au point d’un programme Code source: c'est tout simplement le code de votre programme écrit dans un langage de haut niveau. C'est donc vous qui écrivez le code source, qui sera ensuite traduit en binaire. Venons-en justement au « programme de traduction » qui traduit notre langage de haut niveau (comme le C ou le C++) en binaire. Ce programme est le compilateur. La traduction, elle, s'appelle la compilation. Il existe un compilateur différent pour chaque langage de haut niveau. C'est d'ailleurs tout à fait logique : les langages étant différents, on ne traduit pas le C de la même manière qu'on traduit le Java. Le programme binaire créé par le compilateur est appelé l'exécutable. C'est d'ailleurs pour cette raison que les programmes ont l'extension «.exe » comme EXEcutable. Mise au point d’un programme Langage de haut Langage de bas niveau niveau Il existe plusieurs niveaux de langages. Plus un langage est haut niveau, plus il est proche de la langue parlante (français / anglais). Il existe de nombreux langages de plus ou moins haut niveau en informatique dans lesquels on peut écrire les programmes. En voici quelques-uns par exemple : C ; C++ ; Java ; Visual Basic ; etc. 8 05/11/2024 Les langages de programmation Les langages de programmation permettent à l’humain: Communiquer avec l’ordinateur; Langage de lui transmettre les instructions; humain de lui demander d’effectuer les actions Classification des langages : Visual Basic Il existe, en fait, trois catégories de langages : Le langage binaire : un langage machine exprimé par des chiffres (0 ou 1). Il produit des programmes automatiquement consommables (compréhensibles) par la C/C++ machine mais qui sont illisibles et non portables. Les langages de bas niveau (comme l'assembleur) : ils produisent des programmes facilement interprétables par la machine mais d'utilisation lourde pour les programmeurs. Les langages évolués : ils sont souples et produisent des ASM programmes clairs et lisibles mais ils doivent encore être compilés (traduits en langage machine par un compilateur du Langage langage) pour générer des programmes exécutables. Nous en machine citons: Fortran, Basic, Pascal, C, C++, Visual Basic, Visual C++, Java... Le Langage C Inventé dans les années 1972 au laboratoire Bell par Ritchie et Ken Thompson. Le langage C est un langage dit « de moyen niveau ». Plus proche de l’électronique « langage de bas niveau » La conception évoluée comme les langages de hauts niveau. Avantages : – Un nombre restreint des concepts, – compilateurs et bibliothèques intégrés sur la plus part des architectures, – développement des logiciels qui n’auront pas besoin aucun support d’exécution,… Inconvénients : – Programmes non portables « le code exécutable dépend de l’ordinateur cible! » – pas de programmation orientée objet,… 9 05/11/2024 Récapitulatif Pour réaliser des programmes informatiques, on doit écrire dans un langage que l'ordinateur « comprend ». Il existe de nombreux langages informatiques que l'on peut classer par niveau. Les langages dits de « haut niveau » sont parfois plus faciles à maîtriser au détriment souvent d'une perte de performances dans le programme final. Le langage C est considéré comme étant de niveau moyen. C'est un des langages de programmation les plus célèbres et les plus utilisés au monde. Le code source est une série d'instructions écrites dans un langage informatique. Le compilateur est un programme qui transforme le code source en code binaire, qui peut alors être exécuté par le processeur. Les.exe que l'on connaît sont des programmes binaires, il n'y a plus de code source à l'intérieur. La programmation ne requiert pas en elle-même de connaissances mathématiques poussées (sauf dans quelques cas précis où votre application doit faire appel à des formules mathématiques, comme c'est le cas des logiciels de cryptage). Néanmoins, il est nécessaire d'avoir un bon sens de la logique et d'être méthodique. CHAPITRE 2 CONCEPTION DES ALGORITHMES 10 05/11/2024 Qu'est ce qu'un algorithme ? Algorithme : mot dérivé du nom du mathématicien al_Khwarizmi qui a vécu au 9ème siécle, était membre d’un académie des sciences à Bagdad. Un algorithme prend des données en entrée, exprime un traitement particulier et fournit des données en sortie. Programme : série d’instructions pouvant s’exécuter en séquence, ou en parallèle (parallélisme matériel) qui réalise (implémente) un algorithme données résultats ? Traitement par ordinateur Qu'est ce qu'un algorithme ? Le terme algorithme est employé en informatique pour décrire une méthode de résolution de problème programmable sur machine. Un algorithme est une suite finie et ordonnée d'opérations (actions) élémentaires finies (en temps et moyens). Elle est régie par un ensemble de règles ou d'instructions de contrôle (séquencement, sélection et itération) permettant d'aboutir à un résultat déterminé d'un problème donné. Problème Algorithme Résultat 11 05/11/2024 Pourquoi l’algorithmique ? Pour obtenir de la «machine» qu’elle effectue un travail à notre place. Problème: expliquer à la «machine» comment elle doit s'y prendre. Besoins : - savoir expliciter son raisonnement. - savoir formaliser son raisonnement. - concevoir (et écrire) des algorithmes: séquence d’instructions qui décrit comment résoudre un problème particulier Problème Algorithme Programme Exemple Pour planter et arroser un ensemble d'arbres, on peut procéder de la manière suivante: planter l'ensemble d'arbres et les arroser tous à la fin. Algorithme de plantation et d'arrosage de plusieurs arbres 1- Creuser un trou. 2- Placer un arbre dans le trou. 3- Reboucher le trou. 4- S'il existe encore des arbres exécuter les actions 1, 2, 3 et 4. Sinon exécuter les actions suivantes. 5- Arroser les arbres. L'algorithme correspondant indique un ensemble d'opérations (1, 2, 3 et 4) à répéter un certain nombre de fois (règle d'itération) et l'opération ou les opérations (5 ou 1, 2, 3 et 4) à exécuter selon qu'il reste ou non des arbres à planter (règle de sélection). Remarque Pour résoudre le problème précédent, on peut procéder autrement : planter et arroser arbre par arbre. On conclut alors qu'à un problème donné pourraient correspondre plusieurs algorithmes 12 05/11/2024 Les problèmes fondamentaux en algorithmique Complexité En combien de temps un algorithme va -t-il atteindre le résultat escompté? De quel espace a-t-il besoin? Calculabilité Existe-t-il des tâches pour lesquelles il n'existe aucun algorithme ? Etant donnée une tâche, peut-on dire s'il existe un algorithme qui la résout? Correction Peut-on être sûr qu'un algorithme réponde au problème pour lequel il a été conçu ? Etapes d’un algorithme La préparation d’un problème, en vue de son passage sur ordinateur va nécessiter plusieures étapes: 1. Définition exacte du probème: On ne peut pas espérer resoudre un problème non complétement défini. Il faut définir clairement les objectifs que l’on souhaite atteindre (et leurs limitations éventuelles), à partir des données existantes. 2. Choix de la méthode de résolution: Pour atteindre les objectifs ciblés à partir des données existantes, une méthode résolution s’impose. 3. Étude détaillée de l´algorithme: Une fois la méthode de résolution fixée, il reste à détailler l’algorithme correspondant, en étudiant tous les cas possibles qui peuvent se présenter afin que cette méthode puisse engendrer un résultat 13 05/11/2024 Etapes d’un algorithme 4. Codage et mise au point du programme: L’algorithme étant explicité, il ne reste plus qu’à le traduire dans un langage de programmation, et à le rentrer dans la mémoire de l’ordinateur. Pour que ce programme puisse nous donner des résultats, deux étapes doivent suivre: a. Compilation: traduction du programme langage dans le machine. Des erreurs peuvent (lexicales, survenir syntaxiques). b. Exécution: une fois que la compilation est correcte, la phase d’exécution peut commencer. Le résultat obtenu est relatif aux données introduites. - erreurs: le programme peut ne pas donner les résultats escomptées: revoir la méthode de résolution, l’algorithme ou le codage. Etapes d’un algorithme P Définition R O Choix de la méthode de résolution G A R Étude détaillée de l’algorithme correspondant N A A M Codage suivant un langage de programamtion L M Y A Entrée du programme en ordinateur S T E I Exécution O N 14 05/11/2024 Conception d’algorithmes 7131 5 Souvent le problème est "mal posé"... 12345 Rechercher l'indice du plus petit élément d'une suite => Spécifier = produire un énoncé Énoncé = texte où sont définies sans ambiguïté : 2, 4 ? L'entrée (données du problème) La sortie (résultats recherchés) Les relations (éventuelles) entre les données et les résultats Que dois-je obtenir ? Enoncé: Soit I l'ensemble des indices des éléments égaux au minimum d'une suite. Déterminer le plus petit élément de I. Synthèse Les 3 étapes principales pour arriver à la résolution d’un problème sur un ordinateur: comprendre le problème initial et préciser les données fournies (entrées); préciser les résultats attendus (sorties); déterminer le processus qui permet de passer des entrées aux sorties (l’algorithme): Commencer par décrire les grandes étapes Raffiner chacune des étapes jusqu’à avoir tout décrit en termes d’instructions primitives Insérer des assertions aux endroits clés dans l’algorithme 15 05/11/2024 Exemple d’énoncé d’un problème Exemple : On souhaite calculer et afficher , à partir d’un prix hors taxe saisi, la TVA ainsi que le prix TTC Le montant TTC dépend : - Du prix HT - Du taux de TVA de 20,6 EXEMPLE D’ÉNONCÉ D’UN PROBLÈME On souhaite calculer et afficher , à partir d’un prix hors taxe saisi, la TVA ainsi que le prix TTC Le montant TTC dépend de : - Du prix HT - Du taux de TVA de 20,6 « Traitement à réaliser » 16 05/11/2024 EXEMPLE D’ÉNONCÉ D’UN PROBLÈME On souhaite calculer et afficher , à partir d’un prix hors taxe saisi, la TVA ainsi que le prix TTC Le montant TTC dépend de : - Du prix HT - Du taux de TVA de 20,6 « Données en entrée » Exemple d’énoncé d’un problème On souhaite calculer et afficher , à partir d’un prix hors taxe saisi, la TVA ainsi que le prix TTC Le montant TTC dépend de : - Du prix HT - Du taux de TVA de 20,6 « Données en sortie » 17 05/11/2024 Algorithme CalculTVA Algorithme CalculTVA {Saisit un prix HT et affiche le prix TTC correspondant} Constantes (TVA : réel) 20.6 (Titre : chaîne) "Résultat" Variables prixHT : réel Variable prixTTC, montantTVA : réels {déclarations} Début {préparation du traitement} écrire("Donnez-moi le prix hors taxe :") lire(prixHT) prixTTC prixHT* (1+TVA/100) {calcul du prix TTC} montantTVA prixTTC- prixHT écrire(Titre) {présentation du résultat} écrire(prixHT, «euros H.T. + TVA ",TVA, « devient », prixTTC, «eurosT.T.C.") Fin Déclaration des données Variable : type Instruction permettant de réserver de l’espace mémoire pour stocker des données Dépendant du type des données : entiers, réels, caractères, etc.) Exemples : Variables val, unNombre : entiers nom, prénom : chaînes de caractères 18 05/11/2024 Déclaration des données Le type booléan Il correspond à l’ensemble de deux état logiques (VRAI (1),FAUX(0) ) auxquels on peut appliquer les operateurs (ET,OU,NON) A B A OU b A ET b A NON (A) 0 0 0 0 0 1 0 1 1 0 1 0 1 0 1 0 1 1 1 1 Déclaration algorithmique : a, b : booléen Déclaration des données Le type numérique: Il correspond à l’ensemble de définition : Z pour les entiers (positif et négatif) et R pour les réels. Les opérations les plus fréquente sur ces valeurs sont: Déclaration algorithmique : n1, n2 : entier x1, x2 :réel Opérateur Représentation Exemple arithmétique algorithmique Addition + R=a+b Soustraction - R=a-b Multiplication * R=a*b Puissance ^ 7 ^ 2 = 49 Division / R=a/b (b≠0) Division entière div 7 div 2 = 3 Modulo mod 7 mod 2 = 1 (le reste de la (7 div 2 = 3 et reste division entière) 1) 19 05/11/2024 Déclaration des données Le type caractère Il correspond à l’ensemble des chaines de caractère constitue de caractères de différent types: des chiffres de ”0” à ”9”, des lettres (minuscules et majuscules) , des caractères spéciaux (”*”, ”/”, ”{”, ”$”, ”#”, ”%” …). Un caractère sera toujours noté entre des guillemets. Le caractère espace (blanc) sera noté ” ”. La table ASCII code tous les 256 Caractères usuels Déclaration algorithmique : c1, c2 : caractère Déclaration des données Opérateurs relationnels On peut appliquer entre deux objets de même type une opération de relation dont le résultat est un booléen Priorité Opération Symbole 1 > Strictement supérieure à 2 >= Strictement ou égale à 3 < Strictement inférieure à 4 b) { c = a; } else { c = b; } printf("Le plus grand entre a et b est %d\n", c); if (c % 2 == 0) { printf("%d est un nombre pair\n", c); } else { printf("%d est un nombre impair\n", c); } return 0; } Quelles sont les sorties du programme? Partie 5 : Éléments du langage et règles d’écriture 49 05/11/2024 Opérateurs de Base +,-,*, / opérateurs arithmétique de base % reste d'une division entière == test d'égalité != test de différence , = test de comparaison ! négation || ou logique pour évaluer une expression && et logique pour évaluer une expression 99 Opérateurs arithmétiques Opérateurs bi-opérandes : +,- * , / , % (modulo) Les opérandes doivent être des valeurs numériques. entier opérateur entier -> résultat entier réel opérateur réel -> résultat réel entier opérateur réel -> résultat réel Exemples: int a,b; float a,b; a=10; b= 3 a=12.6; b= 3.0 a+b 13 a+b 13.6 a-b 7 a-b 9.6 a*b 30 a*b 37.8 a/b 3 (division euclidienne) a/b 4.2 (division réelle) a%b 1 a%b erreur de syntaxe 50 05/11/2024 Opérateurs d'affectation Affectation simple syntaxe : variable = expression la valeur de l'expression est stockée dans la mémoire à l'endroit réservé pour la variable Exemples : a = 2; b=1; c=0; a = b+c; a = b && c; la valeur de l'expression vaut la valeur affectée Attention : affectation et test d'égalité if (a =1) instruction1; else instruction2; L'instruction1 est toujours déclenchée. a = b = 3; (évaluation de droite à gauche) Opérateurs d'affectation Affectation et opération : +=, -=, *=, /=, %=,=, &=, |=, ^= Syntaxe : variable opérateur expression équivalent à : variable = variable opérateur expression Exemple : int i; i= 3; i+=2; // même chose que i=i+2; printf("%d\n",i); -> 5 51 05/11/2024 Les opérateurs d’assignation Opérateurs d’assignation: Sont évalués de droite à gauche: – var = exp assignation directe – var *= exp assignation suite à la multiplication – var /= exp assignation suite à la division – var %= exp assignation suite au modulo – var += exp assignation suite à l’addition – var -= exp assignation suite à la soustraction – Ils sont tous équivalent à : var = var opérateur exp 103 Les opérateurs d’incrémentation ++ et -- ++ var effectue une pré incrémentation - - var effectue une pré décrémentation var ++ effectue une post incrémentation (de gauche à droite) var - - effectue une post décrémentation (de gauche à droite) Exemples i=1; i=1; printf("i= %d\n",i); -> i=1 printf("i= %d\n",i); -> i=1 printf("i= %d\n",++i); -> i=2 printf("i= %d\n",i++); -> i=1 printf("i= %d\n",i); -> i=2 printf("i= %d\n",i); -> i=2 Conclusions : 1/ appendre la règle (pour comprendre des programmes) 2/ à n'utiliser que lorsque il n'y a pas d'ambiguïté : x=y+z++; // à éviter x++; // pas de risque 52 05/11/2024 Les opérateurs comparaison a = 2+3 valeur de a: 5 a = 3%2 valeur de a: 1 a = (3==3) valeur de a: 1 a = (6==5) valeur de a: 0 a = (2!=3) valeur de a: 1 a = (6>b : a est décalé à droite de b bits (les bits insérés valent le bit de poids fort) 14 0000 0000 0000 1110 14 >> 2 0000 0000 0000 0011 3 -6 1111 1111 1111 1010 -6 >> 1 1111 1111 1111 1101 -3 un décalage d'une position à droite correspond à une division par 2 (en respectant le signe) Opérateur conditionnel Syntaxe : expression1 ? expression2 : expression3 à peu près équivalent à : if (expression1) expression2; else expression3; Exemple : maximum = (x>y) ? x : y; if (x>y) maximum =x ; else maximum = y; Conseil : ne pas utiliser (peu clair) 55 05/11/2024 Opérateurs d'adressage Adresse de : & Syntaxe : &variable , donne l'adresse mémoire de la variable Exemple : int i,adr; adr = &i; ne pas confondre avec le "et" bit à bit Dont l'adresse est : * Syntaxe *expression : donne le mot mémoire dont l'adresse est donnée par l'expression Exemple : int i,adr; i=1; adr = &i; printf("%d", *adr); -> 1 Opérateur de taille : sizeof Donne la taille de l'implantation. Deux syntaxes : 1/ sizeof expression exemple : int i,j ; j= sizeof i; -> 2 ou 4 (octets) 2/ sizeof (type) exmples : typedef char tab; tab t; int n; n = sizeof(int), -> 2 ou 4 (octets) n = sizeof(tab) -> 100 (char) 56 05/11/2024 Opérateurs divers ( ) : force l'ordre des calculs Exemple : 1 + 2 * 3 -> 7 (1+2) * 3 -> 9 [ ] pour les tableaux t équivalent à *(t+2) -> et. (opérateurs sur structures, plus tard..) Priorité des opérateurs Priorité Opérateurs Description Associativité 15 () [ ] ->. opérateurs d'adressage -> ++ -- incrément/décrément ~ complément à un (bit à bit) ! non unaire 14 12 +- "" -> 11 > décalage bit à bit -> 10 < >= opérateur relationnels -> 9 == != "" -> 8 & et bit à bit -> 7 ^ ou exclusif bit à bit -> 6 | ou bit à bit -> 5 && et logique -> 4 || ou logique -> 3 ?: conditionnel = = 18) { if (heure < 9 || heure > 17) { printf("Vous êtes majeur.\n"); printf("C'est en dehors des heures } de bureau.\n"); return 0; } } return 0; } Exemple 2 : int main() { Exemple 4 : int temperature = 25; int main() { int humidite = 70; int note = 85; char mention = 'B'; if (temperature > 20 && if ((note >= 80 && mention == 'A') humidite > 60) { || (note >= 70 && mention == 'B')) printf("Le temps est chaud et { humide.\n"); } printf("L'étudiant a réussi avec return 0; } une bonne mention.\n"); } return 0; } L'instruction if…. else L'instruction if dans sa forme basique permet de tester une seule condition. Cependant, il est souvent nécessaire de définir un comportement alternatif au cas où la condition n'est pas réalisée. L'instruction if...else permet d'exécuter une autre série d'instructions lorsque la condition initiale est fausse. Syntaxe : if (condition 1 réalisée) { liste d'instructions 1} else if(condition 2 réalisée) { liste d'instructions 2} else { autre série d'instructions } 64 05/11/2024 L'instruction if…. else Exemple: #include int main() { float note; // Demander à l'utilisateur de saisir la note printf("Veuillez entrer la note de l'étudiant (sur 20) : "); scanf("%f", ¬e); // Évaluation de la note avec if...else if (note >= 18) { printf("Résultat : Excellent !\n"); } else if (note >= 16) { printf("Résultat : Très bien !\n"); } else if (note >= 14) { printf("Résultat : Bien !\n"); } else if (note >= 10) { printf("Résultat : Passable.\n"); } else { printf("Résultat : Échec.\n"); } return 0; } L’instruction switch L'instruction switch permet de tester plusieurs valeurs sur le contenu d'une même variable. Ce type de branchement conditionnel simplifie considérablement le test de plusieurs valeurs d'une variable, car cette opération, bien que possible, aurait été plus complexe à réaliser avec des instructions if imbriquées. Syntaxe : switch (variable) { case valeur1: // Liste d'instructions à exécuter si variable == valeur1 break; case valeur2: // Liste d'instructions à exécuter si variable == valeur2 break; case valeurN: // Liste d'instructions à exécuter si variable == valeurN break; default: // Liste d'instructions à exécuter si aucune valeur ne correspond } 65 05/11/2024 L’instruction switch Exemple 1: #include int main() { int jour; printf("Entrez un numéro de jour (1-7) : "); scanf("%d", &jour); switch (jour) { case 1: printf("Lundi\n"); break; case 2: printf("Mardi\n"); break; case 3: printf("Mercredi\n"); break; case 4: printf("Jeudi\n"); break; case 5: printf("Vendredi\n"); break; case 6: printf("Samedi\n"); break; case 7: printf("Dimanche\n"); break; default: printf("Numéro de jour invalide. Veuillez entrer un nombre entre 1 et 7.\n"); } return 0; } L’instruction switch Exemple 2 : case '-': printf("%.2f - %.2f = %.2f\n", a, #include b, a - b); int main() { printf("Vous avez choisi la char operateur; soustraction.\n"); float a, b; break; // Demander à l'utilisateur de case '*': saisir deux nombres et un printf("%.2f * %.2f = %.2f\n", a, opérateur b, a * b); printf("Entrez le premier nombre printf("Vous avez choisi la : "); multiplication.\n"); scanf("%f", &a); break; printf("Entrez le second nombre : case '/': "); if (b != 0) { scanf("%f", &b); printf("%.2f / %.2f = %.2f\n", a, printf("Entrez un opérateur (+, - b, a / b); , *, /) : "); printf("Vous avez choisi la scanf(" %c", &operateur); division.\n"); } else { switch (operateur) { printf("Erreur : Division par case '+': zéro.\n"); } printf("%.2f + %.2f = %.2f\n", a, break; b, a + b); default: printf("Vous avez choisi printf("Opérateur invalide. l'addition.\n"); Veuillez entrer +, -, * ou /.\n"); break; } return 0; } 66 05/11/2024 Structures itératives: Application Ecrire un programme demandera à l'utilisateur de saisir les notes de contrôle continu (CC) et d'examen. Il calculera ensuite la note finale en appliquant une pondération de 40% pour le contrôle continu et 60% pour l'examen. Après le calcul, le programme déterminera le statut de l'étudiant. (validé ou non validé) Ensuite, l'utilisateur pourra recalculer la note finale en choisissant parmi plusieurs options de pondération (50%-50%, 70%-30%, ou 30%-70%) à l'aide d'une instruction switch. Correction de l’ Application #include int main() { float noteCC; // Note de contrôle continu float noteExamen; // Note d'examen float noteFinale; // Note finale int choix; // Choix de l'utilisateur pour le calcul // Demande des notes à l'utilisateur printf("Entrez la note de contrôle continu (CC) : "); scanf("%f", ¬eCC); printf("Entrez la note d'examen : "); scanf("%f", ¬eExamen); // Calcul de la note finale par défaut (40% CC et 60% examen) noteFinale = (noteCC * 0.4) + (noteExamen * 0.6); // Affichage de la note finale printf("La note finale est : %.2f\n", noteFinale); // Vérification du statut de l'étudiant if (noteFinale >= 10) { printf("Statut : Validé\n"); } else { printf("Statut : Non validé\n"); } 67 05/11/2024 Correction de l’ Application //Choix pour recalculer la note finale avec différentes pondérations printf("\nVoulez-vous recalculer la note finale avec d'autres pondérations ?\n"); printf("1. 50%% CC et 50%% Examen\n"); printf("2. 70%% CC et 30%% Examen\n"); printf("3. 30%% CC et 70%% Examen\n"); printf("0. Quitter\n"); printf("Entrez votre choix : "); scanf("%d", &choix); switch (choix) { case 1: noteFinale = (noteCC * 0.5) + (noteExamen * 0.5); printf("Nouvelle note finale (50%% CC, 50%% Examen) : %.2f\n", noteFinale); break; case 2: noteFinale = (noteCC * 0.7) + (noteExamen * 0.3); printf("Nouvelle note finale (70%% CC, 30%% Examen) : %.2f\n", noteFinale); break; case 3: noteFinale = (noteCC * 0.3) + (noteExamen * 0.7); printf("Nouvelle note finale (30%% CC, 70%% Examen) : %.2f\n", noteFinale); break; case 0: printf("Quitter le programme.\n"); break; default: printf("Choix invalide. Veuillez entrer un chiffre entre 0 et 3.\n"); } return 0; } Application (suite) Ecrire une version du programme, divisée en plusieurs fonctions pour améliorer la lisibilité et la structure. Chaque fonction a une responsabilité spécifique, ce qui facilite la maintenance et la compréhension du code: saisirNotes: Demande à l'utilisateur de saisir les notes et les stocke dans les variables correspondantes. calculerNoteFinale: Calcule la note finale en fonction des notes et d'un coefficient pour le contrôle continu. afficherStatut: Affiche la note finale et détermine si l'étudiant est validé ou non. recalculerNoteFinale: Permet à l'utilisateur de choisir une nouvelle pondération et de recalculer la note finale. 68 05/11/2024 Application (suite) : Correction #include // Déclaration des fonctions void saisirNotes(float *noteCC, float *noteExamen); float calculerNoteFinale(float noteCC, float noteExamen, float coefficientCC); void afficherStatut(float noteFinale); void recalculerNoteFinale(float noteCC, float noteExamen); int main() { float noteCC, noteExamen; //Saisie des notes de l'utilisateur saisirNotes(¬eCC, ¬eExamen); //Calcul et affichage de la note finale par défaut (40% CC, 60% Examen) float noteFinale = calculerNoteFinale(noteCC, noteExamen, 0.4); afficherStatut(noteFinale); Application (suite) : Correction //Recalcul de la note finale avec différentes pondérations recalculerNoteFinale(noteCC, noteExamen); return 0; } //Fonction pour saisir les notes void saisirNotes(float *noteCC, float *noteExamen) { printf("Entrez la note de contrôle continu (CC) : "); scanf("%f", noteCC); printf("Entrez la note d'examen : "); scanf("%f", noteExamen); } //Fonction pour calculer la note finale float calculerNoteFinale(float noteCC, float noteExamen, float coefficientCC) { return(noteCC*coefficientCC)+(noteExamen*(1-coefficientCC)); } // Fonction pour afficher le statut de l'étudiant void afficherStatut(float noteFinale) { printf("La note finale est : %.2f\n", noteFinale); if (noteFinale >= 10) { printf("Statut : Validé\n"); } else { printf("Statut : Non validé\n"); } } 69 05/11/2024 Application (suite) : Correction // Fonction pour recalculer la note finale avec différentes pondérations void recalculerNoteFinale(float noteCC, float noteExamen) { int choix; printf("\nVoulez-vous recalculer la note finale avec d'autres pondérations ?\n"); printf("1. 50%% CC et 50%% Examen\n"); printf("2. 70%% CC et 30%% Examen\n"); printf("3. 30%% CC et 70%% Examen\n"); printf("0. Quitter\n"); printf("Entrez votre choix : "); scanf("%d", &choix); float noteFinale; switch (choix) { case 1: noteFinale = calculerNoteFinale(noteCC, noteExamen, 0.5); printf("Nouvelle note finale (50%% CC, 50%% Examen) : %.2f\n", noteFinale); break; Application (suite) : Correction case 2: noteFinale = calculerNoteFinale(noteCC, noteExamen, 0.7); printf("Nouvelle note finale (70%% CC, 30%% Examen) : %.2f\n", noteFinale); break; case 3: noteFinale = calculerNoteFinale(noteCC, noteExamen, 0.3); printf("Nouvelle note finale (30%% CC, 70%% Examen) : %.2f\n", noteFinale); break; case 0: printf("Quitter le programme.\n"); break; default: printf("Choix invalide. Veuillez entrer un chiffre entre 0 et 3.\n"); } } 70 05/11/2024 Partie 7 : Boucles et Structures itératives Les boucles Une boucle est un moyen de répéter des instructions en fonction du résultat d'une condition. Ces structures, appelées itératives, permettent d'exécuter un bloc de code plusieurs fois sans avoir à le réécrire. Elles sont essentielles pour automatiser des tâches répétitives dans un programme. Nous allons explorer trois types principaux de boucles en C : 1.Boucle while 2.Boucle do... while 3.Boucle for 71 05/11/2024 La boucle while La première boucle que nous allons étudier est la boucle while (qui signifie « tant que » en français). Cette structure de contrôle permet de répéter un bloc d'instructions tant qu'une condition spécifiée est remplie. Autrement dit, tant que la condition est vraie, le code à l'intérieur de la boucle sera exécuté. Syntaxe : La syntaxe de la boucle while est relativement simple : while ( Condition ) { Bloc d'instructions à répéter } La boucle while #include int main() { int n; long long factoriel = 1; // Utiliser long long pour gérer de grands résultats // Demander à l'utilisateur de saisir un nombre entier positif printf("Entrez un nombre entier positif : "); scanf("%d", &n); // Vérification que l'utilisateur a entré un nombre positif if (n < 0) { printf("Erreur : Le nombre doit être positif.\n"); return 1; // Sortie du programme avec un code d'erreur } // Calcul du facteur avec la boucle while int i = 1; // Initialisation de la variable de boucle while (i