Informatique II Les structures de contrôle et instructions composées 1. Les structures de contrôle et instructions composées

Documents pareils
1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

Introduction au langage C

Java Licence Professionnelle CISII,

Le Langage C Version 1.2 c 2002 Florence HENRY Observatoire de Paris Université de Versailles florence.henry@obspm.fr

Algorithmique et Programmation, IMA

Algorithmes et Programmes. Introduction à l informatiquel. Cycle de vie d'un programme (d'un logiciel) Cycle de vie d'un programme (d'un logiciel)

Le langage C. Séance n 4

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Examen Médian - 1 heure 30

Bases de programmation. Cours 5. Structurer les données


Programmation en langage C

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Rappels Entrées -Sorties

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

Programmation C++ (débutant)/instructions for, while et do...while

Programmer en JAVA. par Tama

Chap III : Les tableaux

Anis ASSÈS Mejdi BLAGHGI Mohamed Hédi ElHajjej Mohamed Salah Karouia

Recherche dans un tableau

Plan du cours. Historique du langage Nouveautés de Java 7

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

INITIATION A LA PROGRAMMATION

Le Langage C Licence Professionnelle Qualité Logiciel Pr. Mouad BEN MAMOUN ben_mamoun@fsr.ac.ma Année universitaire 2011/2012

UE C avancé cours 1: introduction et révisions

Notions fondamentales du langage C# Version 1.0

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Programmation Classique en langage C

Les fichiers. Chapitre 4

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Programmation C. J.-F. Lalande. 15 novembre 2012

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Conventions d écriture et outils de mise au point

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

Programmation en langage C d un µcontrôleur PIC à l aide du compilateur C-CCS Sommaire

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Introduction au Langage de Programmation C

Les chaînes de caractères

BTS IRIS Cours et Travaux Pratiques. Programmation C. A. Lebret, TSIRIS, Lycée Diderot, 1995/06. en conformité avec le référentiel du BTS IRIS

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

Claude Delannoy. 3 e édition C++

as Architecture des Systèmes d Information

Initiation à la programmation en Python

Cours de C++ François Laroussinie. 2 novembre Dept. d Informatique, ENS de Cachan

Programmation impérative

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

Algorithmique & Langage C IUT GEII S1. Notes de cours (première partie) cours_algo_lgc1.17.odp. Licence

Qualité du logiciel: Méthodes de test

Introduction à l algorithmique et à la programmation M1102 CM n 3

Cours Informatique Master STEP

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

INTRODUCTION AUX SYSTEMES D EXPLOITATION. TD2 Exclusion mutuelle / Sémaphores

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

MISE A NIVEAU INFORMATIQUE LANGAGE C - EXEMPLES DE PROGRAMMES. Université Paris Dauphine IUP Génie Mathématique et Informatique 2 ème année

Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1

Gestion mémoire et Représentation intermédiaire

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

03/04/2007. Tâche 1 Tâche 2 Tâche 3. Système Unix. Time sharing

L ALGORITHMIQUE. Algorithme

Langage Éric Guérin 5 octobre 2010

Corrigé des TD 1 à 5

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Outils pour la pratique

CORRECTION EXERCICES ALGORITHME 1

ACTIVITÉ DE PROGRAMMATION

Les structures de données. Rajae El Ouazzani

Prendre le marteau, le tableau, le mètre, le crayon, la ficelle, le clou, la pointe ;

INF111. Initiation à la programmation impérative en C amini/cours/l1/inf111/ Massih-Reza Amini

Cours d Algorithmique et de Langage C v 3.0

2. Comprendre les définitions de classes

SUPPORT DE COURS. Langage C

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview.

Seance 2: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu.

I. Introduction aux fonctions : les fonctions standards

Exclusion Mutuelle. Arnaud Labourel Courriel : arnaud.labourel@lif.univ-mrs.fr. Université de Provence. 9 février 2011

