Conditionnelles (if else switch) et logique booléenne en C

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

Introduction au langage C

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)

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

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

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

Programmation en langage C

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

Chap III : Les tableaux

Le langage C. Séance n 4

Le prototype de la fonction main()

Algorithmique et Programmation, IMA


Rappels Entrées -Sorties

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

Programmation Classique en langage C

Java Licence Professionnelle CISII,

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

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

Introduction au Langage de Programmation C

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

Programmation système I Les entrées/sorties

TRAVAUX PRATIQUES Programmation Système Langage C / Système UNIX. 2 e année Génie Informatique

Outils pour la pratique

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

Brefs rappels sur la pile et le tas (Stack. / Heap) et les pointeurs

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

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

INITIATION A LA PROGRAMMATION

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

Programmation système de commandes en C

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

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

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

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

Cours Programmation Système

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

TP2 : tableaux dynamiques et listes chaînées

SUPPORT DE COURS. Langage C

ALGORITHMIQUE ET PROGRAMMATION En C

#include <stdio.h> #include <stdlib.h> struct cell { int clef; struct cell *suiv; };

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

Langage Éric Guérin 5 octobre 2010

30.avr.10 Présentation miniprojet. 9.mars.10 Cours 3 4.mai.10 Cours C mars.10 Cours 4 11.mai.10 Cours C++ 2

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

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

Programmer en JAVA. par Tama

DNS Server RPC Interface buffer overflow. Céline COLLUMEAU Nicolas BODIN

Les chaînes de caractères

Les structures de données. Rajae El Ouazzani

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

Claude Delannoy. 3 e édition C++

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

Cours de C. Petits secrets du C & programmation avancée. Sébastien Paumier

3IS - Système d'exploitation linux - Programmation système

as Architecture des Systèmes d Information

Notions fondamentales du langage C# Version 1.0

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

V- Manipulations de nombres en binaire

Les processus légers : threads. Système L3, /31

INF 104 (SELC) Introduction au langage C

Travaux Dirigés n 1 : chaînes de caractères

Conventions d écriture et outils de mise au point

Chapitre 1 : La gestion dynamique de la mémoire

Les fichiers. Chapitre 4

COMPARAISONDESLANGAGESC, C++, JAVA ET

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

Cours de programmation avancée. Le langage C. Université du Luxembourg

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Archivage Messagerie Evolution pour usage HTML en utilisant Hypermail

Programmation impérative

Chapitre 10. Les interfaces Comparable et Comparator 1

I. Introduction aux fonctions : les fonctions standards

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

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

Les structures. Chapitre 3

MINIMUM. connaissances nécessaires à la programmation des microcontrôleurs PIC18 en langage C (une introduction au langage c A.N.S.

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

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

Programmation en langage C Eléments de syntaxe

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

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

Examen Médian - 1 heure 30

COURS D'INFORMATIQUE: LANGAGE C NOTES DE COURS

Cours de Système : Gestion de Fichiers

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

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

Algorithmique, Structures de données et langage C

UE Programmation Impérative Licence 2ème Année

Programmation en C. École Nationale Supérieure de Techniques Avancées. Pierre-Alain Fouque et David Pointcheval

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

Programmation Structurée Langage C

1) Installation de Dev-C++ Téléchargez le fichier devcpp4990setup.exe dans un répertoire de votre PC, puis double-cliquez dessus :

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Logiciel de base. Première année ENSIMAG

Arguments d un programme

Programmation système en C/C++

Derrière toi Une machine virtuelle!

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

Chapitre 2 Devine mon nombre!

Transcription:

Conditionnelles (if else switch) et logique booléenne en C Séance 3 de l'ue «introduction à la programmation» Bruno Bouzy bruno.bouzy@parisdescartes.fr

if int x; printf("tapez une valeur: "); scanf("%d", &x); if (x>0) printf("valeur > 0.\n"); else printf("valeur <= 0.\n"); instructions conditionnelles (if, else, switch) et logique booléenne 2

if 1ère exécution: 2ème exécution: 3ème exécution: ProgC >./a.out Tapez une valeur: 6 Valeur > 0. ProgC >./a.out Tapez une valeur: -6 Valeur <= 0. ProgC >./a.out Tapez une valeur: 0 Valeur <= 0. instructions conditionnelles (if, else, switch) et logique booléenne 3

if Bloc d'instructions après le if et/ou le else: if (x>0){ x = 3*x; printf("x = %d\n", x); } else { x = 2*x 1; printf("x = %d\n", x); } instructions conditionnelles (if, else, switch) et logique booléenne 4

if Imbrications de if et/ou else: if (x>0){ x = 3*x; if (y>x) y = x; } else { x = 2*x 1; if (y>x) y = x; else y = 0; } instructions conditionnelles (if, else, switch) et logique booléenne 5

