VELOCE CONFRONTO TRA BASIC E C Il Basic e' solitamente il primo linguaggio che si affonta, dato che e' sempre stato incluso nei sistemi operativi (sul C64, nel DOS...). Dato che esistono tanti basic molto diversi, elenchero' soltanto le istruzioni piu' comuni. Si parte dall'ipotesi di una conoscenza del basic, per cui si eviter… di fornire commenti e spiegazioni alle istruzioni basic presentate. Il simbolo -> dove e' usato significa "convertito in C diventa...". ----------------------- Definizionde di blocco: nei basic "antichi" ci si basa sui numeri di riga, ad esempio: 10 print "pippo" 20 print "pluto" 30 goto 20 Viene eseguito prima il 10, poi il 20 ecc. Il programma stampa pippo una volta, poi entra in un ciclo infinito e stampa continuamente pluto. In C il goto esiste, ma ne e' sconsigliato l'uso, e in JAVA non esiste. Una cosa come quella vista sopra, in C si puo' fare con un while sempre vero: printf("pippo"); while (1) printf("pluto\n"); (Se 1 (vero), cioe' sempre, stampa pluto.) In C, come nei basic piu' moderni, non ci sono numeri di riga, e le istruzioni sono eseguite nell'ordine in cui sono scritte, a parte i casi in cui del GOSUB/RETURN, dei FOR ecc. non modificano il flusso del programma. In C il programma si divide in blocchi di esecuzione, inclusi tra { e }. Per distinguere tra una riga e un'altra si devono terminare quasi sempre le istruzioni con un punto e virgola. I commenti REM si possono tradurre in /* ... */. Ad esempio: 10 print "pippo" 20 gosub 50 REM Salta ad eseguire alla linea 50 30 print "paperino" 40 END (un'istruzione che permetta l'uscita dal programma) 50 print "pluto" 60 RETURN REM Ritorna ad eseguire sotto la linea 20 Questo stampa "pippo","pluto","paperino". Si tradurra' in: void stampapippo(void) /* Funzione stampapippo */ { printf("pluto\n") } main() { printf("pippo\n"); /* Da notare il ; finale. */ stampapippo(); /* Salta ad eseguire la funzione stampapippo */ printf("paperino\n"); } Come si vede si e' diviso il programma in 2 blocchi, uno principale e uno secondario (quello principale si deve chiamare main(), degli altri decidiamo noi il nome). ----------------------- I Tipi di dato I vecchi basic non facevano distinzioni tra interi e virgola mobile... ---------------------- STRUTTURE TIPICHE DI PROGRAMMAZIONE Cicli for: 10 FOR I=1 TO 100 STEP 2 (In certe sintassi c'e' anche un "DO" finale) 20 ... istruzioni da eseguire 30 ... 40 NEXT 10 (Fine del blocco di istruzioni del for) ... end; for (c=1; c<=100; c=c+2) { ... istruzioni da eseguire; } In pratica l'istruzione for vuole tre parametri separati da punto e virgola: 1) Uno di assegnazione (in questo caso c=1); 2) Uno di controllo (in questo caso c<100); 3) Uno o di operazione separati da virgole (in questo caso c++, che e' un modo abbreviato di scrivere c=c+1, come visto sopra). Qua si puo' convertire lo "STEP n" in "c=c+n". ---------------------- IF THEN ELSE Vediamo questo esempio: 10 IF I=2 THEN 30 ELSE 60 ; se I=2 salta a 30, altrimenti a 60. 20 END (uscita dal programma) 30 PRINT "pippo" 40 PRINT "pluto" 50 END (uscita dal programma) 60 PRINT "paperino" 70 PRINT "paperone" 80 END (uscita dal programma) In C possiamo tradurlo in: if (i==2) { ; IF I=2 THEN... printf("pippo"); ; blocco eseguito se if e' vero printf("pluto"); } else { printf("papetino"); ; blocco eseguito se if e' falso printf("paperone"); } Come si vede, la condizione va messa tra parentesi, il simbolo di uguaglianza e' == e non = (in C = e' un simbolo che assegna un valore, non di confronto), il THEN e' sparito, e i 2 blocchi di istruzioni sono racchiusi in blocchi delimitati dalle solite parentesi { }.