initiationàla programmation’impérative’ - cours instructions conditionn… ·...

21
E. Laine – 05.09.2016 Initiation à la programmation impérative et algorithmique Cours 3 – Instruc9ons Condi9onnelles Largement inspiré des cours : Vercouter, Del Mondo & Delestre, Hérault, Mainguenaud (INSA de Rouen)

Upload: others

Post on 25-May-2020

11 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Initiationàla programmation’impérative’ - Cours Instructions conditionn… · E.#Laine#–05.09.2016# Exercice’ • Co9saon#d’assurance# Ecrivezun#boutde#programme#qui#affiche#àl’écran#le#montantd’une#

E.  Laine  –  05.09.2016  

Initiation  à  la  programmation  impérative  et  algorithmique  Cours  3  –  Instruc9ons  Condi9onnelles  

Largement  inspiré  des  cours  :    Vercouter,  Del  Mondo  &  Delestre,  Hérault,  Mainguenaud  (INSA  de  Rouen)  

Page 2: Initiationàla programmation’impérative’ - Cours Instructions conditionn… · E.#Laine#–05.09.2016# Exercice’ • Co9saon#d’assurance# Ecrivezun#boutde#programme#qui#affiche#àl’écran#le#montantd’une#

E.  Laine  –  05.09.2016  

Limites  de  l’éxécution  séquentielle  

•  Jusqu’à  maintenant  les  instruc9ons  étaient  toutes  interprétées  séquen9ellement  

Declara'on:      valeurFranc  ,  valeurEnEuro,  tauxConversion  :  Reel  

debut    tauxConversion  ß  6.55957    valeurEnEuro  ß  10    valeurEnFranc  ß  valeurEnEuros  *  tauxConversion    ecrire(‘Vos  euros  valent  ‘,  valeurEnFranc,  ‘  francs’)  

fin  

 •  Comment  faire  un  algorithme  qui  puisse  donner  le  choix  de  la  devise  de  conversion  ?  

Page 3: Initiationàla programmation’impérative’ - Cours Instructions conditionn… · E.#Laine#–05.09.2016# Exercice’ • Co9saon#d’assurance# Ecrivezun#boutde#programme#qui#affiche#àl’écran#le#montantd’une#

E.  Laine  –  05.09.2016  

Instruction  si  […]  alors  

•  L’instruc9on  si  […]  alors  permet  de  condi9onner  l’éxécu9on  d’un  algorithme  à  la  valeur  d’une  expression  boléenne  

•  Syntaxe  :  si  <expression  booléenne>  alors  

 <bloc  d’instruc9ons  si  l’expression  est  vraie>  finsi  

www.iftt.com

Page 4: Initiationàla programmation’impérative’ - Cours Instructions conditionn… · E.#Laine#–05.09.2016# Exercice’ • Co9saon#d’assurance# Ecrivezun#boutde#programme#qui#affiche#àl’écran#le#montantd’une#

E.  Laine  –  05.09.2016  

Schéma  de  la  conditionnelle  si  […]  alors  

Début  

Fin  

Instruc9on  1a  

Instruc9on  2a  

Expression  Booléenne  

Vrai  

Faux  

Page 5: Initiationàla programmation’impérative’ - Cours Instructions conditionn… · E.#Laine#–05.09.2016# Exercice’ • Co9saon#d’assurance# Ecrivezun#boutde#programme#qui#affiche#àl’écran#le#montantd’une#

E.  Laine  –  05.09.2016  

Exemple  de  branchement  conditionnel  

Declara'on  TX_FR  =  6.55957  ;  TX_USD  =  1.3255  valeurEnEuro,  valeurConver9e  :  Reel    devise  :  Chaine  de  caracteres  debut    

 ecrire(‘Valeur  en  euros  :’)    lire(valeurEnEuros)    ecrire(‘Quelle  devise  voulez-­‐vous  ?’)    lire(devise)    si  (devise  =  ‘dollar’)  alors      valeurConver9e  ß  valeurEnEuro  *  TX_USD    finsi    si  (devise  =  ‘franc’)  alors      valeurConver9e  ß  valeurEnEuro  *  TX_FR    finsi    ecrire(‘la  valeur  conver9e  est  de  ‘,  valeurConver9e)  

