begin process at 2008 07 25 01:55:24
1 216 043 membres
27 nouveaux aujourd'hui
14 180 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : "traduction" [ Divers / Débutant(e) ] (Inferno8)

"traduction" le 15/11/2007 14:30:35

Inferno8
Bonjour tout le monde Je suis en stage pour l'AFPA pour être développeur informatique et mon maitre de stage m'a donné un ch'tit exercice : il m'a donné un programme qui prmet d'encrypter une chaîne de caractère et je dois faire la marche inverse. Il m'a donné le programme en foxpro et je dois la traduire en w-langage. le programme c'est *!***************************************************************** *! *! Function: ENCODE *! *!***************************************************************** FUNCTION encode PARAMETER xsource,xrecno PRIVATE ALL EXCEPT pubclebase *==== Retourne la chaîne encodée. * Utilise la variable publique PubCleBase * : Chaîne à encoder * : si vrai, le nø d'enregistrement influe * sur la clé. *==== production de la clé de base * PUBLIQUE si nécessaire IF TYPE("PUBCLEBASE")="U" DO mkclebase ENDIF *==== Calcul de la rotation à appliquer * à la clé de base x_rotat=ASC(LEFT(xsource,1))+IIF(xrecno,RECNO(),0) *==== production de la clé d'encodage IF x_rotat=0 x_cleencod=pubclebase ELSE x_cleencod=RIGHT(pubclebase,x_rotat); +LEFT(pubclebase,255-x_rotat) ENDIF *==== Encoder la fin de la chaîne x_fin=SYS(15,x_cleencod,SUBSTR(xsource,2)) *==== Encoder le premier caractère * checksum sur la fin de clé x_checkfin=SYS(2007,x_fin) * encodage premier caractère x_premcar=SUBSTR(xsource,1,1) x_premasc=MOD(ASC(x_premcar)+VAL(x_checkfin)+IIF(xrecno,RECNO(),0),255) x_debut=CHR(x_premasc) *==== concaténer x_retour=x_debut+x_fin RETURN x_retour *=========== EOFUNC Decode ===========* *!***************************************************************** *! *! Function: DECODE *! *!***************************************************************** FUNCTION decode PARAMETER xsource,xrecno PRIVATE ALL EXCEPT pubclebase *==== Retourne la chaîne décodée. * Utilise la variable publique PubCleBase * : Chaîne à décoder * : si vrai, le nø d'enregistrement influe * sur la clé. *==== production de la clé de base * si nécessaire IF TYPE("PUBCLEBASE")="U" DO mkclebase ENDIF *==== décoder le premier caractére * somme de contrôle de la fin de chaîne x_fincodee=SUBSTR(xsource,2) x_ckval=SYS(2007,x_fincodee) * déplacement appliqué pour encoder le premier caractère x_deplace=MOD(VAL(x_ckval)+IIF(xrecno,RECNO(),0),255) * décoder le premier caractère x_debutcode=LEFT(xsource,1) x_ascclair=ASC(x_debutcode)-x_deplace IF x_ascclair<0 x_ascclair=x_ascclair+255 ENDIF x_debutclair=CHR(x_ascclair) *==== production de la clé utilisée * Rotation utilisée pour produire la clé d'encodage x_rotat=MOD(ASC(x_debutclair)+IIF(xrecno,RECNO(),0),255) *==== production de la clé d'encodage IF x_rotat=0 x_clealler=pubclebase ELSE x_clealler=RIGHT(pubclebase,x_rotat); +LEFT(pubclebase,255-x_rotat) ENDIF *==== Clé inverse x_cledecod=mkcleinverse(x_clealler) *==== Décoder la fin de chaine x_finclair=SYS(15,x_cledecod,x_fincodee) *==== concaténer x_retour=x_debutclair+x_finclair RETURN x_retour *=========== EOFUNC Decode ===========* es-ce que quelqu'un pourrait m'aider SVP? Merci. Minna Oyasuminassaï

Re : "traduction" le 16/11/2007 00:46:31

Mike Gagnon
Membre Club
1.  Qu'est-ce que le 'w-langage', je suis du Canada, et ai jamais entendu parlé de ce langage.
2. Si vous connaissez ce langage, jusqu'ou vous etes vous rendu en fait de traduction, je dois imaginé que vous avez pus faire un bout vous meme?


Mike Gagnon

Re : "traduction" le 16/11/2007 09:41:22

Inferno8
le W-Langage c'est un langage utilisé par le logiciel windev.
Il est assez simple à comprendre bien que je ne comprenne pas certaines fonctions
Son interface est en francais et, dans l'aide, donne la correspondance cdes commandes en anglais.
Je vous envoie les programme d'encryptage en w-langage et, si vous y arrivez, donnez moi la marche inverse (je ne vous envoie évidemment pas la clé faites-en une autre il faut qu'elle fasse 255 caractères)


PROCEDURE DecodeNom(x_source)

fd est un entier = fOuvre("key.txt", foLecture)

SI (fd < 0) ALORS
   
    RENVOYER(ErreurInfo)
   