Initiation. àl algorithmique et à la programmation. en C

Programmation en Java IUT GEII (MC-II1) 1

Programmation système de commandes en C

1 Introduction C+ + Algorithm e. languag. Algorigramm. machine binaire. 1-1 Chaîne de développement. Séance n 4

Programmation système I Les entrées/sorties

1.6- Génération de nombres aléatoires

Le prototype de la fonction main()

Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski

Série TD 3. Exercice 4.1. Exercice 4.2 Cet algorithme est destiné à prédire l'avenir, et il doit être infaillible! Exercice 4.3. Exercice 4.

Initiation à l algorithmique

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Projet de programmation (IK3) : TP n 1 Correction

REPUBLIQUE ALGERIENNE DEMOCRATIQUE ET POPULAIRE UNIVERSITE M HAMED BOGARA DE BOUMERDES

Algorithmique I. Algorithmique I p.1/??

TP2 : tableaux dynamiques et listes chaînées

Chap 4: Analyse syntaxique. Prof. M.D. RAHMANI Compilation SMI- S5 2013/14 1

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

Méthodes de quadrature. Polytech Paris-UPMC. - p. 1/48

MATLAB : COMMANDES DE BASE. Note : lorsqu applicable, l équivalent en langage C est indiqué entre les délimiteurs /* */.

Algorithmique et programmation : les bases (VBA) Corrigé

Les structures. Chapitre 3

Notes du cours 4M056 Programmation en C et C++ Vincent Lemaire et Damien Simon

Transcription:

