Lezioni private di turbo pascal, insegnamento progressivo allo scopo di apprendere i segreti del TURBO PASCAL (lezioni completate)

« Older   Newer »
  Share  
The Anonymous...
view post Posted on 26/3/2008, 20:33




CITAZIONE (Vale x 95 @ 26/3/2008, 20:28)
però non potevo saperlo...

sisi certo tranqui ;)
 
Top
Vale x 95
view post Posted on 26/3/2008, 20:59




bn, allora, il programma mi funziona, però una sola volta, qual'è il comando che dopo che hai fatto il primo numero lo puoi rifare tutte le volte che vuoi finche non scrivi una sciocchezza e il programma si chiude
 
Top
Fede#91
view post Posted on 26/3/2008, 21:09




CITAZIONE (The Anonymous... @ 26/3/2008, 19:58)
CITAZIONE (Fede#91 @ 26/3/2008, 19:29)
che poi senza else if e than non servono a nulla, no?

e chi ti ha detto che non me ne facio nulla :D

come no!!

si può fare l'istruzione if then anche senza l'else...

l'else non è obbligatorio..
CODICE
if anni=90 then
writeln('Sei un nonnetto');
...


questo codice guarda la variabile anni, se e solo se quella variabile ha valore 90 allora ti dice la frase.. altrimenti non ti dice niente.. perchè non c'è l'else che gestisce gli altri casi..

ma queste due righe funzionano tranquillamente.. anche senza l'else

ah... °_°
ehm.. grazie^^" forse forse ora c'ho capito qualcosa
ma cmq ci sarebbe tanto altro.. diciamo che con Andreani non ho appreso molto bene il Pascal
 
Top
The Anonymous...
view post Posted on 26/3/2008, 21:09




ci devi inserire un ciclo..

come ad esempio il repeat until, oppure il while do oppure il for to do...

in questo caso direi che il più comodo è il repeat until..

cioè: "ripeti fino a che.."

allora prendendo in considerazione il programma di prima:

CODICE
program prova;
uses crt;
var numero,triplo:integer;
risposta:string;
begin
repeat
clrscr;
Writeln('Ora ti insegnerò a contare sei contento?(si/no)');
readln(risposta);
if risposta='si' then
begin
writeln('Bravo! Inserisci un numero intero');
readln(numero);
triplo:=numero*3;
writeln('Bene.. il triplo di quel numero è esattamente: ',triplo);
readln;
end
else
if risposta='no' then
begin
writeln('beh, allora vattene a casa, somaro!!!');
readln;
end
else
writeln('Ok ci vediamo alla prossima ;)');
until
(risposta<>'si') and (risposta<>'no');
readln;
end.

 
Top
Vale x 95
view post Posted on 26/3/2008, 21:49




ora, che funziona a meraviglia, mi sapresti dare le istruzioni di un programa di quasto tipo:


(cpu) Questo programma esegue la moltiplicazione fra due numeri interi; inserisci un fattore

(io) a

(cpu) inserisci un altro fattore

(io) b

(cpu) il prodotto di questi due fattori è : c


(A, B e C intese come numeri, è ovvio...)
 
Top
The Anonymous...
view post Posted on 26/3/2008, 22:18




si.. è molto semplice..

program prova;
uses crt;
var primofatt,secondofatt,prodotto:integer;
begin
clrscr;
writeln('ora ti dimostrerò che so fare le moltiplicazioni, insierisci il primo fattore');
readln(primofatt);
writeln('Ora inserisci il secondo fattore');
readln(secondofatt);

prodotto:=primofatt*secondofatt;
writeln('Bene, il risultato è: ', prodotto);
readln;
end.

sovrebbe andare ma nn l'ho provato... cmq da adesso ti rispondo domani... che adesso dovrei studia storia... -.-
 
Top
Vale x 95
view post Posted on 26/3/2008, 22:34




ce l'ho fatta


si c'ero gia riuscito, adesso provo a fare un gran programma con anche la variante della parola del tipo addizione sottrazione moltiplicazione, divisione, potenza e radice però da te volevo sapere come si fa a calcolare i decimali, poi questo ci voglio provare da solo
 
Top
The Anonymous...
view post Posted on 27/3/2008, 15:03




per gestire i decimali bisogna che dichiari una variabile diversa dalla integer..

perchè come dice la parola integer gestisce solo i numeri interi...

quindi per gestire anche i decimali.. dovrai usare le variabili di tipo real quindi:

CODICE
...
var numero:real;
...
 
Top
Vale x 95
view post Posted on 27/3/2008, 15:35




il prog mi viene con risposte e calcoli: *, +, - ma col / non me lo fa partire, ho provato a mettere real, ma mi da come risultato di qualsiasi operazione con qualsiasi numero: 1.10000000000*1.0E
 
Top
The Anonymous...
view post Posted on 27/3/2008, 15:51




allora.. per fare le divisioni, si usano due metodi..

le variabili di tipo integer supportano solo quello con il comando "div" cioè per esempio se vuoi far 6 /3 devi scrivere

numero:= 6 div 3

invece le variabili di tipo real gestiscono anche il "/"

ah.. poi con le variabili di tipo real ogni volta che metti un risultato gli devi anche mettere i limiti delle cifre che deve mettere come intere e come decimali..

cioè fa così

CODICE
program prova;
uses crt;
var primofatt,secondofatt,prodotto:real;
begin
clrscr;
writeln('ora ti dimostrerò che so fare le moltiplicazioni, insierisci il primo fattore');
readln(primofatt);
writeln('Ora inserisci il secondo fattore');
readln(secondofatt);

prodotto:=primofatt*secondofatt;
writeln('Bene, il risultato è: ', prodotto:8:2);
readln;
end.


quella scritta: "prodotto:8:2" significa che quando mostra il risultato della variabile prodotto, deve mostrare al massimo 8 cifre in totale di cui solo 2 al massimo decimali.. cioè singifica che se viene un numero con un casino di cifre, lo approssima a seconda dei parametri che gli hai messo.. 8 e 2 sono un esempio ma se ne possono mettere anche altri eh..
 
Top
Vale x 95
view post Posted on 27/3/2008, 17:58




adesso programmino-tortura-cugini
 
Top
The Anonymous...
view post Posted on 27/3/2008, 18:00




è?
 
Top
Vale x 95
view post Posted on 27/3/2008, 18:06




ho creato questo prog

CODICE
program prova;

uses crt;

var parola:integer;

risposta:string;

begin

clrscr;

writeln('qual''e''il capo luogo dell''Emilia-Romagna?');

readln(risposta);

if risposta='Bologna' then

begin

writeln('bravo, sei un genio!!!');

readln;

end

else

writeln('ai, ai! Ripassa geografia!');

readln;

end.

end.




adesso io volevo copiarlo per venti volte e sostituire emilia romagna con le altre regioni, però io voglio farglelo ripetere sennò come sai dopo la prima volta si ferma e mettere un casuale per far uscire le domande a caso, se possibile come????
 
Top
The Anonymous...
view post Posted on 27/3/2008, 18:28




mmm a ricopiare il prog per 20 volte per fare le altre regioni è da pazzi!!!!

per fare quello che chiedi servirebbe dichiarare e utilizzare due vettori, uno nel quale vengono inserite le regioni, e uno nel quale vengono inserite le capitali...

cosi nn devi fare copia e incolla ma ci metti un ciclo che fa ripetere magari anche a caso la domanda ogni volta con una regione diversa.. che era caricata nel vettore...
è un pò lunghetta come cosa.. però si fa..

intanto ti spiego due cose sui vettori e le matrici...

allora i vettori sono dei contenitori, come le variabili, in cui però al loro interno possono essere inseriti più dati.. sono come una tabella orizzontale.. in cui su ogni cella ci metti un dato...

si chiamano vettori quelli che hanno una sola dimensione.. si chiamano matrici quelli a due dimensioni.. nel linguaggio pascal vengono chiamate entrambi ARRAY..

un esempio di come gestire i vettori:

program prova;
uses crt;
Var vettore:array[1..5] of string;
begin
vettore[1]:='Ciao ';
vettore[2]:='come ';
vettore[3]:='te ';
vettore[4]:='la ';
vettore[5]:='passi? ';

writeln('Caricati i dati nel vettore, ora te li mostro ordinatamente',vettore[1],vettore[2],vettore[3],vettore[4],vettore[5])
readln;
writeln('oppure disordinatamente ', vettore[1],vettore[4],vettore[5],vettore[2],vettore[3]);
readln;
end.


qiuesto prog, prima carica in ogni casella del vettore le parole.. e poi le mostra secondo l'ordine che vuoi...

smanettaci un po...
per fare il programma che dici devi dichiarare due di questi vettori.. poi farci caricare su uno le regioni, sull'altro le capitali.. e poi cerca di capire come potresti continuare..

ti dico che devi usare il blocco if then else..., il repeat until... e volendo anche il comando random quindi te lo spiego più avanti.... ma quello può essere inserito per ultimo....
 
Top
Vale x 95
view post Posted on 27/3/2008, 18:36




grazie prof

cmq vettore1 è vettore(1) o vettore[1] ?
 
Top
127 replies since 24/3/2008, 16:02   496 views
  Share