[Java] Traduction automatique : algorithme → langage C

Fermé
Gevi2013 Messages postés 5 Date d'inscription samedi 29 juin 2013 Statut Membre Dernière intervention 2 juillet 2013 - Modifié par Gevi2013 le 30/06/2013 à 00:36
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 - 6 juil. 2013 à 21:53
Salut, ds le cadre de TP de théorie de langage, mon prof me demande de programmer un Traducteur d'algorithme en C. Aidez moi svp;je su debutant en programmation et je ne sais par où commencer ;merci
A voir également:

3 réponses

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
30 juin 2013 à 00:55
Bonjour,

Ok pour t'aider. Commence par nous préciser ce que tu as commencé à faire, à nous faire part de tes réflexions et nous dire là où tu bloques.
On pourra mieux t'orienter.
1
Gevi2013 Messages postés 5 Date d'inscription samedi 29 juin 2013 Statut Membre Dernière intervention 2 juillet 2013
30 juin 2013 à 19:12
Salut et merci a vous
j'ai commencé par avoir la forme générale et complète que peut avoir un algorithme (mots clés, structures et boucles,etc...) puis je vais cherché leur syntaxe et sémantique en langage C afin de pouvoir générer la grammaire .je rappelle que mon programme doit être écrit en JAVA. Merci
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835 > Gevi2013 Messages postés 5 Date d'inscription samedi 29 juin 2013 Statut Membre Dernière intervention 2 juillet 2013
30 juin 2013 à 19:25
je rappelle que mon programme doit être écrit en JAVA.
Euh, ce n'est pas un rappel, tu ne l'as jamais mentionné. Depuis le début tu ne parles que de C et tu as posté dans la catégorie C... Donc, ton programme doit être écrit en C ou en Java ?
0
Gevi2013 Messages postés 5 Date d'inscription samedi 29 juin 2013 Statut Membre Dernière intervention 2 juillet 2013
1 juil. 2013 à 13:08
Excusez moi
Au fait je n'avais pas bien compris le travail. Après explication que j'ai su que mon programme doit être écrit en Java et qu'il doit être capable de traduire un algorithme en C.Donc le langage que je dois utilisé pour programmer est Java. Merci
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835 > Gevi2013 Messages postés 5 Date d'inscription samedi 29 juin 2013 Statut Membre Dernière intervention 2 juillet 2013
1 juil. 2013 à 23:17
Ok. Je reroote ton post sur Java et je renomme le titre ;-)
0
Gevi2013 Messages postés 5 Date d'inscription samedi 29 juin 2013 Statut Membre Dernière intervention 2 juillet 2013
1 juil. 2013 à 23:37
Merci pour votre Compréhension. Vous êtes génial. Merci
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
2 juil. 2013 à 05:51
Pour que je comprennes bien à mon tour ce que tu cherches à faire merci de préciser un peu ce que tu veux, parce que ce n'est toujours pas très clair.

Est-ce que ton programme Java aura :

1) en entrée : un algorithme, en sortie : un code C.
2) en entrée : un code C, en sortie : un code Java.

Ce n'est pas tout à fait la même chose... (le 1 parait plus facile que le 2)

Au passage, précises le périmètre de ton projet, par exemple est-ce que tu peux utiliser des bibliothèques existantes (genre JFlex et Cup) ?

Et pour le 1 : quel formalisme tu utilises pour représenter ton algorithme, quelles sont les fonctionnalités dont ils disposent exhaustivement, etc.

Pour le 2 : à quelques fonctionnalités du C en particulier tu vas te limiter, parce qu'il est évident que tu ne pourras pas recréer toute la grammaire du C en quelques jours...
1
Gevi2013 Messages postés 5 Date d'inscription samedi 29 juin 2013 Statut Membre Dernière intervention 2 juillet 2013
2 juil. 2013 à 17:02
Merci;
mon programme java aura en entrée un algorithme,en sortie un code C.
Mon algorithme a la forme classique c'est à dire :
Algorithme <nom_algorithme>;
étiquette;
const //mot clé désignant la déclaration d'une constante ;
types et structures(tableaux, enregistrement,...)
fonctions
procédures
var pour déclarer des variables;
début (début du programme principale)
---------------//instructions avec l'utilisation éventuelle des opérations de lecture(lire) et d'écriture(écrire) et les structures de contrôle(
si (condition) alors instructions ;
sinon instructions
finsi
Tant que (condition) faire
instructions;
fintq
repéter
instructions
jusqu'à(condition)
pour(i allant de <valeur initiale> à <valeur final>) faire
instructions
finpour
Selon (choix) faire
cas1:'instructions;
------------------//
cas n:instructions
sinon :instructions
finselon
-------------------
Fin
S'il vous plait c'est l'idée que j'ai pour l'instant;si vous avez mieux dites le moi.
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015 > Gevi2013 Messages postés 5 Date d'inscription samedi 29 juin 2013 Statut Membre Dernière intervention 2 juillet 2013
2 juil. 2013 à 19:17
"Mon algorithme a la forme classique"
Je ne crois pas qu'il existe vraiment une "forme classique", un algorithme étant destiné à être lu par un être humain on peut faire ça n'importe comment.

Disons donc que ta "forme classique" tu en fixes la syntaxe et que ça devienne un langage formel. Il faut ensuite que tu lises ton fichier source contenant ton algorithme, et que tu remplaces les différentes instructions par leur équivalent en C, afin de créer en sortie le code correspondant.

Par exemple :
si (condition) alors
      instructions
sinon instructions
finsi

Deviens :
if (condition) {
    instructions
} else {
    instructions
}

De manière grossière on pourrait donc faire un remplacement systématique :
"si ("    --> "if ("
") alors" --> ") {"
"sinon"   --> "} else {"
"finsi"   --> "}"

Evidemment, il y a des cas particuliers à gérer, mais le cas général devrait être plus ou moins comme ça, sachant que bien sûr "condition" et "instructions" devront eux aussi être traduits en langage C au moment de leurs lectures respectives.
0
Merci pour tout
j'ai à présent des fixées.
1
salut;
S'il vous plait j'ai du mal à écrire la grammaire des instructions d'écriture et de lecture c'est à dire: lire(a);
ecrire(a) où a est une variable de type donné; entier par exemple.
Aidez-moi. Merci
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
Modifié par KX le 6/07/2013 à 21:54
Pour être le plus simple possible tu pourrais préciser le type de la donnée dans le nom de l'opération dans l'instruction :

lire_entier(a);   --> scanf("%d",&a);
ecrire_entier(a); --> printf("%d\n",a);

lire_chaine(a);   --> scanf("%s",a);
ecrire_chaine(a); --> printf("%s\n",a);

Pour faire cela vraiment bien (mais c'est plus dur), il faudrait conserver le type de la donnée en mémoire lors de sa déclaration pour l'adapter au mieux.
0