SINON
   
    pubclebase est une chaîne = fLit(fd, 255)
    fFerme(fd)
   
    x_debutcode est un caractère = Gauche(x_source, 1)
    x_fincodee est une chaîne = Milieu(x_source, 2)
    x_ckval est un entier = Sys2007(x_fincodee)
    x_deplace est entier = modulo(x_ckval, 255)
    x_ascclair est entier = Asc(x_debutcode) - x_deplace
    SI (x_ascclair < 0) ALORS x_ascclair = x_ascclair + 255
    x_debutclair est un caractère = Caract(x_ascclair)
    x_rotat est un entier = modulo(Asc(x_debutclair), 255)
   
    x_clealler est une chaîne
   
    SI (x_rotat = 0) ALORS
        x_clealler= pubclebase
    SINON
        x_clealler = Droite(pubclebase, x_rotat) + Gauche(pubclebase, 255 - x_rotat)
    FIN
   
    x_cledecod est une chaîne = MkCleInverse(x_clealler)
    x_finclair est une chaîne = Sys15(x_cledecod, x_fincodee)
   
    RENVOYER(x_debutclair + x_finclair)
FIN

______________________________________________________________


PROCEDURE MkCleInverse(clealler)

x_tab est un tableau de 255 caractères
cleinverse est une chaîne
x_car est un caractère
x_i est un entier

POUR x_i = 1 A 255
   
    x_car = Milieu(clealler, x_i, 1)
    x_tab[Asc(x_car)] = Caract(x_i)
FIN
_____________________________________________________________
cleinverse=""

POUR x_i = 1 A 255
    cleinverse = cleinverse + x_tab[x_i]
FIN
RENVOYER(cleinverse)


_____________________________________________________________

PROCEDURE Sys15(cledecod, fincodee)

s est une chaîne
i,j est un entier

s = ""

POUR i = 1 A Taille(fincodee)
   
    j = Asc(Milieu(fincodee, i, 1))
    s = s + Milieu(cledecod, j, 1)
FIN

RENVOYER(s)


Pas évident mais pouvez-vous m'aider à trouver la procédure inverse SVP?
.
Merci

Minna Oyasuminassaï


Re : "traduction" le 16/11/2007 13:20:18

Mike Gagnon
Membre Club
Puis-je vous poser une question? En tant qu'étudiant en informatique, qu'est-ce que vous étudié?
Certainment pas la programmation, puisque vous nous demandez de faire le travail pour vous. Est-ce votre maitre de stage vous a demandé de trouver une solution par n'importe quel moyen, incluant poser la question sur des sites internet, ou si votre maitre de stage  préfèrerait que vous essayé vous meme de concevoir cette traduction. Et que va t'il advenir de votre futur en tant que programmeur? Allez vous toujours dépendre des reponse sur l'internet pour vous batir une carriere en informatique?
Je m'excuse d'etre si abrut, mais lorsqu'il s'agit d'étudiant, je ne crois pas que ce soit très éducatif de vous fournir une solution toutes 'cuite', pour que vous obteniez des bonnes marques.

Mike Gagnon

Re : "traduction" le 16/11/2007 13:58:18

MichelAtoutFox
Membre Club

J'approuve completement Mike !

Que crois-tu que je vais faire de ton CV, si tu me l'envoie un jour pour un stage en entreprise? poubelle, directement, et sans réponse!

Internet et les forums sont des moyens extraordinaires de documentation, d'échange et de partage de savoirs. Mais ça n'a d'intéret que si c'est TOI qui fait, TOI qui réfléchit.

voilà une aide pour faire ton exercice:
la documentation complete de Visual FoxPro est disponible ici: [ Lien ]

commence par reconstituer l'algo du code qu'on t'a donné en VFP, puis essaye de faire un tableau de correspondance entre les mots-clés syntaxiques utilisés dans le code VFP et leur équivalent en w-langage.


Re : "traduction" le 16/11/2007 15:20:28

Inferno8
Excusez-moi si ma formulation est confuse...

Je souhaiterais une aide, un coup de pouce, pas la solution à mon problème.

Minna Oyasuminassaï


Re : "traduction" le 16/11/2007 18:24:15

Mike Gagnon
Membre Club
>>Excusez-moi si ma formulation est confuse...

>>si vous y arrivez, donnez moi la marche inverse

Ok j'ai mal compris alors la demande ci-haut

Mike Gagnon

Re : "traduction" le 19/11/2007 10:14:29

Inferno8
Désolé j'ai trés mal formulé ma demande.
Ceci dit, pouvez-vous me dire la signification de la fonction <xRecNo> SVP?
et la formulation

 <xRecNo>    : si vrai, le nø d'enregistrement influe sur la clé.

Merci de votre aide

Minna Oyasuminassaï


Re : "traduction" le 19/11/2007 12:39:16

Mike Gagnon
Membre Club
xRecno semble etre un parametre de la fonction, Soit .T. ou .F.

FUNCTION encode
PARAMETER xsource,xrecno

et plus bas on verifie si il est vrai ou faux. Si il est mit à .T., on incorpore le numéro de record dans la fonction d'encryptage, sinon on utilise 0

x_rotat=ASC(LEFT(xsource,1))+IIF(xrecno,RECNO(),0)


Mike Gagnon

Re : "traduction" le 19/11/2007 12:54:03

Mike Gagnon
Membre Club
Petit commentaire pour vote maitre de stage, dites-lui de reviser la façon de nommer ses variables. Elle/Il ne joues pas dans les 'règles de l'art'.
Typiquement si on s'attend à recevoir une variable .T. ou .F., la premiere lettre de la variable devrait etre un 'l' (lettre L minuscule) et non un 'x', comme cela simplement en regardant la variable on sait à quoi s'attendre.

Mike Gagnon


[Page 1 Page 2]
Classé sous : clé, chaîne, pubclebase, rotat, xsource

Participer à cet échange

Pub



Appels d'offres

Creation portail video
Budget : 3 000€
Site de e-commerce
Budget : 5 000€
Demande de devis pour ...
Budget : 7 000€

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS