CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[QUESTION] Instruction de choix

masuka42
masuka42
Niveau 7
27 août 2014 à 18:28:37

Bonjour :-) Je m'initie à la programmation( par le biais d'un pseudo code ) et j'aurais quelques questions à propos des instructions de choix.

:d) Tout d'abord, j'ai appris qu'il était possible de faire des structures de choix imbriqués. Par exemples:

entier a, b
écrire "tapez un nombre"
lire a
si a<50 alors b:= 1
sinon si a<100 alors b:=2
sinon b:= 3

Dans ce cas, l’imbrication se fait au niveau du "sinon". Mais est-il possible de faire une imbrication au niveau du "alors" ? Comme par exemple:

entier a, b
écrire "donnez un nombre"
lire a
si a<50 alors si a<25 alors b:=1
sinon b:=2

:d) Ensuite, j'aimerais avoir quelques éclaircissement au sujet des variables de type booléen. Je sais que celles-ci n'ont que 2 constantes (vrai ou faux) et qu'une condition quelconque est une expression de type booléen. Faut-il lui affecter sa constantes en même temps que la valeur de condition qu'elle contient ? Par exemple:

entier a, b
booléen c
c := vrai
c := a<50
écrire "tapez un nombre"
lire a
si c alors b:= 1
sinon b:= 2

De plus, si je remplace la ligne "c:= vrai" par c:= faux. Cela revient au même que si la condition était "non a<50" ?

Voila, j’espère m'avoir bien fait comprendre avec le pseudo-code :p)

SuPeRHuMaR
SuPeRHuMaR
Niveau 10
27 août 2014 à 18:43:37

Pour ta 1ère question, oui c'est possible, tu peux en faire autant que tu le souhaite (mais à un certain niveau, mettre 50 if imbriqué c'est pas joli).

Pour ta 2ème question, tu peux te passer de "c := vrai" si tu mets la ligne qui suit, puisque a < 50 est déjà un booléen. Ta variable c sera initialisée à a < 50 de toute façon avec de faire tes if.

Darkandgel
Darkandgel
Niveau 10
27 août 2014 à 18:44:43

entier a, b
écrire "donnez un nombre"
lire a
si a<50 alors si a<25 alors b:=1
sinon b:=2

Ce n'est pas de l'imbrication, c'est juste un ET logique :

SI condition1 ET consition2 ALORS

Mais tu peux aussi l'écrire comme ça :

(j'ajoute les accolades pour plus de lisibilité)

Si condition1 ALORS
{
SI conditition2 ALORS
SINON
}
SINON

Pour la seconde partie, ton code est faux : tu utilises une variable a qui n'est pas initialisée.

entier a, b
booléen c
c := vrai
écrire "tapez un nombre"
lire a

c := a<50

si c alors b:= 1
sinon b:= 2

Ici, c vaut vrai jusqu'a ce qu'on arrive a la ligne c := a<50
A ce moment, si a<50, c vaut toujours vrai, sinon c vaut faux.

masuka42
masuka42
Niveau 7
27 août 2014 à 20:57:30

D'accord merci de vos réponses :-) Donc si j'ai bien compris, pour la variable de type booléen c, sa constante dépendra de la valeur de a. Si a répond à la condition(a<50), la constante de c sera vrai et si a ne répond pas à la condition celle-ci sera fausse. La constante ne dépendra donc pas de l'affectation faite à c (c:= vrai ) mais bien de la variable qui va être "juger".

" tu utilises une variable a qui n'est pas initialisée."

Pourquoi aurait-il fallu l'initialisée ? La variable a sera de toute façon affecter par la valeur que l'utilisateur lui donnera avec l'instruction "lira a".

SuPeRHuMaR
SuPeRHuMaR
Niveau 10
27 août 2014 à 23:45:13

"La constante ne dépendra donc pas de l'affectation faite à c (c:= vrai ) mais bien de la variable qui va être "juger"."

:d) Bien entendu, puisque dans ton code tu écris :
c := vrai
c := a<50

Tu réalises 2 affectations consécutives, du coup c'est la 2ème qui sera prise en compte lors de tes tests sur la variable c du code qui suit. D'où l'inutilité de la ligne "c:= vrai".

Et pour vous mettre d'accord, je pense que DarkAndgel a dû penser que quand tu as écrit "lire a", tu voulais justement le lire et non pas "affecter a" par la valeur entrée suite à la ligne "entrer un nombre". Dans ce sens il aurait eu raison puisque tu lirais et testerais la variable a sans l'avoir initialisée, ce qui aurait engendré un problème. Si tu avais modifié ta ligne comme ça par exemple :
entier a, b
écrire "tapez un nombre n"
a << n
si a<50 alors b:= 1
sinon si a<100 alors b:=2
sinon b:= 3

je pense que ça aurait été clair pour tout le monde, et c'est ce que tu as voulu faire j'imagine :)

