Inscription / Connexion Nouveau Sujet
Niveau première
Partager :

algobox

Posté par
abigail
19-12-17 à 18:59

Bonsoir
J'ai 2 programmations à faire sur algobox qui ne fonctionnent pas chez moi :

un terrain de 1500 m² entièrement engazonné
tous les ans 20% remplacé par mousse
on arrache la mousse sur une surface de 50m² et la remplace par du gazon
pour tout nombre n, on note un surface en m² de terrain engazonné au bout de n années, en 2010+n
on a u0 = 1500



1/ algorithme qui permet de saisir en entrée en nombre n et de déterminer la surface engazonnée en l'an 2010 + n

VARIABLES
  U EST_DU_TYPE NOMBRE
  N EST_DU_TYPE NOMBRE
  I EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
  AFFICHER "Superficie en 2010 + N"
  AFFICHER* U
  LIRE N
  U PREND_LA_VALEUR 1500
  POUR I ALLANT_DE 0 A N
  U PREND_LA_VALEUR 0,8*U+50
  FIN_POUR
FIN_ALGORITHME

2/  algorithme qui permet de déterminer la 1ère année à partir de laquelle la surface engazonnée sera <300 m²

FONCTIONS_UTILISEES
VARIABLES
  U EST_DU_TYPE NOMBRE
  N EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
  N PREND_LA_VALEUR 2010+N
  AFFICHER* N
  U PREND_LA_VALEUR 1500
  N PREND_LA_VALEUR 0
  TANT_QUE (U>300) FAIRE
  N PREND_LA_VALEUR N+1
  U PREND_LA_VALEUR 0.8*U+50
  FIN_TANT_QUE
FIN_ALGORITHME

MERCI

Posté par
Glapion Moderateur
re : algobox 19-12-17 à 19:09

Bonsoir, tu as une virgule dans le premier, algobox n'aime pas les virgules 0,8 mettre 0.8

dans le second, tu écris N PREND_LA_VALEUR 2010+N alors que N n'a jamais reçu de valeur.
(et puis pourquoi 2010+N )
le second n'affiche rien d'ailleurs. rajouter AFFICHER N à la fin

Posté par
abigail
re : algobox 20-12-17 à 07:10

Bonjour et Merci

1/
Ne fonctionne toujours pas :
Aucune entrée pour N
et quand je teste j'ai :

1   FONCTIONS_UTILISEES
2   VARIABLES
3     U EST_DU_TYPE NOMBRE
4     N EST_DU_TYPE NOMBRE
5     I EST_DU_TYPE NOMBRE
6   DEBUT_ALGORITHME
7     AFFICHER "Superficie en 2010 + N"
8     AFFICHER U
9     LIRE N
10    U PREND_LA_VALEUR 1500
11    POUR I ALLANT_DE 0 A N
12    U PREND_LA_VALEUR 0.8*U+50
13    FIN_POUR
14  FIN_ALGORITHME

Les 2 dernières lignes passent en 7 et 8 ?

Je devrais trouver une superficie de 373 m² en 2020

2/  algorithme qui permet de déterminer la 1ère année à partir de laquelle la surface engazonnée sera <300 m²

FONCTIONS_UTILISEES
VARIABLES
  U EST_DU_TYPE NOMBRE
  N EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
  N PREND_LA_VALEUR 2010+N
  AFFICHER* N
  U PREND_LA_VALEUR 1500
  N PREND_LA_VALEUR 0
  TANT_QUE (U>300) FAIRE
  N PREND_LA_VALEUR N+1
  U PREND_LA_VALEUR 0.8*U+50
  FIN_TANT_QUE
FIN_ALGORITHME
  
Pareil .... Ne fonctionne pas ....
Afficher N est en ligne 7

Merci pour votre aide

Posté par
abigail
re : algobox 20-12-17 à 07:42

1/
Oups
Je devrais trouver une superficie de 384 m² en 2020

U1 EST_DU_TYPE NOMBRE
U2 EST_DU_TYPE NOMBRE
U3 EST_DU_TYPE NOMBRE
U4 EST_DU_TYPE NOMBRE
U5 EST_DU_TYPE NOMBRE
U6 EST_DU_TYPE NOMBRE
U7 EST_DU_TYPE NOMBRE
U8 EST_DU_TYPE NOMBRE
U9 EST_DU_TYPE NOMBRE
U10 EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
U1 PREND_LA_VALEUR 0.8*1500+50
AFFICHER* U1
U2 PREND_LA_VALEUR 0.8*U1+50
AFFICHER* U2
U3 PREND_LA_VALEUR 0.8*U2+50
AFFICHER* U3
U4 PREND_LA_VALEUR 0.8*U3+50
AFFICHER* U4
U5 PREND_LA_VALEUR 0.8*U4+50
AFFICHER* U5
U6 PREND_LA_VALEUR 0.8*U5+50
AFFICHER* U6
U7 PREND_LA_VALEUR 0.8*U6+50
AFFICHER* U7
U8 PREND_LA_VALEUR 0.8*U7+50
AFFICHER* U8
U9 PREND_LA_VALEUR 0.8*U8+50
AFFICHER* U9
U10 PREND_LA_VALEUR 0.8*U9+50
AFFICHER* U10