fin  

Page 6: Initiationàla programmation’impérative’ - Cours Instructions conditionn… · E.#Laine#–05.09.2016# Exercice’ • Co9saon#d’assurance# Ecrivezun#boutde#programme#qui#affiche#àl’écran#le#montantd’une#

E.  Laine  –  05.09.2016  

L’instruction  si  [...]  alors  […]  sinon  […]  

•  si  [...]  alors  […]  sinon  […]  est  une  variante  qui  permet  d’associer  des  instruc9ons  à  une  condi9on  fausse  

•  Syntaxe  :  si  <expression  booléenne>  alors  

 <bloc  d’instruc9ons  si  l’expression  est  vraie>  sinon  

 <bloc  d’instruc9ons  si  l’expression  est  fausse>  finsi  

Page 7: Initiationàla programmation’impérative’ - Cours Instructions conditionn… · E.#Laine#–05.09.2016# Exercice’ • Co9saon#d’assurance# Ecrivezun#boutde#programme#qui#affiche#àl’écran#le#montantd’une#

E.  Laine  –  05.09.2016  

Schéma  de  la  conditionnelle  si  […]  alors  sinon  

Début  

Fin  

Instruc9on  1a  

Instruc9on  2a  

Expression  Booléenne  

Instruc9on  1b  

Instruc9on  2b  

Vrai   Faux  

Page 8: Initiationàla programmation’impérative’ - Cours Instructions conditionn… · E.#Laine#–05.09.2016# Exercice’ • Co9saon#d’assurance# Ecrivezun#boutde#programme#qui#affiche#àl’écran#le#montantd’une#

E.  Laine  –  05.09.2016  

Autre  exemple  de  branchement  conditionnel  •  Calcul  de  la  valeur  absolue  

 Declara'on  unEn9er,  laValeurAbsolue  :  En'er    debut    lire(unEn9er)    si  unEn9er  ≥  0  alors      laValeurAbsolue  ß  unEn9er    sinon      laValeurAbsolue  ß  -­‐  unEn9er    finsi    ecrire(laValeurAbsolue)    fin  

Page 9: Initiationàla programmation’impérative’ - Cours Instructions conditionn… · E.#Laine#–05.09.2016# Exercice’ • Co9saon#d’assurance# Ecrivezun#boutde#programme#qui#affiche#àl’écran#le#montantd’une#

E.  Laine  –  05.09.2016  

Exercice  

•  Calcul  des  années  bissex9les  

Ecrire  un  algorithme  qui  lit  une  valeur  en9ère  représentant  une  année  et  écrit  un  texte  indiquant  si  l’année  est  bissex9le  ou  non          Rappel  :  Une  année  est  bissex9le  si  elle  est  divisible  par  4  et  pas  par  100,  ou  si  elle  est  divisible  par  400.  

Page 10: Initiationàla programmation’impérative’ - Cours Instructions conditionn… · E.#Laine#–05.09.2016# Exercice’ • Co9saon#d’assurance# Ecrivezun#boutde#programme#qui#affiche#àl’écran#le#montantd’une#

E.  Laine  –  05.09.2016  

Imbrication  de  conditions  •  Lorsque  plus  de  deux  alterna9ves  sont  nécéssaires,  on  rajoute  alors  des  instruc9ons  condi9onnelles  dans  les  blocs  d’instruc9ons  si  vrai  ou  si  faux  

 On  parle  de  condi.ons  imbriquées  

Début  

Fin  

Instruc9on  1c  

Cond  

Instruc9on  1b  

Instruc9on  2b  

Instruc9on  1a  

Instruc'on  2a  

Cond  

