if (condition) et ==,!=, <, > (opérateurs logiques de comparaison)



Documents pareils
L'instruction if permet d'exécuter des instructions différentes selon qu'une condition est vraie ou fausse. Sa forme de base est la suivante:

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

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

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

Java Licence Professionnelle CISII,

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

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)

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Introduction au langage C


Organigramme / Algorigramme Dossier élève 1 SI

Programmer en JAVA. par Tama

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

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

Initiation à la programmation en Python

Notions fondamentales du langage C# Version 1.0

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

Algorithmique et Programmation, IMA

Programmation Web. Madalina Croitoru IUT Montpellier

ACTIVITÉ DE PROGRAMMATION

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

Conventions d écriture et outils de mise au point

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

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

Plan. Exemple: Application bancaire. Introduction. OCL Object Constraint Language Le langage de contraintes d'uml

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

Algorithmique avec Algobox

Gestion mémoire et Représentation intermédiaire

Atelier Arduino. Initiation à la mise en oeuvre matérielle et logicielle de l Arduino. novembre 2006

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

Programmation Classique en langage C

Chapitre 2 Devine mon nombre!

Atelier Arduino. Initiation à la mise en oeuvre matérielle et logicielle de l Arduino. novembre 2006

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

1 Définition et Appel d une fonction. V. Phan Luong. Cours 4 : Fonctions

Introduction au Langage de Programmation C

Chapitre 4 Pierre, papier, ciseaux

I. Introduction aux fonctions : les fonctions standards

Algorithmique I. Algorithmique I p.1/??

Le Langage C++ Patrick TRAU - ULP IPST version du 02/10/05

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

Cours Informatique Master STEP

STI 3 Édition 4 / Mai 2005

Introduction au C++ et à la programmation objet

Claude Delannoy. 3 e édition C++

COMPARAISONDESLANGAGESC, C++, JAVA ET

REPUBLIQUE ALGERIENNE DEMOCRATIQUE ET POPULAIRE UNIVERSITE M HAMED BOGARA DE BOUMERDES

Programmation en langage C

STAGE IREM 0- Premiers pas en Python

Langage Éric Guérin 5 octobre 2010

1. Structure d'un programme FORTRAN 95

Rappels sur les suites - Algorithme

SHERLOCK 7. Version du 01/09/09 JAVASCRIPT 1.5

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

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

Langage Java. Classe de première SI

as Architecture des Systèmes d Information

Cours de Systèmes d Exploitation

SUPPORT DE COURS. Langage C

TP : Shell Scripts. 1 Remarque générale. 2 Mise en jambe. 3 Avec des si. Systèmes et scripts

4. Groupement d objets

DA MOTA Anthony - Comparaison de technologies : PhoneGap VS Cordova

Algorithmique et structures de données I

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

Informatique / Programmation

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

Info0604 Programmation multi-threadée. Cours 5. Programmation multi-threadée en Java

Chapitre 5 : Les procédures stockées PL/SQL

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

Bonjour, Le document qui suit est le support de la formation ''Arduino applications distantes''.

Bernard HAMM, Évelyne LAVOISIER

La programmation des PIC en C. Les fonctions, les interruptions.

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

LES TYPES DE DONNÉES DU LANGAGE PASCAL

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

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

Eclipse atelier Java

Application 1- VBA : Test de comportements d'investissements

Utilisation de l analyse statique comme outil d aide au développement. par. Yves Gauthier

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

Le langage procédural PL-PGSQL

Utilisation d objets : String et ArrayList

Durée estimée :1 journée Date de la réalisation : Description Fournisseur Référence Nombre PU HT LM35CZ, LM35AZ LM35DZ

Cours d algorithmique pour la classe de 2nde

1. Introduction Création d'une requête...2

Exécution des instructions machine

INF 321 : mémento de la syntaxe de Java

INITIATION A LA PROGRAMMATION

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

1 sur 5 10/06/14 13:10

Compilation (INF 564)

Mode d emploi Konftel 220 FRANÇAIS

LABO 5 ET 6 TRAITEMENT DE SIGNAL SOUS SIMULINK

Méthodes de programmation systèmes UE n NSY103. Notes de cours. Nombre d'heures : 55h (~ cours de 3 heures)

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

Déroulement. Evaluation. Préambule. Définition. Définition. Algorithmes et structures de données 28/09/2009

Cours 1 : Qu est-ce que la programmation?

EXCEL PERFECTIONNEMENT CALCULS AVANCES

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

Transcription:

