Bill Gates e Paul Allen: la fortuna della microsoft iniziò con un interprete Basic |
John George Kemeny e Thomas Eugene Kurtz:inventarono il linguaggio nel 1964 |
![]() |
![]() |
lingua naturale |
linguaggio di programmazione |
|
|
Funzionifunzioni matematiche comuni: in verde quelle esaminate
|
20 rem utilizzo di alcune funzioni del quitebasic 40 cls 45 rem salto alla 1400 50 goto 1400 90 rem stampa di formule matematiche 100 PRINT (5/3)* 2 150 rem stampa il valore di pigreco 200 print pi 300 PRINT 15 % 3 350 rem valore assoluto di un numero (ABS) 400 print ABS (-6) 500 print ABS (7) 550 rem segno di un numero (SGN) 600 PRINT SGN (-10) 700 PRINT SGN (4) 750 rem radice quadrata di un numero (SQR) 800 PRINT SQR (4) 900 PRINT SQR (-25) 950 rem due funzioni, SQR e ABS 1000 PRINT SQR (abs(-25)) 1050 rem arrotondamento 1100 print ROUND (5.1) 1150 rem round (arrotonda al numero intero piu vicino) 1160 rem troncamento 1170 print "questo è il FLOOR (troncamento) di 5.99 "; 1200 print floor (5.99) 1210 print "questo è il FLOOR di pi "; 1300 print floor (pi) 1350 rem ciclo di stampa di lanci di dado, utilizza la funzione RAND e arrotonda all'intero più vicino il valore 1400 for c=1 to 20 1450 pause 200 1470 let n=round (rand(6)) 1480 if n<>0 then print n 1500 next c 2000 end |
1000 REM commento 1100 rem commento 1200 ReM Commento 1300 PrINt"ciao ciao" 1400 Print "Ciao ciao" + "AAA" + "BBB" 1500 PrINt"Ciao ciao"+"AAA"+"BBB" 1600 ForI=1to5 1700 printI 1800nextI 1900 leti=1 2000ifi=7thengoto3000 2100printi 2150leti=i+ 1 2200goto 2000 3000end | funziona tutto |
1000 rem ******************************** 1100 rem * scatolina con commenti * 1150 rem * bella mostra * 1200 rem * programma scritto da BC * 1250 rem * il 2-marzo-2014 * 1300 rem ******************************** | notare che ho dovuto scegliere un font con larghezza(spaziatura) fissa (il courier) altrimenti la "scatolina" sarebbe venuta male. |
01 rem freccina che si muove 20 cls 50 for i=5 to 20 step 1 100 gosub 1000 120 next i 150 print "finito" 200 end 1000 clc 1020 plot 6,i,"red" 1050 plot 6,i+1, "yellow" 1050 plot 5,i+1, "yellow" 1050 plot 7,i+1, "yellow" 1100 plot 6,i+2, "blue" 1150 plot 6,i+3, "green" 1200 pause 200 1400 return |
50 cls 100 rem programma equivalente all'esercizio della verifica 200 input "dammi la frase da stampare";F 250 print "la frase da stampare è: ";f 300 input "dammi il valore di QV";q 350 print "il numero di volte è ";q 400 let c=2 500 print f 600 if c=q then goto 1000 700 let c=c+1 800 goto 500 1000 print "stop" 1100 end |
![]() |
100 rem bc 200 rem disegna una fila di pixel tramite un ciclo (loop) 300 rem prima fila, con ciclo fatto a mano (IF e goto) 350 cls 400 LET I= 1 500 PLOT 5,I,"white" 550 LET I=i+1 580 pause 100 600 IF I< 40 THEN GOTO 500 700 REM secondo metodo usa il ciclo FOR 800 for i=6 to 50 850 pause 100 900 plot 9,i,"RED" 1000 next i 1200 rem finisce qui 1300 print "ho finito" 1400 end |
lo devi modificare in modo che:
|
100 rem programma che colora un'area dello schermo 120 rem utilizzando due cicli FOR nidificati 140 rem ovvero uno dentro l'altro 200 cls 300 input "altezza area? ";a 400 input "larghezza area? ";l 500 input "coordinata x del vertice inferiore sinistro? ";x 600 input "coordinata y del vertice inferiore sinistro? ";y 650 print "OK, disegno un rettangolo di pixel bianchi" 670 print "di dimensioni ";a;" per ";l 700 FOR i=x to x+l 800 FOR j=y to y+a 850 rem notare i cicli nidificati e indentati 900 plot i,j,"white" 1000 next j 1100 next i 1400 end |
utilizza le istruzioni INPUT, CLS PRINT FOR/NEXT e PLOT contiene due cicli FOR nidificati |
1000 rem programma che fa complimenti se voto alto 1100 print "che voto hai?" 1200 input ""; V 1300 if V>8 then print "sei proprio bravo!" 1400 end |
1000 rem programma che calcola il fattoriale di un numero 1100 input "dammi N ";N 1200 if n >100 then goto 3000 1300 if n < 0 then goto 3000 1400 if n= 0 then goto 4000 1500 let M=1 1600 let F=1 1700 let f=F*M 1800 if m = N then goto 5000 1900 let M=M+1 2000 goto 1700 3000 print "errore!!" 3100 end 4000 print "il fattoriale di zero è 1!" 4100 end 5000 print "il fattoriale di ";N;" è ";F 5100 end |
sorgente basic | output dell'esecuzione |
1000 rem usi del ciclo FOR 1100 print "ecco un ciclo senza FOR" 1200 LET i=1 1300 Print "I= ";I 1400 LET I=I+1 1500 if i < 6 then goto 1300 1550 rem ****************** 1600 print "ecco lo stesso ciclo con il FOR" 1700 for i=1 to 6 1750 print "I= "+I 1800 next I 1900 rem ****************** 2000 print "ciclo passo 2" 2100 for i=1 to 6 step 2 2200 print "I= "+I 2300 next i 1900 rem ****************** 2500 print "ciclo con passo negativo" 2600 for i =6 to 1 step -1 2700 print "i= ";I 2800 next i 2900 end | ecco un ciclo senza FOR I= 1 I= 2 I= 3 I= 4 I= 5 ecco lo stesso ciclo con il FOR I= 1 I= 2 I= 3 I= 4 I= 5 I= 6 ciclo passo 2 I= 1 I= 3 I= 5 ciclo con passo negativo i= 6 i= 5 i= 4 i= 3 i= 2 i= 1 |
100 rem programma che disegna una linea orizzontale 110 rem di lunghezza e colore a piacere 120 rem c è la colnna da cui si inizia a plottare 130 rem l è la lunghezza della linea da plottare in pixel 140 rem c1 è il colore da utilizzare 150 rem mancano tutti i controlli. 160 rem ************************************** 200 input "da che colonna deve iniziare la riga?(0-30)"; c 250 input "quanti pixel deve essere lunga la linea? (1-20)";l 300 input "di che colore deve essere la linea?";c1 400 for i=c to c+l 450 plot i,c,c1 500 next i 550 END |
|
![]() |
Flow chart |
Programma |
![]() |
![]() |
50 rem utilizzo di sqr, precisione di calcolo e lancio dado. 100 cls 200 print sqr(2) 250 let A=sqr(2)*SQR(2) 260 PRINT A 300 print 1.4142135623730951*1.4142135623730951 500 for i=1 to 20 600 print round(rand(6)); " "; 700 next i 1000 end |
100 REM OPERAZIONI SULLE STRINGHE 120 rem programma by BC 01-05-2015 150 rem **************************************** 160 rem * le operazioni sulle stringhe sono: * 170 rem * LEFT * 180 rem * RIGHT * 190 rem * MID * 200 rem * LEN * 210 rem * UPPERCASE * 220 rem * LOWERCASE * 150 rem **************************************** 300 cls 400 input "dammi il tuo nome";n$ 450 print "il tuo nome è: ";n$ 460 print "il tuo nome è lungo ";len(n$); " caratteri" 500 print "ecco la prima lettera del tuo nome: ";left (n$,1) 600 print "ecco l'ultima: ";right(n$,1) 700 rem ora stampo il nome un carattere per riga 800 for I=1 to len(n$) 900 let c$ = mid(n$,i-1,1) 930 print c$ 950 next i 1000 end |
100 rem lancio dado 120 rem utilizzo della funzione RAND 130 rem deve essere completato.... 150 cls 200 for i=1 to 20 220 rem venti lanci 250 print rand(6) 300 next i 500 print "finito" 700 END |
20 rem plotta 500 pixel in posizioni a caso e COLORI a caso 30 clc 50 for i=1 to 500 100 let r=round(i/2) 520 let g=round(500-i)/2 530 let b=(i*i) % 256 550 let c="rgb("+r+","+g+","+b+")" 800 plot floor(rand(50)),floor(rand(50)),c 900 pause 100 950 next i 1000 end |
100 rem concatenazione di stringhe con l'operatore "+" 150 rem notare gli spazi nelle stringhe 200 let a=" ABCD " 300 let b=" 12345 " 400 let c=a+b 500 print a 600 print b 700 print c 1000 end |
20 rem plotta 500 pixel in posizioni A CASO e COLORI a caso 22 rem r, g e b sono le tre componenti RGB del colore 30 rem c è la stringa che contiene il colore scelto in formato RGB 32 rem sfrutta il trucco che i colori si possono specificare in chiaro, es "white" o come combinazione di R G e B. 35 clc 50 for i=1 to 500 100 let r=round(i/2) 520 let g=round((500-i)/2) 530 let b=(i*i) % 256 550 let c="rgb("+r+","+g+","+b+")" 560 let x=floor(rand(50)) 570 let y = floor(rand(50)) 600 print "coordinate x e y ";x;" ";y;" il colore è: ";c 800 plot x,y,c 900 pause 100 950 next i 1000 end |
01 rem freccina che si muove 02 rem utilizza GOSUB/RETURN 20 cls 30 let x=6 40 rem il primo valore della x lo pongo a 6 50 for i=5 to 20 step 1 60 rem chiamo la subroutine con l'istruzione GOSUB 100 gosub 1000 120 next i 130 input "dammi il valore di x " ; x 150 rem il secondo valore della x lo chiedo all'utente 160 for i=7 to 40 step 1 170 gosub 1000 175 rem notare l'indentazione del loop (ciclo for) 180 next i 190 print "finito" 195 rem è buona norma che il programma segnali di aver terminato l'esecuzione 200 end 1000 rem inizio sottoprogramma (subroutine) 1010 clc 1025 rem cancello tutta la finestra grafica 1020 plot x,i,"red" 1030 print "il pixel rosso ha cordinate (" ; x;"," ; y;")" 1050 plot x,i+1, "yellow" 1050 plot x-1,i+1, "yellow" 1050 plot x+1,i+1, "yellow" 1100 plot x,i+2, "blue" 1150 plot x,i+3, "green" 1200 pause 50 1300 rem ora eseguo la RETURN e ritorno all'istruzione immediatamente successiva alla GOSUB 1400 return |