Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Programme en C] Le Pseudo-C

Traduisez vos programmes écrit en pseudo-code à des programmes en C !

Anonyme
28 avril 2013 à 12:25:36

Salut à tous ! :)

Je m'appelle Thibault j'ai 13 ans, j'habite a Paris. Je programme en C par période et je m'y suis remis récemment. J'aime beaucoup l'informatique ainsi que les algorithmes et bien sûr la programmation. Je suis donc ici pour vous présenter mon projet : le Pseudo-C !

Le Pseudo-C est en quelque sorte un "traducteur" qui vous permet de transformer du code écrit en pseudo-code en un code écrit en C. Si vous ne savez pas ce qu'est du pseudo-code je vous conseille d'aller consulter cette page : http://fr.wikipedia.org/wiki/Pseudo-code

En savoir plus sur le projet

Genèse

J'ai eu l'idee de ce projet il y a 2 ans à peu près, mais je ne l'avais jamais finis. Je me suis décidé récemment de me remettre à la programmation. Après avoir fais pas mal de France IOI, il me fallait un projet concret. Et cette idée mais revenu à l'esprit.

Le nom Pseudo-C est un mélange de pseudo-code (le langage donné en entrée) et du langage C (le langage donné en sortie) ;)

Généralité et avancement

Le Pseudo-C est donc un traducteur commme je l'ai dis plus haut, il vous permet d'écrire un code beaucoup plus simple à lire, à écrire, et à comprendre (pour des personnes ayant ou pas des connaissances en terme de programmation)

Il est très utile pour les personnes en cours d'apprentissage du C car si vous bloquez quelque part, que vous souhaitez experimenté quelque chose, vous avez juste à écrire le code en pseudo-code et vous aurez son équivalent en C ! Vous pourrez donc progressez encore plus facilement. Le Pseudo-C est aussi très utile au personne qui utilise du pseudo-code avant de se mettre à coder quelque chose (comme moi par exemple). N'importe qui peu l'utiliser !

Vous pouvez créer des variables, des tableaux, leur donner des valeurs, les afficher, lire quelque chose à l'écran, effectuer des tests, des boucles ! Et tout cela de manière intuitive.

Pour savoir comment utiliser le Pseudo-C correctement, je vous invite à lire le fichier aide.txt situé dans le dossier Pseudo-C (le téléchargement du dossier est à la fin de ce post). Ou alors compiler le main.c et mettez en paramètre du programme l'option '-h'. ;)

Objectifs

L'objectif principale de ce projet est de faire découvrir le pseudo-code d'une manière différente, donner envie à d'autre personne de coder facilement un petit programme, de partager vos programmes sans avoir de soucis de compréhension.

Il sera bien sûr souvent mise à jour, en fonction de vos avis, des bugs rencontrés etc.

Le projet et son originalité

Le Pseudo-C est ouvert à n'importe quelle personne, de n'importe quel âge, n'ayant pas forcément des connaissances en programmation. Le Pseudo-C peut-être utilisé comme traducteur mais aussi comme un langage de programmation ! Si après avoir exécuté votre programme en pseudo-code, vous exécuté le fichier sortie.c vous aurez directement la sortie et non pas une simple traduction.

Ce projet est libre de droit et peut donc être modifier comme bon vous semble.

Pour télécharger le dossier contenant le Pseudo-C : Mediafire

Le Twitter de PixelCodeTeam (la team qui développe le Pseudo-C): https://twitter.com/PixelCodeTeam

Exemple de programme

Voici un exemple de programme en pseudo-code (le jeu du + ou -) :

Debut
	nombreMystere <- 0
	nombreEntre <- 0
	
	Init Aleatoire
	
	nombreMystere = Aleatoire % 100
	
	Afficher "Jeu du + ou - \n\n"
	
	Faire
		Lire entier nombreEntre
		
		Si (nombreEntre > nombreMystere)
			Afficher "C'est moins"
		Sinon Si (nombreEntre < nombreMystere)
			Afficher "C'est plus"
		Sinon
			Afficher "Bravo le nombre etait bien : "
			Afficher entier nombreMystere
		Fin Si
	Fin Boucle, Tant Que (nombreEntre != nombreMystere)
