I++ ++i i-- --i aide svp

Résolu
FFCAST Messages postés 36 Date d'inscription jeudi 1 juillet 2004 Statut Membre Dernière intervention 2 novembre 2015 - 24 janv. 2012 à 14:30
FFCAST Messages postés 36 Date d'inscription jeudi 1 juillet 2004 Statut Membre Dernière intervention 2 novembre 2015 - 26 janv. 2012 à 17:14
bonjour je voudrai savoir si on peut ameliorer ceci


function PPI(var i: integer; const n: integer): integer; inline; overload;// ++I
function IPP(var i: integer; const n: integer): integer; inline; overload;// I++
function MMI(var i: integer; const n: integer): integer; inline; overload;// --I
function IMM(var i: integer; const n: integer): integer; inline; overload;// I--

function PPI(var i: integer): integer; inline; overload; // ++I
function IPP(var i: integer): integer; inline; overload; // I++
function MMI(var i: integer): integer; inline; overload; // --I
function IMM(var i: integer): integer; inline; overload; // I--

function PPI(var i: integer): integer; inline; // ++I
begin
inc(i);
result := i
end;

function PPI(var i: integer; const n: integer): integer; inline; overload;
// ++I
begin
inc(i, n);
result := i
end;

function IPP(var i: integer): integer; inline; // I++
begin
result := i;
inc(i)
end;

function IPP(var i: integer; const n: integer): integer; inline; overload;
// I++
begin
result := i;
inc(i, n)
end;

function MMI(var i: integer): integer; inline; // --I
begin
dec(i);
result := i
end;

function MMI(var i: integer; const n: integer): integer; inline; overload;
// --I
begin
dec(i, n);
result := i
end;

function IMM(var i: integer): integer; inline; // I--
begin
result := i;
dec(i)
end;

function IMM(var i: integer; const n: integer): integer; inline; overload;
// I--
begin
result := i;
dec(i, n)
end;

c'est pour me faire une lib
merci
cordialement
FFcast

11 réponses

dubois77 Messages postés 675 Date d'inscription jeudi 17 avril 2008 Statut Membre Dernière intervention 19 février 2019 14
25 janv. 2012 à 07:36
Salut
Tu peux déjà remplacer ces 2 functions par une seule
function PPI(var i: integer): integer; inline; // ++I
function PPI(var i: integer; const n: integer): integer; inline; overload;// ++I
:
function PPI(var i: integer; n:integer=1): integer;


on peut alors écrire :
a := 5;
b := ppi(a); ou b := ppi(a,3);

pareil pour mmi,ipp,imm

Dubois77
3
WhiteHippo Messages postés 1154 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 5 avril 2012 3
26 janv. 2012 à 17:06
tout ecrire sur 1 ligne c'est moche
Entièrement d'accord, mais ce n'est pas moi qui cherche à réduire le nombre de lignes ici...
Dernièrement, j'ai testé la réduction à l’extrême de 1200 lignes de code indenté et commenté en une petite centaine de lignes de code, histoire de voir si cela changeait quelque chose pour le compilateur (gain en temps de compilation par exemple). Résultat: un code devenu illisible et donc non maintenable pour une amélioration tellement minime qu'au final on n'y trouve aucun intérêt. Bref, une expérience instructive mais à ne surtout pas renouveler.

sur linux xD delphi c'est un peu à la traine
Delphi était avant tout un programme développé pour l'environnement Windows, avec une version pour environnement Linux dénommée Kylix.
Certes Kylix n'est plus d'actualité, mais il ne faudrait surtout pas oublier qu'on peut aisément le remplacer par FreePascal/Lazarus fonctionnel sous les 2 environnements.

Cordialement.[hr]"L'imagination est plus importante que le savoir." Albert Einstein
3
dubois77 Messages postés 675 Date d'inscription jeudi 17 avril 2008 Statut Membre Dernière intervention 19 février 2019 14
24 janv. 2012 à 17:32
Salut
Je ne comprends pas trop à quoi ça peut servir :

1- PPP
(
function PPI(var i: integer; const n: integer): integer; inline; overload;
// ++I
begin
inc(i, n);
result := i
end;
)
a = 5
b = PPI(a,1) -> b=6, a=6 ==> inc(a); b:=a;



2 : IPP
(
function IPP(var i: integer; const n: integer): integer; inline; overload;
// I++
begin
result := i;
inc(i, n)
end;
)
a = 5
b = IPP(a,1) -> b=5, a=6 ==> b:=a;inc(a);

??


Dubois77
0
FFCAST Messages postés 36 Date d'inscription jeudi 1 juillet 2004 Statut Membre Dernière intervention 2 novembre 2015
25 janv. 2012 à 00:26
Depuis peu, je programme en C et C++ et utiliser i++ et ++i diminue le nombre de lignes donc je m'y suis habitué.
Si on veux par exemple, désolé pour l'exemple, je n'avais pas d'idée, celà va afficher de 0 à 10 puis de 9 à 1 dans le memo.

function toto(i: integer): integer;
begin
// exemple
if i = 10 then
begin
Result := 0;
exit;
end;
form1.memo1.Lines.add(inttostr(i));
toto(ppi(i));
form1.memo1.lines.add(inttostr(i));
end;

