View Full Version : pascal - occupazione in memoria
DarkSiDE
01-12-2003, 23:15
mi andrebbe bene anche un link, cmq...
1) Si consideri la seguente dichiarazione: Var s:string[30]; Qual è l’occupazione di memoria (per il
Pascal standard) espressa in byte della variabile s?
2) Si consideri un vettore di 64numeri reali, dichiarato all’interno di un programma Pascal (standard).
Calcolare quanti byte sono necessari per memorizzare il vettore
3) L'occupazione in memoria di un array di interi è pari al numero di interi per lo spazio occupato normarlmente da un intero o è diverso?
4) Si consideri un vettore di 64Xnumeri interi, dichiarato all’interno di un programma
Pascal. Calcolare quanti byte sono necessari per memorizzare il vettore?
5) Si consideri la seguente dichiarazione: Var s:char[30];
Qual è l’occupazione di memoria (per il Pascal standard) espressa in byte della variabile s? e perché?
6) Quali sono i tipi predefiniti standard del linguaggio Pascal?
Dipende cosa intendi per standard...
In un compilatore a 32 bit o 16 bit (visto che uno dei più usati Pascal è Turbo Pasquale)...
DarkSiDE
02-12-2003, 11:42
al turbo pascal credo si riferisca, cristo ho un'insegnante che è un'IDIOTA
Già è proprio un idiota. Il pascal standard non ha nessuna funzione per verificare l'occupazione di memoria di variabili e compagnia bella... Ma forse si riferiva ai valori "lisci" che usa il compilarore, non di scrivere un programma standard che restituisca in output quelle informazioni... :confused: O mi sbaglio? :confused:
DarkSiDE
02-12-2003, 17:22
Originariamente inviato da mjordan
Già è proprio un idiota. Il pascal standard non ha nessuna funzione per verificare l'occupazione di memoria di variabili e compagnia bella... Ma forse si riferiva ai valori "lisci" che usa il compilarore, non di scrivere un programma standard che restituisca in output quelle informazioni... :confused: O mi sbaglio? :confused:
ed in questo caso sarebbero?
la cosa che mi incuriosisce, se ammettendo un interger occupa 2 byte, un array di 10 integer occupa 10*2=20?
Originariamente inviato da DarkSiDE
ed in questo caso sarebbero?
la cosa che mi incuriosisce, se ammettendo un interger occupa 2 byte, un array di 10 integer occupa 10*2=20?
I valori dipendono dal compilatore, certo.
Si, supponendo un intero 2 byte, un array da 10 integer occupa 20 byte.
DarkSiDE
03-12-2003, 15:09
oggi ho chiesto e la "professoressa" ha detto che per il "pascal standard" (???) i char occupano due byte, negli array occupano 1 bte perchè sono packed (compattati)
:rolleyes: :rolleyes:
Se intende un compilatore a 16 bit dovrebbe essere vero.
Non è vero. In tutti i linguaggi di programmazione un array ha dimensione che è la somma delle singole dimensioni degli elementi dell'array stesso. Quindi se consideri un char 1 byte, un array da 20 elementi ha dimensione 20 byte.
Gli array compattati vanno specificati in fase di dichiarazione ed è quindi una situazione "voluta" da chi sta programmando. Ma va specificata esplicitamente, quindi non è affatto vero che gli array in Pascal standard sono "packed"... E come dire che i file sul tuo disco sono zippati. Sono zippati solo se tu lo vuoi,
DarkSiDE
03-12-2003, 16:25
Originariamente inviato da mjordan
Non è vero. In tutti i linguaggi di programmazione un array ha dimensione che è la somma delle singole dimensioni degli elementi dell'array stesso. Quindi se consideri un char 1 byte, un array da 20 elementi ha dimensione 20 byte.
Gli array compattati vanno specificati in fase di dichiarazione ed è quindi una situazione "voluta" da chi sta programmando. Ma va specificata esplicitamente, quindi non è affatto vero che gli array in Pascal standard sono "packed"... E come dire che i file sul tuo disco sono zippati. Sono zippati solo se tu lo vuoi,
infatti ci troviamo d'accordo, grazie per la spiegazione comunque
ma che caXXo significa pascal "STANDARD"?
L'ultima standardizzazione del comitato ANSI per il Pascal ANSI-ISO DIS 7185.
DarkSiDE
03-12-2003, 16:55
Originariamente inviato da mjordan
L'ultima standardizzazione del comitato ANSI per il Pascal ANSI-ISO DIS 7185.
#noncentrauncavolo on
la prof fa parte dell'IEEE... :eek:
#noncentrauncavolo end
E' bona almeno sta professoressa??? :D
Originariamente inviato da mjordan
L'ultima standardizzazione del comitato ANSI per il Pascal ANSI-ISO DIS 7185.
La standardizzazione nonc redo che preveda un dimensione per gli interi...o sbaglio ?
Non credo ... Ma non ne sono sicuro al 100% ... Anche se lo scopo che ha il Pascal standard non mi lascia presagire diversamente ...
Anche perchè bene o male se la prevedesse...sarebbe sicuramente a 32 bit...e quindi non 16 bit come nel Turbo Pasquale...
DarkSiDE
04-12-2003, 07:44
Originariamente inviato da mjordan
E' bona almeno sta professoressa??? :D
nn ti posto il link con la foto sennò ti viene un colpo :rolleyes: :muro:
è un ce***
Originariamente inviato da mjordan
Non è vero. In tutti i linguaggi di programmazione un array ha dimensione che è la somma delle singole dimensioni degli elementi dell'array stesso. Quindi se consideri un char 1 byte, un array da 20 elementi ha dimensione 20 byte.
Gli array compattati vanno specificati in fase di dichiarazione ed è quindi una situazione "voluta" da chi sta programmando. Ma va specificata esplicitamente, quindi non è affatto vero che gli array in Pascal standard sono "packed"... E come dire che i file sul tuo disco sono zippati. Sono zippati solo se tu lo vuoi,
Intendevo dire che con un compilatore a 16 bit se dichiari un char occupa 2 byte di memoria FISICA (a 32 bit occupera' 4 byte), almeno questo nella (penso) totalita' dei compilatori C.
Qui però si parla di allineamento...non di occupazione di memoria fisica...se un vettore di char lo vado a scrivere su disco non occupa 2*la lunghezza...ma 1*la lunghezza...
Anche nei 32 bit l'allineamento è ai 2 byte...
Questo perchè è molto più costoso leggere un dato a partire da un indirizzo di memoria dispari...
Originariamente inviato da cionci
Qui però si parla di allineamento...non di occupazione di memoria fisica...se un vettore di char lo vado a scrivere su disco non occupa 2*la lunghezza...ma 1*la lunghezza...
Anche nei 32 bit l'allineamento è ai 2 byte...
Questo perchè è molto più costoso leggere un dato a partire da un indirizzo di memoria dispari...
E cosa ho detto io? :D
Originariamente inviato da DarkSiDE
nn ti posto il link con la foto sennò ti viene un colpo :rolleyes: :muro:
è un ce***
Pure cesso è :D Stiamo a cavallo :D
DarkSiDE
04-12-2003, 15:14
vado a fare l'esame :cool: :)
Originariamente inviato da lovaz
E cosa ho detto io? :D
Che a 32 bit ne occupa 4...invece ne occupa 2...
Originariamente inviato da cionci
Che a 32 bit ne occupa 4...invece ne occupa 2...
Sei sicuro? :eek:
Originariamente inviato da lovaz
Sei sicuro? :eek:
Che io sappia sì...ora ricontrollo...
Originariamente inviato da DarkSiDE
vado a fare l'esame :cool: :)
In bocca al lupo... ;)
Originariamente inviato da lovaz
Sei sicuro? :eek:
Hai ragione tu...l'allineamento è ai 4 byte succesivi...
Comunque sui vettori di char la lunghezza complessiva 1 * N caratteri + l'allineamento ai 4 byte...
Almeno così dovrebbe essere in C e C++...
DarkSiDE
04-12-2003, 19:13
allora i char occupano 2 byte ma in realtà ne viene utilizzato solo uno, nella stringa infatti l'occupazione di ogni singolo char è 1 byte
DarkSiDE
04-12-2003, 19:16
cmq l'esame non è andato BENE come speravo, ho fatto un paio di errori abbastanza banali, cmq nel complesso spero di riuscire a prendere un voto decente :)
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.