Inscription / Connexion Nouveau Sujet
Niveau première
Partager :

algorithme en langage naturel

Posté par
elias112
06-10-15 à 21:52

Bon soir a tous,
j'ai réalisé cet algorithme permettant de trouver alpha, beta, deta, la forme canonique... et je dois le traduire en langage naturel et cela me pose problème :hum:
Si vous pouviez me donner quelques pistes ce serait sympa, merci d'avance :we:

1   VARIABLES
2     delta EST_DU_TYPE NOMBRE
3     a EST_DU_TYPE NOMBRE
4     b EST_DU_TYPE NOMBRE
5     c EST_DU_TYPE NOMBRE
6     x0 EST_DU_TYPE NOMBRE
7     x1 EST_DU_TYPE NOMBRE
8     x2 EST_DU_TYPE NOMBRE
9     beta EST_DU_TYPE NOMBRE
10    Alpha EST_DU_TYPE NOMBRE
11  DEBUT_ALGORITHME
12    LIRE a
13    LIRE b
14    LIRE c
15    SI (a==0) ALORS
16      DEBUT_SI
17      AFFICHER "a=0 donc ce n'est pas un trinome du second degré"
18      FIN_SI
19    Alpha PREND_LA_VALEUR -b/(2*a)
20    beta PREND_LA_VALEUR -(pow(b,2)-4*a*c)/4*a
21    AFFICHER "Alpha="
22    AFFICHER Alpha
23    AFFICHER "Beta="
24    AFFICHER beta
25    SI (a==0) ALORS
26      DEBUT_SI
27      FIN_SI
28      SINON
29        DEBUT_SINON
30        delta PREND_LA_VALEUR pow(b,2)-4*a*c
31        AFFICHER "delta="
32        AFFICHER delta
33        SI (delta<0) ALORS
34          DEBUT_SI
35          AFFICHER " delta <0 donc l'équation n'admet pas de solutions"
36          FIN_SI
37          SINON
38            DEBUT_SINON
39            SI (delta==0) ALORS
40              DEBUT_SI
41              AFFICHER " delta=0 donc l'équation admet une solution"
42              x0 PREND_LA_VALEUR -b/(2*a)
43              AFFICHER "x0="
44              AFFICHER x0
45              FIN_SI
46              SINON
47                DEBUT_SINON
48                SI (delta>0) ALORS
49                  DEBUT_SI
50                  AFFICHER "delta > 0 donc il y a deux solutions:"
51                  x1 PREND_LA_VALEUR (-b-sqrt(delta))/(2*a)
52                  x2 PREND_LA_VALEUR (-b+sqrt(delta))/(2*a)
53                  AFFICHER "x1="
54                  AFFICHER x1
55                  AFFICHER "x2="
56                  AFFICHER x2
57                  FIN_SI
58                FIN_SINON
59            FIN_SINON
60        FIN_SINON
61    SI (Alpha<0) ALORS
62      DEBUT_SI
63      AFFICHER "la forme canonique est :"
64      AFFICHER a
65      AFFICHER "(x"
66      AFFICHER Alpha
67      AFFICHER ")²"
68      FIN_SI
69      SINON
70        DEBUT_SINON
71        SI (Alpha>0) ALORS
72          DEBUT_SI
73          AFFICHER "la forme canonique est"
74          AFFICHER a
75          AFFICHER "(x-"
76          AFFICHER Alpha
77          AFFICHER ")²"
78          FIN_SI
79        FIN_SINON
80    SI (beta<0) ALORS
81      DEBUT_SI
82      AFFICHER beta
83      FIN_SI
84      SINON
85        DEBUT_SINON
86        SI (beta>0) ALORS
87          DEBUT_SI
88          AFFICHER "+"
89          AFFICHER beta
90          FIN_SI
91        FIN_SINON
92  FIN_ALGORITHME

Posté par
bnv59
re : algorithme en langage naturel 07-10-15 à 01:38

Bonsoir,

C'est quoi le langage naturel?

Posté par
elias112
re : algorithme en langage naturel 07-10-15 à 07:38

Bonjour d'après ce que j ai compris, le langage nautel est le langage de tous les jours

Posté par
mathafou Moderateur
re : algorithme en langage naturel 07-10-15 à 12:55

Bonjour,

langage de tous les jours dans lequel on fait intervenir des mots de tous les jours : prendre une valeur, afficher, début d'une action, fin d'une action, si, sinon etc etc

bref la traduction en "langage naturel" d'un programme déja écrit en langage Algobox consiste essentiellement à le recopier sans les "_" et en minuscules !!
puis à supprimer quelques "lourdeurs" pour rendre le langage "plus naturel"

Posté par
elias112
re : algorithme en langage naturel 07-10-15 à 12:59

merci beaucoup je vais tacher de le faire moi même et je le mettrai dans le topic pour m'assurer du résultat

Posté par
mathafou Moderateur
re : algorithme en langage naturel 07-10-15 à 13:04

ceci dit comme généralement on fait ça en sens inverse :

on a un problème à résoudre
an analyse mathématiquement le problème (formules à utiliser, méthodes générales ...)
on exprime cela par un algorithme en langage naturel
puis on traduit cet algorithme en un programme dans le langage qu'on veut (par exemple en Algobox)

partir du programme écrit en Algobox pour remonter à l'algorithme écrit en langage naturel, peut être as tu même fait l'exo à l'envers donc ...

Posté par
elias112
re : algorithme en langage naturel 07-10-15 à 13:12

ok je comprend mais finalement il n'y a pas beaucoup de difference entre l'algo sur algobox et celui en langage naturel

Posté par
mathafou Moderateur
re : algorithme en langage naturel 07-10-15 à 13:26

la principale différence est que le programme sur algobox est plus "lourdingue" que en langage naturel

en langage naturel on ne dit pas

SI (condition) ALORS
DEBUT_SI
opérations à effectuer
FIN_SI

mais juste

si condition
opérations à effectuer
(fin si)

le "fin si" pouvant même être omis s'il ne peut pas y avoir de confusion possible, ou remplacé par de l'indentation (décalage de la marge), ou une barre verticale :

si condition
| opérations à effectuer
| sur plusieurs lignes au besoin
suite en dehors du si (= opérations à effectuer ensuite dans tous les cas)


un algorithme en langage naturel est donc bien plus lisible et concis qu'un programme en Algobox

bien faire la différence entre algorithme et programme :
algorithme : description formelle des opérations à effectuer et de leur enchainement logique
programme : traduction "matérielle" d'un algorithme sur une machine donnée, avec un langage donné que comprend cette machine.

Posté par
missyf971
re : algorithme en langage naturel 07-10-15 à 15:31

Bonjour,

J'ai une remarque par rapport à ton algo.

Citation :

15    SI (a==0) ALORS
16      DEBUT_SI
17      AFFICHER "a=0 donc ce n'est pas un trinome du second degré"
18      FIN_SI
19    Alpha PREND_LA_VALEUR -b/(2*a)
20    beta PREND_LA_VALEUR -(pow(b,2)-4*a*c)/4*a
21    AFFICHER "Alpha="
22    AFFICHER Alpha
23    AFFICHER "Beta="
24    AFFICHER beta
25    SI (a==0) ALORS
26      DEBUT_SI
27      FIN_SI


Après ton 1er test sur "a", pourquoi tu n'as pas mis tout le reste dans un "sinon"? Parce que si a=0, tu calcules quand même -b/2a.

Posté par
mathafou Moderateur
re : algorithme en langage naturel 07-10-15 à 16:04

tu as parfaitement raison, mais cela ne portait pas sur la justesse de l'algo (qui est donc faux) mais sur son écriture "en langage naturel"
ni sur son "élégance", du genre l'absurde

SI (condition)
DEBUT_SI
FIN_SI avec rien du tout si la condition est satisfaite
SINON
...


Posté par
mathafou Moderateur
re : algorithme en langage naturel 07-10-15 à 16:09

PS : et d'ailleurs cela montre bien que elias112 a fait l'exo pas du tout comme on le lui demandait
il a "craché" un algo en Algobox directement (maladroit, faux, illisible)
puis se pose la question de le traduire en langage naturel

alors qu'il est absolument indispensable, toujours, de faire le contraire :

d'abord en langage naturel, puis le traduire en Algobox ou en C ou en Java ou en n'importe quoi d'autre.

Posté par
missyf971
re : algorithme en langage naturel 07-10-15 à 16:25

Je pense comme toi : il a fait son exo à l'envers. Mais comme il a affiché son algo, il fallait que je lui fasse la remarque.

Posté par
elias112
re : algorithme en langage naturel 07-10-15 à 18:43

Merci de vos réponses mais mon algorithme marche bien et ne calcule pas alpha quand a=0 (sinon il aurait été faux) et pour ce qui est de l orde, j'avais déjà réalisé cet algorithme sur algobo lors d une séances informatique puis dans un devoir que je dois faire, on me demande de réaliser cet algorithme en langage algobox (ce que j'avais déjà fait) en langage naturel et en langage  TI

Posté par
missyf971
re : algorithme en langage naturel 07-10-15 à 18:53

Ton algo, tel que tu l'as écrit pour nous, calcule et pour a=0. Tu as testé en entrant 0 comme valeur pour a?

Posté par
elias112
re : algorithme en langage naturel 07-10-15 à 18:54

Oui et il affiche bien "a=0 donc ce n est pas un trinôme du second degre"

Posté par
alb12
re : algorithme en langage naturel 07-10-15 à 18:56

salut,
juste une remarque en passant et je m'eclipse
preuve est faite qu'Algobox est tres eloigne du langage naturel.

Posté par
elias112
re : algorithme en langage naturel 07-10-15 à 18:58

C'est justement la mon problème

Posté par
alb12
re : algorithme en langage naturel 07-10-15 à 19:07

le langage mathematique est le plus naturel ...

Posté par
alb12
re : algorithme en langage naturel 07-10-15 à 19:08

n'abuse pas des sinon

Posté par
elias112
re : algorithme en langage naturel 07-10-15 à 19:11

Et par quoi je dois remplacer les flèche verticales? Par des espaces?

Posté par
missyf971
re : algorithme en langage naturel 07-10-15 à 19:13

elias112 @ 07-10-2015 à 18:54

Oui et il affiche bien "a=0 donc ce n est pas un trinôme du second degre"


Et en dessous c'est écrit "***Algorithme interrompu ligne 19 : erreur de calcul***"...mais c'est normal.

Posté par
elias112
re : algorithme en langage naturel 07-10-15 à 20:12

oui j'ai fait tout ce que j'ai pu pour l'enlever sans succés mais l'important est qu'il affiche "a=0 donc ce n'est pas un trinome du second degré" ?

Posté par
missyf971
re : algorithme en langage naturel 07-10-15 à 20:57

elias112 @ 07-10-2015 à 20:12

oui j'ai fait tout ce que j'ai pu pour l'enlever sans succés mais l'important est qu'il affiche "a=0 donc ce n'est pas un trinome du second degré" ?



Tu as essayé de ne pas diviser par 0???

Reprends tout depuis le début en commençant par le langage naturel. Tu verras après pour Algobox.

Entrées
Saisir a etc

Traitement
.....
= \frac{-b}{2a} ou prend la valeur \frac{-b}{2a}
....

Sorties

Afficher ou Ecrire
etc

Posté par
bnv59
re : algorithme en langage naturel 07-10-15 à 22:01

Il n'y a pas "un langage naturel" mais des "langages naturels", selon la personne qui écrit l'algorithme ou les convenances de certaines entreprises...

Entre les desideratas d'un prof de maths donné et les algorithmes des énoncés de Bac, il peut y avoir, il y a souvent des différences.

Le principal, c'est de se faire comprendre. Algobox, ce n'est pas du C. Ca se lit quasiment comme un roman. C'est donc quasiment comme du langage "naturel"!

Posté par
alb12
re : algorithme en langage naturel 07-10-15 à 23:14

2     delta EST_DU_TYPE NOMBRE
3     a EST_DU_TYPE NOMBRE
4     b EST_DU_TYPE NOMBRE
5     c EST_DU_TYPE NOMBRE
6     x0 EST_DU_TYPE NOMBRE
7     x1 EST_DU_TYPE NOMBRE
8     x2 EST_DU_TYPE NOMBRE
9     beta EST_DU_TYPE NOMBRE
10    Alpha EST_DU_TYPE NOMBRE