Posté par
Glapion Moderateur
re : algobox 20-12-17 à 11:09

1) 8 AFFICHER U alors que U n'a aucune valeur crée une erreur
AFFICHER U est à mettre à la fin

pour 2) toujours pareil N PREND_LA_VALEUR 2010+N alors que N n'a pas de valeur crée une erreur
et il manque un AFFICHER U à la fin

Posté par
mathafou Moderateur
re : algobox 20-12-17 à 11:29

Bonjour,

en fait les deux sont la même erreur qui est bien plus du simple bons sens que de l'algorithmique :

on ne peut connaitre (et donc afficher) un résultat que une fois qu'on a terminé les calculs de ce résultat !!

Posté par
mathafou Moderateur
re : algobox 20-12-17 à 11:31

PS : pour la 2 ce n'est pas U le résultat, c'est N

Posté par
Glapion Moderateur
re : algobox 20-12-17 à 11:36

Citation :
PS : pour la 2 ce n'est pas U le résultat, c'est N

oui au temps pour moi, j'ai répondu trop vite, merci mathafou

Posté par
vham
re : algobox 20-12-17 à 11:42

Bonjour,

Il vaudrait mieux faire écrire l'algorithme en langage courant avant de passer sur Algobox car la compréhension de ce qui est en Algobox est une catastrophe !!!
Peut-on en Algobox commenter les variables que l'on déclaré ?
Dire ce à quoi on va Utiliser " U est un nombre " serait un énorme progrès.

Posté par
ZEDMAT
re : algobox 20-12-17 à 11:52

abigail @ 20-12-2017 à 07:42

1/
Oups
Je devrais trouver une superficie de 384 m² en 2020 OUI
Cette idée de multiplier les variables est une bien mauvaise idée.... Revient à ton idée initiale avec une boucle.


U1 EST_DU_TYPE NOMBRE
U2 EST_DU_TYPE NOMBRE
U3 EST_DU_TYPE NOMBRE
U4 EST_DU_TYPE NOMBRE
U5 EST_DU_TYPE NOMBRE
U6 EST_DU_TYPE NOMBRE
U7 EST_DU_TYPE NOMBRE

Posté par
mathafou Moderateur
re : algobox 20-12-17 à 11:56

VARIABLES
// U représente la somme courante année après année
U EST_DU_TYPE NOMBRE
// N est le nombre d'années depuis 2010
N EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
LIRE N
// valeur de U en 2010
U PREND_LA_VALEUR 1500
// ...
FIN_ALGORITHME

certes il faut se mettre en mode "éditeur" pour ajouter des commentaires dans la partie "déclaration de variables" mais tout de même !
on peut.

et par contre dans le corps de l'algorithme on peut mettre tous les commentaires qu'on veut tout le temps : il y a un bouton "commentaire"
donc à défaut, la signification des variables peut se mettre à cet endroit (quand on les utilise)

Posté par
mathafou Moderateur
re : algobox 20-12-17 à 11:59

il y a une tabulation qui ne s'est pas transformée en espaces lors du copier-coller, mais bon ...

Posté par
ZEDMAT
re : algobox 20-12-17 à 14:02

Pour Abigail,

Pour te remonter le moral (si besoin ), je voudrais juste te dire que ta première mouture du premier programme n'était pas aussi calamiteuse qu'il pourrait paraître.

Le choix des 3 variables était pertinent, la formule donnant les valeurs successives de U était correcte et l'idée d'une boucle faisant défiler les valeurs successives de U tout a fait judicieuse.

Seules défaillances,
* l'oubli de faire afficher U quand on est sorti de la boucle (on s'en aperçoit vite et cela n'empêche pas le programme de tourner)
* et, plus "vicelard" et délicat à repérer, le choix de 0 comme valeur de i en entrée de boucle car cela n'empêche pas le programme de tourner, l'affichage d'un résultat de se faire mais hélas d'un résultat... FAUX.

