Inscription / Connexion Nouveau Sujet
Niveau BTS
Partager :

algorithme (convention d'écriture)

Posté par Profil amethyste 13-11-19 à 11:46

Algorithme

Bonjour et merci d'avance

J'ai un document pdf trouvé sur internet pour apprendre à faire des algorithmes

jusqu'à présent je n'avais pas besoin de savoir écrire des algorithmes et en fait je m'en foutais complètement

je les faisais sans respecter les normes et même très souvent je les écrivais directement dans le code

mais depuis quarante ans j'essaye de progresser tout seul dans les maths

(sans raison particulière et tant bien que mal évidemment car chez moi les maths sont une drogue dure

qui  sont en concurrence avec l'alcool -bière uniquement- et le punk-ultra uniquement-et préservent mon foie et ma raison à défaut du reste)  

et pour ce faire j'ai besoin d'en écrire un de façon conventionnelle

je vous remercie de me dire si celui ci-dessous est conventionnellement correctement écrit

_______________________

Algorithme : Gray-b

// algorithme qui calcule à partir du code Gray-b optimal d'un entier naturel ,

le code Gray-b optimal de cet entier ajouté de 1 //

Variables :

b\in \mathbb {N}-\{0,1\}

u chaine de caractères

n\in \mathbb {N}^*

Réserver la mémoire des n variables de noms u_1,u_2,...,u_n

ces variables sont définies par  : pour tout i\in \mathbb {N}_n^*,u_i\in \mathbb {N}_{b-1}

Début:

Écrire ("saisir la base du code Gray-b");

b \longleftarrow saisie();

Écrire ("saisir le poids du codage optimal de u");

n \longleftarrow saisie();

Écrire ("En partant du rang 1, saisir les chiffres du code optimal de u");

Pour i allant de 1 à n faire

u_i \longleftarrow saisie();

FinPour

Pour i allant de 1 à n faire

Si u_i\neq 0 et i est pair faire

u_i \longleftarrow u_i-1;

u \longleftarrow "u_n...u_3u_2u_1";

Écrire ("Le code Gray_b optimal de u+1 est :",u);

Fin

FinSi

Si u_i\neq b-1 et i est impair faire

u_i \longleftarrow u_i+1;

u \longleftarrow "u_n...u_3u_2u_1";

Écrire ("Le code Gray_b optimal de u+1 est :",u);

Fin

FinSi

FinPour

u \longleftarrow "1u_n...u_3u_2u_1";

Écrire ("Le code Gray_b optimal de u+1 est :",u);

Fin

Posté par Profil amethystere : algorithme (convention d'écriture) 13-11-19 à 12:44

Bon eh bien merci

À défaut de réponse je suppose donc que mon algorithme est conventionnellement correctement écrit

j'avais un doute car j'ai placé des Fin entre deux Si et FinSi

Posté par Profil amethystere : algorithme (convention d'écriture) 13-11-19 à 12:49

NB : dans mon document pdf on ne rencontre pas ce cas où on est en quelque sorte obligé de finir et ordonner l'instruction Fin entre deux Si et FinSi

Posté par Profil amethystere : algorithme (convention d'écriture) 13-11-19 à 13:44

NB+:avant d'écrire au propre j'attends un peu (on ne sait jamais)

Posté par
Leile
re : algorithme (convention d'écriture) 13-11-19 à 14:09

Bonjour,

en effet, attendre un peu peut être une bonne idée : tous  les intervenants  ne sont pas forcément disponibles à l'heure où tu le souhaiterais..

J'ai hésité à te répondre, car ta demande me laisse un peu perplexe :

les conventions d'écriture : elles dépendent du contexte, et tu donnes un algorithme qui est écrit en langage naturel pour moitié.. il y aussi des instructions, mais en quel langage ?
Les conventions d'écriture en langage informatique sont regroupées dans la syntaxe du langage..

En tous cas, habituellement, on respecte l'intendation  pour les  conditions  et les boucles, même en langage naturel, ne serait-ce que pour la lisibilité..
L'instruction "FIN" : que veux tu dire ? si c'est la fin d'une condition, le FIN SI  suffit,
si c'est la fin d'une boucle, on mettra  FIN POUR   ou  FIN TQ..

Si tu essaies de faire tourner ton algorithme, les erreurs de syntaxe te diront si tu as respecté les conditions d'écriture..

Je ne suis pas sûre d'avoir répondu à ton attente..


Posté par Profil amethystere : algorithme (convention d'écriture) 13-11-19 à 14:15

Merci pour votre réponse Leile

dans mon doc pdf l'instruction Fin est différente de FinSi (associée à un Si) ou FinPour(associée à un Pour)

l'instruction Fin est associée à l'instruction Début

avec l'instruction Fin le programme s'arrête

j'ai été obligé ici d'obliger le programme à s'arrêter si la condition du Si est respectée et donc obligé à placer l'instruction Fin entre un Si et un FinSi

Posté par Profil amethystere : algorithme (convention d'écriture) 13-11-19 à 14:38

ah pardon quand vous posez la question : en quel langage?

en fait mon doc pdf dit ceci

l'écriture d'un programme dans un langage de programmation n'est que l'étape finale d'un développement qui se déroule en trois phases

l'analyse, l'algorithme, et la programmation

ce que j'ai écrit n'est pas écrit dans un langage de programmation c'est l'étape qui la précède

mais mon doc pdf dit que cette étape possède une convention d'écriture (ce n'est pas un truc qu'on fait à sa sauce)

en fait dans mon algo j'ai fait autre chose que dans les exemples donnés dans mon pdf en obligeant le programme à s'arrêter entre une instruction Si et l'instruction associée FinSi

Posté par
Leile
re : algorithme (convention d'écriture) 13-11-19 à 14:50

en effet , il y a 3 phases dans le développement d'un programme.
Ici, tu en es à la phase 2.

Pour éviter d'avoir des instructions FIN en nombre (on ne devrait n'en avoir qu'une à la fin du prog),   on utilise le SINON

toi tu écris :
SI   A pair  alors faire
             blabla bla
             FIN
FIN SI
Si   B   impair  alors   faire
             truc
             FIN
FIN SI

on pourrait écrire :

SI   A pair  alors faire
             blabla bla
            
SINON

             Si   B   impair  alors   faire
                            truc
                            
             FIN SI

FIN SI


on pourrait aussi disposer les conditions autrement (par exemple à l'inverse).. tout dépend du sujet..
NB :   l'indentation en python fait office de borne FIN SI, FIN POUR, FIN TQ.
mais en langage naturel, faire els deux, c'est plus clair..

Je quitte
bonne journée



Posté par Profil amethystere : algorithme (convention d'écriture) 13-11-19 à 15:01

Merci pour votre réponse Leile

mais justement dans mon analyse si la condition du Si est remplie il doit effectuer des instructions puis s'arrêter(il va afficher une chaine de caractères juste avant des s'arrêter)

il ne doit pas continuer à la suite de FinSi

je pourrais certes lui dire d'aller à une ligne donnée n (n sera aussi une variable à déclarer dans la partie déclaration) située juste avant l'instruction Fin placée à la fin de l'algorithme mais dans mon document pdf il n'y a pas d'instructions aller à la ligne n  

en fait dans mon algorithme si en allant de Pour  à Fin Pour il n'est jamais allé entre un Si et un FinSi il devra à la suite du FinPour effectuer des instructions puis après avoir effectué l'avant dernière instruction (qui est d'afficher une chaine de caractère ) s'arrêter par l'instruction Fin  

Posté par
lafol Moderateur
re : algorithme (convention d'écriture) 13-11-19 à 17:26

Bonjour
plutôt que des fin avant les finsi, tu ferais mieux de continuer avec des sinon (si le langage a une instruction genre "case of" qui permet de distinguer directement trois cas, parfait, sinon tu remets un si dans le sinon)

Posté par
Leile
re : algorithme (convention d'écriture) 13-11-19 à 18:54

bonjour lafol,
nous sommes bien d'accord !
bonne soirée.

Posté par Profil amethystere : algorithme (convention d'écriture) 14-11-19 à 03:06

Merci à vous deux Leile et Lafol

et en plus de ça je me suis planté dans la première étape (l'analyse)

bon je refais tout ça

Bonne journée à vous tous



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 !