le genre de roman qui vous tombe des mains ...

Posté par
bnv59
re : algorithme en langage naturel 07-10-15 à 23:26

Ligne 20: Algobox ne respecte pas les priorités opératoires?! Sinon, il faudra modifier pour obtenir

Posté par
bnv59
re : algorithme en langage naturel 07-10-15 à 23:41

Avec ton si (a==0), tu as effectivement clairement des choses inutiles.

Un 1er contrôle si a0, sinon exit de ton programme (c'est ce qui manque au début, Algobox doit savoir faire).

Posté par
mathafou Moderateur
re : algorithme en langage naturel 08-10-15 à 12:55

Citation :
Algobox ne respecte pas les priorités opératoires ?

si. le programme très simple

1 VARIABLES
2 DEBUT_ALGORITHME
3 AFFICHERCALCUL 3/4*4
4 FIN_ALGORITHME

donne bien
***Algorithme lancé***
3
***Algorithme terminé***

comme il se doit
c'est à dire / et * ont la même priorité et sont donc exécutées de gauche à droite.

c'est la mauvaise habitude manuelle de ne pas savoir justement ses priorité qui fait croire que
(b²-4ac)/4a veut dire \dfrac{b^2-4ac}{4a} alors que ça a toujours voulu dire, même écrit sur une feuille de papier, \dfrac{b^2-4ac}{4}a

pour dire \dfrac{b^2-4ac}{4a} il faut ajouter des parenthèses obligatoires (b²-4ac)/(4a)
que ce soit à la main ou dans un programme ou sur une calculette.

après qu'il y ait des "tolérances" quand on écrit à la main parce que tout le monde connait la vraie formule, certes.
mais un programme ou une calculette n'a aucune tolérance.


quant au test si / sinon initial on peut le faire de différentes façons, qui toutes évitent le plantage du programme (*** erreur machin ***) si a = 0

si a==0
raler en disant "ce n'est pas un trinome"
sinon
faire le traitement
fin

ou bien :

si a!=0
faire le traitement
sinon
raler en disant "ce n'est pas un trinome"
fin

ou encore :

si a!=0
faire le traitement
sinon
rien du tout
fin

qui se simplifie en :

si a!=0
faire le traitement
fin

le sinon étant alors inutile et le programme refusant simplement de faire quoi que ce soit si a = 0

Posté par
elias112
re : algorithme en langage naturel 08-10-15 à 19:19

merci beaucoup

Posté par
elias112
algorithme langage naturel 08-10-15 à 19:29

Bonsoir a tous, j'ai réalisé un algorithme en langage naturel calculant alpha, beta, delta, les racines... et je voulais savoir si celui-çi était correct.
Merci d'avance pour vos réponses


Début « second degré »
Afficher « donner les coefficients a, b, c avec a non nul »
Lire a, b, c
-b/(2a)  prend la valeur  α
-(b²-4ac)/(4a)  prend la valeur    β
b²-4ac  prend la valeur   Δ
Si a=O
    Alors, afficher « ce n'est pas un trinôme du second degré »
    Sinon a≠0
Fin Si
Si Δ<0
    Alors, afficher « il y a une unique racine qui est : »
    -b/ (2a)   prend la valeur x0
    Afficher « x0= », x0
    Sinon  Δ>0
                Alors afficher «il y a 2 racines qui sont : »
  (-b-√Δ)/(2a) prend la valeur x1
         (-b+√Δ)/(2a) prend la valeur x2
                Afficher « x1= », x1
                Afficher « x2= », x2
Fin Si
Algorithme terminé

*** message déplacé ***

Posté par
missyf971
re : algorithme langage naturel 08-10-15 à 19:43

Bonsoir,

Le multi-post est interdit! =>

*** message déplacé ***

Posté par
elias112
re : algorithme langage naturel 08-10-15 à 19:52

Je sais mais ce n'est pas le même topic car dans le précédent je demandais des indications alors que la je demande des avis sur mon travaille

*** message déplacé ***

Posté par
elias112
re : algorithme langage naturel 08-10-15 à 20:04

svp je dois rendre ce devoir demain, j'aurais vraiment besoin d'avis

*** message déplacé ***

Posté par
pgeod
re : algorithme langage naturel 08-10-15 à 20:19

Déjà tu dois organiser ton algo avec les conditions
qui vont bien. Tu pourrais utiliser la logique suivante :

DEBUT
saisir a, b et c
si a différent de 0, calculer
ensuite
si a = 0, pas trinôme, l'afficher
sinon si < 0,  
   il n'y a pas de racine, l'afficher
sinon si = 0,
   il y a une racine double, la calculer et l'afficher
sinon ( > 0),
   il y a 2 racines distinctes, les calculer, les afficher
FIN

*** message déplacé ***

Posté par
elias112
re : algorithme langage naturel 08-10-15 à 20:21

Merci beaucoup de ta réponse mais je ne comprend pas pourquoi tu met "l afficher" quand delta est négatif car il n'y a aucune racine

*** message déplacé ***

Posté par
pgeod
re : algorithme langage naturel 08-10-15 à 20:24

il n'y a pas de racine, l'afficher

signifie :

afficher « il n'y a pas de racine "

*** message déplacé ***

Posté par
elias112
re : algorithme langage naturel 08-10-15 à 20:25

Ah merci j ai compris et quand il est marqué "calculer" je dois laisser les détails que j ai mis ?

*** message déplacé ***

Posté par
cocolaricotte
re : algorithme langage naturel 08-10-15 à 20:28

Bonjour,

Français : dans ""l'afficher"", le pronom l fait référence à la dernière chose dont on a parlé !

J'ai un chat et une chienne , je l'ai soignée avec des plantes. c'est quoi l'   ?

*** message déplacé ***

Posté par
cocolaricotte
re : algorithme langage naturel 08-10-15 à 20:28

J'ai un chat et une chienne , je l'ai soigné avec des plantes. c'est quoi l'   ?

*** message déplacé ***

Posté par
pgeod
re : algorithme langage naturel 08-10-15 à 20:28

fais plus simple.
Exemple pour 1 racine double :

x prend la valeur -b/(2a)
afficher "1 racine double = " x

*** message déplacé ***

Posté par
elias112
re : algorithme langage naturel 08-10-15 à 20:29

Une chienne pourquoi?

*** message déplacé ***

Posté par
mathafou Moderateur
re : algorithme langage naturel 08-10-15 à 20:30

si, c'est le même exo
quelle que soit la question posée, ça en fait du multipost.

tu devais proposer ton travail là bas.

(et le multipost est un risque élevé de se faire bannir, de même que rouler à 180 sur l'autoroute est un risque élevé de se voire immobilisé sur place
et alors ton exo n'avancera plus du tout)



tu commences à calculer -b/2a alors que tu ne sais même pas si tu as le droit (si a 0 ou pas)
déplacer ces opérations là.

de toute façon tu n'as rien compris aux structure si ... sinon ... fin

"sinon" c'est pas du commentaire
entre "sinon" et "fin" on met les opérations à effectuer si la condition du si n'est pas satisfaite

et une fois après le "fin" la condition n'a plus aucune influence
tout ce qui suit le fin est exécuté, que la condition ait été satisfaite ou pas

et puis tes affectations non plus ce n'est pas bon :
tu comprends "prend la valeur" complètement à l'envers comme "donne sa valeur à"


alors tu recommences tout et de préférence dans le bon topic, celui que tu n'aurais jamais dû quitter.

*** message déplacé ***

Posté par
pgeod
re : algorithme langage naturel 08-10-15 à 20:30

Une quoi ??

*** message déplacé ***

Posté par
elias112
re : algorithme langage naturel 08-10-15 à 20:30

Merci je pense avoir compris je vais faire l algorithme selon tes conseilles

*** message déplacé ***

Posté par
pgeod
re : algorithme langage naturel 08-10-15 à 20:33

ok
bonsoir mathafou
bonsoir à tous

*** message déplacé ***



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