LES STRUCTURES DE CONTROLE { } if.. else switch for while, do... while LA SELECTION. - instruction simple conditionnée (SI / ALORS) if (expression)

Documents pareils

Programmation en langage C

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

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

Initiation à la programmation en Python

Algorithmique et Programmation, IMA

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

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

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

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

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

Java Licence Professionnelle CISII,

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

Rappels Entrées -Sorties

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

Chap III : Les tableaux

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

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

Claude Delannoy. 3 e édition C++

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

Programmation Classique en langage C

Programmer en JAVA. par Tama

INITIATION A LA PROGRAMMATION

V- Manipulations de nombres en binaire

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

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

INF 321 : mémento de la syntaxe de Java

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

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

Conventions d écriture et outils de mise au point

Introduction au Langage de Programmation C

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

I. Introduction aux fonctions : les fonctions standards

Notions fondamentales du langage C# Version 1.0

Cours d Informatique

Langage Éric Guérin 5 octobre 2010

Langage C. Patrick Corde. 22 juin Patrick Corde ( Patrick.Corde@idris.fr ) Langage C 22 juin / 289

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

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

Cours Informatique Master STEP

SUPPORT DE COURS. Langage C

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Cours d algorithmique pour la classe de 2nde

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

TP 1. Prise en main du langage Python

Rappels sur les suites - Algorithme

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

1. Langage de programmation Java

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

COURS D'INFORMATIQUE: LANGAGE C NOTES DE COURS

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

Le langage C. Séance n 4

Les structures. Chapitre 3

Les fichiers. Chapitre 4

Recherche dans un tableau

Programme Compte bancaire (code)

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

Chapitre 2 Devine mon nombre!

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation :

Examen Médian - 1 heure 30

L informatique en BCPST

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

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

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

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

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Cours d initiation à la programmation en C++ Johann Cuenin

Dans le chapitre 1, nous associions aux fichiers ouverts des descripteurs de fichiers par lesquels nous accédions aux fichiers.

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

LES TYPES DE DONNÉES DU LANGAGE PASCAL

Algorithme. Table des matières

Initiation à LabView : Les exemples d applications :

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

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

Programmation système I Les entrées/sorties

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

Découverte de Python

STAGE IREM 0- Premiers pas en Python

Représentation d un entier en base b

Logiciel de Base. I. Représentation des nombres

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

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

Logiciel de base. Première année ENSIMAG

Créer une base de données

Cours de Programmation Impérative: Zones de mémoires et pointeurs

Les structures de données. Rajae El Ouazzani

Le prototype de la fonction main()

Programmation impérative

TD3: tableaux avancées, première classe et chaînes

Sub CalculAnnuite() Const TITRE As String = "Calcul d'annuité de remboursement d'un emprunt"

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

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

REPUBLIQUE ALGERIENNE DEMOCRATIQUE ET POPULAIRE UNIVERSITE M HAMED BOGARA DE BOUMERDES

ACTIVITÉ DE PROGRAMMATION

Chapitre 1 : La gestion dynamique de la mémoire

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Cours d Algorithmique et de Langage C v 3.0

Organigramme / Algorigramme Dossier élève 1 SI

Transcription:

LES STRUCTURES DE CONTROLE INSTRUCTIONS STRUCTUREES BLOC SELECTION ITERATION ALTERNATIVE CHOIX SYSTEMATIQUE DE RECHERCHE if.. switch for while, do... while LA SELECTION - instruction simple conditionnée (SI / ALORS) if (expression) expression suite exemple : lire un caractère au clavier et, s'il s'agit d'une lettre, la convertir en minuscules puis l'afficher à l'écran. char c; if (c >= 'A' && c <= 'Z') putchar(c + 'a' - 'A'); Introduction au langage "C" (S. W.) page 11

- instruction alternative complète (SI / ALORS / SINON) if (expression) instruction1(s) instruction2(s) instruction1(s) expression instruction2(s) suite Le test sert d'aiguillage entre les instructions 1 et 2. L'expression qui suit le "if" est évaluée. Si elle est différente de 0 (<=> VRAIE), c'est instruction1 qui est exécutée, sinon c'est l'instruction2 qui est exécutée. Exemple1 : lecture d'un nombre au clavier. Si le nombre est positif, alors afficher à l'écran la racine carrée de ce nombre, sinon afficher un message d'erreur. #include <math.h> double x; printf("tapez le nombre dont vous désirez obtenir la racine :"); scanf("%lf",&x); if (x >= 0) printf("la racine de %lf est %lf\n",x,sqrt(x)); printf("pas de racine réelle\n"); REMARQUES : Les instructions peuvent être soit simples, soit composées : - une instruction simple doit être terminée par point-virgule - une instruction composée (bloc) doit être encadrée par des accolades A l'intérieur d'un bloc il peut y avoir, dans l'ordre : - des déclarations de variables (optionnel) - des instructions simples ou composées Introduction au langage "C" (S. W.) page 12

