Variabile boolean o stringa ?
Variabile boolean o stringa ?
Ciao raga , sono alle prese con un esercizio che ti chiede di scrivere un programma dove viene calcolato , in base al tipo di autovettura(Auto/Camion) e in base alla cilindrata il prezzo da pagare per l ingresso in un traghetto.
Qeullo che volevo sapere era : che variabile devo usare per l identificazione del mezzo , Boolean o Stringa ?
Qeullo che volevo sapere era : che variabile devo usare per l identificazione del mezzo , Boolean o Stringa ?
- GjMan78
- Rampante Reduce
- Messaggi: 5492
- Iscrizione: mercoledì 22 novembre 2006, 19:15
- Desktop: KdePlasma
- Distribuzione: EndeavourOS
- Sesso: Maschile
- Località: ~/Italia/Lazio/Viterbo/
Re: Variabile boolean o stringa ?
Senza vedere il codice come potremmo mai dirtelo?
Dipende da come hai impostato la logica del listato.
Dipende da come hai impostato la logica del listato.
MacBook Pro - Intel i5-3210 - 16 Gbyte Ram DDR3 - SSD 500 Gbyte x 2
»»» 𝗙𝗮𝗶 𝗶𝗹 𝗕𝗮𝗰𝗸𝘂𝗽! ¯\_(ツ)_/¯
»»» 𝗙𝗮𝗶 𝗶𝗹 𝗕𝗮𝗰𝗸𝘂𝗽! ¯\_(ツ)_/¯
-
- Scoppiettante Seguace
- Messaggi: 371
- Iscrizione: venerdì 10 dicembre 2021, 18:33
- Desktop: fvwm
- Distribuzione: (X)Ubuntu20@home; openSUSE42.3@work
- Sesso: Maschile
- Località: Paneropoli
Re: Variabile boolean o stringa ?
In che linguaggio ?
The reasonable man adapts himself to the world: the unreasonable one persists in trying to adapt the world to himself. Therefore all progress depends on the unreasonable man. (G.B. Shaw)
Re: Variabile boolean o stringa ?
Devo ancora scriverlo il codice , in fase di progettazione mi chiedevo quale variabile era meglio usare , perche quello che pensavo era , come faccio a far capire al programma quale blocco di istruzioni deve eseguire in base a quale veicolo viene inserito?!
- GjMan78
- Rampante Reduce
- Messaggi: 5492
- Iscrizione: mercoledì 22 novembre 2006, 19:15
- Desktop: KdePlasma
- Distribuzione: EndeavourOS
- Sesso: Maschile
- Località: ~/Italia/Lazio/Viterbo/
Re: Variabile boolean o stringa ?
Io userei la stringa.
In Pascal c'è un'istruzione che potremmo definire "cugina" di IF..THEN che si chiama CASE..OF.
Fai una ricerca e vedrai che si adatta benissimo al tuo esercizio.
In Pascal c'è un'istruzione che potremmo definire "cugina" di IF..THEN che si chiama CASE..OF.
Fai una ricerca e vedrai che si adatta benissimo al tuo esercizio.
MacBook Pro - Intel i5-3210 - 16 Gbyte Ram DDR3 - SSD 500 Gbyte x 2
»»» 𝗙𝗮𝗶 𝗶𝗹 𝗕𝗮𝗰𝗸𝘂𝗽! ¯\_(ツ)_/¯
»»» 𝗙𝗮𝗶 𝗶𝗹 𝗕𝗮𝗰𝗸𝘂𝗽! ¯\_(ツ)_/¯
-
- Scoppiettante Seguace
- Messaggi: 371
- Iscrizione: venerdì 10 dicembre 2021, 18:33
- Desktop: fvwm
- Distribuzione: (X)Ubuntu20@home; openSUSE42.3@work
- Sesso: Maschile
- Località: Paneropoli
Re: Variabile boolean o stringa ?
Non conosco il pascal, non sapevo che fosse ancora kicking and alive. In genere non vedo grosse differenze di efficienza nell'uso di un singolo flag booleano o stringa, potrebbe esserci una questione di efficienza di storage se esistessero tante istanze della variabile (un booleano potenzialmente richiede solo un bit, in pratica di solito si usa un byte; una stringa tanti byte quanti caratteri) ma al giorno d'oggi non so quanto pesi (io vengo dall'era in cui si faceva analisi immagini su macchine con 512K !!!).
Poi c'e' una questione di eleganza ... in molti linguaggi consente una forma piu' leggibile o compatta (confrontare i due esempi)
Se poi il linguaggio ammette un tipo "enumeration" potrebbe essere vantaggioso, P.es. in mysql e affini si potrebbe definire Tipo come un enum('Camion','Auto','Moto'), nel caso servano piu' di due valori ... nell'if appare come una stringa, ma nello storage interno del database in realta e' salvato come valori 1,2,4 ... di fatto bit in un byte o piu'. (Inoltre cosi' sono esclusi valori illegali).
Oppure in altri linguaggi si possono definire delle named constants (byte o interi) e p.es. testare
if(tipo)==CAMION dove CAMION vale 1, AUTO vale 0 e magari MOTO vale 2. Un esempio da un mio caso java (convenzione di usare il maiuscolo per le named constants)
Poi c'e' una questione di eleganza ... in molti linguaggi consente una forma piu' leggibile o compatta (confrontare i due esempi)
Codice: Seleziona tutto
if(camion) then ... ! boolean
if(tipo='Camion') then ... ! stringa
Oppure in altri linguaggi si possono definire delle named constants (byte o interi) e p.es. testare
if(tipo)==CAMION dove CAMION vale 1, AUTO vale 0 e magari MOTO vale 2. Un esempio da un mio caso java (convenzione di usare il maiuscolo per le named constants)
Codice: Seleziona tutto
static final protected int LUTA=10,LUTGRAY=0,LUTRED=1,LUTGREEN=2,LUTBLUE=3; // definizioni
lut=LUTA; myMethod(lut); // nel chiamante
// e nel myMethod
switch (lut) {
default:
case LUTA: ...
break;
case LUTGRAY: ...
break;
}
The reasonable man adapts himself to the world: the unreasonable one persists in trying to adapt the world to himself. Therefore all progress depends on the unreasonable man. (G.B. Shaw)
Re: Variabile boolean o stringa ?
Si infatti l avevo vista come costrutto condizionale , e da quello che ho intuito sembrerebbe una semplificazione dell if , nel senso che ti permette di far fare piu controlli in un solo blocco di istruzioni , forse mi sto sbagliando perche gli ho dato appena una letta per ora , cmq ok ora vedro di cercare qualcosa in merito.
Re: Variabile boolean o stringa ?
Ora è tantissima roba per me , che non mi soffermero a leggere perche la sento ancora molto distante sul mio percorso d apprendimento , step by step cmq ora scrivo il codice e poi lo posto , vediamo se tutto è ok.Lucio C ha scritto: ↑sabato 10 settembre 2022, 10:17Non conosco il pascal, non sapevo che fosse ancora kicking and alive. In genere non vedo grosse differenze di efficienza nell'uso di un singolo flag booleano o stringa, potrebbe esserci una questione di efficienza di storagese esistessero tante istanze della variabileCos'è uno storage ?(un booleano potenzialmente richiede solo un bit, in pratica di solito si usa un byte; una stringa tanti byte quanti caratteri) ma al giorno d'oggi non so quanto pesi (io vengo dall'era in cui si faceva analisi immagini su macchine con 512K !!!).Istanze intese come valori che puo assumenre?
Poi c'e' una questione di eleganza ... in molti linguaggi consente una forma piu' leggibile o compatta (confrontare i due esempi)Codice: Seleziona tutto
if(camion) then ... ! boolean if(tipo='Camion') then ... ! stringa
Se poi il linguaggio ammette un tipo "enumeration" potrebbe essere vantaggioso, P.es. in mysql e affini si potrebbe definire Tipo come un enum('Camion','Auto','Moto'), nel caso servano piu' di due valori ... nell'if appare come una stringa, ma nello storage interno del database in realta e' salvato come valori 1,2,4 ... di fatto bit in un byte o piu'. (Inoltre cosi' sono esclusi valori illegali).Questo cmq ha chiarito i miei dubbi i merito , perche volevo proprio capire sintatticamente come scrivere l istruzione che verificava se auto o camion.
Oppure in altri linguaggi si possono definire delle named constants (byte o interi) e p.es. testare
if(tipo)==CAMION dove CAMION vale 1, AUTO vale 0 e magari MOTO vale 2. Un esempio da un mio caso java (convenzione di usare il maiuscolo per le named constants)
Codice: Seleziona tutto
static final protected int LUTA=10,LUTGRAY=0,LUTRED=1,LUTGREEN=2,LUTBLUE=3; // definizioni lut=LUTA; myMethod(lut); // nel chiamante // e nel myMethod switch (lut) { default: case LUTA: ... break; case LUTGRAY: ... break; }
Re: Variabile boolean o stringa ?
Codice: Seleziona tutto
Program autocamion;
uses crt;
var
tipoveicolo:string;
cc:integer;
auto:string;
camion:string;
begin
clrscr
write('Auto o camion');
readln(tipoveicolo);
if (tipoveicolo='auto') then
begin
write('Cc');
readln(cc);
if cc<=1000 then
begin
write('Paga 20 Euro');
end
else
if cc<=2000 then
begin
write('Paga 30 euro');
end
else
write('Paga 40 euro');
end;
if (tipoveicolo='camion') then
begin
write('Cc');
readln(cc);
if cc<=2000 then
begin
write('Paga 40 euro');
end
else
if cc<=3000 then
begin
write('Paga 50 euro');
end
else
write('Paga 100 euro');
end;
readln;
end.
Re: Variabile boolean o stringa ?
Poi una domanda , nel caso l utente inserisse automobile , invece che auto, il programma non si avvierebbe nemmeno , non riconoscendo il valore ?!
- GjMan78
- Rampante Reduce
- Messaggi: 5492
- Iscrizione: mercoledì 22 novembre 2006, 19:15
- Desktop: KdePlasma
- Distribuzione: EndeavourOS
- Sesso: Maschile
- Località: ~/Italia/Lazio/Viterbo/
Re: Variabile boolean o stringa ?
Prova e vedi cosa succede
MacBook Pro - Intel i5-3210 - 16 Gbyte Ram DDR3 - SSD 500 Gbyte x 2
»»» 𝗙𝗮𝗶 𝗶𝗹 𝗕𝗮𝗰𝗸𝘂𝗽! ¯\_(ツ)_/¯
»»» 𝗙𝗮𝗶 𝗶𝗹 𝗕𝗮𝗰𝗸𝘂𝗽! ¯\_(ツ)_/¯
Re: Variabile boolean o stringa ?
Infatti non si avvia..quindi come posso risolvere questa cosa , di certo non posso variabilizzare ogni tipo di modo in cui si puo dire auto
- GjMan78
- Rampante Reduce
- Messaggi: 5492
- Iscrizione: mercoledì 22 novembre 2006, 19:15
- Desktop: KdePlasma
- Distribuzione: EndeavourOS
- Sesso: Maschile
- Località: ~/Italia/Lazio/Viterbo/
Re: Variabile boolean o stringa ?
aggiungi un ulteriore controllo, no?
Se non è stato inserito auto o camion allora scrivi "valore non valido, inserisci auto o camion"
Se non è stato inserito auto o camion allora scrivi "valore non valido, inserisci auto o camion"
MacBook Pro - Intel i5-3210 - 16 Gbyte Ram DDR3 - SSD 500 Gbyte x 2
»»» 𝗙𝗮𝗶 𝗶𝗹 𝗕𝗮𝗰𝗸𝘂𝗽! ¯\_(ツ)_/¯
»»» 𝗙𝗮𝗶 𝗶𝗹 𝗕𝗮𝗰𝗸𝘂𝗽! ¯\_(ツ)_/¯
-
- Scoppiettante Seguace
- Messaggi: 371
- Iscrizione: venerdì 10 dicembre 2021, 18:33
- Desktop: fvwm
- Distribuzione: (X)Ubuntu20@home; openSUSE42.3@work
- Sesso: Maschile
- Località: Paneropoli
Re: Variabile boolean o stringa ?
Non uno storage ma lo storage. Quando io ho imparato a programmare si usava praticamente solo l'inglese (e non era male). Non saprei come dirlo in italiano in modo generale. Puo' essere la quantita' di dati da tenere "in memoria" nel programma (la dimensione di un array), oppure la dimensione di un file su disco ("memoria di massa" si diceva una volta). Se devo tenere un elenco di veicoli in un database o in un file puo' far differenza se uso un flag di un byte o una stringa di dieci caratteri ... soprattutto se fosse un elenco di qualche migliaio di singoli veicoli "iscritti" per dire a qualcosa tipo telepass.
Se e' un puro programmino che dato il tipo di un singolo caso ritorna un prezzo (come nell'esempio postato) non pesa nulla.
In quanto all'esempio, e' sempre buona cosa considerare per ogni input richiesto TUTTI i possibili casi, e validare che sia uno dei casi "legali". Non basta (anche se e' buono e giusto) dire all'utente i possibili casi. Occorre verificare che sia uno di quelli. Se si vuole accettare "auto" e "automobile" si potrebbe testare i primi quattro caratteri della stringa (ma accetterebbe anche "autoscontro" o "automatismo"). Oppure piu' semplicemente usare un construtto case, o anche una serie di banali if then else if then ... else endif, che dopo avere verificato tutti i casi legali, se ne trova un altro emette un messaggio di errore, o chiede un nuovo input.
Meglio pensarci da subito.
Un tipico programma "professionale" in genere e' composto da un 30% di codice che fa il lavoro, un 30% di gestione degli errori, e un 30% di commenti (utilissimi quando ci si ritorna poi dopo).
The reasonable man adapts himself to the world: the unreasonable one persists in trying to adapt the world to himself. Therefore all progress depends on the unreasonable man. (G.B. Shaw)
Re: Variabile boolean o stringa ?
Giustamente , devo ancora abituarmi al fatto di poter fare completamente come mi pare , cmq si , giusto , limito il controllo a auto e camion.
Re: Variabile boolean o stringa ?
Si si questa è una delle prime cose che ho affissato a mente , lavoro molto su carta , con grafici e via dicendo quindi ecco io posso solo che apprendere di piu .Lucio C ha scritto: ↑sabato 10 settembre 2022, 13:50Non uno storage ma lo storage. Quando io ho imparato a programmare si usava praticamente solo l'inglese (e non era male). Non saprei come dirlo in italiano in modo generale. Puo' essere la quantita' di dati da tenere "in memoria" nel programma (la dimensione di un array), oppure la dimensione di un file su disco ("memoria di massa" si diceva una volta). Se devo tenere un elenco di veicoli in un database o in un file puo' far differenza se uso un flag di un byte o una stringa di dieci caratteri ... soprattutto se fosse un elenco di qualche migliaio di singoli veicoli "iscritti" per dire a qualcosa tipo telepass.Se e' un puro programmino che dato il tipo di un singolo caso ritorna un prezzo (come nell'esempio postato) non pesa nulla.Quindi non è altro che la dimensione del programma o la quantita totali che servono per la costruzione del programma, o nel caso di un database è la dimensione del data base stesso ??
In quanto all'esempio, e' sempre buona cosa considerare per ogni input richiesto TUTTI i possibili casi, e validare che sia uno dei casi "legali". Non basta (anche se e' buono e giusto) dire all'utente i possibili casi. Occorre verificare che sia uno di quelli. Se si vuole accettare "auto" e "automobile" si potrebbe testare i primi quattro caratteri della stringa (ma accetterebbe anche "autoscontro" o "automatismo"). Oppure piu' semplicemente usare un construtto case, o anche una serie di banali if then else if then ... else endif, che dopo avere verificato tutti i casi legali, se ne trova un altro emette un messaggio di errore, o chiede un nuovo input.
Meglio pensarci da subito.
Un tipico programma "professionale" in genere e' composto da un 30% di codice che fa il lavoro, un 30% di gestione degli errori, e un 30% di commenti (utilissimi quando ci si ritorna poi dopo).
Re: Variabile boolean o stringa ?
Senno posso limitare i caratteri di una variabile stringa , cioe definire che quella variabile avrà un tot di 4 caratteri e l altra di 6 ?GreenCode ha scritto: ↑sabato 10 settembre 2022, 14:33Si si questa è una delle prime cose che ho affissato a mente , lavoro molto su carta , con grafici e via dicendo quindi ecco io posso solo che apprendere di piu .Lucio C ha scritto: ↑sabato 10 settembre 2022, 13:50Non uno storage ma lo storage. Quando io ho imparato a programmare si usava praticamente solo l'inglese (e non era male). Non saprei come dirlo in italiano in modo generale. Puo' essere la quantita' di dati da tenere "in memoria" nel programma (la dimensione di un array), oppure la dimensione di un file su disco ("memoria di massa" si diceva una volta). Se devo tenere un elenco di veicoli in un database o in un file puo' far differenza se uso un flag di un byte o una stringa di dieci caratteri ... soprattutto se fosse un elenco di qualche migliaio di singoli veicoli "iscritti" per dire a qualcosa tipo telepass.Se e' un puro programmino che dato il tipo di un singolo caso ritorna un prezzo (come nell'esempio postato) non pesa nulla.Quindi non è altro che la dimensione del programma o la quantita totali che servono per la costruzione del programma, o nel caso di un database è la dimensione del data base stesso ??
In quanto all'esempio, e' sempre buona cosa considerare per ogni input richiesto TUTTI i possibili casi, e validare che sia uno dei casi "legali". Non basta (anche se e' buono e giusto) dire all'utente i possibili casi. Occorre verificare che sia uno di quelli. Se si vuole accettare "auto" e "automobile" si potrebbe testare i primi quattro caratteri della stringa (ma accetterebbe anche "autoscontro" o "automatismo"). Oppure piu' semplicemente usare un construtto case, o anche una serie di banali if then else if then ... else endif, che dopo avere verificato tutti i casi legali, se ne trova un altro emette un messaggio di errore, o chiede un nuovo input.
Meglio pensarci da subito.
Un tipico programma "professionale" in genere e' composto da un 30% di codice che fa il lavoro, un 30% di gestione degli errori, e un 30% di commenti (utilissimi quando ci si ritorna poi dopo).
-
- Scoppiettante Seguace
- Messaggi: 371
- Iscrizione: venerdì 10 dicembre 2021, 18:33
- Desktop: fvwm
- Distribuzione: (X)Ubuntu20@home; openSUSE42.3@work
- Sesso: Maschile
- Località: Paneropoli
Re: Variabile boolean o stringa ?
1) p.f. e' inutile includere tutto il messaggio a cui si risponde (solo le parti specifiche)
2) non so in pascal, ma in genere si puo' certamente stabilire una lunghezza per una stringa. Il modo poi come viene ... ehm ... storata dipende dal linguaggio (ed eventualmente dal tipo). P.es. in Fortran la lunghezza e' predefinita-fissa e viene riempita con eventuali blank. In C le stringhe sono terminate da un null (0 binario). In SQL esiste sia char(n) che varchar(n) ... nel primo caso so o comunque allocati n caratteri, nel secondo un max di n caratteri ma anche meno. In ogni caso non serve preoccuparsi dello spazio per poche piccole variabili "scalari", solo per grandi vettori o file.
2) non so in pascal, ma in genere si puo' certamente stabilire una lunghezza per una stringa. Il modo poi come viene ... ehm ... storata dipende dal linguaggio (ed eventualmente dal tipo). P.es. in Fortran la lunghezza e' predefinita-fissa e viene riempita con eventuali blank. In C le stringhe sono terminate da un null (0 binario). In SQL esiste sia char(n) che varchar(n) ... nel primo caso so o comunque allocati n caratteri, nel secondo un max di n caratteri ma anche meno. In ogni caso non serve preoccuparsi dello spazio per poche piccole variabili "scalari", solo per grandi vettori o file.
The reasonable man adapts himself to the world: the unreasonable one persists in trying to adapt the world to himself. Therefore all progress depends on the unreasonable man. (G.B. Shaw)
Re: Variabile boolean o stringa ?
Ok che per le poche variabili non serve preoccuparsi , io la proponevo come soluzione al fatto sintattico , sfruttando la lunghezza della stringa posso controllare se l input sia uno o l altro in modo piu selettivo , perche se chiedo di inserire auto o camion , l istinto è quello di riscrivere senza stare troppo a pensare a come scrivere , quindi va da se che scriverai o auto o camion , non di certo cane o canotto .. quindi userei la lunghezza della stringa piu come un controllo e niente piu... Cosa significa p.f. ....inizio del punto 1 ?Lucio C ha scritto: ↑sabato 10 settembre 2022, 15:211) p.f. e' inutile includere tutto il messaggio a cui si risponde (solo le parti specifiche)
2) non so in pascal, ma in genere si puo' certamente stabilire una lunghezza per una stringa. Il modo poi come viene ... ehm ... storata dipende dal linguaggio (ed eventualmente dal tipo). P.es. in Fortran la lunghezza e' predefinita-fissa e viene riempita con eventuali blank. In C le stringhe sono terminate da un null (0 binario). In SQL esiste sia char(n) che varchar(n) ... nel primo caso so o comunque allocati n caratteri, nel secondo un max di n caratteri ma anche meno. In ogni caso non serve preoccuparsi dello spazio per poche piccole variabili "scalari", solo per grandi vettori o file.
Chi c’è in linea
Visualizzano questa sezione: 0 utenti iscritti e 9 ospiti