if (condition) et ==,!=, <, > (opérateurs logiques de comparaison) L'instruction if ("si" en français), utilisée avec un opérateur logique de comparaison, permet de tester si une condition est vraie, par exemple si la mesure d'une entrée analogique est bien supérieure à une certaine valeur. Syntaxe Le format d'un test if est le suivant : if (unevariable > 50) // faire quelque chose Dans cet exemple, le programme va tester si la variable unevariable est supérieure à 50. Si c'est le cas, le programme va réaliser une action particulière. Autrement dit, si l'état du test entre les parenthèses est vrai, les instructions comprises entre les accolades sont exécutées. Sinon, le programme se poursuit sans exécuter ces instructions. Les accolades peuvent être omises après une instruction if. Dans ce cas, la suite de la ligne (qui se termine par un point-virgule) devient la seule instruction de la condition. Tous les exemples suivants sont corrects : if (x > 120) digitalwrite(ledpin, HIGH); if (x > 120) digitalwrite(ledpin, HIGH); if (x > 120) digitalwrite(ledpin, HIGH); correctes // toutes ces formes sont La condition évaluée à l'intérieur des parenthèses nécessite l'utilisation d'une ou plusieurs de ces opérateurs logiques de comparaison : Opérateurs logiques de comparaison : x == y (x est égal à y) x!= y (x est différent de y) x < y (x est inférieur à y) x > y (x est supérieur à y) x <= y (x est inférieur ou égal à y) x >= y (x est supérieur ou égal à y)