if else if : if (x>0){ x = 3*x; y = x; } else if (x<0) { x = 2*x 1; y = 0; } else y = 0; instructions conditionnelles (if, else, switch) et logique booléenne 6

switch int x; printf("tapez une valeur: "); scanf("%d", &x); switch(x) { case -1: printf("valeur -1.\n"); break; case 0: printf("valeur nulle.\n"); break; case 1: printf("valeur +1.\n"); break; default: printf("valeur ni -1, ni 0, ni +1.\n"); break; } instructions conditionnelles (if, else, switch) et logique booléenne 7

switch 1ère exécution: 2ème exécution: Tapez une valeur: +1 valeur +1. Tapez une valeur: -1 valeur -1. 3ème exécution: 4ème exécution: Tapez une valeur: 0 valeur nulle. Tapez une valeur: 7 valeur ni -1, ni 0, ni +1. instructions conditionnelles (if, else, switch) et logique booléenne 8

Affectation conditionnelle int valsioui; printf("valeur si oui? "); scanf("%d", &valsioui); int valsinon; printf("valeur si non? "); scanf("%d", &valsinon); int c; printf("oui (1) ou non (0)? "); scanf("%d", &c); int v = (c==1)? valsioui : valsinon; printf("v = %d\n", v); instructions conditionnelles (if, else, switch) et logique booléenne 9

Affectation conditionnelle 1ère exécution: 2ème exécution: valeur si oui? 6 valeur si non? -5 Oui (1) ou non (0)? 1 v = 6 valeur si oui? 6 valeur si non? -5 Oui (1) ou non (0)? 0 v = -5 instructions conditionnelles (if, else, switch) et logique booléenne 10

Variables booléennes Mauvaise nouvelle: pas de type booléen prédéfini en C On le simule avec le type entier Convention: 0 signifie «faux» 1 ou toute valeur différente de 0 signifie «vrai» instructions conditionnelles (if, else, switch) et logique booléenne 11

Exemple 1 (1/2) if, else, vrai et faux int x=1, y=0; printf("x = %d\n", x); printf("y = %d\n", y); if (x) printf("x est vrai.\n"); else printf("x est faux.\n"); if (y) printf("y est vrai.\n"); else printf("y est faux.\n"); instructions conditionnelles (if, else, switch) et logique booléenne 12

Exemple 1 (2/2) Sortie écran: x = 1 y = 0 x est vrai. y est faux. instructions conditionnelles (if, else, switch) et logique booléenne 13

Exemple 2 (1/2) if, else, vrai et faux (suite...) int x=1, y=0; printf("x = %d, y = %d\n", x, y); if (x) { printf("x est vrai.\n"); if (y) printf("y est vrai.\n"); else printf("y est faux.\n"); } else { printf("x est faux.\n"); } if (y) printf("y est vrai.\n"); else printf("y est faux.\n"); instructions conditionnelles (if, else, switch) et logique booléenne 14

Exemple 2 (2/2) Sortie écran: x = 1 y = 0 x est vrai. y est faux. instructions conditionnelles (if, else, switch) et logique booléenne 15

Opérateurs booléens (1/2)!, &&, : non logique, et logique, ou logique char a=0, b=1, c=0, d=1; printf("a = %d, b = %d, c = %d, d = %d.\n", a, b, c, d); printf("a ET b = %d, ", a && b); printf("a ET c = %d, ", a && c); printf("b ET d = %d. \n", b && d); printf("a OU b = %d, ", a b); printf("a OU c = %d, ", a c); printf("b OU d = %d. \n", b d); printf("non a = %d, ",!a); printf("non b = %d. \n",!b); instructions conditionnelles (if, else, switch) et logique booléenne 16

Opérateurs booléens (2/2) Sortie écran: a = 0, b = 1, c = 0, d = 1. a ET b = 0, a ET c = 0, b ET d = 1. a OU b = 1, a OU c = 0, b OU d = 1. NON a = 1, NON b = 0. instructions conditionnelles (if, else, switch) et logique booléenne 17

Opérateurs de comparaison (1/4) if, else, test de comparaison ==, >=, <= int x=4, y=5, z=7; printf("x = %d, y = %d, z = %d\n", x, y, z); if (x==4) printf("x vaut 4.\n"); else printf("x ne vaut pas 4.\n"); if (y>=4) printf("y est superieur ou egal a 4.\n"); else printf("y n'est pas superieur ou egal a 4.\n"); if (z<=4) printf("z est inferieur ou egal a 4.\n"); else printf("z n'est pas inferieur ou egal a 4.\n"); instructions conditionnelles (if, else, switch) et logique booléenne 18

Opérateurs de comparaison (2/4) Sortie écran: x = 4, y = 5, z = 7 x vaut 4. y est superieur ou egal a 4. z n'est pas inferieur ou egal a 4. instructions conditionnelles (if, else, switch) et logique booléenne 19