Fin

Et voici le programme retourné par le Pseudo-C :

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <unistd.h>

int main(void)
{
    int nombreMystere = 0;
    int nombreEntre = 0;
    srand(time(NULL));
    nombreMystere = rand() % 100;
    printf("Jeu du + ou - \n\n");
    do
    {
        scanf("%d\n", &nombreEntre);
        if(nombreEntre > nombreMystere)
        {
            printf("C'est moins");
        }
        else if(nombreEntre < nombreMystere)
        {
            printf("C'est plus");
        }
        else
        {
            printf("Bravo le nombre etait bien : ");
            printf("%d", nombreMystere);
        }
    } while (nombreEntre != nombreMystere);
    return 0;
}

Le Space Invader :

Debut
	Tableau invader[6] <- "    @@  @@    ", "  @@@@@@@@@@  ", "  @@()@@  @@  ", "  @@  @@()@@  ", "@@@@@@@@@@@@@@", "@@  @@  @@  @@"
	
	x <- 0
	y <- 0
	tmp <- 0
	i <- 0
	
	Init Aleatoire
	
	Pour , ,
	
		Effacer
		
		x = Aleatoire % 66
		y = Aleatoire % 66
		tmp = y
		
		Tant Que (x-- > 0)
			Afficher "\n"
		Fin Boucle
		
		Pour i = 0, i < 6, i++
			
			Tant Que (tmp-- > 0)
				Afficher " "
			Fin Boucle
			
			Afficher chaine invader[i]
			Afficher "\n"
			
			tmp = y
		Fin Boucle
		
		Pause 3
		
	Fin Boucle
Fin

On voit clairement la différence au niveau de la compréhension du code.

Je vous remercie d'avoir lu, et n'hésitez pas à poster des commentaires et à donner vos avis ! :)

Bonne journée/soirée ;)

tib92

-
Edité par Anonyme 4 mai 2013 à 21:58:33

  • Partager sur Facebook
  • Partager sur Twitter
28 avril 2013 à 17:32:29

Bonjour,

Ton idée est intéressante, mais le problème essentiel est qu'il n'y a pas de formalisme universel pour le pseudo-code. En clair, chaque ouvrage ou ressource sur les algorithmes en général adoptent le modèle qui lui convient le mieux, et cela à plusieurs « niveaux » d'abstraction. La syntaxe que tu as choisie est extrêmement proche du C au final ; tout cela n'est affaire que de mots-clés à retenir, et ce n'est souvent pas à ce niveau que bloquent les débutants.

Par ailleurs, écrire un tel pseudo-code nécessite une expérience préliminaire dans la programmation. En effet, on peut difficilement mieux envisager le concept de boucles, de conditions, etc. qu'à partir d'un exemple très concret. Ceci afin de te faire remarquer qu'il faut bien voir que, si jamais tu envisages ton projet comme réellement utilisable, il faut peut-être commencer par mieux qualifier le public visé. D'un autre côté, un débutant ne se dirigera sûrement pas intuitivement vers ce genre d'outils. Il existe des langages de programmation extrêmement intuitifs et proche de l'anglais comme Linotte, mais, de ce que j'ai ouï, leur succès n'a jamais réellement été au rendez-vous.

En fait, il faut remarquer, qu'à partir du moment où un pseudo-code est compilable ou interprétable, il cesse d'être un pseudo-code. Généralement, quand un programmeur décrit son algorithme, il le fait au moyen de constructions extrêmement simplifiées, qu'on ne pourrait pas facilement traduire dans un formalisme impératif « automatiquement ». À toi donc de fixer tes objectifs. Par exemple, si j'écris, dans mon pseudo-code, « Si P est dans la base des connaissances B », est-ce que ta génération de code va produire une boucle de recherche de B dans P, avec tous les problèmes d'implémentation que cela comporte, suivant la structure de données sous-jacente utilisée.