Attention : Prenez garde à ne pas utiliser accidentellement le signe = unique (par exemple if (x=10) ). Le signe égal unique est l'opérateur d'attribution d'une valeur, et fixe la valeur de x à 10 (autrement dit met la valeur 10 dans la variable x). Utilisez bien au lieu de cela le signe double égal == (c'est à dire if (x==10), le == étant l'opérateur logique de comparaison, et qui test si x est bien égal à 10 ou non. Cette dernière condition (x==10) est vraie uniquement si x est égal à 10, alors que la première condition (x=10) sera toujours vraie. C'est la raison pour laquelle le langage C (sur lequel est basé Arduino) évalue la condition (x=10) de la façon suivante : la valeur 10 est assignée à la variable 10 (se souvenir que l'opérateur = est l'opérateur d'attribution de valeur ), et donc la variable x contient 10. Dès lors, l'instruction conditionnelle "if" teste la valeur 10, laquelle est toujours évaluée VRAIE. C'est pourquoi, l'instruction if (x=10) sera toujours considérée VRAIE, ce qui n 'est pas le résultat voulu lorsque l'on utilise une instruction if. De plus, la variable x est mise à la valeur 10, ce qui n'est pas non plus l'action désirée. if peut bien sûr être une partie d'une structure de contrôle de type branchement en utilisant l'instruction if...else.

if / else L'instruction if/else (si/sinon en français) permet un meilleur contrôle du déroulement du programme que la simple instruction if, en permettant de grouper plusieurs tests ensemble. Par exemple, une entrée analogique peut-être testée et une action réalisée si l'entrée est inférieure à 500, et une autre action réalisée si l'entrée est supérieure ou égale à 500. Le code ressemblera à cela : if (brochecinqentree < 500) // action A else // action B else peut contenir un autre test if, et donc des tests multiples, mutuellement exclusifs peuvent être réalisés en même temps. Chaque test sera réalisé après le suivant jusqu'à ce qu'un test VRAI soit rencontré. Quand une condition vraie est rencontrée, les instructions associées sont réalisées, puis le programme continue son exécution à la ligne suivant l'ensemble de la construction if/else. Si aucun test n'est VRAI, le bloc d'instructions par défaut else est exécuté, si il est présent, déterminant ainsi le comportement par défaut. Noter qu'un bloc else if peut être utilisé avec ou sans bloc de conclusion else et vice versa. Un nombre illimité de branches else if est autorisé. if (boutonpoussoir1 = 1) // faire l'action A else if (boutonpoussoir2 = 1) // faire l'action B else // faire l'action C Une autre façon de réaliser un branchement de tests multiples mutuellement exclusifs est l'instruction switch case.

switch / case Tout comme l'instruction if, l'instruction switch / case ("communtateur de cas" en anglais) contrôle le déroulement des programmes. L'instruction switch / case permet au programmeur de construire une liste de "cas" (ou possibilités) à l'intérieur d'accolades. Le programme teste chaque cas avec la variable de test, et exécute le code si une correspondance (un test VRAI) est trouvé. switch / case est légèrement plus flexible qu'une structure if / else en ce sens que le programmeur peut définir si la structure switch devra continuer à tester les cas sous la forme d'une liste, même après avoir trouvé une correspondance. Si l'instruction break n'est pas trouvée après avoir exécuté le code d'une condition vraie, le programme continuera à tester les conditions restantes parmi les cas restants. Si une instruction break est rencontrée, le cas fait sortir de la structure, Paramètres var : variable dont vous vouler tester l'état default : si aucune autre condition vraie n'est rencontrée, le code default sera exécuté break : sans l'instruction break, l'instruction switch passera en revue toutes les instructions case à la recherche d'une condition vraie. Si une est trouvée, le code sera exécuté, même si ce n'est pas votre intention. L'instruction break indique à l'instruction switch d'arrêter de rechercher des conditions vraies, et fait sortir de la structure de choix. Exemple / Syntaxe switch (var) case 1: //execute ca si var = 1 break; case 2: //execute ca si var = 2 break; default: // exécute ca si var ne satisfait aucun des cas précédents // default optionnel

Conseils de programmation On peut utiliser des caractères après les instructions case. Les conditions de cas ne doivent pas nécessairement être listée de façon chronologique ou progressive.

Boucle while Les boucles while ("tant que" en anglais) bouclent sans fin, et indéfiniment, jusqu'à ce que la condition ou l'expression entre les parenthèses ( ) devienne fausse. Quelque chose doit modifier la variable testée, sinon la boucle while ne se terminera jamais. Cela peut être dans votre code, soit une variable incrémentée, ou également une condition externe, soit le test d'un capteur. Syntaxe while(expression) // tant que l'expression est vraie // instructions à effectuer Paramètres expression : Une instruction (booléenne) C qui renvoie un résultat VRAI ou FAUX. Exemple var = 0; while(var < 200) // tant que la variable est inférieur à 200 // fait quelque chose 200 fois de suite... var++; // incrémente la variable

random() L'instruction random() génère des nombres pseudo-aléatoires. Syntaxe long random(max) long random(min, max) Paramètres min : la limite inférieure pour la valeur aléatoire, inclusive (optionnel) max : la limite inférieure pour la valeur aléatoire, exclusive Valeur renvoyée un nombre aléatoire entre la valeur min et la valeur (max-1) Exemple void loop() // affiche un nombre aléatoire entre 0 et 299 randnumber = random(300); Serial.println(randNumber); // affiche un nombre aléatoire entre 10 et 19 randnumber = random(10, 20); Serial.println(randNumber); delay(50); // pause de 50 ms

goto Fait sauter le déroulement du programme à un point précis du programme signalé par un label. Syntaxe label: goto label; // fait sauter le déroulement du programme au point label: Conseil L'utilisation de l'instruction goto est déconseillée en programmation en langage C, et certains auteurs de livres de programmation en langage C affirment que l'instruction goto n'est jamais nécessaire. Cependant, utilisé judicieusement, il peut simplifier certains programmes. La raison pour laquelle de nombreux programmeurs rechignent à utiliser l'instruction goto est qu'avec une utilisation non restreinte d'instructions goto, il est facile de créer des programmes qui ne pourront jamais être débogués. Ceci étant dit, il y a des circonstances où l'instruction goto tombe à pic et simplifie l'écriture du programme. Une de ces situations est la sortie de boucles imbriquées, ou de blocs de condition If sur une condition précise. Exemple for(byte r = 0; r < 255; r++) for(byte g = 255; g > -1; g--) for(byte b = 0; b < 255; b++) if (analogread(0) > 250) goto sortir; // plus d'instructions sortir:

tone() Génère une onde carrée (onde symétrique avec "duty cycle" (niveau haut/période) à 50%) à la fréquence spécifiée (en Hertz (Hz), ou nombre de périodes par seconde) sur une broche. La durée peut être précisée, sinon l'impulsion continue jusqu'à l'appel de l'instruction notone(). La broche peut être connectée à un buzzer piézoélectrique ou autre haut-parleur pour jouer des notes (les sons audibles s'étendent de 20Hz à 20 000Hz). Une seule note peut être produite à la fois. Si une note est déjà jouée sur une autre broche, l'appel de la fonction tone() n'aura aucun effet (tant qu'une instruction notone() n'aura pas eu lieu). Si la note est jouée sur la même broche, l'appel de la fonction tone() modifiera la fréquence jouée sur cette broche. Syntaxe tone(broche, frequence) tone(broche, frequence, durée) Paramètres broche: la broche sur laquelle la note est générée. frequence: la fréquence de la note produite, en hertz (Hz) durée: la durée de la note en millisecondes (optionnel)