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
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"
merci beaucoup je vais tacher de le faire moi même et je le mettrai dans le topic pour m'assurer du résultat
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 ...
ok je comprend mais finalement il n'y a pas beaucoup de difference entre l'algo sur algobox et celui en langage naturel
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.
Bonjour,
J'ai une remarque par rapport à ton algo.
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
...
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.
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.
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
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?
salut,
juste une remarque en passant et je m'eclipse
preuve est faite qu'Algobox est tres eloigne du langage naturel.
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é" ?
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"!
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 ...
Ligne 20: Algobox ne respecte pas les priorités opératoires?! Sinon, il faudra modifier pour obtenir
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).
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é ***
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é ***
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é ***
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é ***
il n'y a pas de racine, l'afficher
signifie :
afficher « il n'y a pas de racine "
*** message déplacé ***
Ah merci j ai compris et quand il est marqué "calculer" je dois laisser les détails que j ai mis ?
*** message déplacé ***
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é ***
J'ai un chat et une chienne , je l'ai soigné avec des plantes. c'est quoi l' ?
*** message déplacé ***
fais plus simple.
Exemple pour 1 racine double :
x prend la valeur -b/(2a)
afficher "1 racine double = " x
*** message déplacé ***
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é ***
Merci je pense avoir compris je vais faire l algorithme selon tes conseilles
*** message déplacé ***
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :