Visualizza post

Questa sezione ti permette di visualizzare tutti i post inviati da questo utente. N.B: puoi vedere solo i post relativi alle aree dove hai l'accesso.


Post - Z80Fan

Pagine: 1 ... 81 82 [83] 84
1231
Linguaggi di programmazione e scripting / Re: [C] Morphos Opengl
« il: 19 Giugno 2011, 00:11:16 »
Citazione da: "TheKaneB"
EDIT: avevo scritto una boiata perchè non avevo capito subito il tuo esempio... comunque, ecco la mia risposta corretta:
Tranquillo, anche io scrivendo questa risposta stavo per sparare una cazzata assoluta :lol:
Citazione
Nel tuo caso il picking è fatto all'interno del World Space, e il gioco segue una geometria semplice basata su una matrice bidimensionale. Nel tuo caso quindi si rimane a livello di Model.
Qui si parla invece di prendere una scena 3D assolutamente generica e trovare quell'oggetto che sta sotto il pixel desiderato. In questo caso bisogna risalire al model partendo dalla view. Sono problemi del tutto differenti. ;)
Si, ora che ho riflettuto bene la differenza è sostanziale...

Non mi viene in mente altro, mi sa che le uniche soluzioni sono quelle. :(

1232
Linguaggi di programmazione e scripting / Re: [C] Morphos Opengl
« il: 18 Giugno 2011, 15:31:00 »
Aspetta, forse c'è una soluzione più semplice, in base al tipo di lavoro che deve fare:
ad esempio, sto scrivendo una specie di clone di Minecraft, e dato che il mondo è formato da cubi regolari, partendo dalla posizione del giocatore e dalla direzione in cui guarda, posso (con qualche algoritmo di rasterizzazione) trovare facilmente tutti i cubi presenti sulla linea dello sguardo.

Bisognerebbe conoscere più in dettaglio lo scopo del programma, per trovare eventuali semplificazioni.

1233
Sembra proprio un linguaggio interessante, mi sottoscrivo!

1234
Tablet, PDA, smartPhone / Re: LG Optimus Dual?
« il: 15 Giugno 2011, 14:58:19 »
Citazione da: "TheKaneB"
come macchina di sviluppo consiglio un modello di fascia media, perchè così ti allinei alle specifiche di una buona parte degli utenti :-)
No no, non ho la necessità di sviluppare applicazioni da pubblicare sul market o roba del genere; volevo solo usarlo come giocattolone per nerd :lol:

Anche il Desire HD è un bel terminale, ma, non so, forse il display da 4.3'' lo rende troppo grosso; dovrei vederlo dal vivo.

Cmq grazie per le risposte, leggendo su internet ho trovato molti pareri positivi, quindi penso di andare verso l'LG, ora devo solo fare una prova un po' più seria dal vivo; poi non si sa, magari mi innamoro di un Htc! :D

1235
Presentati / Re: iscritto
« il: 15 Giugno 2011, 14:51:31 »
Ciao!

1236
Suggerimenti e proposte. / Re: Syntax highlight
« il: 15 Giugno 2011, 14:14:49 »
Posso segnalare GeSHi che è un buon evidenziatore anche fatto apposta per phpBB.

Io lo uso attraverso wp-syntax per il mio blog; è veramente comodo e personalizzabile e supporta moltissimi linguaggi (tra cui anche vari assembly).

1237
Io ho una enorme collezione di emulatori di computer '70-'80 ... a momenti ne ho uno per ogni computer prodotto :lol:

Non posso però dire che li uso "quotidianamente"...

1238
Tablet, PDA, smartPhone / Re: LG Optimus Dual?
« il: 14 Giugno 2011, 21:54:48 »
Citazione da: "TheKaneB"
se per hardware intendi CPU & Co. è un mostro... ma se intendi schermo, batteria, scocca, ecc... è uno smartphone di media qualità.

Io, conoscendo le mie specifiche esigenze, sacrificherei volentieri uno dei due Core per avere una scocca in metallo e una batteria più decente. Ad esempio un bel HTC :-)
Lo scenario d'uso non è troppo estremo: già il telefono lo uso poco. ;)
Cmq anche se si rivelasse non proprio all'altezza, vuol dire che lo userò come costoso supporto di sviluppo; il mio fido Motorola L7 funziona ancora egregiamente :D

Un HTC era la mia seconda scelta: che modello consiglieresti/hai esperienza?

1239
Linguaggi di programmazione e scripting / Re: Valutare espressioni
« il: 14 Giugno 2011, 21:42:04 »
Citazione da: "TheKaneB"
finchè non metti le variabili, non puoi fare nemmeno un algoritmo, ne sei consapevole giusto? :-D
Ho detto che non ci sono, non che non ci saranno mai. ;)
Ho già pensato una piccola modifica che mi permette di usare le funzioni...

Citazione
per la memoria dinamica, implementati una banale "malloc"... ci sono decine di algoritmi già pronti che richiedono solo un buffer di memoria, quindi un puntatore e un size, da utilizzare come arena per le allocazioni. Se proprio non vuoi sbatterti a fartelo da zero ci sono già centinaia di implementazioni precotte in giro :-)
L'algoritmo non è un problema: lo ho già implementato nell'OS :)

1240
Linguaggi di programmazione e scripting / Re: Valutare espressioni
« il: 14 Giugno 2011, 21:10:14 »
Citazione da: "cdimauro"
Si possono utilizzare anche sullo z80 definendo un'area di memoria allo scopo. Esattamente come sul mio valutatore di espressioni per il 68000, dove avevo allocato uno stack di una precisa dimensione.

Semplicemente metti un tetto al massimo numero di nodi utilizzabili. ;)
Bene, ho capito cosa intendi.

Cmq ho già questo algoritmo che funziona bene, non mi serve manco la ricorsione...

Implemento questo intanto, giusto per mostrare qualcosa all'esame, al massimo non lo presenterò come "Interprete Basic" ma come "calcolatrice"  :lol:

Oppure posso montare il mio famoso mergesort ;)

1241
Tablet, PDA, smartPhone / Re: LG Optimus Dual?
« il: 14 Giugno 2011, 20:22:40 »
Bene allora!  :mrgreen:

1242
Linguaggi di programmazione e scripting / Re: Valutare espressioni
« il: 14 Giugno 2011, 20:21:33 »
Si ma sullo Z80 non ho la memoria dinamica per fare gli alberi!  :lol:

Citazione da: "cdimauro"
Soltanto un suggerimento: quello non + C++, ma C. Se vuoi usare il C++, cerca di sfruttare le caratteristiche del linguaggio, e non fermarti al classico cout. ;)
Già usare cout lo rende C++; cmq, se avessi dovuto scriverlo per usarlo in C++, sarebbe stato diverso, ma lo ho fatto solo per testare l'idea prima di tradurlo in asm. ;)

1243
Linguaggi di programmazione e scripting / Re: Valutare espressioni
« il: 14 Giugno 2011, 19:34:22 »
Si le variabili ancora non ci sono, ne sono consapevole.

Informazioni sul parsing ad albero e ricorsivo ne ho trovate parecchie in rete, ma questa mia versione ha il vantaggio di essere lineare, passa la stringa di input una volta sola, e non ha bisogno della ricorsione. Mi è utile visto anche che la devo mettere sullo Z80, e che devo fare un interprete.

Cmq grazie per l'aiuto :)

1244
Linguaggi di programmazione e scripting / Valutare espressioni
« il: 14 Giugno 2011, 17:46:25 »
Per il mio computer Z80 stavo cominciando a scrivere un interprete BASIC; sono sulla buona strada, ma ho capito che non potevo andare molto avanti senza avere un valutatore di espressioni, mi spiego meglio: io gli do 2+2 e lui mi ritorna 4 :D

Son venuto fuori con questo algoritmo, che fa uso di due stack (uno per i valori e uno per gli operatori), e ho pure una versione funzionante in C++:
Codice: [Seleziona]
1  pusha 0 in stackNum
10 legge numero n
11 se non è stato letto un numero ma un operatore (incluse le parentesi), assegna x=n e vai a 40
15 push n su stack num
20 legge operatore x (se è finita la stringa, goto 60)
30 se la precedenza di x è minore o uguale a quella dell'operatore precedente (top dello stack) (nessun operatore precedente = precedenza minima)
allora esegui operazioni precedenti finchè la priorità dell'operatore sullo stack è maggiore di x o finchè non si
incontra una parentesi aperta, in tal caso la si toglie
40 push x su stack op (tranne nel caso in cui fosse stata una parentesi chiusa)
50 se non è finita la stringa, goto 10
60 esegui le operazioni mancanti nello stack op
70 il top dello stack num è il risultato

parentesi = precedenza minima

(NOTA: il codice C++ lo ho scritto con l'idea di doverlo tradurre in Assembly successivamente)
Codice: [Seleziona]
#include <iostream>
#include <cstring>
#include <cstdlib>
using namespace std;

#define PushNum(x) stackNum[++spNum]=(x)
#define PopNum (stackNum[spNum--])
#define PushOp(x) stackOp[++spOp]=(x)
#define PopOp (stackOp[spOp--])
#define TopOp (stackOp[spOp])
#define PrintStack(stack, sp)
cout << #stack << ": ";
for(int c=1; c<=sp; c++)
cout << stack[c] << " ";
cout << endl

// 2 + 3*5 - 1*4 +5 -7. = 11

int stackNum[100] = {0}, spNum = 0, spOp = 0;
char stackOp[100] = {0};

char input[50];
int ptrIn=0; // puntatore input

int getOpPriority(char op) {
switch(op) {
case '(':
case ')':
return 10;
case '+':
case '-':
return 20;
case '*':
case '/':
return 30;
default:
return 0;
}
}

// esegue l'operazione più in alto nello stack op con i 2 numeri più in alto nello stack Op
void doOp() {
cout << " - doOp" << endl;
int a, b, r;
char o = PopOp;
a = PopNum;
b = PopNum;
switch(o) {
case '+': r = b+a; break;
case '-': r = b-a; break;
case '*': r = b*a; break;
case '/':
if(a==0) {
cout << "Divisione per zero" << endl;
exit(0);
}
r = b/a;
break;
case '.': cout << "tentata elaborazione di "."" << endl; exit(0); break;
}
cout << "    a=" << a << ", b=" << b << ", r=" << r << ", op=" << o << endl;
PushNum(r);
}

// true se op è un operatore valido
bool isOp(char op) {
switch(op) {
case '(':
case ')':
case '+':
case '-':
case '*':
case '/':
case '.': // operatore fittizio con priorità minima
return true;
default:
return false;
}
}

// true se x è una cifra numerica
bool isNum(char x) {
if(x>='0' && x<='9')
return true;
else
return false;
}

void skipSpaces() {
while(ptrIn<50 && input[ptrIn] == ' ')
++ptrIn;
}

int main()
{
int n;
char x = 0, opPrec; // opPrec = operatore precedente
int numPar=0; // numero parentesi (incrementato quando aperta, decrementato quando chiusa)

cout << "Inserisci espressione:" << endl;

cin.getline(input, 50);

PushOp('.');
//PushNum(0);

do {
cout << "nCiclo" << endl;

skipSpaces();

opPrec = x;

//x = cin.peek();
x = input[ptrIn];

if(ptrIn>=50 || x=='') // fine stringa
goto fuori;

if( isNum(x) )
{
//cin >> n;
char *invPtr;
n = strtol(&input[ptrIn], &invPtr, 10);
ptrIn = invPtr-input;
PushNum(n);
cout << "Letto Num: " << n << endl;
}
else
{
++ptrIn;
if(x=='+' || x=='-') // se al posto di un numero ci sono + o -
{
cout << "Letto Op "" << x << "" invece di num" << endl;
// se dopo non c'è un numero o una parentesi aperta, allora sono simboli errati

skipSpaces();
char y = input[ptrIn];
cout << "  y = ""<<y<<""" << endl;

if( !isNum(y) && (y!='(') ) {
cout << "  ma dopo non c'è un numero o una parentesi aperta! Errore!" << endl;
cout << "nErrore: trovato simbolo quando ci si aspettava numero" << endl;
goto uscitaErrore;
}
// se dopo c'è un numero o una parentesi aperta, allora sono simboli di segno.
PushNum(0); // inserisco uno 0 così l'operatore ha un secondo numero su cui lavorare
// ( 0-x = -x;  0+x = +x; )
input[--ptrIn] = x; // ritorno a mettere x al suo posto (circa)
}
else if( x == ')' ) { // se trovo una parentesi chiusa, la tolgo dallo stream e vado a elaborare lo stack
goto elabora;
}
else if( (opPrec==')' && isOp(x)) || x=='(' ) // se al posto di un numero c'è un operatore, e prima avevamo una parentesi chiusa, oppure al posto del numero c'è una parentesi aperta
{
cout << "Letto Op "" << x << "" invece di num" << endl;
goto L45;
}
else
{
cout << "Carattere non valido ""<< x <<"" al posto di un numero" << endl;
goto uscitaErrore;
}
}

//cin >> x;
skipSpaces();
x = input[ptrIn++];

if( x!='' && !isOp(x) ) {
cout << """ << x << "" non è un operatore" << endl;
goto uscitaErrore;
}

cout << "Letto Op: " << x << endl;
//cout << " (Peek: "" << (char)cin.peek() << "")" << endl;

if(x=='') {
cout << " - vado fuori" << endl;
goto fuori;
}

PrintStack(stackNum, spNum);
PrintStack(stackOp, spOp);

cout << "Testo " << x << "(" << getOpPriority(x) << ") e " << TopOp << "(" << getOpPriority(TopOp) << ")" << endl;

elabora:

while( (TopOp != '(') && (getOpPriority(x) <= getOpPriority(TopOp)) )
doOp();

if((x==')') && (TopOp == '('))
PopOp;

L45:
if(x != ')')
PushOp(x);

} while(x!='');

PopOp;

fuori:

cout << "son fuori" << endl;



PrintStack(stackNum, spNum);
PrintStack(stackOp, spOp);

while(TopOp != '.'/*spOp > 1*/)
doOp();

cout << "Ris: " << PopNum << endl;
uscitaErrore:
return 0;
}

In futuro gli darò una pulitina, magari diventa utile per qualcuno :)

Qualche commento?

1245
Tablet, PDA, smartPhone / Re: LG Optimus Dual?
« il: 14 Giugno 2011, 16:57:12 »
Bene, quindi come rom siamo a posto...

Pareri sull'hardware?

Pagine: 1 ... 81 82 [83] 84