Exemple 2 : lire un entier au clavier puis indiquer s'il est pair ou impair int n; printf("tapez un entier :"); scanf("%d",&n); if (n % 2 == 0) printf("nombre pair"); printf("nombre impair"); le "" est toujours associé au "if" le plus proche l'expression précédente est équivalente à : if (expression1) if (expression1) if (expression2) if (expression2) instruction1 instruction1 instruction2 instruction2 - tests multiples expr. 1 expr. 2 expr. n INST. 1 INST. 2 INST. n INST.n+1 suite if (expression1) instruction1 if (expression2) instruction2 if (expression3) instruction3 [ instruction4 ] Les expressions sont évaluées dans l'ordre. Si une expression est, l'instruction correspondante est exécutée. Le dernier traite le cas où aucune des conditions ne serait remplie. Il y a deux présentations possibles de votre code, soit celle illustrée ci dessus (présentation compacte rendant la recherche d'erreurs peu aisée), soit celle où chaque "if" est aligné avec le "" correspondant. C'est cette présentation que nous adopterons en BTS IRIS. Elle est illustrée par l'exemple ci dessous. Introduction au langage "C" (S. W.) page 13

Exemple : lire 3 entiers au clavier puis les afficher par valeur décroissante. int n1,n2,n3; printf("tapez 3 entiers"); scanf("%d",&n1); scanf("%d",&n2); scanf("%d",&n3); if (n1 >= n2 && n1 >= n3) if (n2 >= n3) printf("%d %d %d\n",n1,n2,n3); printf("%d %d %d\n",n1,n3,n2); if (n2 >= n3 && n2 >= n1) if (n1 >= n3) printf("%d %d %d\n",n2,n1,n3); printf("%d %d %d\n",n2,n3,n1); if (n2 >= n1) printf("%d %d %d\n",n3,n2,n1); printf("%d %d %d\n",n3,n1,n2); - l'opérateur ternaire (opérateur conditionnel) L'opérateur conditionnel? s'utilise de la manière suivante: expr? expr1 : expr2 Si la valeur de expr est non nulle, l'évaluation de l'expression retournera la valeur de expr1, dans tous les autres cas, elle retournera la valeur de expr2. Exemple : soient trois entiers n1, n2 et max. Après exécution de l'opérateur ternaire, max aura la plus grande des deux valeurs : (n1 > n2)? (max = n1) : (max = n2); Exemple : lecture de deux nombres entiers au clavier et affichage de la valeur du plus grand de ces nombres. int n1,n2; printf("tapez deux nombres entiers :"); scanf("%d %d",&n1,&n2); printf("%d",n1 > n2? n1 : n2); Introduction au langage "C" (S. W.) page 14

- l'instruction de choix multiples CAS PARMI <critère> cas 1 : instruction 1 cas 2 : instruction 2 cas 3 : instruction 3 cas N : instruction N dans tous les autres cas : instruction K FIN_CAS L'instruction switch est une instruction de choix multiples qui permet d'effectuer un aiguillage direct vers les actions (instructions) en fonction d'un cas matérialisé par la clause case. switch (expression) case expr1 : instruction 1; [break;] case expr2 : instruction 2; [break;] case exprn : instruction n; [break;] [ default : instruction d ] L'expression est évaluée de manière à produire un résultat de type entier ou de type caractère. Les expr1, expr2... exprn sont des propositions à valeur constante de type entier ou de type caractère et peuvent être construites à l'aide des opérateurs suivants : +, -,*, /, %, &,, ^, ~, >>, <<,? :, ==,!=, >, >=, <, <= ^ OU exclusif & ET logique >> décalage à droite ~ complément à un OU logique << décalage à gauche == test d'égalité!= test d'inégalité octet1 ET octet2 octet1 OU octet2 octet1 OU exclusif octet2 octet1 = 0xF0 - octet2 = 0x15 10 F5 E5 octet1 = 0x7F - octet2 = 0x8A 0A FF F5 octet1 = 0xAA - octet2 = 0x55 00 FF FF Complément à un >> de deux bits << de deux bits octet = 0xF0 0F 3C C0 octet = 0x15 EA 0C 54 octet = 0x7F 80 1F FC octet = 0x8A 75 22 28 octet = 0xAA 55 2A A8 octet2= 0x55 AA 15 54 Introduction au langage "C" (S. W.) page 15

Après exécution d'un cas on exécute l'instruction suivante à moins de rencontrer un break qui provoque un débranchement à la fin de la structure "switch". exemple : lire un caractère au clavier et indiquer s'il s'agit d'un chiffre, d'un opérateur (+,-,*,/), d'un séparateur (TAB, NEW LINE, ESPACE) ou d'un autre caractère. puts("tapez un caractère"); switch (getchar()) case '0' : /* détection d'un chiffre */ case '1' : case '2' : case '3' : case '4' : case '5' : case '6' : case '7' : case '8' : case '9' : case '+' : case '-' : case '*' : case '/' : case ' ' : case '\n' : case '\t' : printf("vous avez tape un chiffre\n"); break; printf("vous avez tape un operateur\n"); break; /* espace, retour à la ligne ou tabulation*/ printf("vous avez tape un separateur\n"); break; default : printf("lettre ordinaire\n"); break; Introduction au langage "C" (S. W.) page 16

EXERCICES - Au moyen d'une structure sélective (si/alors/sinon se traduisant en en"c" par un if/) écrire les programmes suivants : 1) Résolution d'une équation du second degré de la forme ax 2 +bx+c=0, avec a, b et c des réels quelconques lus au clavier. (la fonction sqrt() permet de calculer la racine carrée d un nombre - il faut inclure <math.h>) 2) Calculer la racine d'un nombre entier préalablement lu au clavier. 3) Calculer la valeur absolue d'un nombre préalablement lu au clavier. 4) Saisir un entier au clavier puis indiquer s'il s'agit d'un entier positif, négatif ou nul. 5) Lire un caractère au clavier et indiquer s'il s'agit d'un chiffre, d'une lettre majuscule, d'une lettre minuscule ou d'un autre caractère. 6) Réalisation d'une "mini-calculatrice" dont le fonctionnement sera le suivant : - lecture des 2 opérandes au clavier et choix de l'opérateur - effectuer l'opération correspondante - afficher le résultat de l'opération à l'écran 7) Résolution d'un système de 2 équations du 1er degré à 2 inconnues du type ax+by = e cx+dy = f Les coefficients a, b, c, d, e et f seront saisis au clavier en début de programme. En tapant sous Google les mots clés suivants : "résolution" +système +"2 équations" +"1er degré" +"2 inconnues on découvre (entre autres) le site suivant http://www.quid.fr/2007/mathematiques/equations/1 dont nous nous intéresserons plus particulièrement à la rubrique Système de 2 équations du 1er degré à 2 inconnues. Application numérique : Avec a=1, b=2, c=5, d=3, e=4, f=6 on obtient les résultats suivants : x = -4 et y = -4.5 Avec a=1, b=2, c=3, d=4, e=5, f=6 on obtient les résultats suivants : x = -1 et y = -2 - Avec une structure à choix multiples reprendre les exercices : 4) attention aux coefficients à valeur constante! 5) éventuellement en utilisant préalablement une structure sélective 6) - Au moyen de l'opérateur ternaire reprendre les exercices : 2) et 3) Lire 3 nombres au clavier et les afficher à l'écran par valeurs croissantes en utilisant l'opérateur ternaire. Introduction au langage "C" (S. W.) page 17

