bonjour,
pouvez-vous me dire si on peut appeler une procedure dans une autre procedure!!
merci:ccool:
Version imprimable
bonjour,
pouvez-vous me dire si on peut appeler une procedure dans une autre procedure!!
merci:ccool:
Koe,
La vraie question est : pourquoi penses-tu que ce pourrait être impossible ?
Et même en admettant que tu te poses la question, le moindre petit test t'aurait déjà donné la réponse. :)
parceque je l'ai déja utilisé dans mon programme mais sa ne fonctionne pas!!!
ce que je veux c'est utiliser le resultat d'une procedure dans une autre :)
j'atend votre réponse...
merci
Poste ton code sinon on peut pas deviner d'où vient l'erreur.
Si tu reçois le message d'erreur "Unknown identifier", c'est que la procédure appelée est définie(dans le code) après la procédure qui l'appelle.
Dans un tel cas, il faut la définir avant de l'appeler.
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109 program securite; type mat=array[1..2,1..2] of integer; tabl=array[1..2]of integer; tablr=array[1..2] of real; matr=array[1..2,1..2]of real; procedure chiffrement(t:mat; msg:string; var r:tabl); var w:tabl; i,k:integer; begin for i:=1 to length(msg) do if (i mod 2)=1 then begin begin w[1]:=dor(msg[i]); w[2]:=dor(msg[i+1]); begin r[k]:=0; begin r[1]:=(t[1,1]*w[1]+t[1,2]*w[2]) mod 26; r[2]:=(t[2,1]*w[1]+t[2,2]*w[2]) mod 26; end; end; end; for k:=1 to 2 do writeln('r[k]:',r[k]); end; end; procedure dechiffrement(t:mat;x:string;r:tabl;var s:tablr); var p,k:integer; e:tabl; b:real; a:matr; begin b:=(t[1,1]*t[2,2]-t[1,2]*t[2,1]); b:=1/real(b); begin a[1,1]:=b*t[2,2]; a[1,2]:=b*-t[1,2]; a[2,1]:=b*-t[2,1]; a[2,2]:=b*t[1,1]; end; begin s[1]:=trunc(a[1,1]*r[1]+a[1,2]*r[2])mod 26; s[2]:=trunc(a[2,1]*r[1]+a[2,2]*r[2])mod 26; for k:=1 to 2 do writeln('s[k]:',(s[k] )); end; end; var i,j,k,p,q,y:integer; b:real; x:string; s:tablr; a:array[1..2,1..2]of real; T:mat; R:tabl; e:array[1..100]of integer; begin begin writeln('--------------------------------------'); writeln('| pour que vous vous sentez proteger |'); writeln('--------------------------------------'); end; begin writeln('tapez 1 pour entrer un message'); writeln('tapez 2 si vous voulez le dechiffrer'); writeln('tapez 4 pour quitter le programme'); end; repeat writeln('entrer une instruction a execute'); readln(q); begin if q=1 then begin writeln('veuillez entrer votre msg sans espace'); readln(x); begin writeln('choisir la cle de chiffrement T[k,y]'); for k:=1 to 2 do for y:=1 to 2 do readln(T[k][y]); begin chiffrement(T,x,R); writeln; end; end; end; if q=2 then dechiffrement(T,x,R,S); end; until q=4; begin for i:=1 to length(x) do writeln('votre msg dechiffre est:',x[i] ); readln; for k:=1 to 4 do writeln('votre msg chiffre est:',r[k]); readln; end; end.
dor est une fonction qui chiffre le message c'est-à-dire si 'a' alors '1'...etc je l'ai déclaré mais j'ai oublié de la mettre ici
ce serait sympa de votre de part si vous jettez un coup d'oeil sur mon code
merci!!!!!
Salut,
Le mot-clé forward permet à une procédure ou une fonction d'être considérée comme telle et d'être déclarée même sans boc de code associé. On appelle cela une déclaration forward.
Le bloc de code correspondant peut lui être associé plus loin dans le code source. Dans la déclaration descriptive.
Qu'est-ce qui peut bien t'empêcher de placer la déclaration complète de la fonction avant la procedure chiffrrement ?Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 {** Déclaration forward Le compilateur doit savoir qu'il s'agit d'une fonction Il doit connaitre la liste des paramètres ainsi que le type de resultat } function dor(const c:char):Integer;forward; procedure chiffrement(t:mat; msg:string; var r:tabl); begin w[1]:=dor(msg[i]); w[2]:=dor(msg[i+1]); { i va jusqu'à length(msg) donc il y a un souci } end; {** Déclaration descriptive La liste des paramètres et le type de résultat sont désormais facultatifs } function dor; begin { Code ici } end;