Inscription / Connexion Nouveau Sujet
Niveau première
Partager :

Probleme de boucle avec algobox

Posté par
lefou123456
07-08-17 à 00:37

Bonjour, je créer un algorithme permettant de tracer un disque. Mais pour une raison qui m'échappe, seulement la partie inférieure de la figure est affichée...
Est-ce un problème du logiciel ?

Merci de l'attention.

Citation :

******************************************
Algorithme permettant de tracer un disque sur un repere 2D
******************************************

1   VARIABLES
2     x EST_DU_TYPE NOMBRE
3     y EST_DU_TYPE NOMBRE
4     origineXCarre EST_DU_TYPE NOMBRE
5     origineYCarre EST_DU_TYPE NOMBRE
6     x2Carre EST_DU_TYPE NOMBRE
7     y2Carre EST_DU_TYPE NOMBRE
8     tailleCote EST_DU_TYPE NOMBRE
9     xCentre EST_DU_TYPE NOMBRE
10    yCentre EST_DU_TYPE NOMBRE
11    rayon EST_DU_TYPE NOMBRE
12    distance EST_DU_TYPE NOMBRE
13  DEBUT_ALGORITHME
14    
15    LIRE xCentre
16    LIRE yCentre
17    LIRE rayon
18    
19    //En conciderant que l'origine est le coin inferieur gauche
20    origineXCarre PREND_LA_VALEUR xCentre - rayon
21    origineYCarre PREND_LA_VALEUR rayon - rayon
22    
23    tailleCote PREND_LA_VALEUR 2*rayon
24    
25    x2Carre PREND_LA_VALEUR origineXCarre + tailleCote
26    y2Carre PREND_LA_VALEUR origineYCarre + tailleCote
27    
28    POUR x ALLANT_DE origineXCarre A x2Carre
29      DEBUT_POUR
30      POUR y ALLANT_DE origineYCarre A y2Carre
31        DEBUT_POUR
32        distance PREND_LA_VALEUR sqrt(pow(x - xCentre, 2) + pow(y - yCentre, 2))
33        
34        SI (distance <= rayon) ALORS
35          DEBUT_SI
36          TRACER_POINT (x,y)
37          FIN_SI
38        FIN_POUR
39      FIN_POUR
40    
41  FIN_ALGORITHME

Posté par
lefou123456
re : Probleme de boucle avec algobox 07-08-17 à 00:41

Je m'aperçois que j'ai mis un nom de sujet erroné. Je ne sais pas comment le changer; j'en suis désolé...

Posté par
lefou123456
re : Probleme de boucle avec algobox 07-08-17 à 01:01

Voici une image pour illustrer le résultat :

Probleme de boucle avec algobox

Posté par
cocolaricotte
re : Probleme de boucle avec algobox 07-08-17 à 01:02

Bonjour

Ce n'est pas un problème de logiciel , c'est un problème de compréhension de ce que peut faire une machine du genre ordinateur ou calculatrice

Si on lui donne des nombres , la machine peut calculer les carrés de ces nombres, et plein d'autres choses à partir du moment où on lui donne les informations qui lui sont nécessaires et les calculs à réaliser.

Quelle définition pourrais tu donner d'un cercle ?

Posté par
lefou123456
re : Probleme de boucle avec algobox 07-08-17 à 01:08

Le cercle serait tous les points placés a une même distances d'un autre point, le centre.

Posté par
cocolaricotte
re : Probleme de boucle avec algobox 07-08-17 à 01:10

Avec les variables

abscisse du centre : xCentre
ordonnée du centre : yCentre
mesure du rayon : rayon

tu devrais y arriver sans les autres variables

Posté par
cocolaricotte
re : Probleme de boucle avec algobox 07-08-17 à 01:16

Oui un cercle de centre O et de rayon R est l'ensemble des points M tels que la distance OM = R

Le disque de centre O et de rayon R est  est l'ensemble des points M tels que la distance OM = R

Avec les coordonnées de O et la valeur de R on peut y arriver.

Posté par
cocolaricotte
re : Probleme de boucle avec algobox 07-08-17 à 01:18

Oui le cercle de centre O et de rayon R est l'ensemble des points M tels que la distance OM = R

Posté par
lefou123456
re : Probleme de boucle avec algobox 07-08-17 à 01:22

Oui, et mon but est d'afficher tous les points d'un carré plein de coté diamètre du centre  qui vérifient cette condition !

Posté par
lefou123456
re : Probleme de boucle avec algobox 07-08-17 à 01:23

Du cercle, pas du centre.

Posté par
cocolaricotte
re : Probleme de boucle avec algobox 07-08-17 à 01:25