- LES ITERATIONS - la structure "TANT QUE" while (expression) ; expression suite exemple 1 : Lecture d'une suite de caractères au clavier et affichage de ces caractères à l'écran jusqu'à frappe du caractère dollar - le '$' n'est pas affiché - le '$' est affiché char c; char c; while (c!= '$') while (c!= '$') putchar(c); putchar(c); putchar(c); exemple 2 : Affichage à l'écran de exemple 3 : élévation au carré des entiers tous les caractères tapés au clavier compris entre 1 à 10. jusqu'à frappe de <CTRL Z> > void main (void) int i=1; char c; while (i <= 10) while ( (c=getchar())!= EOF) printf("le carré de %d est : %d\n", i,i*i); putchar(c); i++; L'instruction est exécutée si la valeur de l'expression qui suit le while est non nulle, et est répétée jusqu'à ce que la valeur de cette expression s'annule. L'instruction associée à une boucle while peut être simple ou composée. Introduction au langage "C" (S. W.) page 18

- la structure FAIRE... TANT QUE Syntaxe : do while (expression); expression suite L'instruction est répétée jusqu'à ce que la valeur de l'expression s'annule cette boucle est effectuée au moins une fois, quelque soit la valeur de l'expression. L'instruction associée à une boucle do... while peut être simple ou composée. exemple 1 : lecture d'une suite de caractères au clavier et affichage de ces caractères à l'écran jusqu'à détection du caractère dollar - le '$' est affiché - le '$' n'est pas affiché char c; char c; do do putchar(c); if (c!= '$') putchar(c); while (c!= '$'); while (c!= '$'); exemple 2 : élévation au carré des nombres entiers compris entre 1 à 10 #define N 10 #define N 10 int i=1; int i=0; do do printf("le carré de %d est : %d\n", i++; i,i*i); printf("le carré de %d est : %d\n",i,i*i); i++; while (i<n); while (i<=n); Introduction au langage "C" (S. W.) page 19

