Cours:TpAlgorithmique : Différence entre versions

De troyesGEII
Aller à : navigation, rechercher
(structure si/alors/sinon)
 
(33 révisions intermédiaires par le même utilisateur non affichées)
Ligne 1 : Ligne 1 :
 +
[[Image:CdcInformatique.gif|vignette]]
  
 
Un '''algorithme''' est une suite '''ordonnée''' d'instructions permettant la résolution d'un problème.
 
Un '''algorithme''' est une suite '''ordonnée''' d'instructions permettant la résolution d'un problème.
Ligne 15 : Ligne 16 :
 
  <liste des instructions>
 
  <liste des instructions>
 
  '''fin'''
 
  '''fin'''
 +
  
 
=entrées/sorties=
 
=entrées/sorties=
Ligne 56 : Ligne 58 :
 
Ex :
 
Ex :
 
  '''algorithme''' ex2
 
  '''algorithme''' ex2
  Entier : etatBouton
+
  binaire : etatBouton
 
  '''debut'''
 
  '''debut'''
 
     etatBouton <- lire bouton broche 2
 
     etatBouton <- lire bouton broche 2
Ligne 71 : Ligne 73 :
 
===structure si/alors/sinon===
 
===structure si/alors/sinon===
  
Cette structure permet de réaliser tels ou tels actions selon la valeur d'une condition :
+
Cette structure permet de réaliser telles ou telles actions selon la valeur d'une condition :
  
 
  '''si''' <condition est réalisée>
 
  '''si''' <condition est réalisée>
 
  '''alors'''
 
  '''alors'''
     exécuter <tels actions>
+
     exécuter <telles actions>
 
  '''sinon'''
 
  '''sinon'''
     exécuter <tels autres actions>
+
     exécuter <telles autres actions>
  
  
Ligne 95 : Ligne 97 :
  
 
*allumage de lampadaires
 
*allumage de lampadaires
**https://fr.wikipedia.org/wiki/Lumière_du_jour#%C3%89clairement_lumineux
+
**https://fr.wikipedia.org/wiki/Lumière_du_jour#éclairement_lumineux
 
**un capteur de lumière positionné sur la broche 10 retourne la valeur d'éclairement en lux
 
**un capteur de lumière positionné sur la broche 10 retourne la valeur d'éclairement en lux
 
**on allume le lampadaire sur la broche 5 lorsqu'il fait nuit (éclairement inférieur à 2 lux)
 
**on allume le lampadaire sur la broche 5 lorsqu'il fait nuit (éclairement inférieur à 2 lux)
 +
*affichage de la température
 +
**on dispose de 2 leds :
 +
***bleue broche 2
 +
***rouge broche 4
 +
**d'un capteur de température broche 5 qui donnera la température en °C
 +
**le capteur mesure la température du bain pour un bébé
 +
**la led bleue s'allume si le bain est trop froid : 36°C
 +
**la led rouge s'allume si le bain est trop chaud : 37,5 °C
 +
 +
===structure si/alors/sinon si/sinon===
 +
 +
Lorsqu'il existe plus de 2 choix, on peut ajouter des cas supplémentaires :
 +
 +
'''si''' <condition est réalisée>
 +
'''alors'''
 +
    exécuter <telles actions>
 +
'''sinon si''' <autre condition>
 +
    exécuter <telles actions>
 +
'''sinon si''' <encore une autre condition>
 +
    exécuter <telles actions>
 +