Au passage, je me suis aperçu qu'Algobox m'interdisait de choisir N (majuscule) comme nom de variable.... (et grâce à Mathafou qu'il existait un bouton "Commentaires" )

algobox

Posté par
mathafou Moderateur
re : algobox 20-12-17 à 14:26

Citation :
Algobox m'interdisait de choisir N (majuscule) comme nom de variable.

tu dois avoir une mouture pourrie de Algobox
pour coller à ce que voulait faire abigail
il faut aussi déplacer la ligne "AFFICHER "Superficie en 2010+N"


avec les commentaires :

// dans cette section on déclare les variables et leur type
VARIABLES
// U représente la somme courante année après année
U EST_DU_TYPE NOMBRE
// N est le nombre total d'années depuis 2010
N EST_DU_TYPE NOMBRE
// i est la valeur courante du nombre d'années depuis 2010
i EST_DU_TYPE NOMBRE
DEBUT_ALGORITHME
// entrée du nombre d'années souhaité
LIRE N
// valeur initiale de U en 2010
U PREND_LA_VALEUR 1500
POUR i ALLANT_DE 1 A N
DEBUT_POUR
// calcul de U à l'année 2010+i
// (écrire explicitement ce qui est fait dans la boucle permet de comprendre cette histoire de i = 0 ou 1)
U PREND_LA_VALEUR 0.8*U+50
FIN_POUR
// valeur finale de U
// "N" étant dans du texte c'est le caractère N, pas la variable N
AFFICHER* "Superficie en 2010+N"
AFFICHER U
FIN_ALGORITHME

***Algorithme lancé***
Entrer N : 10
Superficie en 2010+N
384.21773
***Algorithme terminé***

un afficher* (passage à la ligne) sinon il afficherait
Superficie en 2010+N384.21773

Citation :
Je devrais trouver une superficie de 373 m² en 2020

ton calcul est faux.
(erreur d'arrondis cumulés intempestifs)

Posté par
ZEDMAT
re : algobox 20-12-17 à 21:34

Citation :
Citation :
Algobox m'interdisait de choisir N (majuscule) comme nom de variable.

tu dois avoir une mouture pourrie de Algobox

Je disposais de la version officielle 0.9 (Pourrie ?) qui a précédé l'actuelle 1.0.2.
Je viens de mettre à jour... et N comme variable est désormais possible

Citation :

Citation :
Je devrais trouver une superficie de 373 m² en 2020

ton calcul est faux.
(erreur d'arrondis cumulés intempestifs)

Comme il est possible de le vérifier dans les précédents messages, Abigail avait depuis longtemps rectifié son erreur de départ....
Citation :
20/12 à 7h42
1/
Oups
Je devrais trouver une superficie de 384 m² en 2020


Pour le "fun" j'ai essayé de traiter ce problème avec Python (Edu python !!).
La commande :  for i in range(1,10,1) m'a amusée un petit moment car on sortait de la boucle pour i = 9 !!! Jusqu'à ce que sur la doc, je m'aperçoive (mieux vaut mettre de bonnes lunettes) que le domaine range ainsi défini est borne supérieure NON comprise !! Ces petits riens qui vous pourrissent la vie...

Posté par
alb12
re : algobox 20-12-17 à 21:37

salut,
vous avez dit contre-intuitif ?

Posté par
mathafou Moderateur
re : algobox 21-12-17 à 15:05

pour la correction de la valeur en 2010, je n'avais effectivement pas vu cette correction car elle était incluse dans un message "un peu fouillis" (calcul linéaire des Uk)

pour le for du Python qui est un peu spécial, il faut le justifier par "for i in range(10)" tout court qui génère 10 valeurs (de 0 à 9)
les "complications de range() permettent de modifier la valeur de départ et le pas, mais pas le mécanisme qui s'arrête donc borne finale non comprise.
mais bon, une fois qu'on s'est fait piéger, on le sait et on prend vite l'habitude.

nota : en C et en plein d'autres langages plus ou moins dérivés du C (Java, JavaScript, PhP etc) on met explicitement la condition d'arrêt, donc on ne risque pas de se tromper entre
for (i=0; i<n; i++)
et for (i=1; i<=n; i++)

le problème vient essentiellement de ceux qui ont commencé avec Algobox dans lequel la condition d'arrêt est implicitement <=n non modifiable. (et le pas = 1 non modifiable sauf bidouilles infâmes)

il faut reconnaitre que le for de Python (et celui de Perl, même chose) permet infiniment plus de possibilités que le for "numérique" du C et autres ("pour chaque bidule d'une liste arbitraire" par exemple)



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 1729 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 !