Darkandgel
Darkandgel
Niveau 10
28 août 2014 à 10:01:39

"Donc si j'ai bien compris, pour la variable de type booléen c, sa constante dépendra de la valeur de a"

Oula. Si c'est une constante alors c'est pas une variable...
Constante = information que tu ne peux affecter qu'une fois.

De plus, une variable possède toujours la valeur qu'on lui a donné lors de sa derniere affectation.

a=1
a=8
a=659
a=0
ecrire a

Affichera 0.

"
Pourquoi aurait-il fallu l'initialisée ? La variable a sera de toute façon affecter par la valeur que l'utilisateur lui donnera avec l'instruction "lira a". "

Look :

entier a, b
booléen c
c := vrai
c := a<50
écrire "tapez un nombre"
lire a
si c alors b:= 1
sinon b:= 2

Au moment ou tu executes c=a<50, a n'a aucune valeur
Donc a ce moment la, c vaut quoi a ton avis ?

masuka42
masuka42
Niveau 7
28 août 2014 à 10:38:20

Oui "lire a" veut dire affecter à a la valeur entrée :p) Ah je comprend un peu mieux le problème d'avoir affecter deux fois la variable c. Je pensais que l'affectation d'une valeur et d'une constante étaient indépendantes pour une variable de type booléen. Mais alors, à quoi ça sert d'affecter une valeur vrai ou faux si de toute façon celle-ci sera remplacer par la valeur de comparaison ( c:= a<50 ) ? Enfin j'ai peut être mal saisi la notion de constante pour ce type :(

Darkandgel Ah oui je vois l'erreur pour "a". Désoler de t'avoir contredis :p)

entier a, b
booléen c
écrire "tapez un nombre"
lire a
c := a<50
si c alors b:= 1
sinon b:= 2

C'est mieux comme ça ?

Darkandgel
Darkandgel
Niveau 10
28 août 2014 à 10:44:42

Oui, voila, ça ça marche ^^

Pour ton 1er §, j'ai un peu de mal a comprendre. du coup, phrase par phrase :

"Ah je comprend un peu mieux le problème d'avoir affecter deux fois la variable c" : ce n'est pas un problème, et ça donne du code correct, mais tu as juste une ligne inutile.

"Je pensais que l'affectation d'une valeur et d'une constante étaient indépendantes pour une variable de type booléen" : la je comprendre pas pourquoi tu parles de constantes. Il n'y en as aucune évoquée dans tout le topic. De plus un booléen c'est un type de variable comme un autre.

"Mais alors, à quoi ça sert d'affecter une valeur vrai ou faux si de toute façon celle-ci sera remplacer par la valeur de comparaison ( c:= a<50 ) ? " : ben a rien.

"Enfin j'ai peut être mal saisi la notion de constante pour ce type :( " : la encore je ne vois pas ce qui ne va pas avec les constantes

masuka42
masuka42
Niveau 7
28 août 2014 à 15:03:48

Bon entre temps j'ai débuté le chapitre suivant de mon cours: les structures de répétitions. J'en ai appris un peu plus sur l'utilité de l'affectation vrai ou faux à une variable booléenne (pour les "répétions tant que" c'est plutôt utile en faite ).

Sinon pour les types booléen, il est écrit dans mon livre:
:d)

On peut alors affecter à ces variables:

- Soit l'une des deux valeurs "vrai" ou "faux" (qui sont les deux seules constante du type)

- Soit la valeur d'une comparaison, qui se trouve être une "expression de type booléen".

En voici des exemples:

OK = vrai
OK = a<b
satisfaisant = (a>0) et (b>0)

Ces variables peuvent alors prendre la place de n'importe quelle condition, comme dans:

Si OK alors......
Si satisfaisant et (n>0) alors......
:d)

Il est écrit que les valeurs vrai et faux sont des constantes du type. Enfin je pense que ce sont les exemples du dessous qui m'ont mis dans l'erreur :( Je les ai mal interprété je pense.

Darkandgel
Darkandgel
Niveau 10
28 août 2014 à 15:09:58

Effectivement, VRAI et FAUX sont des constantes, mais je trouve ça maladroit d'expliquer ça comme ça dans un bouquin pour débutant, la preuve en est que ça a l'air de t'avoir pas mal embrouillé.

Considère simplement que vrai et faux sont deux valeurs de type booléen au meme titre que 1, 18 ou 42 sont des valeurs de type int.

masuka42
masuka42
Niveau 7
28 août 2014 à 17:57:58

D'accord je note. C'est sur que c'est plutôt spartiate pour une première avec ce type :p) Mais sinon le livre ( s'initier à la programmation et à l'orienté objet de C.Delannoy) est très bon dans l'ensemble et je le recommande :oui:

En tout cas merci à vous de m'avoir aider c'est super sympa :-)

Sous forums
  • Aide à l'achat Mac
  • Steam Deck
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Macintosh
  • Hardware
La vidéo du moment