View Full Version : Pascal e variabili di tipo Booleano
Ho cominciato a studiare il Pascal, ma mi trovo di fronte ad un problema: non capisco come funziona ed a che serve una variabile di tipo Booleano, e soprattutto che diavolo sono quelle tavole "farcite" di true e false
tipo:
A B A And B
true true true
per le tavole farcite di true e false dovresti essere un po' più specifico.
il tipo di dato boolean può avere due valore, true o false.
gli usi possono essere molteplici, certo se mi chiedi un esempio al momento non mi viene in mente nulla di buono, cmq io li uso nei cicli o in qualche record.
mi sembra strano che programmando non ti sia mai venuto il bisogno di usare un boolean... boh :)
considera che ho appena cominciato; ora pultroppo non ho molto tempo, quindi le tabelle le scanerizzo e le metto on.line, domani
Ci risentiamo
non è che quelle sono tipo tabelle di verità? :D
tipo vero = vero
falso = falso
vero + vero = vero
vero + falso = vero
falso + falso = falso
cmq le variabili booleane (parlo x qualsiasi linguaggio di prog, non ho mai visto pascal :)) le usi quando fai un controllo tipo if o for
scusate, ma ieri non ho proprio potuto farmi sentire
Vi posto tutto il paragrafo; cercate di spiegarmelo
PARTE 1
...e parte 2 (entrambe in 1 messaggio non ci entravano)
scusate se come qualità non sono al top ma ho dovuto comprimere
Quello che hai scannerizzato c'entra ben poco con il linguaggio di programmazione usato... E' così che funzionano le variaibli booleane...vero o falso...
Sai fare le operazioni Or e And in binario ? Le varaibili booleane funzionano allo stesso mobo...
Originariamente inviato da cionci
[B]Quello che hai scannerizzato c'entra ben poco con il linguaggio di programmazione usato... E' così che funzionano le variaibli booleane...vero o falso...
Sai fare le operazioni Or e And in binario ? Le varaibili booleane funzionano allo stesso mobo...
allora c'è un problema di fondo, io le operazioni Or e And in binario non le so fare, non è che mi spiegate brevemente che cosa sono
operazione AND:
la tabella di verità ti dice che
a b a AND b
0 0 0
1 0 0
0 1 0
1 1 1
se vuoi al posto di 0 e 1 ci metti false e true.
significa che la AND vale vero (1) se entrambi gli operandi valgono vero.
la OR invece
a b a OR b
0 0 0
1 0 1
0 1 1
1 1 1
basta che uno dei due operandi valga 1 (vero) e il risultato sarà vero.
operazione AND:
la tabella di verità ti dice che
a b a AND b
0 0 0
1 0 0
0 1 0
1 1 1
se vuoi al posto di 0 e 1 ci metti false e true.
significa che la AND vale vero (1) se entrambi gli operandi valgono vero.
la OR invece
a b a OR b
0 0 0
1 0 1
0 1 1
1 1 1
basta che uno dei due operandi valga 1 (vero) e il risultato sarà vero.
queste tabelle ti vengono utili nei casi di costrutti di selezione o iterazione (così c'è scritto sui libri, in pratica con la IF oppure con il WHILE e il FOR).
quando fai ad esempio una IF devi mettere una condizione, ecco nelle condizioni puoi usare la OR e la AND (ad esempio, i > 0 AND i < 4 significa che la condizione è vera se i è compreso tra 1 e 3).
Il problema trascende dal Pascal...le variabili booleane fanno parte della "logica". Una variabile booleana può assumere solo 2 valori: vero, falso, ovvero 1 e 0 , ovvero acceso, spento.
La tabella dell'allegato spiega come funzionano gli operatori logici AND , OR e NOT.
Il più semplice è il NOT, la negazione: se tu neghi il vero, ottieni il falso (se neghi lo 0 ottieni l'1) e viceversa.
L'operatore OR: ottieni "vero" solo quando almeno unop dei 2 operatori e vero:
0 OR 0 = 0
0 OR 1 = 1
1 OR 0 = 1
1 OR 1 = 1
L'operatore AND: ottieni "vero" solo quando tutti e due gli operatori sono veri:
0 AND 0 = 0
0 AND 1 = 0
1 AND 0 = 0
1 AND 1 = 1
A cosa servono nella programmazione...bhè...servono come condizioni nelle "if" o nei cicli!
Es: (java)
boolean a = true;
boolean b = false;
if (a || b){ // a OR b
...istruzioni...
}
while (a && b){ // a AND b
...istruzioni...
}
Naturalmente a e b possono derivare da una qualunque istruzione, che so, ad es a è vera se una certa stringa ha lunghezza maggiore di 4 e b se ha lunghezza minore di 9...
ora non ho il tempo di ragionarci, domani ci provo con comodo e vediamo che cosa capisco
Il sonno mi ha annebbiato la vista; comunque mi siete sembrati molto chiari
Grazie ed a domani
comincio a capirci qualcosa finalmente; chissà se su internet c'è una documentazione completa rispetto alla matematica Booleana in italiano ad un livello comprensibile ad uno studente del liceo scientifico nel 3° anno
Ne sapete qualcosa???
Originariamente inviato da M86
[B]comincio a capirci qualcosa finalmente; chissà se su internet c'è una documentazione completa rispetto alla matematica Booleana in italiano ad un livello comprensibile ad uno studente del liceo scientifico nel 3° anno
Ne sapete qualcosa???
Non vedo cosa ci sia da capire :rolleyes: :D
Comunque vedi l'OR come una somma...e l'AND come un prodotto..
Quindi (utilizzando 0 e 1 al posto di falso e vero) :
0 OR 0 = 0 (0+0=0)
1 OR 0 = 1
0 OR 1 = 1
1 OR 1 = 1 (attenzione 1+1 = 1)
0 AND 0 = 0 (0*0=0)
1 AND 0 = 0
0 AND 1 = 0
1 AND 1 = 1
Il NOT poi è molto banale...
NOT 1 = 0
NOT 0 = 1
Ti scrivo qualche test :
a = 5
b = 7
((a < 5) OR (b < 8)) AND ((b-a) > 0)
a < 5 : no...falso (cioè 0)
b < 8 : sì...vero (cioè 1)
(b-a) > 0 : sì...vero (cioè 1)
Quindi : (falso OR vero) AND vero = (0 + 1) * 1 = 1 cioè vero...
Puoi ottenere anche na spiegazione a parole :
a < 5 oppure b < 8 : sì (vero) b è minore di 8 (quindi une dei due predicati è vero...oppure : o l'uno e/o l'altro deve essere vero per ritornare vero)...
Se la prima parte è vera e la seconda (b-a > 0) è vera ritorno vero...
La prima parte è vera...e l'abbiamo visto prima...la seconda è vera (è vero che (b-a) > 0)...quindi il risultato è VERO...
Prova tu a fare lo stesso ragionamento con a = 9 e b = 8...
Originariamente inviato da cionci
[B]
Non vedo cosa ci sia da capire :rolleyes: :D
Bhè trattandosi di logica...bisogna capirla eccome...se non ti insegnavano a fare le addizioni, mica si ha nel DNA come fare 1 +1 :p
Originariamente inviato da cn73
[B]Bhè trattandosi di logica...bisogna capirla eccome...se non ti insegnavano a fare le addizioni, mica si ha nel DNA come fare 1 +1 :p
Non intendevo quello...volevo dire che sulle operazioni di base non che c'è da capirci molto...sono così...punto e basta...
Non è che ti puoi chiedere perchè l'OR e l'AND sono così...o meglio..te lo puoi chiedere, ma tutto deriva dal linguaggio parlato "o questo e/o quell'altro" e "sia quello che quell'altro" :)
il punto è che ci sono anche altre funzioni tipo >= <= e così via
Comunque sono a buon punto
Che ti importa che ci siano quegli operatori...
Basta sapere quando ti ritornano vero (e questo lo vedi dal significato dell'operatore) e quando ti ritornano falso...
memphis raines
25-09-2002, 15:28
Gli operatori di cui parli non ti servono con le variabili booleane
ma per fare confronti fra numeri o fra variabili numeriche
Originariamente inviato da memphis raines
[B]Gli operatori di cui parli non ti servono con le variabili booleane
ma per fare confronti fra numeri o fra variabili numeriche
Sì, ma ritornano variabili booleane...
Originariamente inviato da memphis raines
[B]Gli operatori di cui parli non ti servono con le variabili booleane
ma per fare confronti fra numeri o fra variabili numeriche
ti ringrazio di aver fatto il tuo primo post proprio qui
memphis raines
25-09-2002, 19:48
Figurati grazie a voi per l'aiuto che mi darete
memphis raines
25-09-2002, 19:55
Originariamente inviato da cionci
[B]
Sì, ma ritornano variabili booleane...
E' vero ma non sono variabili esplicite nel senso che non vengono
dichiarate all'interno del programma
Originariamente inviato da memphis raines
[B]E' vero ma non sono variabili esplicite nel senso che non vengono
dichiarate all'interno del programma
Beh...volendo sì...e lo puoi fare in molti linguaggi...
memphis raines
25-09-2002, 20:03
ok ma non ti serve a nulla dichiarare una variabile che poi non
utilizzi
Originariamente inviato da memphis raines
[B]ok ma non ti serve a nulla dichiarare una variabile che poi non
utilizzi
E chi l'ha detto che uno non la utilizza ?
In C :
int flag = 2 > 3;
if(flag) {
....
....
....
}
....
....
....
....
....
if(!flag & (a > b)) {
....
....
....
}
memphis raines
25-09-2002, 20:30
Se non ricordo male una cosa del genere... int flag = 2 > 3...
in Pascal non puoi farla
Non credo...anche se non ne sono sicuro...il mio Pascal è un po' arrugginito...
memphis raines
25-09-2002, 20:40
Allora siamo in due
il mio pascal non c'è ancora:D
Originariamente inviato da M86
[B]comincio a capirci qualcosa finalmente; chissà se su internet c'è una documentazione completa rispetto alla matematica Booleana in italiano ad un livello comprensibile ad uno studente del liceo scientifico nel 3° anno
Ne sapete qualcosa???
L'Algebra di Boole sostanzialmente si basa su quella tabella che hai sul libro. Andare oltre non ti sevirebbe a niente per adesso.
Considerala come una cosa da "imparare a memoria", come fanno tutti.
Capire effettivamente "perchè" è cosi richiede un'attento studio di quella disciplina che si chiama Logica Matematica.
Originariamente inviato da memphis raines
[B]Se non ricordo male una cosa del genere... int flag = 2 > 3...
in Pascal non puoi farla
Il Pascal standard non consente di inizializzare variabili in fase di dichiarazione (ma neanche gli altri flavour, credo).
Dovresti usare una sequanza del tipo:
...
var a : boolean;
begin
a := b > c;
...
end;
Per un principiante che deve solo apprendere i concetti astenendosi il + possibile dai tecnicismi del linguaggio, direi che è molto + comprensibile che scrivere:
bool a = b > c;
sebbene la seconda forma sia + elegante della prima. :D :D
memphis raines
27-09-2002, 09:49
Allora mi ricordavo bene che non si poteva fare l'inizializzazione di una variabile in fase di dichiarazione.
Hai ragione è sicuramente più elegante la seconda forma ma il problema è che in Pascal non puoi farla quindi devi per forza utilizzare la prima forma
Vabbè...io infatti lo avevo scritto in C...ma non è quello il punto...
Era solo un esempio non mi importava niente dell'inizializzazione...
ho finalmente capito
ieri ho provato a fare qualche esempio più quello che era stato postato qua e sono riuscito a capire quelle maledette variabili, un ultimo dubbio: che applicazione hanno nel pascal simboli tipo <=, servono forse con le istruzioni condizionali???
memphis raines
27-09-2002, 15:11
Esatto ti servono per fare dei confronti fra variabili numeriche come:
a:=4
b:=10
if b<=4
then
...
...
...
end;
<= sta per minore o uguale e >= naturalmente per maggiore o uguale
Spero di essere stato più o meno chiaro
Originariamente inviato da memphis raines
[B]Esatto ti servono per fare dei confronti fra variabili numeriche come:
a:=4
b:=10
if b<=4
then
...
...
...
end;
<= sta per minore o uguale e >= naturalmente per maggiore o uguale
Spero di essere stato più o meno chiaro
chiarissimo:D
vBulletin® v3.6.4, Copyright ©2000-2026, Jelsoft Enterprises Ltd.