Bonjour.
Il y a 1 mois, je m'amusai à programmer sur ma calculatrice ! Seulement, quelque chose de bizarre c'est passé... Le but de cet algorithme est tout simplement de dessiner un carré.
Voici l'algorithme :
prgmSETWINDOW // paramétrage de la fenêtre (enlever les axes etc.)
ClrHome
ClrDraw
Prompt X
Prompt Y
Prompt C
If C < 0
Then
Output(2, 6, "Erreur: ")
Output(4, 4, "La valeur de C est négative")
Pause
ClrHome
Stop
End
For(s, x, x + c) // Parcourir la zone choisi
For(t, y, y + c)
Pt-On(s, t)
End
End
Pause
ClrDraw
Bonjour
Je connais pas le langage de ta calculatrice , mais tu saisis des variables X et Y et C puis tu utilises x et y et c
Ton traducteur d'instructions se mélange peut-être un peu les pinceaux.
Ah...
Non, c'est une erreur de recopiage !
En fait, sur ma calculatrice, on ne peut saisir que des lettres capitales.
L'instruction Pt-On dessine des points sur des pixels parce que tes boucles for sans Pas ajoutent 1 à S et T
Et C il compte bien le nombre de points à dessiner ?
Oui, Pt-on dessine les points.
Quand à C, c'est le coté du carré.
Donc il y aura C² points de dessinés
Pour comprendre d'où vient le dysfonctionnement tu peux introduire une instruction qui affiche les contenus des variables S et T
Bonne idée !
Voici le résultat pour x = 5, y = 5 et c = 5
S = 1
T = 1
--------
S = 1
T = 2
--------
S = 1
T = 3
--------
S = 2
T = 1
--------
S = 2
T = 2
--------
S = 2
T = 3
--------
S = 3
T = 1
--------
S = 3
T = 2
--------
S = 3
T = 3
--------
Tu dessines un carré avec 3 points par ligne ?
Y a comme un souci si tu veux en dessiner 5 à npartir du point (5, 5)
Il dessine
1;1. 1;2. 1;3
2;1. 2;2. 2;3
Pas 5;5. 5;6 5;7 5;8 5;9 (5 points à partir de 5;5 !)
J'ai compris ! :
For(s, x, x + c - 1) // Parcourir la zone choisi
For(t, y, y + c - 1)
Pt-On(s, t)
End
End
Je n'ai pas marqué la bonne condition d'arrêt de la boucle !
Du coups, j'ai essayé de marquer une pause après le traçage de chaque point. J'ai remarqué cet ordre :
Il faudrait peut être essayer de comprendre où se trouve sur l'écran le point (0;0) ainsi que (0;1) et (0;2)
La base de la programmation : quel est le résultat d' une instruction quand on l'utilise.
J'ai déjà cherché la documentation avant de l'utiliser; (0;0) se trouve dans le coin inférieure gauche.
Et le coin supérieure droite et de coordonnée (Ymax ; Xmax).
C'est comme si, à la fin de la boucle, t change ça valeur pour 0 à la place d'y...
Donc réfléchir sur la construction des boucles :
- on part de quel endroit ?
- on veut se déplacer dans quel sens ?
- comment faire "à la main" avant de vouloir le faire faire à une machine ?
Pour simplifier, je vais pour l'instant oublier x et y; je vais considérer que le coin inférieure gauche du carré et (0;0).
Et je veux me déplacer tout d'abord de bas vers le haut, puis de gauche vers la droite.
Le premier point a donc pour coordonnées (0;0) et le dernier (c, c)
Bonne initiative
Cela te permettra de comprendre comment fonctionne l'instruction utilisée.
Quand cette étape sera franchie tu passeras à la suivante
Et en écriture algorithmique, ça donnerait :
Pour x allant de 0 à c, faire :
Début
Pour y allant de 0 à c, faire :
Début
tracerPoint(x, y)
Fin
Fin
J'ai ajouté de nouveau les deux variable.
Lorsque qu'elles sont égales à 0, ça donne le même résultat qu'avant, soit le résultat voulu. Mais, quand je saisie d'autres chiffres, ça recommence à faire cette forme intrigante. Ce qui semble confirmer ma théorie...
Alors maintenant il te reste à déterminer correctement le point de départ du dessin de ton carré et ses dimensions.
Et réfléchir avec un algo proprement écrit en langage naturel pour obtenir le résultat escompté
Avant de programmer on écrit un brouillon = un algo en langage naturel
On teste son algo avec un jeu d'essai dont on connaît la réponse.
Quand l'algo tourne correctement on le traduit dans le langage souhaité.
As tu testé ce qui se passe quand tu essayes de faire apparaître un point "en dehors" de l'écran ; c'est à dire quand les cordonnées ne sont pas comprises entre 0 et les max autorisés
Cela signifie quoi ? Tu es convaincu que le point est dessiné ? Ou tu crois qu'il est dessiné ? Puisque tu ne le vois pas !
La documentation, c'est une des grandes différences avec la fonction Pxl-on(), qui peut écrire seulement sur la zone observé, sinon, une erreur surgit !
Que te répondre ?
Tes réponses sont plus qu'approximatives :
- je ne comprends pas la suite des points 1 , 2 , 3 ....., de 20h59 avec des flèches qui partent de 3 puis passent à 2 puis à 1
- sur ta réponse avec les coordonnées des points de 21h31 , il y a 2 points (c ; c) !
As tu vraiment compris comment fonctionne l'instruction que tu utilises ? L'utilises tu correctement ?
J'ai de sérieux doutes.
C'est vrai que je n'est pas été assez rigoureux quant à la réalisation des schéma : pour le schéma avec les flèche, j'ai corrigé les flèches mais j'ai oublié de réécrire les numéros dans le bonne ordre; et pour les coordonnées (c ; c), c'est encore de l'inattention, je voulais bien sûr marquer (c ; 0) au coins inférieure droit.
Je pense vraiment utiliser cette instruction correctement, je ne la trouve pas vraiment compliquée. Je n'est pas trouvé plus d'informations dessus, même avec des recherches plus poussées; Pt-On(x, y) trace le point de coordonnées (x ; y) dans la fenêtre, cest tout ce que j'ai pus trouver...
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :