Newsgroup: it.comp.programmare.win32
Titolo: notazione ungherese

ciao, spero di non essere OT...
in breve: programmando sotto windows in C/C++, mi sono imbattuto spesso
nel concetto di notazione ungherese di Somogyi, ma sia il Petzold (
programmazione API ) che il Ritcher ( programmare applicazioni per
Microsoft Windows ) ne fanno una piccolissima e insignificante
menzione...
io sto iniziando ora a riscrivere/correggere un vecchio applicativo e
vorrei iniziare, da adesso, ad usare la convenzione della notazione
ungherese.
ad ogni modo da d'ora in avanti la vorrei utilizzare, sia per correggere
i vecchi che per i nuovi..
sui motori di ricerca non ho trovato un tutorial su questa notazione; mi
servirebbe la lista completa dei prefissi da anteporre davanti al nome
delle variabili ma niente, la ricerca e' stata infruttuosa (con google,
altavista, virgilio... ) dove posso trovarla ???
se qualcuno se l'ha stampata, puo' mandarmela, o magari mi puo' dire
qual'e' il sito dove scaricarla???
per chi mi volesse spedire la documentazione, il mio indirizzo e':
vbst...@NOSPAMtiscali.it
Ciao a tutti e grazie in anticipo!!!
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 delle variabili ma niente, la ricerca e' stata infruttuosa
Brevemente:
b -> booleano
c -> byte, carattere
w -> word
dw -> dword
sz -> stringa C (zero-terminated)
p -> puntatore
i -> intero "generico", indice
Per quanto mi riguarda, io ormai tipicamente uso soltanto il b perche`
il C++ non dispone di un tipo booleano nativo, quindi l'assegnamento da
intero a booleano o viceversa non e` segnalato nemmeno come warning.
--
Lorenzo

 i vecchi che per i nuovi..