'''sinon'''
 +
    exécuter <telles autres actions>
 +
 +
{{Question|Reprenons l'exercice précédent en ajoutant une led :}}
 +
*une led bleue indique une température froide : moins de 36°C
 +
*une led verte indique une température correcte : entre 36°C et 37,5°C
 +
*une led rouge indique une température chaude : au dessus de 37,5°C
 +
 +
 +
==structure répétitive==
 +
 +
===boucle "pour"===
 +
 +
Lorsque le nombre de répétitions est connu à l'avance, on utilise la structure de répétition '''pour'''.
 +
 +
Cela permet de répéter un nombre de fois déterminé des actions :
 +
 +
'''pour''' <variable> '''de''' <mini> '''a''' <maxi>
 +
'''faire'''
 +
    exécuter <telles actions>
 +
'''finPour'''
 +
 +
{{Question|écrire des algorithmes qui répondent aux cahiers des charges suivants :}}
 +
*Faire clignoter 5 fois en 1s une led sur la broche 3
 +
*On dispose de 3 leds de couleurs différentes : verte (broche 3)/orange (broche 4)/rouge (broche 5)
 +
**on souhaite allumer chaque led successivement : verte puis orange puis rouge
 +
**on répète ce cycle 10 fois
 +
*Demander à l'utilisateur de saisir un nombre de répétition et faire ensuite clignoter une led en conséquence
 +
 +
===boucle "répéter tant que" ou "tant que faire"===
 +
 +
Lorsque le nombre de répétitions n'est pas connu à l'avance, on utilise l'une des 2 structures suivantes :
 +
 +
{| class="wikitable"
 +
|-
 +
| "répéter"
 +
'''répéter'''
 +
      exécuter <telles actions>
 +
'''tant que''' condition est vraie
 +
 +
|| "tant que"
 +
'''tant que''' condition est vraie
 +
'''faire'''
 +
      exécuter <telles actions>
 +
'''finFaire'''
 +
|}
 +
 +
'''Remarque''' : on utilisera la plupart du temps une boucle perpétuelle dans nos programmes :
 +
'''répéter indéfiniment'''
 +
      exécuter <telles actions>
 +
 +
 +
{{Question|écrire des algorithmes qui répondent aux cahiers des charges suivants :}}
 +
*On souhaite faire chauffer un liquide :
 +
**la broche 5 permet de faire chauffer le liquide
 +
**un capteur de température est présent sur la broche 2
 +
**une led est présente sur la broche 4
 +
**la led doit clignoter lorsque l'on chauffe
 +
 +
=Exercices=
 +
==Gestion d'un feu de circulation==
 +
 +
Faire un algorithme de gestion des feux d'un croisement entre 2 voies de circulation en gérant le passage des piétons
 +
 +
On tracera un chronogramme de l'état des différents feux.
 +
 +
Vous veillerez bien évidemment aux durées des différentes phases.
 +
 +
==Vitesse d'un moteur==
 +
 +
Un potentiomètre (donnera une valeur entre 1 et 10) permet de changer la vitesse de rotation d'un moteur (vitesse entre 1 et 10 également).
 +
 +
Un interrupteur permettra de mettre en marche/arrêter le moteur à la vitesse indiquée par le potentiomètre.
 +
 +
==Chenillard==
 +
 +
On dispose de 8 leds, écrire un algorithme décrivant le fonctionnement d'un chenillard.
 +
 +
==Gestion d'une machine==
 +
 +
On considère une machine qui se compose :
 +
*d'un moteur
 +
*d'un bouton poussoir start
 +
*d'un bouton poussoir stop
 +
*d'un bouton poussoir miseSousTension
 +
*d'un bouton poussoir aru (arrêt d'urgence)
 +
*d'un voyant "pret"
 +
 +
{{Question|Ecrire un algorithme qui correspond au fonctionnement désiré de la machine :}}
 +
#si le bouton aru est appuyé :
 +
#*le moteur est arrêté
 +
#*le voyant est éteint
 +
#après un arrêt d'urgence, il faut appuyer sur le bouton miseSousTension
 +
#on allume alors le voyant pret
 +
#on peut alors utiliser le moteur :
 +
##l'appui sur start met en route le moteur
 +
##il reste en marche si on relâche le bouton
 +
##l'appui sur stop arrête le moteur
 +
 +
'''Le bouton aru est prioritaire sur tout le reste !'''
 +
 +
 +
==Redondance de capteur==
 +
 +
On reprend l'exercice sur la régulation d'un bain pour bébé mais on utilise cette fois 2 capteurs identiques.
 +
 +
{{Question|Réfléchir à écrire un algorithme qui utilise ces 2 capteurs et permet de détecter le dysfonctionnement de l'un des capteurs (par ex écart mesuré important)}}
 +
 +
=sources=
 +
*http://www.est-usmba.ac.ma/ALGORITHME/co/module_ALGORITHME_32.html
 +
*https://manurenaux.wp.imt.fr/2014/05/14/lutilisateur-final-au-sein-dun-projet-informatique/

Version actuelle datée du 13 septembre 2023 à 08:34

CdcInformatique.gif

Un algorithme est une suite ordonnée d'instructions permettant la résolution d'un problème.

On écrira les algorithmes de la façon suivante :

  • on commencera par donner le nom de l'algorithme
  • on listera ensuite les variables utilisées
  • on listera ensuite les instructions a effectuer entre :
    • debut
    • fin


algorithme nomDeAlgorithme
<liste des variables>
debut
<liste des instructions>
fin


entrées/sorties

un algorithme devra nécessairement interagir avec l'extérieur par :

  • des lectures
    • clavier
    • bouton poussoir
    • mesure de température
    • =>capteurs
  • des écritures
    • afficher à l'écran
    • imprimer
    • allumer un voyant
    • faire tourner un moteur
    • =>actionneurs


sorties

Exemple :

algorithme ex1
debut
    allumer led rouge
fin

Question.jpg écrire des algorithmes qui répondent aux cahiers des charges suivants :

Attention, une sortie restera dans le dernier état dans laquelle on l'a placée

  • allumer une led rouge 1 fois pendant 5s
  • allumer successivement une led rouge puis orange puis verte, chacune pendant 3s

entrées

afin de mémoriser la valeur lue des entrées, nous utiliserons des variables en précisant leur type :

  • binaire : valeur vrai ou faux
  • entier : pour représenter ... des nombres entiers !
  • reel
  • texte

Ex :

algorithme ex2
binaire : etatBouton
debut
    etatBouton <- lire bouton broche 2
    afficher etatBouton
fin

Structures de contrôle

action conditionnelle

Nous avons vu qu'un algorithme est une liste d'actions exécutées séquentiellement.

Afin d'avoir des programmes qui ne réalisent pas systématiquement les mêmes actions, il est nécessaire de pouvoir choisir parmi plusieurs actions à réaliser.

structure si/alors/sinon

Cette structure permet de réaliser telles ou telles actions selon la valeur d'une condition :

si <condition est réalisée>
alors
   exécuter <telles actions>
sinon
   exécuter <telles autres actions>


Exemple :

algorithme ex3
binaire boutonAppuyé
debut
    boutonAppuyé <- lire bouton broche 5
    si boutonAppuyé est vrai
    alors
        allumer la led rouge broche 3
    sinon
        eteindre la led rouge broche 3
fin

Question.jpg écrire des algorithmes qui répondent aux cahiers des charges suivants :

  • allumage de lampadaires
  • affichage de la température
    • on dispose de 2 leds :
      • bleue broche 2
      • rouge broche 4
    • d'un capteur de température broche 5 qui donnera la température en °C
    • le capteur mesure la température du bain pour un bébé
    • la led bleue s'allume si le bain est trop froid : 36°C
    • la led rouge s'allume si le bain est trop chaud : 37,5 °C

structure si/alors/sinon si/sinon

Lorsqu'il existe plus de 2 choix, on peut ajouter des cas supplémentaires :

si <condition est réalisée>
alors
   exécuter <telles actions>
sinon si <autre condition>
   exécuter <telles actions>
sinon si <encore une autre condition>
   exécuter <telles actions>
sinon
   exécuter <telles autres actions>

Question.jpg Reprenons l'exercice précédent en ajoutant une led :

  • une led bleue indique une température froide : moins de 36°C
  • une led verte indique une température correcte : entre 36°C et 37,5°C
  • une led rouge indique une température chaude : au dessus de 37,5°C


structure répétitive

boucle "pour"

Lorsque le nombre de répétitions est connu à l'avance, on utilise la structure de répétition pour.

Cela permet de répéter un nombre de fois déterminé des actions :

pour <variable> de <mini> a <maxi>
faire
   exécuter <telles actions>
finPour

Question.jpg écrire des algorithmes qui répondent aux cahiers des charges suivants :

  • Faire clignoter 5 fois en 1s une led sur la broche 3
  • On dispose de 3 leds de couleurs différentes : verte (broche 3)/orange (broche 4)/rouge (broche 5)
    • on souhaite allumer chaque led successivement : verte puis orange puis rouge
    • on répète ce cycle 10 fois
  • Demander à l'utilisateur de saisir un nombre de répétition et faire ensuite clignoter une led en conséquence

boucle "répéter tant que" ou "tant que faire"

Lorsque le nombre de répétitions n'est pas connu à l'avance, on utilise l'une des 2 structures suivantes :

"répéter"
répéter
      exécuter <telles actions>
tant que condition est vraie

"tant que"
tant que condition est vraie
faire
      exécuter <telles actions>
finFaire

Remarque : on utilisera la plupart du temps une boucle perpétuelle dans nos programmes :

répéter indéfiniment
      exécuter <telles actions>


Question.jpg écrire des algorithmes qui répondent aux cahiers des charges suivants :

  • On souhaite faire chauffer un liquide :
    • la broche 5 permet de faire chauffer le liquide
    • un capteur de température est présent sur la broche 2
    • une led est présente sur la broche 4
    • la led doit clignoter lorsque l'on chauffe

Exercices

Gestion d'un feu de circulation

Faire un algorithme de gestion des feux d'un croisement entre 2 voies de circulation en gérant le passage des piétons

On tracera un chronogramme de l'état des différents feux.

Vous veillerez bien évidemment aux durées des différentes phases.

Vitesse d'un moteur

Un potentiomètre (donnera une valeur entre 1 et 10) permet de changer la vitesse de rotation d'un moteur (vitesse entre 1 et 10 également).

Un interrupteur permettra de mettre en marche/arrêter le moteur à la vitesse indiquée par le potentiomètre.

Chenillard

On dispose de 8 leds, écrire un algorithme décrivant le fonctionnement d'un chenillard.

Gestion d'une machine

On considère une machine qui se compose :

  • d'un moteur
  • d'un bouton poussoir start
  • d'un bouton poussoir stop
  • d'un bouton poussoir miseSousTension
  • d'un bouton poussoir aru (arrêt d'urgence)
  • d'un voyant "pret"

Question.jpg Ecrire un algorithme qui correspond au fonctionnement désiré de la machine :

  1. si le bouton aru est appuyé :
    • le moteur est arrêté
    • le voyant est éteint
  2. après un arrêt d'urgence, il faut appuyer sur le bouton miseSousTension
  3. on allume alors le voyant pret
  4. on peut alors utiliser le moteur :
    1. l'appui sur start met en route le moteur
    2. il reste en marche si on relâche le bouton
    3. l'appui sur stop arrête le moteur
Le bouton aru est prioritaire sur tout le reste !


Redondance de capteur

On reprend l'exercice sur la régulation d'un bain pour bébé mais on utilise cette fois 2 capteurs identiques.

Question.jpg Réfléchir à écrire un algorithme qui utilise ces 2 capteurs et permet de détecter le dysfonctionnement de l'un des capteurs (par ex écart mesuré important)

sources