Essaye de revenir demain après avoir passé une bonne nuit qui va reposer tes neurones et te permettre de réfléchir plus efficacement.

Posté par
lefou123456
re : Probleme de boucle avec algobox 07-08-17 à 01:27

C'est bon, j'ai trouvé !
A la ligne 21, ce n'est pas "rayon - rayon" mais "yCentre - rayon"

Posté par
cocolaricotte
re : Probleme de boucle avec algobox 07-08-17 à 01:29

Tu es convaincu de la véracité de la phrase : " mon but est d'afficher tous les points d'un carré plein de coté diamètre du cercle qui vérifient cette condition ! "

Tu penses que cette phrase a un sens ?

Posté par
lefou123456
re : Probleme de boucle avec algobox 07-08-17 à 01:32

Excusez moi.
Correction : " mon but est d'afficher tous les points d'un carré plein de coté de longueur du diamètre du cercle qui vérifient cette condition ! "

Posté par
lefou123456
re : Probleme de boucle avec algobox 07-08-17 à 01:33

Résultat final :

Posté par
lefou123456
re : Probleme de boucle avec algobox 07-08-17 à 01:33

Résultat final :

Probleme de boucle avec algobox

Posté par
cocolaricotte
re : Probleme de boucle avec algobox 07-08-17 à 01:50

Saisir abscisse du centre xO
Saisir ordonnée du centre yO
Saisir mesure su rayon R
Pour x variant de x0-R à xO+R
   Pour y variant de yO -R à yO+ R
   si (x-xO)^2 + (y-yO)^2 R^2 alors afficher le point de coordonnées x et y
   Fin pour
Fin pour

Posté par
lefou123456
re : Probleme de boucle avec algobox 07-08-17 à 01:53

C'est vrai, mais pour clarifier l'algorithme, j'ai préféré ajouter des variables intermédiaires.

Posté par
cocolaricotte
re : Probleme de boucle avec algobox 07-08-17 à 01:59

Je ne suis pas certaine que ton algorithme soit beaucoup plus clair que le mien.

Mais tu as le droit de ne pas suivre mon conseil.  

Posté par
cocolaricotte
re : Probleme de boucle avec algobox 07-08-17 à 02:07

Il faut juste adapter le pas des boucles "Pour ....... " pour ne pas avoir des points trop éloignés les uns des autres

Posté par
lefou123456
re : Probleme de boucle avec algobox 07-08-17 à 02:07

Dans le mien, il suffit de lire "origineXCarre" pour savoir qu'il y a une manipulation avec un carré. Et si quelqu'un ne connaît/reconnaît pas la formule des distances, il pourrait tout de même comprendre les intentions !

Posté par
lefou123456
re : Probleme de boucle avec algobox 07-08-17 à 02:08

Effectivement, je n'ai pas pensé aux coordonnées décimales...

Posté par
lefou123456
re : Probleme de boucle avec algobox 07-08-17 à 02:14

Cependant, je ne vois pas d'autres solutions que de remplacer les boucles par des "Tant que..."

Posté par
cocolaricotte
re : Probleme de boucle avec algobox 07-08-17 à 02:17

Parce que tu crois que la machine quand elle va voir la variable  "origineXCarre" elle (la machine)  va comprendre qu'il faut prendre le carré de quelque chose ?

Il va falloir apprendre ce que peut faire une machine :

saisir des données dans des variables
faire des calculs avec des nombres et/ou des variables
faire des tests
afficher le contenu de variables

un point c'est tout !

Posté par
lefou123456
re : Probleme de boucle avec algobox 07-08-17 à 02:21

Bien sûr, ne vous en fait pas pour ça ! Je veux dire que si une autre personne veut jeter un coup d'œil voir s'en servir dans un programme, sa compréhension n'en sera que meilleur ! Sinon, je n'en aurait même pas évoqué le sujet...

Posté par
cocolaricotte
re : Probleme de boucle avec algobox 07-08-17 à 02:22

Les boucles

Tant que ......
ou
Pour .. variant de ... à ... avec un pas de ....

ne sont que des successions des opérations qu'une machine peut effectuer (opération sur une certaine valeur, test sur la valeur d'une variable .....)  

Posté par
lefou123456
re : Probleme de boucle avec algobox 07-08-17 à 02:25

Qu'entendez vous par là ?

Posté par
cocolaricotte
re : Probleme de boucle avec algobox 07-08-17 à 02:25

Faute de frappe

