Algorithmique et Programmation en Langage C
Transcription
Algorithmique et Programmation en Langage C
Université Mohammed V – Agdal Ecole Mohammadia d'Ingénieurs Département Génie Informatique Rabat Plan CHAPITRE 1: NOTIONS D'ALGORITHMIQUE CHAPITRE 2: Algorithmique et Programmation en Langage C CONCEPTS DE BASE DU LANGAGE C CHAPITRE 3: LES TABLEAUX LES POINTEURS CHAPITRE 4 LES FONCTIONS Mr N.EL FADDOULI Année Universitaire:2014/2015 EMI / Dept Génie Informatique/ N. El Faddouli ETAPES ET DEMARCHES DE RESOLUTION ALGORITHMIQUE EMI / Dept Génie Informatique/ N. El Faddouli 1 Fonctions de base d’un ordinateur Fonctions de base d’un ordinateur Exemple 1: Calcul de A op B sur une Calculette Exemple 2: Robot de Jardinage A ti Actions d base: de b IIntroduction d i d des d données é numériques éi (A (A,B) B) Introduction de l’opérateur Creuser un trou. Affichage du résultat Reboucher un trou. Placer un arbre dans un trou. Arroser un arbre. Trois fonctions principales: Entrée des données (saisie) Traitement (calcul ) Sortie des résultats (affichage) Remarque: Algorithme de plantation d'un arbre: 1- Creuser un trou. une Action complexe sera décomposée en plusieurs actions p p plus simples. p Exemple: (30 + (40/25) ) / (13 * (5 + 31)) Décomposition: 2- Placer un arbre dans le trou. 3- Reboucher le trou. Algorithme de plantation et d'arrosage de plusieurs arbres: R1 = 40/25 R2 = 30+R1 R3 = 5+31 R4 = 13*R3 R = R2/R4 1- Creuser un trou. 2- Placer un arbre dans le trou. trou 3- Reboucher le trou. On constate: 4- S'il existe encore des arbres Nécessité de mémorisation des résultats intermédiaires Exécuter les actions 1, 2, 3 et 4. L’ordre d’exécution des différentes actions est important Si Sinon E é t les Exécuter l actions ti suivantes i t (5,…). (5 ) Deux D autres t ffonctions ti essentielles: ti ll Mémorisation 5- Arroser les arbres Séquencement EMI / Dept Génie Informatique/ N. El Faddouli 2 EMI / Dept Génie Informatique/ N. El Faddouli 3 2 Fonctions de base d’un ordinateur Fonctions de base d’un ordinateur Résumé: Remarques: •Que Que signifie une fonction de base d d’un un ordinateur? Planter tous les arbres et les arroser à la fin Ou Planter et arroser arbre par arbre •Quelles sont les fonctions de base d’un ordinateur et la signification de chacune? - Entrée (saisie, lecture) de données: A un problème donné pourraient correspondre plusieurs algorithmes - Traitement (calcul) de données: L'action 4 vérifie si une condition est vraie ou non. Sélection. - Sortie (affichage) des résultats: Les actions 1, 2, 3 et 4 sont répétées un certain - Mémorisation: nombre de fois. Itération. -Séquencement: - Sélection: -Itération: EMI / Dept Génie Informatique/ N. El Faddouli 4 EMI / Dept Génie Informatique/ N. El Faddouli 5 3 L'ALGORITHMIQUE L'ALGORITHMIQUE Concepts fondamentaux Étapes de mise au point d’un programme Action (Ordre ou instruction): • Opération de base que l'ordinateur sait faire. • Produit un effet spécifique en un temps fini. Algorithme: Programmeur Problème? • Suite finie d'instructions. • Ordre déterminé. Analyse du problème • Appliqué à un nombre fini de données. Algorithme • Indépendant de l'ordinateur et des langages de p g programmation. (Editeur de texte) Programme en Langage évolué (Compilateur) Compilation Algorithme de la vie quotidienne: Recette de cuisine, guides d'appareils électriques, … Caractéristiques: - Exécutés par l'être humain Prog exécutable - Exprimés à demi-mot - Contiennent des implicites Données Algorithme pour ordinateur: Doit être précis et compréhensible Résultat Utilisateur Entrées + Instructions + Sorties Par ordinateur EMI / Dept Génie Informatique/ N. El Faddouli 6 EMI / Dept Génie Informatique/ N. El Faddouli 7 4 L'ALGORITHMIQUE L'ALGORITHMIQUE Exemple de problème Exemple de problème La facture de téléphone - Entrées: consommation, prix_unitaire, ttva et prix_abonnement. Programme C calculant le montant de la facture de téléphone #include <stdio.h> main( ) { int consommation; float prix_abonnement , prix_unitaire, tva, PHT, PT ; - Traitement: Calcul du montant total PHT et PT - Sorties (Le résultat final à afficher ): PHT, PT. Algorithme: Lire (consommation,prix_unitaire, ttva, prix_abonnement) PHT PT (consommation * prix_abonnement prix_unitaire) + printf("Entrer la valeur de la consommation :"); scanf("%d",&consommation) ; printf("Entrer la valeur du prix unitaire :"); PHT * (1 + ttva) scanf("%f",&prix_unitaire) ; Ecrire PT printf("Entrer la valeur de la TVA :"); Cas de figure: Consommation = 100 unités scanf("%f",&tva) ; P i unitaire Prix it i = 0.50 0 50 DH printf("Entrer la valeur du prix abonnement :"); Prix d’abonnement = 70 DH scanf("%f",&prix_abonnement) ; Le taux de TVA = 20% Le processeur attendra la saisie des entrées PT =PHT * (1 + tva) ; (100 0.50, (100, 0 50 0.2 0 2 ett 70) par l'utilisateur, l' tili t f it les fait l calculs l l : PHT = (100*0.5)+70=120 et PT printf("Le prix total est de %f DH\n",PT); = 120*(1+0.2)=144 } et affiche le résultat final 144. EMI / Dept Génie Informatique/ N. El Faddouli PHT=(consommation * prix_unitaire) + prix_abonnement ; 8 EMI / Dept Génie Informatique/ N. El Faddouli 9 5 L'ALGORITHMIQUE L'ALGORITHMIQUE Actions de base Exercice: Pseudo code • Signaler les erreurs dans ces instructions: Langage informel proche du langage naturel et Entier A , B indépendant de tout langage de programmation. A 55 BA+F Les variables (voir Langage C page 46) B+A 32 - Symboles S b l dé désignant i td des d données é d de diffé différents t ttypes. B 40 - Caractéristiques: Nom. • Donner les valeurs finales de A et B: Type. X … Entier A , B Valeur. Valeur C … A 55 Exemple: Entier X B A *2 Caractère C BB A B AA+B L'affectation (voir Langage C page 48) Variable Expression Calculer l’expression et stocker le résultat dans la variable Exemple: X 10 X (X*2) + 45 C 'f' EMI / Dept Génie Informatique/ N. El Faddouli X 10 65 C f 10 EMI / Dept Génie Informatique/ N. El Faddouli 11 6 L'ALGORITHMIQUE L'ALGORITHMIQUE Actions de base Actions de base La lecture ((voir Langage g g Cp page g 49)) Lire (Variable) Exemple: Lire (a) Exercices: 1- Écrire un algorithme qui calcule et affiche la somme et Étapes d’exécution: le produit de deux entiers saisis au clavier. -Attendre la saisie d’une valeur. 3- Écrire un algorithme qui calcule et affiche l'entier M -Après validation: Lire (a,b,c) * Stocker cette valeur dans la variable indiquée. * Passer à l'instruction suivante L'écriture (voir Langage C page 48) composé des chiffres à l’envers d'un entier N saisi au clavier. L’entier N est composé de 4 chiffres Exemple: N = 2579 Ecrire (expression) M = 9752 Remarque: Pour designer le reste de la division Exemple: euclidienne, utilisez l'opérateur Mod: Ecrire (a) Soient X et Y deux entiers: Ecrire ("bonjour") X Mod Y Le reste de X / Y Ecrire (a, b, c) Ecrire ("Le résultat est:", a) Ecrire (a + b) Ecrire (''La somme:", a + b) EMI / Dept Génie Informatique/ N. El Faddouli 12 EMI / Dept Génie Informatique/ N. El Faddouli 13 7 L'ALGORITHMIQUE L'ALGORITHMIQUE Structures de contrôles Structures de contrôles La Sélection simple réduite La Sélection simple(voir Langage C page 52) SI Bloc 1 SI condition condition ALORS Début instruction1 … Début instruction1 … Fin Fi Fin SINON Bloc 2 ALORS Début instruction1' … Fi Fin Exemple: Calcul du prix total PT de N articles de prix unitaire PU avec remise de 10% si le montant dépasse 1500 Dh. Important: Utiliser l'indentation pour indiquer les blocs. Lire ( N ) Exemple: Afficher le maximum de A et B saisis au clavier Lire Lire(A, (A,B)B) Lire (PU) PT *0.9 PT N * PU Si SiA>B Alors A>B Alors C Ecrire A ("Le maximum est: ",A) Sinon Sinon CB Si PT>1500 Alors PT PT - PT* 0.1 Ecrire ("Le montant est: ",PT) Ecrire ("Le maximum est: ",B) Ecrire ("Le ( Le maximum est: ",C) ,C) Exercice: Calcul de la taxe sur le chiffre d'affaire CA saisi au clavier sachant que le taux est de: 10% si CA<5000Dh et 20% si CA≥5000Dh EMI / Dept Génie Informatique/ N. El Faddouli 14 EMI / Dept Génie Informatique/ N. El Faddouli 15 8 L'ALGORITHMIQUE L'ALGORITHMIQUE Structures de contrôles Structures de contrôles Les sélections simples imbriquées SI condition Les expressions logiques ALORS Début Expression = Vrai ou Faux Bloc 1 Fin Opérateurs logiques: ET, OU, NON Exemples: A=1 B=2 C=3 SINON Début Bloc 2 Fin Les blocs d'instructions contiennent à leur tour des instructions de sélections (SI…SINON…) (SI SINON ) Exemple: afficher les entiers A, B et C dans l'ordre croissant: Lire (A, B, C) (B>0) OU (C<1) = Vrai (A>5) ET (C<A) = Faux (B>A) ET (C>0) = Vrai NON ((B>A) ET (C>B)) = Faux Les variables booléennes Si A ≥ B Alors Début Si B ≥ C Alors Ecrire (C, B, A) Sinon Début Si C ≥ A Alors ….. Fin Fin SINON …. EMI / Dept Génie Informatique/ N. El Faddouli (B>8) OU (C<1) = Faux Variables pouvant contenir VRAI ou FAUX. Exemple: Soient A, B et C les coefficients d'une équation de second degré. Delta B*B – 4*A*C V ( Delta > 0 ) Si V=Vrai ALORS ….. 16 EMI / Dept Génie Informatique/ N. El Faddouli Si V ALORS …. 17 9 L'ALGORITHMIQUE L'ALGORITHMIQUE Structures de contrôles Structures de contrôles La sélection multiple p ((voir Langage g g C page p g 52)) Equivalent en langage C Exemple: Effectuer une opération (+, -, * ou /) sur deux Algo C Exemple Var. booléenne Var. entière int V; Vrai 0 Faux 0 NON ! entiers A et B selon la valeur d' un caractère C. Lire (A, C, B) ( 1 ) if (V==1)… if (V) … SELON C Si C='+' Alors Ecrire ("La Somme=", A+B) Début Sinon '+': Ecrire ("La Somme=", A+B) Si C='-' ("La différence =", A-B) '-' :Alors EcrireEcrire ("La différence=", A-B) Sinon…: … SINON SINON: in alide") ….. Ecrire ("Opération invalide") Fin if (V==0)… if(!V)… ET && if ( A>=B && B>=C) … OU || if ( A<B || B<C) … = (égale) (é l ) == if ( A == 0)… 0) ≠ (différent) != if ( A != 0)… ► La valeur d'une expression (variable) Traitement Exercice: Traduire en langage C ll'algorithme algorithme de tri des trois entiers A, B et C. ► Plusieurs valeurs possibles Choix du traitement SELON Expression Début Valeur1 : Bloc1 Valeur2 : Bloc2 …. ValeurN : BlocN SINON : Bloc0 Fin EMI / Dept Génie Informatique/ N. El Faddouli 18 EMI / Dept Génie Informatique/ N. El Faddouli 19 10 L'ALGORITHMIQUE L'ALGORITHMIQUE Structures de contrôles Structures de contrôles E Exercices: i L'instruction L'i t ti itérative ité ti POUR (voir Langage C page 54) 1°- Résolution d'une équation de 1ier degré: A*X+B=0 2°- Vérifier si un employé a droit à un crédit ou non selon son ancienneté (A) et sa note (N) comme Exemple: Calculer et afficher la somme S des entiers entre 1 et N (saisi au clavier) S = 1 + 2 + 3 + ….+N indiqué ci-dessous. A≥5 : A<5 : N≥18 Crédit accordé Lire (N) S0 SS+1 SS+2 SS+3 ….. SS+N N<18 Crédit non accordé Ecrire ("La somme= ", S) N≥13 Crédit accordé N<13 Crédit non accordé A=4: N≥16 Crédit accordé N<16 Crédit non accordé A=3: Lire (N) S0 S S i+ i 1 ttel que N≥ i ≥1 Pour à lN Même instruction SS+i Ecrire ("La somme= ", S) A= 1 ou 2 Crédit non accordé EMI / Dept Génie Informatique/ N. El Faddouli 20 EMI / Dept Génie Informatique/ N. El Faddouli 21 11 L'ALGORITHMIQUE L'ALGORITHMIQUE Structures de contrôles Structures de contrôles Syntaxe générale: (voir Langage C page 54) POUR Compteur A à B Début Bloc 1 Fin Nombre de répétition : B-A+1 fois Instructions répétées B-A+1 fois L'instruction L'instr ction itérative itérati e TANT QUE(voir Langage C page 55) ► Répéter un traitement tant qu'une condition est satisfaite. ►Evaluer la condition avant de faire le traitement. TANT QUE Condition Condition d'exécution d exécution Début ► Répéter un traitement un nombre connu de fois. ► Utiliser un compteur incrémenté (ou décrémenté) à chaque itération. Lire (N) S0 i 1 TANT QUE i ≤ N 1- Initialisation du compteur par A 2 Si Compteur 2C t ≤B: Exécution du bloc: Bloc1 4- Incrémentation de Compteur de 1 5- Retour à 2 Bloc d'instructions à répéter Exemple: Calculer S = 1+2+…+ N (N saisi au clavier) Étapes d'exécution 3- Instruction1 … Fin Début SS+i ii+1 Fin Ecrire ("La somme= ", S) 6 Sinon: Fin de la boucle. 6boucle Exercice Afficher les nombres impairs se trouvant entre 1 et N EMI / Dept Génie Informatique/ N. El Faddouli 22 EMI / Dept Génie Informatique/ N. El Faddouli 23 12 L'ALGORITHMIQUE L'ALGORITHMIQUE Structures de contrôles Structures de contrôles Important: L L'instruction instruction itérative FAIRE …TANT QUE (voir Langage C page 55) Condition fausse au départ Le bloc d'instructions à répéter ne sera pas exécuté. Le bloc d'instructions dans "TANT QUE" sera exécuté 0 ou plusieurs fois. fois ► Répéter un traitement tant qu'une condition est satisfaite. FAIRE Instruction1 Instruction2 … TANT QUE Condition Exemple: Saisie de N ≤ 0 dans l'algorithme précédent. Bloc d'instructions à répéter Condition d'exécution Exemple: Afficher les entiers entre 0 et N à ll'envers envers Lire ( N ) FAIRE Ecrire ( N ) NN-1 TANT QUE N ≥ 0 Remarque: Après la ligne TANT QUE, N vaut ► Evaluation de la condition après … l'exécution du traitement Bloc d'instructions exécuté au moins une fois Exemple: Saisie de N < 0 dans l'exemple précédent. Résumé: Choix de la forme d'itération appropriée selon le problème à résoudre. EMI / Dept Génie Informatique/ N. El Faddouli 24 EMI / Dept Génie Informatique/ N. El Faddouli 25 13 L'ALGORITHMIQUE L'ALGORITHMIQUE Exemple complet Exemple complet Objectif: Calculer et afficher le résultat de conversion Remarque: q d'un entier strictement positif dans une base quelconque Division de N par B autant de fois que possible Itération Utilisation d’une boucle. (comprise entre 2 et 10). Entrées: Le nombre N et la base B Résultat = Combinaison des restes Sorties: Le résultat de conversion R Version 2°: Traitement: Convertir le nombre N dans la base B 1- Lire ( N, B ) Cas particuliers: N≤0, B<2 ou B>10 2- Effectuer une succession de division de N par B autant de fois qu qu'il il le faut. faut Version 1°: 3- Le résultat est la combinaison des restes. 1- Lire ( N, B ) Version 3°: 2- Convertir N en base B 1- Lire ( N, B ) 3- Ecrire ( R ) 3 2- Tant Qu'il le faut (condition à déterminer) faire Analyse par l'exemple: N=11 et B=2 Conversion Ξ divisions successives de N par B 11/2= 5 Reste=1 5/2=2 Reste=1 2/2=1 Reste=0 1/2=0 Reste=1 3- Diviser N par B pour calculer le reste R 4- Conserver le quotient dans N 5 Afficher le reste R La division de N par B est possible quand le quotient est non nul Version 4° ► Résultat=1011 EMI / Dept Génie Informatique/ N. El Faddouli 26 EMI / Dept Génie Informatique/ N. El Faddouli 27 14 L'ALGORITHMIQUE L'ALGORITHMIQUE Exemple complet Exemple complet Version 4°: Version 6°: On considère les cas particuliers 1- Faire 1- Lire ( N, B ) Lire ( N ) 2- Tant Que (le résultat de N/B≠0) Tant Que ( N≤0 ) Début 3 3- R N mod B 4- N N/B 5 Ecrire ( R ) Le reste de N/B 3- Tant Que (N≠0) Début Version 5 5°:: 1- Lire ( N, B ) 2- Tant Que (N≠0) Début R N mod B 4- N N/B 5 Ecrire ( R ) Lire ( B ) Tant Que ( B<2 OU B>10 ) Fin 33 2- Faire 4- R N mod B 5- N N/B 6- Ecrire ( R ) Fin Trace d’algorithme (Validation de l'algorithme) Simulation de l'exécution de l'algorithme Fin Valeurs des variables et les messages g affichés. Cas particuliers N'accepter que les valeurs N>0 et 10 ≥ B ≥2 EMI / Dept Génie Informatique/ N. El Faddouli 28 EMI / Dept Génie Informatique/ N. El Faddouli 29 15 L'ALGORITHMIQUE L'ALGORITHMIQUE Exemple complet Exemple complet Trace de l'algorithme pour Opération N N=11 et B=2 B 1 Faire 11 1Lire ( N ) 11 2 2 Tant Que ( N≤0 3 11) 2 2Faire 4 11 2 Lire ( B ) 5 5 2 Tant Que ( B<2 OU B>10 ) 6 5 2 3- Tant Que (N≠0) 3 5 2 Début 4 45 R N mod B 2 5 52 N N/B2 6 62) 2 Ecrire ( R Trace de l'algorithme pour N=11 et B=2 R Affichage Opération N B R Affichage - - 1 11 - - - - - 2 11 2 - - - - 3 11 2 - - 1 - 4 11 2 1 - 1 - 5 5 2 1 - 1 1 6 5 2 1 1 1 - 3 5 2 1 - 1 - 4 5 2 1 - 1 - 5 2 2 1 - 1 1 6 2 2 1 1 2 2 1 - 3 2 2 1 - 4 2 2 0 - 4 2 2 0 - 5 1 2 0 - 5 1 2 0 - 6 1 2 0 0 6 1 2 0 0 3 1 2 0 - 3 1 2 0 - 4 1 2 1 - 4 1 2 1 - 5 0 2 1 - 5 0 2 1 - 6 0 2 1 1 6 0 2 1 1 3 0 2 1 - 3 0 2 1 - 3 Fin FIN EMI / Dept Génie Informatique/ N. El Faddouli FIN 30 EMI / Dept Génie Informatique/ N. El Faddouli 31 16 L'ALGORITHMIQUE Exemple complet Validation des différentes possibilités Par classes de valeurs des entrées N et B : ► N ≤ 0 et B : OK. ► B < 2 ou B > 10 et N: OK. ► N < B: OK (Une itération) R=N ► N ≥ B (Cas général): N devient nul après une succession finie de division de N par B Arrêt de la boucle. Pertinence des résultats?: non confirmée. Jeu d’essai EMI / Dept Génie Informatique/ N. El Faddouli 32 17