Page 11: Initiationàla programmation’impérative’ - Cours Instructions conditionn… · E.#Laine#–05.09.2016# Exercice’ • Co9saon#d’assurance# Ecrivezun#boutde#programme#qui#affiche#àl’écran#le#montantd’une#

E.  Laine  –  05.09.2016  

Exemples  conditions  imbriquées  •  Si  on  doit  comparer  une  seule  variable  avec  plusieurs  valeurs  

si  a  =  1  alors    faire  une  chose  

sinon      si  a  =  2  alors      faire  autre  chose    sinon      si  a=  4  alors      faire  encore  autre  chose      sinon        …….      finsi    finsi  

finsi  

Page 12: Initiationàla programmation’impérative’ - Cours Instructions conditionn… · E.#Laine#–05.09.2016# Exercice’ • Co9saon#d’assurance# Ecrivezun#boutde#programme#qui#affiche#àl’écran#le#montantd’une#

E.  Laine  –  05.09.2016  

Un  autre  exemple    Déclara'on:  solde,  retrait  :  Reel  début  

 …    ecrire(‘Vous  avez  demandé  un  retrait’)    si  solde  ≥  0  alors      ecrire(‘Combien  voulez  vous  re9rez  ?’)      si  retrait  >  solde  alors        ecrire(‘Opéra9on  impossible.  la  somme  dépasse  votre  solde’)      sinon        ecrire(‘Retrait  en  cours’)        solde  ß  solde  –  retrait        …      finsi    sinon      ecrire  (‘Opéra9on  annulée  vous  être  à  découvert’)    finsi  

fin  

Page 13: Initiationàla programmation’impérative’ - Cours Instructions conditionn… · E.#Laine#–05.09.2016# Exercice’ • Co9saon#d’assurance# Ecrivezun#boutde#programme#qui#affiche#àl’écran#le#montantd’une#

E.  Laine  –  05.09.2016  

Exemple    Déclara'on  jour:  En'er,  mois:  Mois,  signe  :  Chaine  de  caracteres  début  

 lire(jour,  mois)    si  (jour  >=  21)  et  (mois  =  "decembre")  alors  signe  ß"Capricorne"    sinon      si  (jour  >=  22)  et  (mois  =  "novembre")  ou  (mois  =  "decembre")  alors  signe  ß  "Sagiraire"      sinon        si  (jour  >=  23)  et  (mois  =  "octobre")  ou  (mois  =  "novembre")  alors  signe  ß  "Scorpion"        sinon          si  (jour  >=  23)  et  (mois  =  "septembre"  )  ou  (mois  =  "octobre")  alors  signe  ß  "Balance"          sinon            si  (jour  >=  23)  et  (mois  =  "aout")  ou  (mois  =  "septembre")  alors  signe  ß  "Vierge"            sinon              si  (jour  >=  23)  et  (mois  =  "juillet")  ou  (mois  =  "aout")  alors  signe  ß  "Lion"              sinon                si    (jour  >=  22)  et  (mois  =  "juin")  ou  (mois  =  "juillet")  alors  signeß  "Cancer"                  sinon                      si  jour  >=  21)  et  (mois  =  "mai")  ou  (mois  =  "juin")  alors  signe  ß  "Gemeaux"  

                   ………..  

 

Page 14: Initiationàla programmation’impérative’ - Cours Instructions conditionn… · E.#Laine#–05.09.2016# Exercice’ • Co9saon#d’assurance# Ecrivezun#boutde#programme#qui#affiche#àl’écran#le#montantd’une#

E.  Laine  –  05.09.2016  

