Inscription / Connexion Nouveau Sujet
Niveau première
Partager :

Algorithme

Posté par
Alessia86
02-04-16 à 11:56

Bonjour, j'ai un devoir maison à faire sur Algobox. Malheureusement, celui-ci me dit que j'ai une erreur, mais je ne l'a trouve pas. le sujet consiste à trouver les coordonnées entières d'une courbe qui a pour fonction f(x)= (x+2016)/(2x-4).
On remplacera x par i et on sait que les abscisses doivent être comprises entre 3 et 3000.  
Voila l'algorithme:

Variables : i est un nombre entier
                        A est un nombre réel

Pour i allant de 3 à 3000
            A prend la valeur (i+2016)/(2*i-4)
           Si A est un nombre entier
                      Alors afficher "("
                                   afficher "i"
                                   afficher ";"
                                   afficher "A"
                                   afficher ")"
Fin si
Fin pour
Fin


J'aimerais donc votre aide pour savoir où est le problème de syntaxe dans cet algorithme.
Merci de votre aide

Posté par
pgeod
re : Algorithme 02-04-16 à 12:03

???

Ce que tu proposes n'est pas du langage Algobox.
Dans ces conditions, difficile de savoir où se trouve ton erreur de syntaxe.

Pour autant :

afficher "i"
afficher "A"

ne sont pas corrects, car il s'agit d'afficher
la valeur des variables i et A
et non les caractères "i" et "A"

Posté par
Alessia86
re : Algorithme 02-04-16 à 12:15

Sur Algobox, j'ai mis Afficher variable i puis Afficher variable A. mais mon problème ne viendrait il pas de Si A est un nombre entier ?
Merci

Posté par
Leile
re : Algorithme 02-04-16 à 12:18

bonjour,

ton algo est donné en langage naturel, pas en Algobox.

tes variables devraient etre toutes les deux du type nombre ; pas  type "entier" :

la boucle POUR :
  POUR i ALLANT_DE 3 A 3000
  DEBUT_POUR
     A PREND_LA_VALEUR (i+2016)/(2*i-4)  ==> OK

en Algobox, pour tester si A est entier, tu peux comparer A à sa partie entière (avec la commande floor(A) qui te renvoie la partie entière de A)
    SI (A==(floor(A))) ALORS
      DEBUT_SI
       AFFICHER i  ==> si tu écris afficher "i", tu n'affiches pas la valeur de i
       etc...

OK ?
tu reprends ?

Posté par
Alessia86
re : Algorithme 02-04-16 à 12:28

D'accord donc si j'ai bien compris, l'algorithme est :

Variables :  
i est du type nombre
A est du type nombre

Pour i allant de 3 à 3000
A prend la valeur (i+2016)/(2*i-4)
Si A==flor(A) alors
Afficher (message) "("
Afficher (variable)"i"
Afficher (message) " ; "
Afficher (variable) "A"
Afficher (message) ")"
Fin si
Fin pour
Fin

Mon algorithme est il correct?
Merci

Posté par
pgeod
re : Algorithme 02-04-16 à 12:34

A corriger :

Si A==floor(A) alors
Afficher i
Afficher A

Posté par
Alessia86
re : Algorithme 02-04-16 à 12:38

D'accord j'ai compris, merci de votre aide, bonne journée.

Posté par
pgeod
re : Algorithme 02-04-16 à 12:39

Posté par
Leile
re : Algorithme 02-04-16 à 12:42

as tu fait tourner ton algorithme ?
qu'est ce  qu'il t'a rendu comme solutions ?

Posté par
mathafou Moderateur
re : Algorithme 02-04-16 à 13:02

Bonjour,

Alessia86 : tu n'as pas vraiment saisi la différence entre les mots algorithme et programme
il est vrai que l'introduction de cette horreur qu'est Algobox dans l'enseignement entretient largement cette confusion.

algorithme : description formelle d'une méthode, de l'enchainement d'opérations mathématiques et logiques etc à effectuer
généralement "en langage naturel" (= avec des phrases en français)
la syntaxe est donc assez "laxiste"

programme : traduction d'un algorithme dans un langage donné, sur une machine donnée
comme c'est destiné à être lu par une machine la syntaxe est imposée exactement, à la virgule près et à la casse (majuscule/minuscule) exacte


"un algorithme en Algobox" ça n'existe pas
c'est un raccourci de langage pour dire "le programme qui est la traduction en langage Algobox d'un algorithme"

ce que tu as écrit est un algorithme (mal écrit) et n'a donc rien à voir avec Algobox
la syntaxe Algobox est très précise et doit être respectée au caractère exact

Pour i allant de 3 à 3000 faux

POUR i ALLANT_DE 3 A 3000 correct
DEBUT_POUR
...
FIN_POUR

Si A==flor(A) alors faux

SI (A==floor(A)) ALORS correct
DEBUT_SI
...
FIN_SI


Afficher (message) "(" faux
Afficher (variable)"i"

AFFICHER "(" correct c'est les guillemets qui disent que c'est un message
AFFICHER i correct c'est l'absence de guillemets qui dit que c'est une variable

moralité :
Algobox fournit une interface à cliquer et des boites de dialogue pour générer les mots clés corrects
ne jamais "taper" des commandes Algobox directement avant de connaitre très bien le langage.

c'est d'ailleurs dit dans l'aide en ligne :

Via l'option "Mode Edition" du menu "Edition", il est possible de passer du mode d'édition du code par défaut (avec boîtes de dialogue) à un mode d'édition du code comme sur un éditeur de texte classique. Ce mode d'édition, à réserver aux utilisateurs expérimentés, ...



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