- la structure POUR (utilisée lorsque le nombre d'itérations est connu à l'avance) for (expression1; expression2; expression3) ; expression1 : initialisation de la boucle, n'est exécutée qu'une seule fois expression2 : condition d'exécution de la boucle la boucle est exécutée tant que l'expression2 est VRAIE (c'est-à-dire non nulle) expression3 : action agissant la plupart du temps sur la condition d'itération (incrémentation d'un compteur, dans la plupart des cas) for (initialisation(s) ; condition(s) d'exécution ; ) i DEBUT i <= FIN vrai faux for (i = DEBUT; i < FIN; i += PAS) i i + PAS suite Une boucle for peut toujours être remplacée par une boucle while : i = DEBUT; while (i < FIN) ; i = i + PAS; RQ : i i + PAS se note aussi i += PAS exemple 1 : élévation au carré des nombres entiers compris entre 1 à 10 int i; // RQ : i++ i i+1 i += 1 for (i = 1 ; i <= 10 ; i++) printf ("le carré de %d est : %d\n", i, i*i); REMARQUES : - Il est impossible de se débrancher directement à l'intérieur d'une structure for. - On peut avoir des structures for imbriquées mais chaque fois avec des indices différents Introduction au langage "C" (S. W.) page 20

exemple 2 : Calcul des tables de multiplication de 1 à 10 #define N 10 int i,j; for (i = 1 ; i <= N ; i++) printf("table DE %d\n",i); for (j = 1 ; j <= N ; j++) printf ("%d * %d = %d\n", j, i, i*j); printf("\n"); L'INSTRUCTION "break" L'instruction break permet de sortir de la boucle do, for, while ou switch en cours d'exécution. Le break est limité à un seul niveau d'imbrication. debut_boucle break fin_boucle Introduction au langage "C" (S. W.) page 21

EXERCICES 1) La définition de la fonction factorielle est la suivante : n! = n* (n-1) * (n-2) *... * 3 * 2 * 1 0! = 1 Ecrire trois programmes qui calculent cette fonction factorielle pour un nombre n dont la valeur sera saisie au clavier en début de programme a) avec une structure POUR (FOR) b) avec une structure REPETER (DO... WHILE) c) avec une structure TANT QUE (WHILE) 2) Reprendre l'exercice précédent en faisant varier l'indice par valeur décroissante. 3) Ecrire un programme permettant de rechercher le maximum et le minimum d'une suite de nombres préalablement lue au clavier, la dernière valeur de la suite étant nulle. a) utiliser une structure TANT QUE b) utiliser une structure REPETER 4) Ecrire un programme permettant la saisie d'un texte au clavier jusqu'à détection du caractère * (étoile) puis réalisant l'affichage à l'écran du même texte converti en minuscules. a) avec une structure TANT QUE (WHILE) et une structure sélective b) avec une structure TANT QUE (WHILE) et une structure comprenant l'opérateur ternaire 5) Lire un texte au clavier et compter le nombre de chiffres, de lettres, de voyelles et de consonnes que ce texte contient. La frappe d'un dollar termine la saisie. a) structure sélective b) structure à choix multiple Introduction au langage "C" (S. W.) page 22