Exercice  •  Co9sa9on  d’assurance  Ecrivez  un  bout  de  programme  qui  affiche  à  l’écran  le  montant  d’une  assurance  auto.  On  supposera  que  vous  disposez  des  variables  suivantes  :  •  age,  un  en9er  indiquant  l'âge  du  client  •  ancienneté  qui  indique  son  ancienneté  en  années  •  masculin  un  booléen  de  valeur  vraie  si  le  client  est  un  homme  •  nb_accidents  qui  indique  le  nombre  d’accidents  du  client  

 Le  tarif  de  base  est  de  1000  euros.  Si  le  client  est  un  jeune  conducteur  (moins  de  25  ans  pour  un  garçon,  moins  de  23  ans  pour  une  fille),  on  y  ajoute  25%.  Chaque  accident  du  client  a  pour  effet  d’augmenter  un  malus  de  10%,  ini9alement  à  0%  et  plafonné  à  50%.  Si  le  client  n’a  pas  eu  d’accidents,  on  lui  offre  un  remise  de  100  euros  s’il  a  plus  de  10  ans  d’ancienneté  et  de  200  euros  s’il  a  plus  de  30  ans  d’ancienneté  (non  cumulable)  

Page 15: Initiationàla programmation’impérative’ - Cours Instructions conditionn… · E.#Laine#–05.09.2016# Exercice’ • Co9saon#d’assurance# Ecrivezun#boutde#programme#qui#affiche#àl’écran#le#montantd’une#

E.  Laine  –  05.09.2016  

l’instruction  cas  où  Cas  où  permet  de  spécifier  une  instruc9on  condi9onnelle  sur  plusieurs  valeurs.  •  Sa  syntaxe  est  :  cas  où  v  vaut:  

 v1  :  ac.on1    v21,  v22,  …,  v2m  :  ac.on2    …    vn  :  ac.onn      autre  :  ac.on    

fincas  •  les  vi  sont  des  constantes  de  type  scalaire  (en9er,  naturel,  enuméré  ou  caractère)  

•  ac.oni  est  exécutée  si  v  =  vi  (on  quire  ensuite  l’instruc9on  cas)  •  ac.on  est  exécutée  si  Pour  tout  I,  v  ≠  vi  

Page 16: Initiationàla programmation’impérative’ - Cours Instructions conditionn… · E.#Laine#–05.09.2016# Exercice’ • Co9saon#d’assurance# Ecrivezun#boutde#programme#qui#affiche#àl’écran#le#montantd’une#

E.  Laine  –  05.09.2016  

Exemple  

•  Déterminer  si  un  mois  possède  30  jours.  Déclara'on:  mois  :  En'er  ;  resultats  :  Booleen  Début  

 lire(mois)    cas  où  mois  vaut      4,6,9,11  :  resultat  ß  Vrai      autre  :  resultat  ß  Faux    fincas    ecrire(resultat)  

fin  

Page 17: Initiationàla programmation’impérative’ - Cours Instructions conditionn… · E.#Laine#–05.09.2016# Exercice’ • Co9saon#d’assurance# Ecrivezun#boutde#programme#qui#affiche#àl’écran#le#montantd’une#

E.  Laine  –  05.09.2016  

Déclara'on  jour:  En'er,  mois:  Mois,  signe  :  Chaine  de  caracteres  début  

 lire(jour,  mois)  

 cas  où  mois  vaut      janvier  :  si  jour  >=  20  alors  signe  ß  ‘Verseau’  sinon  signe  ß  ‘Capricorne’  finsi      février:  si  jour  >=  19  alors  signe  ß  ‘Poisson’  sinon  signe  ß  ‘Verseau’  finsi      mars:  si  jour  >=  21  alors  signe  ß  ‘Belier’  sinon  signe  ß  ‘Poisson’  finsi      avril  :  si  jour  >=  21  alors  signe  ß  ‘Taureau’  sinon  signe  ß  ‘Belier’  finsi      mai  :  si  jour  >=  21  alors  signe  ß  ‘Gemeaux’  sinon  signe  ß  ‘Taureau’  finsi      juin  :  si  jour  >=  22  alors  signe  ß  ‘Cancer’  sinon  signe  ß  ‘Gemeaux’  finsi      juillet  :  si  jour  >=  23  alors  signe  ß  ‘Lion’  sinon  signe  ß  ‘Cancer’  finsi      aout  :  si  jour  >=  23  alors  signe  ß  ‘Vierge’  sinon  signe  ß  ‘Lion’  finsi      septembre:  si  jour  >=  23  alors  signe  ß  ‘Balance’  sinon  signe  ß  ‘Vierge’  finsi      octobre  :  si  jour  >=  23  alors  signe  ß  ‘Scorpion’  sinon  signe  ß  ‘Balance’  finsi      novembre  :  si  jour  >=  22  alors  signe  ß  ‘Sagiraire’  sinon  signe  ß  ‘Scorpion’  finsi      autre  :  si  jour  >=  21  alors  signe  ß  ‘Capricorne’  sinon  signe  ß  ‘Sagiraire’  finsi  

 fincas  fin  