Opérateurs de comparaison (3/4) Donner la sortie de: printf("4-5-3==2*-5/2+1 = %d\n", 4-5-3==2*-5/2+1); instructions conditionnelles (if, else, switch) et logique booléenne 20

Opérateurs de comparaison (4/4) Sortie: 4-5-3==2*-5/2+1 = 1 instructions conditionnelles (if, else, switch) et logique booléenne 21

Opérateurs booléens et comparaison (1/4) if, else, ==, >=, <=, &&, int x=4, y=5; printf("x = %d, y = %d\n", x, y); if ((x==4) && (y>=4)) printf("x vaut 4 et y est superieur ou egal a 4.\n"); else printf("x ne vaut pas 4 ou y n'est pas superieur ou egal a 4.\n"); if ((x==4) (y>=4)) printf("x vaut 4 ou y est superieur ou egal a 4.\n"); else printf("x ne vaut pas 4 et y n'est pas superieur ou egal a 4.\n"); instructions conditionnelles (if, else, switch) et logique booléenne 22

Opérateurs booléens et comparaison (2/4) Sortie écran: x = 4, y = 5 x vaut 4 et y est superieur ou egal a 4. x vaut 4 ou y est superieur ou egal a 4. instructions conditionnelles (if, else, switch) et logique booléenne 23

Opérateurs booléens et comparaison (3/4) if, else, ==, >=, <=, &&, (bis) x = 4; y = 3; printf("x = %d, y = %d\n", x, y); if ((x==4) && (y>=4)) printf("x vaut 4 et y est superieur ou egal a 4.\n"); else printf("x ne vaut pas 4 ou y n'est pas superieur ou egal a 4.\n"); if ((x==4) (y>=4)) printf("x vaut 4 ou y est superieur ou egal a 4.\n"); else printf("x ne vaut pas 4 et y n'est pas superieur ou egal a 4.\n"); instructions conditionnelles (if, else, switch) et logique booléenne 24

Opérateurs booléens et comparaison (4/4) Sortie écran: x = 4, y = 3 x ne vaut pas 4 ou y n'est pas superieur ou egal a 4. x vaut 4 ou y est superieur ou egal a 4. instructions conditionnelles (if, else, switch) et logique booléenne 25

biblio.c Ecrire un programme permettant à l'utilisateur de: Entrer un nombre total de livres (ntl), Entrer un nombre de livres empruntés (nle), Voir le pourcentage de livres restants. Cas d'erreurs: Si ntl est négatif, le programme s'arrête et affiche une erreur. Si nle est supérieur à ntl, le programme s'arrête et affiche une erreur. instructions conditionnelles (if, else, switch) et logique booléenne 26

biblio.c Cas 1: Cas 2: n total livres? -100 erreur: n total < 0 n total livres? 600 n livres empruntes? 900 erreur: n emprunts > n total Cas normal: n total livres? 600 n livres empruntes? 111 pc livres restants = 81.50 instructions conditionnelles (if, else, switch) et logique booléenne 27

biblio.c #include <stdio.h> int main() { float ntl, nle; printf("n total livres? "); scanf("%f", &ntl); if (ntl<0) printf("erreur: n total < 0\n"); else { printf("n livres empruntes? "); scanf("%f", &nle); if (nle>ntl) printf("erreur: n emprunts > n total\n"); else printf("pc l restants = %.2f\n", 100*(ntl-nle)/ntl); } return (0); } instructions conditionnelles (if, else, switch) et logique booléenne 28

biblio.c #include <stdio.h> int main() { float ntl, nle; printf("n total livres? "); scanf("%f", &ntl); if (ntl<0) printf("erreur: n total < 0\n"); else { printf("n livres empruntes? "); scanf("%f", &nle); if (nle>ntl) printf("erreur: n emprunts > n total\n"); else printf("pc l restants = %.2f\n", 100*(ntl-nle)/ntl); } return (0); } Compilable? Lisible? instructions conditionnelles (if, else, switch) et logique booléenne 29

Dernier (mauvais?) exemple (1/2) Donner la sortie de: printf("32&&2.3 = %d\n",32&&2.3); printf("!65.34 = %d\n",!65.34); printf("0!(32>12) = %d\n", 0!(32>12)); instructions conditionnelles (if, else, switch) et logique booléenne 30

Dernier (mauvais?) exemple (2/2) Sortie: 32&&2.3 = 1!65.34 = 0 0!(32>12) = 0 instructions conditionnelles (if, else, switch) et logique booléenne 31

Résumé de la séance 3 Conditionnelles if, else, switch Affectation conditionnelle x = c? y : z; Variables «booléennes» if, else avec opérateurs booléens de comparaison instructions conditionnelles (if, else, switch) et logique booléenne 32