Voilà donc, selon moi, les limites du projet : le pseudo-code est un outil qui permet au programmeur d'organiser sa pensée. Il ne servirait à rien pour un développeur un tant soit peu expérimenté d'écrire sur support informatique un code extrêmement verbeux, à la syntaxe un peu floue, qui ne semble pas forcément formalisée, pour la traduire vers un langage à la syntaxe aussi « commune » que celle du C. Cependant, si cela peut te permettre d'examiner plus en détail les rouages sur lesquels le langage C est bâti, et ce à travers un réel projet, cela ne peut que t'être formateur ; tu peux continuer dans ce sens sans crainte de décevoir qui que ce soit.

Bonne journée ! :)

  • Partager sur Facebook
  • Partager sur Twitter
Staff désormais retraité.
28 avril 2013 à 17:38:09

Ca me fait penser à Windev.. :p
  • Partager sur Facebook
  • Partager sur Twitter
Le manager pragmatique ne cherchera pas le "quoi" de l'erreur, mais le "pourquoi" de celle-ci
Anonyme
28 avril 2013 à 17:48:33

Merci pour ta reponse Lucas :)

Je suis d'accord avec toi, il n'y a pas de syntaxe universel en pseudo-code et c'est pourquoi je definis la mienne. La syntaxe est proche du C certes, mais sur un code ecrit avec ma syntaxe et le meme mais ecrit en C, une personne n'ayant aucune connaissance comprendrai parfaitement le pseudo-code (je dis ca car j'ai teste sur mon pere le programme du + ou - ^^).

Bon sinon a part ca, je tiens a te dire (meme si je crois que tu l'as devine) que ce projet est juste pour m'occuper et me divertir, mais aussi pour m’entrainer. Personnellement je trouve ca sympa de pouvoir traduire un pseudo-code en C, mais apres si des personnes n'aiment pas ce concept libre a elle de ne pas l'utiliser. ^^

Je l'utilise comme ca pour des algos petits, puis peut etre de le rendre plus puissant et efficace au fur et a mesure. ;)

Encore merci a toi ! :)

PS : des retours sur le code car ca m'interesse de voir s'il y a d'autres moyens que ceux que j'ai utilise ? ^^ 

  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
28 avril 2013 à 17:51:34

j'ai essayé ton code : il a des erreurs.
  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
28 avril 2013 à 17:52:24

Tu pourrais un peu plus preciser ? quel est le code que tu as donne en entree ? les erreurs affichees ? :)
  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
28 avril 2013 à 18:01:01

le code c'est le tien

tib92 a écrit:

Pour télécharger le dossier contenant le Pseudo-C : Mediafire


Et les erreurs sont les suivante :

dans le fichier sortie.c ligne 23 :

printf("%d", nombreMystere;);

une fois corriger dans main.o:main.c :