Ti darò la mia opinione su tale notazione:
a mio avviso crea + problemi che altro se ne fai un uso
intensivo...lascia in notazione ungherese i parametri delle funzioni
CALLBACK e WINAPI ma il resto tienilo come sei abituato :) Ci vuole +
tempo a capire di che tipo è una variabile e cosa fa con la notazione
ungherese che senza... 
Il mio è un parere personale e magari ci sono team di sviluppo che
adottano tale standard per non fare casino tra nomenclature differenti :)
-- 
Rhymes
rhy...@myself.com
" ride or die "

 intero a booleano o viceversa non e` segnalato nemmeno come warning.
Certo che esiste il bool. Da quando è uscito lo standard ISO.

 ha scritto nel messaggio
news:sF4R8.77886$5i1.2...@news2.tin.it...

Il bool non esiste: in C++ si tratta di un char forzato ad assumere valori 1
o 0.
Questo dipende dai limiti della macchina, dato che non puo' alloccare
fisicamente meno
bit di quelli di un char.
Potete tranquillamente usarlo, vero, ma in fondo in fondo e' solo uno
spreco.
prendete sti due esempi:
//------------------------------------------- Esempio 1
char Funzione(int a, int b){
    //quello che mi serve
}
...
if(Funzione(1,2)){
    //istruzioni
}else{
    //istruzioni
}
//--------------------------------- Esempio 2
bool Funzione(int a,int b){
    //istruzioni
}
...
if(Funzione(1,2)){
    //istruzioni
}else{
    //istruzioni
}
//---------------------------------
La differenza? Il primo e' molto + vantaggioso:
non siete obbligati a far tornare vero o falso, e potete gestire piu'
condizioni.
Il secondo non offre questa possibilita', e potrebbe essere necessario
inventarsi vari lacchezzi e cose strane per beccare un qualsiasi errore
specifico.
Joshi

 specifico.
Tutto vero, comunque io uso dei normalissimi interi da 32 bit.
Alla CPU non fa molto bene alternare istruzioni su byte e dword...comunque
penso abbiano risolto gli stalli che avvenivano sulle vecchie CPU (386/486).
Inoltre, probabilmente (dipende dall'implementazione del compilatore) il
codice eseguirà tutto a 32 bit e ritornerà una dword in EAX di cui
utilizzerà solo i primi 8 bit. Tanto vale usare tutti i 32 bit e fargli
risparmiare tutta sta fatica...
I char sono solo utili all'interno di strutture, array, ecc...per il resto
l'allineamento è molto più importante. Molto spesso dei programmatori usano
dei char per risparmiare spazio, non sapendo che in molti casi il
compilatore li padda a dword per allinearli...
Kiuhnm

 il C++ non dispone di un tipo booleano nativo
False :)
Il C++ possiede il tipo booleano nativo: bool.


 o 0.
Ribadisco che in C++ il tipo "bool" esiste.


 altavista, virgilio... ) dove posso trovarla ???
beh, puoi trovare la definizione originale (qlla di Charles Simonyi) qui:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnvsgen/htm
l/hunganotat.asp
spero di averti aiutato.
ciao,
A.
UGIdotNET - 
http://www.ugidotnet.org

 Ribadisco che in C++ il tipo "bool" esiste.
Sei sicuro che si tratti di ANSI C++?
Kiuhnm

Sei sicuro che si tratti di ANSI C++?
Sě esiste un tipo booleano siai n C++ sia in C99.
-- 
Marco Barisione (ICQ 84277092)

 ISO.
Esiste ma e` inutile, e` poco piu` di un typedef. La vera forza del bool
negli altri linguaggi e` che agli occhi del programmatore e` un tipo che
non ha niente a che vedere con i numeri interi, quindi gli assegnamenti
da bool a interi sono semplicemente errati (come dovrebbe essere, vedi
Java e tanti altri linguaggi nemmeno tanto moderni).
Tutt'ora puoi scrivere qualcosa del genere in C++ senza che venga
segnalato come errore. Qualche compilatore "illuminato" probabilmente ti
da` il warning:
int x;
x = a==b;
--
Lorenzo

 Sě esiste un tipo booleano siai n C++ sia in C99.
Il fatto che il compilatore riconosca il tipo bool non ammette che sia un
vero e proprio tipo,anzi: piu' di una volta chi fa dei programmi portabili
in C, prevendento che possano essere compilati su un compilatore C++, mette
questa istruzione:
#ifndef cplusplus_               << Se non ho sbagliato define..... :-p
typedef char bool;
#endif
risolvendo 10.000 problemi.
Penso non sia necessario aggiungere commenti.
Joshi

 č quantomeno saggio.
Appunto, quindi in molti casi č meglio usare direttamente una
dword...comunque se non sbaglio č #pragma pack(bytes) [almeno per il Visual
C/C++].
Di solito uso #pragma pack(1) quando non voglio assolutamente che il
compilatore metta le mani nelle mie strutture.
Ciao, Kiuhnm


Ciao,
zello

 sei comunque fuori dalle pipelines, temo.
La penalità si dovrebbe avere solo nel caso in cui venga modificato un
registro e in seguito utilizzato come base o index (AGI stall - 486/586/???)
Per es:
su 486 e 586:
    mov    eax, 0
    mov    [edx+eax*4], eax
su 586 anche:
    mov    eax, 0
    add    ebx, 2
    dec    ecx
    mov    [eax], ecx
poichè la pipeline è più lunga...
Con gli altri proc. non so.
Se bastasse:
    mov    eax, 0
    mov    [ebp], eax
saremmo nei guai :-)))
[ci dovrebbero essere varie pipeline...quindi lo stallo non è così
frequente. In particolare mi pare che il Pentium III usi i micro-op.
Sbaglio?]
I miei ricordi comunque risalgono a 486/586 poi con l'uscita di CPU
compatibili ho un po' lasciato perdere...
Ciao, Kiuhnm

> #ifndef cplusplus_               << Se non ho sbagliato define.....
:-p
Mi spiace.
#ifndef __cplusplus

 wrote in message
news:goJR8.372$Jj7....@news1.tin.it...

Guarda che non č morto nessuno!!!
Kiuhnm

 Kiuhnm
Scusa ho dimenticato la faccina stavo solo scherzando... Aspe mi
rifaccio:
#include <iostream>
using namespace std;
int main()
{
    for (int i = 0; i < 10000; i++)
        cout << ";-)" << endl;
    return 0;
}

 wrote in message
news:UE3S8.5258$vm5.2...@news2.tin.it...

Scusa: l'ho dimenticata anch'io!
Rifaccio:
jmp    code:
smile    db    ';-)', 13, 10, 0
code:
mov    ecx, 10000
_loop:
push    OFFSET32 smile
call    _printstr
loop    _loop
ret
Ciao, Kiuhnm