(opération sur une variable, test sur la valeur d'une variable .....)  

Posté par
lefou123456
re : Probleme de boucle avec algobox 07-08-17 à 02:31

Ah d'accord.
Je fais aussi de la programmation est sais donc beaucoup de choses (pour un élève de première), donc ne vous en fait pas; j'en sais définitivement assez pour savoir que les ordinateur ne peuvent pas "réfléchir".

Posté par
cocolaricotte
re : Probleme de boucle avec algobox 07-08-17 à 02:32

lefou123456 @ 07-08-2017 à 02:25

Qu'entendez vous par là ?


Qu'une boucle Pour ...... variant de .... à ..... avec un pas de .....

peut être remplacée par une boucle Tant que .....

Cela ne change rien au problème toujours pas résolu .

Posté par
lefou123456
re : Probleme de boucle avec algobox 07-08-17 à 02:32

et* désolé, j'ai fais une relecture trop rapide...

Posté par
lefou123456
re : Probleme de boucle avec algobox 07-08-17 à 02:33

cocolaricotte @ 07-08-2017 à 02:32

lefou123456 @ 07-08-2017 à 02:25

Qu'entendez vous par là ?


Qu'une boucle Pour ...... variant de .... à ..... avec un pas de .....

peut être remplacée par une boucle Tant que .....

Cela ne change rien au problème toujours pas résolu .


Certes, mais Algobox ne soumet pas d'options pour régler la valeur d'incrémentation.

Posté par
cocolaricotte
re : Probleme de boucle avec algobox 07-08-17 à 02:43

Certes une boucle Pour ........ avec un pas différent de 1  ne semble pas marcher avec Algobox

Comment la transformes tu avec un Tant que .....

Ton premier sujet ne parle que de Pour .....   jamais de Tant que ......

Tu les as fait comment tes dessins de 01h01 et 01h33 ?

Posté par
lefou123456
re : Probleme de boucle avec algobox 07-08-17 à 02:51

Les dessins sont directement sortis d'Algobox, il suffit d'utiliser les outils dans l'onglet "Dessiner dans un repère" en bas de la fenêtre.
Une boucle "Pour ... allant de ... a ..." N'est rien d'autre que la simplification d'une boucle "Tant que ..." assez particulière :

Citation :

Pour i allant de 0 à 10
début

afficher(i)

fin


Est identique à :

Citation :

i = 0

Tant que i <= 0
début

afficher(i)
i = i + 1

fin

Posté par
lefou123456
re : Probleme de boucle avec algobox 07-08-17 à 02:52

Tant que i <= 10   *

Posté par
cocolaricotte
re : Probleme de boucle avec algobox 07-08-17 à 03:09

Et avec cet algorithme sur Algobox écrit comme tu l'as transcrit au début on obtient le truc bleu que tu nous envoies !
Faut pas nous prendre pour ce que nous ne sommes pas = stupides

Posté par
lefou123456
re : Probleme de boucle avec algobox 07-08-17 à 03:16

Bien sûr que non, je voulais seulement expliquer car j'avais compris que vous ne saviez pas comment faire... Après tout, tout le monde peut avoir des moments d'incompréhension, pouvant même paraître totalement "stupide" comme vous dites; je pensais juste que cela en était un...

Posté par
cocolaricotte
re : Probleme de boucle avec algobox 07-08-17 à 03:21

Je sais faire :
algo 01h50 avec les transformations de boucles Pour en Tant que ...,

C'est à toi de réagir

Posté par
lefou123456
re : Probleme de boucle avec algobox 07-08-17 à 03:43

Très bien, alors l'algorithme marche. Cependant, pour éviter les boucles infinies Algobox   fixe un nombre de boucles à ne pas dépasser. La différence de crénelage n'est pas assez différente pour qu'il n'y ai un ressentie visuel. Comme un disque et une figure symétrique, je pense à tracer plusieurs points par tours de boucles et ainsi passer d'une complexité algorithmique quadratique à une complexité linéaire. Ce qui devrait non seulement limiter le nombre de boucles, mais aussi réduire le temps d'exécution du programme...

Posté par
lefou123456
re : Probleme de boucle avec algobox 07-08-17 à 03:47

Limiter le nombre de tours de boucle*

Posté par
lefou123456
re : Probleme de boucle avec algobox 07-08-17 à 04:17

En fait, je me suis trompé; la classe de complexité restera quadratique... Mais le temps d'exécution est divisé par 4 !

Posté par
lefou123456
re : Probleme de boucle avec algobox 07-08-17 à 04:51

J'ai réussi, la vitesse est bien divisée par quatre. Cependant, le crénelage ne change pas; il faut dire que algobox n'est pas fait pour dessiner...

Probleme de boucle avec algobox

Posté par
lefou123456
re : Probleme de boucle avec algobox 07-08-17 à 04:53

On pourrait croire que dessiner juste un cercle ferait une grande différence, mais non plus...

Algorithme 1 :

Probleme de boucle avec algobox

Posté par
lefou123456
re : Probleme de boucle avec algobox 07-08-17 à 04:57

Nouvelle algorithme (avec incrémentation de 0,02 à chaque itération) :

Probleme de boucle avec algobox

Posté par
lefou123456
re : Probleme de boucle avec algobox 07-08-17 à 05:03

******************************************
Algorithme permettant de tracer un disque sur un repere 2D
******************************************

1   VARIABLES
2     x EST_DU_TYPE NOMBRE
3     y EST_DU_TYPE NOMBRE
4     origineXCarre EST_DU_TYPE NOMBRE
5     origineYCarre EST_DU_TYPE NOMBRE
6     x2Carre EST_DU_TYPE NOMBRE
7     y2Carre EST_DU_TYPE NOMBRE
8     tailleCote EST_DU_TYPE NOMBRE
9     xCentre EST_DU_TYPE NOMBRE
10    yCentre EST_DU_TYPE NOMBRE
11    rayon EST_DU_TYPE NOMBRE
12    distance EST_DU_TYPE NOMBRE
13    tracerDisque EST_DU_TYPE NOMBRE
14  DEBUT_ALGORITHME
15    
16    AFFICHER "Ecrivez 1 si vous voulez tracer un disque, sinon ecrivez 0 pour tracer un cercle"
17    LIRE tracerDisque
18    LIRE xCentre
19    LIRE yCentre
20    LIRE rayon
21    
22    //En conciderant que l'origine est le coin inferieur gauche
23    origineXCarre PREND_LA_VALEUR xCentre - rayon
24    origineYCarre PREND_LA_VALEUR yCentre - rayon
25    
26    tailleCote PREND_LA_VALEUR 2*rayon
27    
28    x2Carre PREND_LA_VALEUR origineXCarre + tailleCote
29    y2Carre PREND_LA_VALEUR origineYCarre + tailleCote
30    
31    
32    x PREND_LA_VALEUR origineXCarre
33    
34    TANT_QUE (x <= xCentre) FAIRE
35      DEBUT_TANT_QUE
36      y PREND_LA_VALEUR origineYCarre
37      
38      TANT_QUE (y <= yCentre) FAIRE
39        DEBUT_TANT_QUE
40        
41        distance PREND_LA_VALEUR sqrt(pow(x - xCentre, 2) + pow(y - yCentre, 2))
42        
43        SI (tracerDisque == 1) ALORS
44          DEBUT_SI
45          SI (distance <= rayon) ALORS
46            DEBUT_SI
47            //Dessiner le point et ses symetries par rapport au centre.
48            
49            TRACER_POINT (x,y)
50            TRACER_POINT (2 * xCentre - x,y)
51            TRACER_POINT (2 * xCentre - x,2 * yCentre - y)
52            TRACER_POINT (x,2 * yCentre - y)
53            FIN_SI
54          FIN_SI
55          SINON
56            DEBUT_SINON
57            SI (distance == rayon) ALORS
58              DEBUT_SI
59              //Dessiner le point et ses symetries par rapport au centre.
60              
61              TRACER_POINT (x,y)
62              TRACER_POINT (2 * xCentre - x,y)
63              TRACER_POINT (2 * xCentre - x,2 * yCentre - y)
64              TRACER_POINT (x,2 * yCentre - y)
65              FIN_SI
66            FIN_SINON
67        
68        
69        y PREND_LA_VALEUR y + 0.02
70        FIN_TANT_QUE
71      x PREND_LA_VALEUR x + 0.02
72      FIN_TANT_QUE
73    
74  FIN_ALGORITHME

Posté par
lefou123456
re : Probleme de boucle avec algobox 07-08-17 à 05:10

Pour faire simple, de : x_{m} = \frac{x_{a} + x_{b}}{2} j'ai déduis que  : x_{b} = 2 * x_{m} - x_{a}.

Je calcule donc à chaque itération la positions des points symétriques au point de coordonnées (x ; y) par rapport au centre du cercle.



Vous devez être membre accéder à ce service...

Pas encore inscrit ?

1 compte par personne, multi-compte interdit !

Ou identifiez-vous :


Rester sur la page

Inscription gratuite

Fiches en rapport

parmi 1677 fiches de maths

Désolé, votre version d'Internet Explorer est plus que périmée ! Merci de le mettre à jour ou de télécharger Firefox ou Google Chrome pour utiliser le site. Votre ordinateur vous remerciera !