main.o:main.c multiple definition of `main'

et dans sortie.o:sortie.c :

sortie.o:sortie.c  first defined here

voila

  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
28 avril 2013 à 18:05:39

Tu es sur d'avoir bien pris le code en exemple (recommence ;) ) sinon chez moi tout fonctionne parfaitement.

Je sais d'ou ca vient, j'avais ecris : Afficher nombreMystere; tu remarques donc d'ou viens le ; en trop ;)

Recompile le main.c et ca devrai marcher

-
Edité par Anonyme 28 avril 2013 à 18:07:33

  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
28 avril 2013 à 18:08:41

je le fais avec un IDE toi tu n'a pas l'air de le faire avec c'est peut-être dû a sa
  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
28 avril 2013 à 18:09:57

J'ai mis a jour le lien, re-telecharge et essaie si ca ne marche pas fais le depuis le terminal ;)
  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
28 avril 2013 à 18:12:49

je vien de découvrir un fichier.txt qui s'appelle erreur et dedans il y a :

ERREUR [ligne 1] : Instruction invalide !
ERREUR [ligne 2] : Instruction invalide !
ERREUR [ligne 3] : Instruction invalide !
ERREUR [ligne 4] : Instruction invalide !
ERREUR [ligne 5] : Instruction invalide !
ERREUR [ligne 6] : Instruction invalide !
ERREUR [ligne 7] : Instruction invalide !
ERREUR [ligne 8] : Instruction invalide !
ERREUR [ligne 9] : Instruction invalide !
ERREUR [ligne 10] : Instruction invalide !
ERREUR [ligne 11] : Instruction invalide !
ERREUR [ligne 12] : Instruction invalide !
ERREUR [ligne 13] : Instruction invalide !
ERREUR [ligne 14] : Instruction invalide !
ERREUR [ligne 15] : Instruction invalide !
ERREUR [ligne 16] : Instruction invalide !
ERREUR [ligne 17] : Instruction invalide !
ERREUR [ligne 18] : Instruction invalide !
ERREUR [ligne 19] : Instruction invalide !
ERREUR [ligne 20] : Instruction invalide !
ERREUR [ligne 21] : Instruction invalide !
ERREUR [ligne 22] : Instruction invalide !
ERREUR [ligne 23] : Instruction invalide !
ERREUR [ligne 24] : Instruction invalide !
ERREUR [ligne 25] : Instruction invalide !
ERREUR [ligne 26] : Instruction invalide !
ERREUR [ligne 27] : Instruction invalide !
ERREUR [ligne 28] : Instruction invalide !
ERREUR [ligne 29] : Instruction invalide !
ERREUR [ligne 30] : Instruction invalide !
ERREUR [ligne 31] : Instruction invalide !
ERREUR [ligne 32] : Instruction invalide !
ERREUR [ligne 33] : Instruction invalide !
ERREUR [ligne 34] : Instruction invalide !
ERREUR [ligne 35] : Instruction invalide !
ERREUR [ligne 36] : Instruction invalide !
ERREUR [ligne 37] : Instruction invalide !
ERREUR [ligne 38] : Instruction invalide !
ERREUR [ligne 39] : Instruction invalide !
ERREUR [ligne 40] : Instruction invalide !
ERREUR [ligne 41] : Instruction invalide !
ERREUR [ligne 42] : Instruction invalide !
ERREUR [ligne 43] : Instruction invalide !
ERREUR [ligne 44] : Instruction invalide !
ERREUR [ligne 45] : Instruction invalide !
ERREUR [ligne 46] : Instruction invalide !
ERREUR [ligne 47] : Instruction invalide !
ERREUR [ligne 48] : Instruction invalide !
ERREUR [ligne 49] : Instruction invalide !
ERREUR [ligne 50] : Instruction invalide !
ERREUR [ligne 51] : Instruction invalide !
ERREUR [ligne 52] : Instruction invalide !
ERREUR [ligne 53] : Instruction invalide !
ERREUR [ligne 54] : Instruction invalide !
ERREUR [ligne 55] : Instruction invalide !
ERREUR [ligne 56] : Instruction invalide !
ERREUR [ligne 57] : Instruction invalide !
ERREUR [ligne 58] : Instruction invalide !
ERREUR [ligne 59] : Instruction invalide !
ERREUR [ligne 60] : Instruction invalide !
ERREUR [ligne 61] : Instruction invalide !
ERREUR [ligne 62] : Instruction invalide !
ERREUR [ligne 63] : Instruction invalide !
ERREUR [ligne 64] : Instruction invalide !
ERREUR [ligne 65] : Instruction invalide !
ERREUR [ligne 66] : Instruction invalide !
ERREUR [ligne 67] : Instruction invalide !
ERREUR [ligne 68] : Instruction invalide !
ERREUR [ligne 69] : Instruction invalide !
ERREUR [ligne 70] : Instruction invalide !
ERREUR [ligne 71] : Instruction invalide !
ERREUR [ligne 72] : Instruction invalide !
ERREUR [ligne 73] : Instruction invalide !
ERREUR [ligne 74] : Instruction invalide !
ERREUR [ligne 75] : Instruction invalide !
ERREUR [ligne 76] : Instruction invalide !
ERREUR [ligne 77] : Instruction invalide !
ERREUR [ligne 78] : Instruction invalide !
ERREUR [ligne 79] : Instruction invalide !
ERREUR [ligne 80] : Instruction invalide !
ERREUR [ligne 81] : Instruction invalide !
ERREUR [ligne 82] : Instruction invalide !
ERREUR [ligne 83] : Instruction invalide !
ERREUR [ligne 84] : Instruction invalide !
ERREUR [ligne 85] : Instruction invalide !
ERREUR [ligne 86] : Instruction invalide !
ERREUR [ligne 87] : Instruction invalide !
ERREUR [ligne 88] : Instruction invalide !
ERREUR [ligne 89] : Instruction invalide !
ERREUR [ligne 90] : Instruction invalide !
ERREUR [ligne 91] : Instruction invalide !
ERREUR [ligne 92] : Instruction invalide !
ERREUR [ligne 93] : Instruction invalide !
ERREUR [ligne 94] : Instruction invalide !
ERREUR [ligne 95] : Instruction invalide !
ERREUR [ligne 96] : Instruction invalide !
ERREUR [ligne 97] : Instruction invalide !
ERREUR [ligne 98] : Instruction invalide !
ERREUR [ligne 99] : Instruction invalide !
ERREUR [ligne 100] : Instruction invalide !
ERREUR [ligne 101] : Instruction invalide !
ERREUR [ligne 102] : Instruction invalide !
ERREUR [ligne 103] : Instruction invalide !
ERREUR [ligne 104] : Instruction invalide !
ERREUR [ligne 105] : Instruction invalide !
ERREUR [ligne 106] : Instruction invalide !
ERREUR [ligne 107] : Instruction invalide !
ERREUR [ligne 108] : Instruction invalide !
ERREUR [ligne 109] : Instruction invalide !
ERREUR [ligne 110] : Instruction invalide !
ERREUR [ligne 111] : Instruction invalide !
ERREUR [ligne 112] : Instruction invalide !
ERREUR [ligne 113] : Instruction invalide !
ERREUR [ligne 114] : Instruction invalide !
ERREUR [ligne 115] : Instruction invalide !
ERREUR [ligne 116] : Instruction invalide !
ERREUR [ligne 117] : Instruction invalide !
ERREUR [ligne 118] : Instruction invalide !
ERREUR [ligne 119] : Instruction invalide !
ERREUR [ligne 120] : Instruction invalide !
ERREUR [ligne 121] : Instruction invalide !
ERREUR [ligne 122] : Instruction invalide !
ERREUR [ligne 123] : Instruction invalide !
ERREUR [ligne 124] : Instruction invalide !
ERREUR [ligne 125] : Instruction invalide !
ERREUR [ligne 126] : Instruction invalide !
ERREUR [ligne 127] : Instruction invalide !
ERREUR [ligne 128] : Instruction invalide !
ERREUR [ligne 129] : Instruction invalide !
ERREUR [ligne 130] : Instruction invalide !
ERREUR [ligne 131] : Instruction invalide !
ERREUR [ligne 132] : Instruction invalide !
ERREUR [ligne 133] : Instruction invalide !
ERREUR [ligne 134] : Instruction invalide !
ERREUR [ligne 135] : Instruction invalide !
ERREUR [ligne 136] : Instruction invalide !
ERREUR [ligne 137] : Instruction invalide !
ERREUR [ligne 138] : Instruction invalide !
ERREUR [ligne 139] : Instruction invalide !
ERREUR [ligne 140] : Instruction invalide !
ERREUR [ligne 141] : Instruction invalide !
ERREUR [ligne 142] : Instruction invalide !
ERREUR [ligne 143] : Instruction invalide !
ERREUR [ligne 144] : Instruction invalide !
ERREUR [ligne 145] : Instruction invalide !
ERREUR [ligne 146] : Instruction invalide !
ERREUR [ligne 147] : Instruction invalide !
ERREUR [ligne 148] : Instruction invalide !
ERREUR [ligne 149] : Instruction invalide !
ERREUR [ligne 150] : Instruction invalide !
ERREUR [ligne 151] : Instruction invalide !
ERREUR [ligne 152] : Instruction invalide !
ERREUR [ligne 153] : Instruction invalide !
ERREUR [ligne 154] : Instruction invalide !
ERREUR [ligne 155] : Instruction invalide !
ERREUR [ligne 156] : Instruction invalide !
ERREUR [ligne 157] : Instruction invalide !
ERREUR [ligne 158] : Instruction invalide !
ERREUR [ligne 159] : Instruction invalide !
ERREUR [ligne 160] : Instruction invalide !
ERREUR [ligne 161] : Instruction invalide !
ERREUR [ligne 162] : Instruction invalide !
ERREUR [ligne 163] : Instruction invalide !
ERREUR [ligne 164] : Instruction invalide !
ERREUR [ligne 165] : Instruction invalide !
ERREUR [ligne 166] : Instruction invalide !
ERREUR [ligne 167] : Instruction invalide !
ERREUR [ligne 168] : Instruction invalide !
ERREUR [ligne 169] : Instruction invalide !
ERREUR [ligne 170] : Instruction invalide !
ERREUR [ligne 171] : Instruction invalide !

  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
28 avril 2013 à 18:14:48

Je ne comprends pas pourquoi ca ne marche pas pourtant j'ai teste chez d'autre personne et ca marche, tente de le faire via la console ;)
  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
28 avril 2013 à 18:17:18

comment on fait
  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
28 avril 2013 à 18:18:28

Tu ne sais pas du tout te servir de la console ? (on peut continuer par MP pour eviter de flooder le post s'il te plait ?)
  • Partager sur Facebook
  • Partager sur Twitter
28 avril 2013 à 18:24:08

La différence entre un pseudo-code et un langage de programmation, c'est qu'en pseudo-code on a toute liberté pour écrire un peu n'importe quoi du moment qu'on se comprend.

Ce qui pemet

- d'exposer des idées dans les grandes lignes (donc incomplets) sans donner tous les détails

- de s'autoriser à sortir de la syntaxe prédéfinie quand ça simplifie la vie.

Donc à priori, si c'est compilable et que ça doit tourner, ce n'est plus du pseudo-code, mais un langage de programmation de plus.

  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
28 avril 2013 à 18:26:54

Oui mais il ne faut pas oublier que le but n'est pas de compiler, mais c'est possible s'il l'on execute le fichier donne en sortie.c ;) Le but est de "traduire" le pseudo-code en langage C mais cependant c'est vrai que l'idee de mettre les lignes et non detaille peut etre interresant a implementer
  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
1 mai 2013 à 11:28:46

Nouvelle version du Pseudo-C :

- Plus besoin de mettre de Fin Si a la fin de Si et de Sinon Si. Il suffit d'en mettre un a la fin d'un "bloc" de condition

- Le systeme de la boucle "Faire Tant Que" a ete completement change

Voila :)

  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
4 mai 2013 à 21:55:58

Salut a tous ! :)

A l'occasion du concour Space Invader, j'ai voulu en faire un code en Pseudo-C (merci a Le_BuG63 pour l'idee !), c'etait l'occasion d'implementer de nouvelle chose. Au programmme :

- les tableaux

- la gestion de l'aleatoire

- effectuer une pause de x secondes

- effacer l'ecran

L'aide et le dossier exemple ont ete mis a jour ainsi que le premier post ! :)

N'hesitez pas niveau avis.

Bonne journee/soiree

  • Partager sur Facebook
  • Partager sur Twitter