procedure TForm1.Button1Click(Sender: TObject);
var
i: integer;
begin
toto (0);
end;

On peut s'apercevoir que je peux incrémenter directement dans ma fonction. Celà évite de faire 2 lignes supplémentaires. J'aimerais bien ensuite mettre cette fonction avec les templates pour que tous les types de variables soit gérés.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
FFCAST Messages postés 36 Date d'inscription jeudi 1 juillet 2004 Statut Membre Dernière intervention 2 novembre 2015
25 janv. 2012 à 08:14
ok merci il y à d'autre amelioration ???
0
WhiteHippo Messages postés 1154 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 5 avril 2012 3
26 janv. 2012 à 11:16
Bonjour

Oui, il y a d'autres améliorations... Supprimer l'appel de ces fonctions !

Le pascal ce n'est pas du C++; à chaque langage a ses caractéristiques auxquelles il faut s'adapter.

Quand à ton exemple, si on laisse de côté la gestion récursive de la fonction (une simple boucle itérative aurait été suffisante), en remplaçant :
toto(ppi(i));
par
inc(i); toto(i);
ou encore plus simplement par
toto(i+1);

tu n'augmenteras pas le nombre de lignes, juste le nombre d'instructions.

N.B. L'appel de "Inc" ou "Dec" sera toujours plus compréhensible par tous les développeurs pascal qui regarderont ton code, que l'appel à une fonction ppi, qui me parait être plus qu'obsolète.

Cordialement.[hr]"L'imagination est plus importante que le savoir." Albert Einstein
0
FFCAST Messages postés 36 Date d'inscription jeudi 1 juillet 2004 Statut Membre Dernière intervention 2 novembre 2015
26 janv. 2012 à 11:57
ok hummm mai j'ai des petit soussi exemple

while i < 10 do
Form1.Memo1.Lines.add(inttostr(i + 1));
//2 ligne mai boucle infini :-(
while i < 10 do
Form1.Memo1.Lines.add(inttostr(i));inc(i);
//2ligne mai marche pas car il manque begin et end logic ^^
while i < 10 do
begin
Form1.Memo1.Lines.add(inttostr(i));
inc(i);
end;
//marche mai 5 ligne :-s
while i < 10 do
Form1.Memo1.Lines.add((inttostr(IPP(i))));
//marche 2 ligne :-)

surtout que appres je voudrai maitre sa comme les templates en c++
pas encore trouver donc actuelement

function IPP(var i: integer; const n: integer = 1): integer; overload;
function IPP(var i: double; const n: integer = 1): double; overload;
function IPP(var i: Single; const n: integer = 1): Single; overload;
0
FFCAST Messages postés 36 Date d'inscription jeudi 1 juillet 2004 Statut Membre Dernière intervention 2 novembre 2015
26 janv. 2012 à 12:12
si une personne trouve aussi comment faire comme un #define en C le faire en delphi je suis preneur

pour faire par exemple

tutu : integer;

tutu++;
ce qui appele
ipp(tutu);

sa serait nikel ^^
0
WhiteHippo Messages postés 1154 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 5 avril 2012 3
26 janv. 2012 à 16:06
Bonjour

Tout en une seule ligne, avec l'initialisation de la variable en prime :
i := 0 ; while i < 10 do begin Form1.Memo1.Lines.add(inttostr(i + 1)); inc(i); end ;


Pourquoi vouloir refaire du C++ ???
Soit tu programmes en Delphi et tu oublies le C++ pour te concentrer sur le Pascal Objet du Delphi, soit le C++ convient mieux a tes besoins et dans ce cas tu oublies le Delphi

Les #define de macro n'ont pas d'équivalent en Delphi. Une macro est remplacée par une procédure ou une fonction. Par exemple la macro IsAcii devient
function isAscii(c:char) : boolean ;
begin
  Result := c in ['A'..'Z','a'..'z'] ;
end; 


Cordialement.[hr]"L'imagination est plus importante que le savoir." Albert Einstein
0
FFCAST Messages postés 36 Date d'inscription jeudi 1 juillet 2004 Statut Membre Dernière intervention 2 novembre 2015
26 janv. 2012 à 16:14
certe je prefaire delphi au C++ sa fait 10 ans cette année que j'ai commencer la prog avec delphi (faut souflé les bougie^^)
mai le C++ à quelque petit avantage plutot pratique je reste sur delphi mai j'aurais bien aimé avoir les pti truc en plus du C++ sur delphi

tout ecrire sur 1 ligne c'est moche xD meme si sa marche xD je fait du C et C++ c'est juste par ce que on apprend cela en cour et que sur linux xD delphi c'est un peu à la traine ^^
0
FFCAST Messages postés 36 Date d'inscription jeudi 1 juillet 2004 Statut Membre Dernière intervention 2 novembre 2015
26 janv. 2012 à 17:14
^^ quand je dit diminuer le nombre de ligne c'est pour evité comme lexemple au lieu de 2 ligne devoir ecrire 5 ligne chose qui marrive souven juste pour une histoire de incrementé et pour linux oui je connaissé l'histoir et sa marrive de utiliser Lazarus je suis pas tres fan^^ en tout qu'a merci pour t'est conseille ^^

cordialement
FFcast
0
Rejoignez-nous