I++ ++i i-- --i aide svp [Résolu]

FFCAST 37 Messages postés jeudi 1 juillet 2004Date d'inscription 2 novembre 2015 Dernière intervention - 24 janv. 2012 à 14:30 - Dernière réponse : FFCAST 37 Messages postés jeudi 1 juillet 2004Date d'inscription 2 novembre 2015 Dernière intervention
- 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
Afficher la suite 

Votre réponse

11 réponses

Meilleure réponse
dubois77 691 Messages postés jeudi 17 avril 2008Date d'inscription 19 juin 2018 Dernière intervention - 25 janv. 2012 à 07:36
3
Merci
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

Merci dubois77 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 119 internautes ce mois-ci

Commenter la réponse de dubois77
Meilleure réponse
WhiteHippo 1270 Messages postés samedi 14 août 2004Date d'inscription 5 avril 2012 Dernière intervention - 26 janv. 2012 à 17:06
3
Merci
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

Merci WhiteHippo 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 119 internautes ce mois-ci

Commenter la réponse de WhiteHippo
dubois77 691 Messages postés jeudi 17 avril 2008Date d'inscription 19 juin 2018 Dernière intervention - 24 janv. 2012 à 17:32
0
Merci
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
Commenter la réponse de dubois77
FFCAST 37 Messages postés jeudi 1 juillet 2004Date d'inscription 2 novembre 2015 Dernière intervention - 25 janv. 2012 à 00:26
0
Merci
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.
Commenter la réponse de FFCAST
FFCAST 37 Messages postés jeudi 1 juillet 2004Date d'inscription 2 novembre 2015 Dernière intervention - 25 janv. 2012 à 08:14
0
Merci
ok merci il y à d'autre amelioration ???
Commenter la réponse de FFCAST
WhiteHippo 1270 Messages postés samedi 14 août 2004Date d'inscription 5 avril 2012 Dernière intervention - 26 janv. 2012 à 11:16
0
Merci
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
Commenter la réponse de WhiteHippo
FFCAST 37 Messages postés jeudi 1 juillet 2004Date d'inscription 2 novembre 2015 Dernière intervention - 26 janv. 2012 à 11:57
0
Merci
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;
Commenter la réponse de FFCAST
FFCAST 37 Messages postés jeudi 1 juillet 2004Date d'inscription 2 novembre 2015 Dernière intervention - 26 janv. 2012 à 12:12
0
Merci
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 ^^
Commenter la réponse de FFCAST
WhiteHippo 1270 Messages postés samedi 14 août 2004Date d'inscription 5 avril 2012 Dernière intervention - 26 janv. 2012 à 16:06
0
Merci
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
Commenter la réponse de WhiteHippo
FFCAST 37 Messages postés jeudi 1 juillet 2004Date d'inscription 2 novembre 2015 Dernière intervention - 26 janv. 2012 à 16:14
0
Merci
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 ^^
Commenter la réponse de FFCAST
FFCAST 37 Messages postés jeudi 1 juillet 2004Date d'inscription 2 novembre 2015 Dernière intervention - 26 janv. 2012 à 17:14
0
Merci
^^ 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
Commenter la réponse de FFCAST

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.