Page 18: Initiationàla programmation’impérative’ - Cours Instructions conditionn… · E.#Laine#–05.09.2016# Exercice’ • Co9saon#d’assurance# Ecrivezun#boutde#programme#qui#affiche#àl’écran#le#montantd’une#

E.  Laine  –  05.09.2016  

Exercice  

•  Ecrire  un  algorithme  qui  lit  un  mois  et  une  année  (tous  les  2  sous  forme  d’une  valeur  en9ère)  et  renvoie  le  nombre  de  jours  du  mois.    •  Aren9on,  il  faut  prendre  en  compte  les  années  bissex9les  !  

Page 19: Initiationàla programmation’impérative’ - Cours Instructions conditionn… · E.#Laine#–05.09.2016# Exercice’ • Co9saon#d’assurance# Ecrivezun#boutde#programme#qui#affiche#àl’écran#le#montantd’une#

E.  Laine  –  05.09.2016  

Python:  instruction  conditionnelle  

•  En  python  on  u9lise  l’instruc9on:  if    <expression  booléenne>  :    

 <instruc9on1>    <instruc9on2>    …  

else :      <bloc  d’instruc9ons>  

•  Le  niveau  d’indenta'on  détermine  si  l’instruc9on  est  bien  condi9onnelle  au  if      

alcool = Trueif (age < 18): print “Vous êtes mineur” alcool = False

 

alcool = Trueif (age < 18): print “Vous êtes mineur”alcool = False

 

Page 20: Initiationàla programmation’impérative’ - Cours Instructions conditionn… · E.#Laine#–05.09.2016# Exercice’ • Co9saon#d’assurance# Ecrivezun#boutde#programme#qui#affiche#àl’écran#le#montantd’une#

E.  Laine  –  05.09.2016  

Python:  instruction  cas  ou  ?  

•  Il  n’y  a  pas  d’instruc9on  cas  où,  mais  un  raccourci  elif  permet  d’imbriquer  les  clauses  :    if  <expression  booléenne  1>  :    

 <bloc  d’instruc9ons  >    elif  <expression  boolénne  2>    :    

 <bloc  d’instruc9ons>  elif  <expression  boolénne  3>  :  

 <bloc  d’instruc9ons>  else  :  

 <bloc  d’instruc9ons>  

Page 21: Initiationàla programmation’impérative’ - Cours Instructions conditionn… · E.#Laine#–05.09.2016# Exercice’ • Co9saon#d’assurance# Ecrivezun#boutde#programme#qui#affiche#àl’écran#le#montantd’une#

E.  Laine  –  05.09.2016  

Conclusions/résumé  

•  Les  branchements  condi9onnels  permerent  de  traiter  différents  scénarios  avec  un  algorithme.  

•  Les  instruc9ons  condi9onnelles  peuvent  être  imbriquées  pour  diviser  plus  finement  l’espace  des  possibilités.  

•  L’u9lisa9on  d’expressions  booléennes  complexes  peut  aussi  simplifier  la  structure  de  contrôle.  

•  En  python,  l’entrée  dans  un  bloc  de  contrôle  nécessite  l’indenta'on  de  ce  bloc