PDA

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?

cionci
01-12-2003, 23:37
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

mjordan
02-12-2003, 15:08
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?

mjordan
03-12-2003, 05:13
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:

lovaz
03-12-2003, 15:21
Se intende un compilatore a 16 bit dovrebbe essere vero.

mjordan
03-12-2003, 16:00
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"?

mjordan
03-12-2003, 16:36
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

mjordan
03-12-2003, 17:11
E' bona almeno sta professoressa??? :D

cionci
03-12-2003, 18:05
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 ?

mjordan
03-12-2003, 19:56
Non credo ... Ma non ne sono sicuro al 100% ... Anche se lo scopo che ha il Pascal standard non mi lascia presagire diversamente ...

cionci
03-12-2003, 20:10
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***

lovaz
04-12-2003, 10:04
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.

cionci
04-12-2003, 10:10
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...

lovaz
04-12-2003, 10:24
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

mjordan
04-12-2003, 13:09
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: :)

cionci
04-12-2003, 15:20
Originariamente inviato da lovaz
E cosa ho detto io? :D
Che a 32 bit ne occupa 4...invece ne occupa 2...

lovaz
04-12-2003, 15:33
Originariamente inviato da cionci
Che a 32 bit ne occupa 4...invece ne occupa 2...
Sei sicuro? :eek:

cionci
04-12-2003, 15:39
Originariamente inviato da lovaz
Sei sicuro? :eek:
Che io sappia sì...ora ricontrollo...

mjordan
04-12-2003, 15:42
Originariamente inviato da DarkSiDE
vado a fare l'esame :cool: :)

In bocca al lupo... ;)

cionci
04-12-2003, 16:05
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 :)