Informatique II Les structures de contrôle et instructions composées 1 Action Fig. 4.1 Les structures de contrôle et instructions composées Les algorithmes comportent des étapes ou des action. Chaque action à un et une. Parce que l algorithme est i il peut être présenté comme une action ou un ensemble d actions. Il y a quelques simples algorithmes qui s appellent structures de contrôle, à l aide de lesquelles on peut présenter un algorithme séquentiel de n importe quelle complexité. Chaque structure peut être présenté comme une action avec une entrée et une sortie. Chacune d eux peut contenir d autres structures imbriquées et de telle façon de présenter l algorithme avec différents degrés de détail (ig.4.1). Chaîne (ou suite) Dans la chaîne toutes les actions sont exécutées une après l autre. Chaque action commence après la de la précédente (Fig.4.2). Dans le langage C ce sont des instruction ou des traduction des action écrits une après l autre et encadrées an accolades (fig. 4.3). Les instructions encadrées en accolades Action 1 Action 2 Action 3 { Instruction 1 Instruction 2 Instruction 3 Instruction n Fig. 4.3 x 2 5 4 y 1 t 3 t=x x=y Action n Fig. 4.2 int x,y,t; /*initialisation de x et y*/ t = x; x = y; y = t; Fig. 4.6 Fig. 4.4 y=t Fig. 4.5 forment un block et sont considérées comme une instruction. Exemple Echanger les valeurs de deux variables entiers. Pour cette opération on a besoin d une variable temporelle, dans laquelle on va stocker la valeur de la première variable pour ne pas la perdre ( fig. 4.4). L algorithme est montré à fig. 4.5 et le programme à fig.4.6. Alternative Alternative générale L alternative permet de brancher l exécution du programme selon une condition. La condition est exprimée par une expression logique dont le résultat en C est 1 () ou 0 (). Une des action est exécutée mais jamais les deux à la fois. (fig. 4.7). La traduction en C par l instruction if est montrée à Fig.4.8. Exemples 1. Trouver le nombre maximal de deux nombres entiers. L algorithme est dessiné à Fig.4.9 et le programme correspondant est écrit à fig. 4.10. 2. Echanger le contenu de la variable c avec le contenu de cette variable (a ou b) qui a plus grande valeur. L algorithme est dessiné à Fig.4.11 et le programme correspondant est écrit à fig. 4.12. Notez bien comment les chaînes sont imbriquées dans l alternative.

2 Les structures de contrôle et instructions composées Informatique II if (condition 1) Traduction de Action 1 else Traduction de Action 2 Action Action2 Fig. 4.8 Fig. 4.7 int a,b,max; /*initialisation de a et b*/ if (a > b) max = a; else max = b; Fig. 4.10 max = a a > b Fig. 4.9 max =b t=a a=c c=t a > b t=b b=c c=t int a,b,max; /*initialisation de a, b et c */ if (a > b) { t = a; a = c; c = t; else { t = b; b = c; c = t; Fig. 4.12. Fig. 4.11 Alternative simple Quand une des branches d une alternative (en général c est la branche correspondante à la valeur ) ne contient rien on dit que c est une alternative simple (fig. 4.13 et 4.14). Dans l instruction on peut omettre la partie else. Exemple Changer la valeur de la variable a avec sa valeur absolue. La solution est donnée aux figures 4.15 et 4.16.

Informatique II Les structures de contrôle et instructions composées 3 Action 1 if (condition) traduction de Action 1 Fig. 4.14 Fig. 4.13 int a; /*initialisation de a */ if (a < 0) a=-a; a = -a a < 0 Fig. 4.16 Fig. 4.15 Répétitive (ou boucle ou itération) Il y a beaucoup de cas quand on a besoin de répéter une action plusieurs fois. Le cas le plus simple est quand on compte des objets. A chaque nouveau objet on ajoute un à un compteur dont la valeur initiale est zéro. Comme tous les algorithmes la répétition doit être ie. Pour cette raison on a besoin d une condition pour terminer la répétition. Selon la place de la condition on peut distinguer des boucle avec précondition («tant que»), boucles avec postcondition ou boucles mixte (la condition et le branchement sont au milieu du corps). Boucle avec précondition («tant que») L organigramme de l algorithme est dessiné à Fig. 4.17. La condition est calculée avant la première exécution de l action répétée qu on appelle très souvent le corps de la boucle. Cette structure est exécute de la façon suivante : La condition est calculée et si elle est fausse (0) la boucle termine. Si le corps est exécuté et puis on reprend le calcul de la condition. La particularité générale de cette boucle est que si au le résultat du calcul de la condition est (0), le corps ne sera jamais exécuté. Cette boucle est traduit par l instruction while (Fig.18). Exemple Compter les nombres entiers lus jusq au on lit -100. On peut voir l algorithme à Fig. 4.19 Noter qu on doit avant la boucle de lire le premier nombre. Les premières deux action initialisent la boucle. L action de lire à la du corps prépare la répétition suivante. L initialisation de la boucle et la préparation de la répétition suivante sont présentes presque toujours dans les algorithmes répétitives. Le programme se trouve à Fig. 4.20. Boucle for Cette boucle est une cas particulier de «tant que», quand on a sait en avant le nombre de répétitions. Mais en C cette boucle et une boucle universelle de la boucle avec précondition où l initialisation, la condition et la préparation sont mis dans l instruction. L instruction et l organigramme correspondant sont montrés aux Fig. 4.21 et Fig. 4.22. Expr.1 c est l initialisation, expr2 la condition et expr2 la préparation. De telle façon la boucle de l exemple précédent peut être écrit comme : for (c=0, scanf( %d,n); n!=-100; scanf( %d,n)) c++;

4 Les structures de contrôle et instructions composées Informatique II while (condition) traduction de Action Fig. 4.18 Action(corps) Initialiser c = 0 Lire 1-er nombre en n Fig. 4.17 Compter int n,c; c = 0; //initialisation scanf ("%d",&n); while (n!=-100) { c++; scanf ("%d",&n); printf("le nombre est : %d\n",c); Fig. 4.20 c = c + 1 Lire n n -100 Afficher c Fig. 4.19 for (expr1;expr2;expr3) instruction expr1 Fig. 4.21 expr2 instruction expr3 Fig. 4.22

Informatique II Les structures de contrôle et instructions composées 5 s = s + i i = i +1 Lire m,n Initialiser s = 0 i = m i<=n Afficher s int m,n,s,i; printf("tapez deux nombres:"); scanf("%d %d", &m,&n); s = 0; i= m; while (i<=n) { s += i; i++; printf("la somme est : %d\n", s); Fig. 4.24a int m,n,s=0,i; printf("tapez deux nombres:"); scanf("%d %d", &m,&n); for (i= m;i<=n;i++) { s += i; printf("la somme est : %d\n", s); Fig. 4.24b Fig. 4.23 Example Sommer tous les entiers dans l intervalle [M,N]. L algorithme est à fig. 4.23 et deux programmes en C la première avec une boucle while et la deuxième avec une boucle for sont présentés aux fig. 4.24a et 4.24b. Action(corps) do{traduction de Action(condition) while (condition) Fig. 4.26 Fig. 4.25

6 Les structures de contrôle et instructions composées Informatique II Boucle avec postcondition Dans ce cas la condition est calculée après l exécution du corps. Donc le corps sera exécuté au moins une fois. Cette boucle est nécessaire quand on ne peut calculer la condition au parce que il manque certaines valeurs. L organigramme est dessinée à Fig. 4.25 et le traduction en C à Fig. 4.26. Exemples 1. Calculer la racine carrée d,un nombre réel C avec exactitude ε itérativement à l aide de la formule de Héronне : 1 C x = + i+ x où x 1 i i est l approximation connue et x i+1 est l approximation suivante. On 2 xi continue jusqu à la valeur absolue de la différence entre deux approximations consécutives devient inférieure à ε. L algorithme est à Fig. 4.27 et le programme à Fig.4.28. 2. Faire la saisie d un nombre qui doit être dans un intervalle. C est impossible de faire le test du nombre avant de le lire. le programme est à Fig.4.29. L instruction "if (y!=1) getchar();" est écrite pour le cas quand un caractère invalide est tapée et la lecture est interrompue à ce caractère qui reste dans le tampon. Le résultat de scanf reste zéro et à la répétition suivante le scanf essaie de lire le même caractère avec le même résultat qui produit une boucle inie, Lire c,ε Initialiser x n = 1 x v = x n x n = 0.5*(x v +c/x v ) #include <math.h> double c,xv,xn=1,eps; scanf("%lf %lf", &c,&eps); do { xv = xn; xn = 0.5*(xv+c/xv); while (fabs(xn-xv)>eps); printf("le résultat est %9.3f\n",xn); Fig. 4.28 x n -x v > ε Afficher s Fig. 4.27 #dee M 10 #dee N 20 int x,y; do { printf ("Entrez un nombre entre %d et %d: ",M,N); y = scanf("%d",&x); if (y!=1) getchar(); while (y == EOF y == 0 x < M x > N); printf ("\nla valeur entrée est %d\n",x); Fig. 4.29 Les instructions break et continue Dans la portée d'une structure de contrôle (instructions for, while, do et switch), l'instruction break provoque l'abandon de la structure et le passage à l'instruction écrite immédiatement derrière. L'utilisation de break ailleurs qu'à l'intérieur d'une de ces quatre instructions constitue une erreur (que le compilateur signale). Dans l'exemple du compteur on ajoute la condition de ne pas compter après le quinzième nombre. L'algorithme et le programme sont montrés aux Fig. 4.30 et 4.31. L'instruction continue est moins souvent utilisée. Dans la portée d'une structure de contrôle de type boucle (while, do ou for), elle produit l'abandon de l'itération courante et, le cas échéant, le démarrage de l'itération suivante. Elle agit comme si les instructions qui se trouvent entre l'instruction continue et la du corps de la boucle avaient été supprimés pour l'itération en cours : l'exécution continue par le test de la boucle (précédé, dans le cas de for, par l'exécution de

Informatique II Les structures de contrôle et instructions composées 7 l'expression de préparation). Lorsque plusieurs boucles sont imbriquées, c'est la plus profonde qui est concernée par les instructions break et continue. Dans l'exemple de la somme dans un intervalle est ajoutée la condition de ne pas sommer les nombre qui se divisent exactement à 5. Le programme est montré à Fig. 4.32. Compter Initialiser c = 0 Lire 1-er nombre en n n -100 int n,c; c = 0; //initialisation scanf ("%d",&n); while (n!=-100) { c++; if (c>=15) break; scanf ("%d",&n); printf("le nombre est : %d\n",c); Fig. 4.31 c = c + 1 c>=15 Lire n Afficher c int m,n,s=0,i; printf("tapez deux nombres:"); scanf("%d %d", &m,&n); for (i= m;i<=n;i++) { if (i % 5 == 0) continue; s += i; printf("la somme est : %d\n", s); Fig. 4.32 Fig. 4.30 La boucle mixte Cette boucle nécessite la condition au milieu du corps (Fig. 4.33). Elle peut être exprimée par une boucle while inie (la condition rend toujours ) et la condition pour terminer incorporée dans un instruction if dont l'action est un break (Fig. 4.34). Une alternative de cette approche est montrée à Fig.4.35 on copie la deuxième partie du corps avant la boucle comme initialisation. Le Choix Le choix est une structure dérivée de l'alternative. Il y a un ensemble de conditions incompatibles (il n'y a qu'une d'eux qui peut être e dans un moment) et à chaque condition correspond une action on a la structure montrée à Fig. 4.36 et le programme à Fig.4.37. En C il y a une instruction spéciale pour le cas quand il y a une expression de type entier ou compatible avec entier dont la valeur doit être égale aux constantes différentes qui forment les cas différents (Fig. 4.38). C'est l'instruction switch (Fig. 4.39). Ici on doit noter les instructions break qui se trouvent après chaque cas. Si ces instructions sont omis tous les instructions qui suivent le cas choisi seront exécutées m^me qu'elles n'appartiennent pas à ce cas.

8 Les structures de contrôle et instructions composées Informatique II A2 A2 Fig. 4.33 while (1){ ; if (cond) break; A2; Fig. 4.34 Fig. 4.35 cond.1 cond.2 A2 if (cond.1) else if (cond.2) A2 else if else if (cond.n) AN else B ; Fig. 4.37 cond. N AN B Fig. 4.36 Exemple Compter les chiffres, les blanc (espaces et tabulations), les points et tous les autres caractères dans un texte qui est tapé au clavier. L'algorithme et le programme sont montrés au Fig. 4.40 et 4.41. Notez bien que ici on a uni l'action

Informatique II Les structures de contrôle et instructions composées 9 de saisie et le test pour la de la boucle. C'est possible en C parce que l'affectation est une expression et produit une valeur. c1 c2 Switch expr. A2 AN B cn default switch (expr.){ case c1: ; break; case c2: A2; break; case cn : AN; break; default: B; Fig. 4.39 Fig. 4.38 nb_ch=nb_bl =nb_p=nb_aut =0 Lire c chiffre nb_ch++ blanc c!= EOF Switch c nb_bl++ nb_p++ nb_aut++ Lire c Afficher point defaul int nb_ch, nb_bl, nb_p, nb_aut,c; nb_ch= nb_bl= nb_p=nb_aut=0; while ((c=getchar())!=eof){ switch(c){ case '0': case '1': case '2': case '9': nb_ch++;break; case ' ': case '\t':nb_bl++;break; case '.': nb_p++; break; default : nb_aut++; printf("\n%d %d %d %d \n", nb_ch,nb_bl,nb_p,nb_aut); Fig. 4.41 Fig. 4.40