cerca
Laboratorio C - Domande e risposte
modifica cronologia stampa login logout

Wiki

UniCrema


Materie per semestre

Materie per anno

Materie per laurea


Help

Uni.DomandeC History

Hide minor edits - Show changes to markup

Added lines 2-3:
 :: Laboratorio C - Domande e risposte ::
Deleted lines 218-221:
Changed line 222 from:
to:
Changed line 222 from:

C

to:
June 05, 2007, at 10:09 AM by 159.149.102.5 -
Changed lines 215-216 from:

NOTA: Le funzioni fprintf() e printf() sono simili, solo che la funzione printf() stampa a monitor, mentre la funzione fprintf() stampa su una stringa

to:

NOTA: Le funzioni sprintf() e printf() sono simili, solo che la funzione printf() stampa a monitor, mentre la funzione sprintf() stampa su una stringa

Changed lines 145-146 from:
  • '''Falso, e' sinonimo di cattiva progettazione del codice, generano errori imprevisti e difficili da debuggare, sono da evitare come la peste.'''
to:
  • Falso, è sinonimo di cattiva progettazione del codice, generano errori imprevisti e difficili da debuggare, sono da evitare come la peste.
Added line 1:

(:title Laboratorio C - Domande e risposte:)

Added lines 217-221:
Changed lines 45-47 from:

- - no

to:
  • no
Changed lines 52-54 from:

- no -

to:
  • no
Changed lines 59-64 from:

- if - union - enum - void - double

to:
  • if
  • union
  • enum
  • void
  • double
Changed lines 69-72 from:

- dal programma stesso - dal sistema operativo - da nessuno dei due, e' pronta dall'avvio della macchina

to:
  • dal programma stesso
  • dal sistema operativo
  • da nessuno dei due, e' pronta dall'avvio della macchina
Changed lines 77-79 from:

- sullo heap - sullo stack - nell'area del programma

to:
  • sullo heap
  • sullo stack
  • nell'area del programma
Changed lines 83-85 from:

- No - Si'

to:
  • No
  • Si'
Changed lines 90-91 from:

- x e' un indirizzo, mentre x[0] e' il primo dato contenuto nell'array - Nessuna, sono entrambi riferimenti all'indirizzo prima cella

to:
  • x e' un indirizzo, mentre x[0] e' il primo dato contenuto nell'array
  • Nessuna, sono entrambi riferimenti all'indirizzo prima cella
Changed lines 95-99 from:

- nulla, la riga e' sbagliata - un puntatore a float - un puntatore flottante - un puntatore con un cast a float

to:
  • nulla, la riga e' sbagliata
  • un puntatore a float
  • un puntatore flottante
  • un puntatore con un cast a float
Changed lines 104-105 from:

- Che pi e' una cella che conterra' l'indirizzo della variabile i - Che saranno la stessa cosa e potro' intercambiarli nel codice.

to:
  • Che pi e' una cella che conterra' l'indirizzo della variabile i
  • Che saranno la stessa cosa e potro' intercambiarli nel codice.
Changed lines 109-111 from:

- uno strumento che il compilatore usa per definire i tipi di dato in ingresso e uscita alla funzione - una funzione solo abbozzata, appunto allo stato di prototipo - una nota per gli sviluppatori futuri

to:
  • uno strumento che il compilatore usa per definire i tipi di dato in ingresso e uscita alla funzione
  • una funzione solo abbozzata, appunto allo stato di prototipo
  • una nota per gli sviluppatori futuri
Changed lines 115-117 from:

- Vero - Falso, finisce con una graffa aperta a cui segue il codice della funzione

to:
  • Vero
  • Falso, finisce con una graffa aperta a cui segue il codice della funzione
Changed lines 122-123 from:

- Falso, il prototipo puo' non contenere il nome dei parametri formali, quindi non sempre sono uguali - Vero, sono sempre uguali

to:
  • Falso, il prototipo puo' non contenere il nome dei parametri formali, quindi non sempre sono uguali
  • Vero, sono sempre uguali
Changed lines 127-128 from:

- si inseriscono solo a scopo documentativo, il compilatore li ignora e guarda solo il TIPO dei dati passati - devono sempre essere inclusi altrimenti il compilatore non riesce ad usarlo

to:
  • si inseriscono solo a scopo documentativo, il compilatore li ignora e guarda solo il TIPO dei dati passati
  • devono sempre essere inclusi altrimenti il compilatore non riesce ad usarlo
Changed lines 132-133 from:

- Vero, il codice delle funzioni potrebbe essere gia' compilato in una libreria - Falso, se alla fine vogliamo compilare il nostro codice che usa quelle funzioni allora nel file incluso deve esserci TUTTO il codice

to:
  • Vero, il codice delle funzioni potrebbe essere gia' compilato in una libreria
  • Falso, se alla fine vogliamo compilare il nostro codice che usa quelle funzioni allora nel file incluso deve esserci TUTTO il codice
Changed lines 137-139 from:

- Falso, proprio non si vedono e quindi non esiste questo problema - Vero, meglio usare sempre nomi diversi

to:
  • Falso, proprio non si vedono e quindi non esiste questo problema
  • Vero, meglio usare sempre nomi diversi
Changed line 144 from:

- '''Falso, e' sinonimo di cattiva progettazione del codice, generano errori imprevisti e

to:
  • '''Falso, e' sinonimo di cattiva progettazione del codice, generano errori imprevisti e
Changed lines 146-147 from:

- Vero, e' sempre consigliabile definire molte variabili globali. Infatti avendo il nome TUTTO IN MAIUSCOLO non possono essere confuse con le altre

to:
  • Vero, e' sempre consigliabile definire molte variabili globali. Infatti avendo il nome TUTTO IN MAIUSCOLO non possono essere confuse con le altre
Changed lines 152-154 from:

- vero - falso

to:
  • vero
  • falso
Changed lines 159-161 from:

- vero - falso

to:
  • vero
  • falso
Changed lines 166-168 from:

- vero - falso

to:
  • vero
  • falso
Changed lines 173-175 from:

- vero - falso

to:
  • vero
  • falso
Changed lines 180-182 from:

- vero - falso

to:
  • vero
  • falso
Changed lines 187-190 from:

- alloca n interi in memoria - alloca n byte in memoria - alloca la memoria della variabile n

to:
  • alloca n interi in memoria
  • alloca n byte in memoria
  • alloca la memoria della variabile n
Changed lines 196-199 from:

- 7 - 88 - (4>9)

to:
  • 7
  • 88
  • (4>9)
Changed lines 205-207 from:

- al tempo relativo che il programma e' stato effettivamente in esecuzione - ad un tempo assoluto

to:
  • al tempo relativo che il programma e' stato effettivamente in esecuzione
  • ad un tempo assoluto
Changed lines 212-214 from:

- vero - falso

to:
  • vero
  • falso
Changed lines 113-115 from:

16. Il prototipo di una funzione finisce sempre con un ";".

- Vero

to:

16. Il prototipo di una funzione finisce sempre con un ";".

- Vero

Changed lines 118-124 from:

NOTA:E' la definizione che non termina con il “;”, ma dalle parentesi graffe.


17. La definizione di una funzione ha come prima riga il prototipo della funzione stessa.

- Falso, il prototipo puo' non contenere il nome dei parametri formali, quindi non sempre sono uguali

to:

NOTA: E'la definizione che non termina con il “;”, ma con delle parentesi graffe.


17. La definizione di una funzione ha come prima riga il prototipo della funzione stessa.

- Falso, il prototipo puo' non contenere il nome dei parametri formali, quindi non sempre sono uguali

Changed lines 124-129 from:

18. Nel prototipo i parametri formali ...

- si inseriscono solo a scopo documentativo, il compilatore li ignora e guarda solo il TIPO dei dati passati

to:

18. Nel prototipo i parametri formali...

- si inseriscono solo a scopo documentativo, il compilatore li ignora e guarda solo il TIPO dei dati passati

Changed lines 129-134 from:

	19.  I file che includiamo con la direttiva #include possono essere 	delle semplici collezioni di prototipi di funzioni.

- Vero, il codice delle funzioni potrebbe essere gia' compilato in una libreria

to:

19. I file che includiamo con la direttiva #include possono essere delle semplici collezioni di prototipi di funzioni.

- Vero, il codice delle funzioni potrebbe essere gia' compilato in una libreria

Changed lines 134-139 from:

20. Le variabili che definiamo in una funzione sono visibili all'esterno e quindi dobbiamo stare attenti con i nomi delle variabili perche' non si confondano con quelli del main.

- Falso, proprio non si vedono e quindi non esiste questo problema

to:

20. Le variabili che definiamo in una funzione sono visibili all'esterno e quindi dobbiamo stare attenti con i nomi delle variabili perche' non si confondano con quelli del main.

- Falso, proprio non si vedono e quindi non esiste questo problema

Changed lines 140-147 from:

NOTA:Le variabili dichiarate all'interno di un blocco muoiono quando il blocco viene chiuso, quindi non si vedono!


21. Usare delle variabili globali e' sempre una buona idea che risolve spesso problemi di strutturazione del codice

- Falso, e' sinonimo di cattiva progettazione del codice, generano errori imprevisti e

  difficili da debuggare, sono da evitare come la peste.
to:

NOTA: Le variabili dichiarate all'interno di un blocco muoiono quando il blocco viene chiuso, quindi non si vedono!


21. Usare delle variabili globali e' sempre una buona idea che risolve spesso problemi di strutturazione del codice

- '''Falso, e' sinonimo di cattiva progettazione del codice, generano errori imprevisti e

  difficili da debuggare, sono da evitare come la peste.'''
Changed lines 148-153 from:

NOTA:Se dichiariamo delle variabili globali e all'interno di un blocco utilizziamo lo stesso nome per una variabile, possiamo avere spiacevoli imprevisti. Quindi è meglio non utilizzare le variabili globali.


22. La funzione fscanf non puo' essere usata per leggere i dati dallo standard input:

to:

NOTA: Se dichiariamo delle variabili globali e all'interno di un blocco utilizziamo lo stesso nome per una variabile, possiamo avere spiacevoli imprevisti. Quindi è meglio non utilizzare le variabili globali.


22. La funzione fscanf non puo' essere usata per leggere i dati dallo standard input:

Added lines 153-166:

- falso

NOTA: La funzione fscanf è utilizzata per leggere da file!


23. Tutti i file devono essere aperti prima di essere letti o scritti, per questo motivo stdin, stdout e lo standard error devono essere aperti con una fopen prima di essere usati:

- vero - falso

NOTA: E' vero che i file prima di essere letti o scritti devono essere aperti, ma è falso che che devono essere aperti gli stdin e stdout e lo standard error.


24. Tutti i file devono essere chiusi prima della uscita dal main con fclose:

- vero

Changed lines 169-175 from:

NOTA:La funzione fscanf è utilizzata per leggere da file!


23. Tutti i file devono essere aperti prima di essere letti o scritti, per questo motivo stdin, stdout e lo standard error devono essere aperti con una fopen prima di essere usati:

- vero

to:

NOTA: Prima di operare sui file bisogna aprirli (con una fopen();) ci si opera e infine bisogna chiuderli (con una fclose();).


25. Per trovare un record in un file ad accesso casuale non e' necessario scorrere tutti gli altri record nel file

- vero

Changed lines 176-181 from:

NOTA:E' vero che i file prima di essere letti o scritti devono essere aperti, ma è falso che che devono essere aperti gli stdin e stdout e lo standard error.


24. Tutti i file devono essere chiusi prima della uscita dal main con fclose:

to:

NOTA: Basta utilizzare la funzione fseek(); la quale ci permette di spostare la testina su un byte qualunque del file.


26. La funzione fseek deve essere usata solo per trovare l'inizio del file:

Added lines 181-212:

- falso

NOTA: Per trovare l'inizio del file bisogna utilizzare la funzione rewind();.


27. L'istruzione malloc(n):

- alloca n interi in memoria - alloca n byte in memoria - alloca la memoria della variabile n

NOTA: Gli passiamo il numero dei byte, per questo è corretta la seconda! Es: v = (*int)malloc (sizeof(int));


28. Dopo l'istruzione x = (4>9) ? 7 : 88; la variabile intera x contiene:

- 7 - 88 - (4>9)

NOTA: Osserviamo l'istruzione: la dobbiamo interpretare così: 4 è maggiore di 9 ? se si x vale 7 altrimenti x=88.


29. La funzione clock() restituisce un valore che si riferisce

- al tempo relativo che il programma e' stato effettivamente in esecuzione - ad un tempo assoluto

NOTA: E' la funzione time() che ci restituisce un tempo assoluto.


30. La funzione sprintf() e' equivalente alla printf eccetto che l'output sara' memorizzato su una stringa invece che stampato a terminale.

- vero

Changed lines 215-279 from:

NOTA:Prima di operare sui i file bisogna aprirli (con una fopen();) ci si opera e in fine bisogna chiuderli (con una fclose();).


25. Per trovare un record in un file ad accesso casuale non e' necessario scorrere tutti gli altri record nel file

- vero - falso

NOTA:Basta utilizzare la funzione fseek(); la quale ci permette di spostare la testina su un byte qualunque del file.


26. La funzione fseek deve essere usata solo per trovare l'inizio del file:

- vero - falso

NOTA:Per trovare l'inizio del file bisogna utilizzare la funzione rewind();.



27. L'istruzione malloc(n):

- alloca n interi in memoria - alloca n byte in memoria - alloca la memoria della variabile n

NOTA:Gli passiamo il numero dei byte,per questo è corretta la seconda! Es: v = (*int)malloc (sizeof(int));


28. Dopo l'istruzione x = (4>9) ? 7 : 88; la variabile intera x contiene:

- 7 - 88 - (4>9)

NOTA:Osserviamo l'istruzione:la dobbiamo interpretare così: 4 è maggiore di 9 ? se si x vale 7 altrimenti x=88.


29. La funzione clock() restituisce un valore che si riferisce

- al tempo relativo che il programma e' stato effettivamente in esecuzione - ad un tempo assoluto

NOTA:E' la funzione time() che ci restituisce un tempo assoluto.


30. La funzione sprintf() e' equivalente alla printf eccetto che l'output sara' memorizzato su una stringa invece che stampato a terminale.

- vero - falso NOTA:Le funzioni fprintf() e printf() sono simili, solo che la funzione printf() stampa a monitor, mentre la funzione fprintf() stampa su una stringa

to:

NOTA: Le funzioni fprintf() e printf() sono simili, solo che la funzione printf() stampa a monitor, mentre la funzione fprintf() stampa su una stringa

Added lines 1-249:

Le risposte corrette sono quelle in grassetto.


1. Un programma scritto in Fortran, C o Java è

  • un file di testo
  • una sequenza di istruzioni
  • un insieme di 0 e 1
  • una sequenza di numeri binari che il processore puo' interpretare

NOTA: Andava bene anche la seconda, però la risposta completa è: ”un file di testo”, dato che all'interno del programma inseriamo anche delle dichiarazioni.


2. La definizione di una etichetta puo' essere posta:

  • ovunque, tanto e' una sostituzione che avviene a livello di pre-compilazione, ma e' prassi inserirla sopra il main del programma
  • solo sopra il main del programma

NOTA: Le etichette vanno dichiarate prima del main perchè sono necessarie prima delle compilazione del programma


3. La seguente porzione di codice (x=8) è

  • una espressione
  • una istruzione

NOTA: Una espressione non termina mai con il “;”. Se fosse stata (x=8); sarebbe stata una istruzione.


4. Quali delle seguenti espressioni sono vere (anche piu' di una)?

  • Una espressione non ha mai effetti sulle variabili
  • (x==3) e' una istruzione di controllo
  • Un'istruzione è un'espressione con un punto e virgola alla fine

NOTA: La prima non può essere perché ad esempio l'espressione “i++” ha degli effetti sulle variabili;la seconda nemmeno, perché (x==3) è una espressione e non una istruzione. Quindi è la terza!


5. L'espressione 'a[x = n *2, y = n++] = (b = 27) + (c = (f = e - 3));' è corretta?

  • No

NOTA: Non è corretta perché è una istruzione e non un espressione (termina con il “;”).


6. Qualunque dato allocato in un programma C in esecuzione e' semplicemente un insieme di bit:

- - no

NOTA: Il programma durante l'esecuzione diventa un sequenza di bit!


7. Una variabile carattere memorizzata in un programma C in realta' e' scritta come un numero intero:

- no -

NOTA: Ogni carattere ha un corrispondente valore in numeri interi (secondo il codice ASCII).


8. Quale delle seguenti parole riservate serve per dichiarare variabili di tipo built-in?

- if - union - enum - void - double

NOTA: I tipi di dato “built-in” sono quei dati già esistenti in c. La prima è errata perchè non è un tipo di variabile; union e enum non sono parole di tipo built-in. Le risposte corrette sono le ultime due.


9. La memoria che viene impiegata da un programma è stata allocata:

- dal programma stesso - dal sistema operativo - da nessuno dei due, e' pronta dall'avvio della macchina

NOTA: E' il sistema operativo che deve allocare la memoria per i programmi!


10. Le funzioni allocano i loro parametri formali:

- sullo heap - sullo stack - nell'area del programma


11. Il segmento di memoria che contiene il programma puo' crescere se il programma ha necessità

- No - Si'

NOTA: Quando scriviamo le istruzione di un programma al momento della compilazione le istruzioni vengono tradotte in linguaggio macchina, ma rimangono quelle. Quindi lo spazio non aumenta e non diminuisce!


12. Avendo dichiarato int x[100]; che differenza c'e' tra x e x[0]?

- x e' un indirizzo, mentre x[0] e' il primo dato contenuto nell'array - Nessuna, sono entrambi riferimenti all'indirizzo prima cella


13. Avendo la seguente dichiarazione: float * p; si evince che p è:

- nulla, la riga e' sbagliata - un puntatore a float - un puntatore flottante - un puntatore con un cast a float

NOTA: L'istruzione è chiaramente un puntatore a float dato che c'è il simbolo '*'. Se non ci fosse stato il simbolo '*' p sarebbe stata una semplice variabile di tipo float.


14. Avendo definito int i; e int *pi; cosa vuole dire che e' possibile fare in modo che pi punti a i?

- Che pi e' una cella che conterra' l'indirizzo della variabile i - Che saranno la stessa cosa e potro' intercambiarli nel codice.


15. Il prototipo di una funzione è:

- uno strumento che il compilatore usa per definire i tipi di dato in ingresso e uscita alla funzione - una funzione solo abbozzata, appunto allo stato di prototipo - una nota per gli sviluppatori futuri


16. Il prototipo di una funzione finisce sempre con un ";".

- Vero - Falso, finisce con una graffa aperta a cui segue il codice della funzione

NOTA:E' la definizione che non termina con il “;”, ma dalle parentesi graffe.


17. La definizione di una funzione ha come prima riga il prototipo della funzione stessa.

- Falso, il prototipo puo' non contenere il nome dei parametri formali, quindi non sempre sono uguali - Vero, sono sempre uguali


18. Nel prototipo i parametri formali ...

- si inseriscono solo a scopo documentativo, il compilatore li ignora e guarda solo il TIPO dei dati passati - devono sempre essere inclusi altrimenti il compilatore non riesce ad usarlo


	19.  I file che includiamo con la direttiva #include possono essere 	delle semplici collezioni di prototipi di funzioni.

- Vero, il codice delle funzioni potrebbe essere gia' compilato in una libreria - Falso, se alla fine vogliamo compilare il nostro codice che usa quelle funzioni allora nel file incluso deve esserci TUTTO il codice


20. Le variabili che definiamo in una funzione sono visibili all'esterno e quindi dobbiamo stare attenti con i nomi delle variabili perche' non si confondano con quelli del main.

- Falso, proprio non si vedono e quindi non esiste questo problema - Vero, meglio usare sempre nomi diversi

NOTA:Le variabili dichiarate all'interno di un blocco muoiono quando il blocco viene chiuso, quindi non si vedono!


21. Usare delle variabili globali e' sempre una buona idea che risolve spesso problemi di strutturazione del codice

- Falso, e' sinonimo di cattiva progettazione del codice, generano errori imprevisti e

  difficili da debuggare, sono da evitare come la peste.

- Vero, e' sempre consigliabile definire molte variabili globali. Infatti avendo il nome TUTTO IN MAIUSCOLO non possono essere confuse con le altre

NOTA:Se dichiariamo delle variabili globali e all'interno di un blocco utilizziamo lo stesso nome per una variabile, possiamo avere spiacevoli imprevisti. Quindi è meglio non utilizzare le variabili globali.


22. La funzione fscanf non puo' essere usata per leggere i dati dallo standard input:

- vero - falso

NOTA:La funzione fscanf è utilizzata per leggere da file!


23. Tutti i file devono essere aperti prima di essere letti o scritti, per questo motivo stdin, stdout e lo standard error devono essere aperti con una fopen prima di essere usati:

- vero - falso

NOTA:E' vero che i file prima di essere letti o scritti devono essere aperti, ma è falso che che devono essere aperti gli stdin e stdout e lo standard error.


24. Tutti i file devono essere chiusi prima della uscita dal main con fclose:

- vero - falso

NOTA:Prima di operare sui i file bisogna aprirli (con una fopen();) ci si opera e in fine bisogna chiuderli (con una fclose();).


25. Per trovare un record in un file ad accesso casuale non e' necessario scorrere tutti gli altri record nel file

- vero - falso

NOTA:Basta utilizzare la funzione fseek(); la quale ci permette di spostare la testina su un byte qualunque del file.


26. La funzione fseek deve essere usata solo per trovare l'inizio del file:

- vero - falso

NOTA:Per trovare l'inizio del file bisogna utilizzare la funzione rewind();.



27. L'istruzione malloc(n):

- alloca n interi in memoria - alloca n byte in memoria - alloca la memoria della variabile n

NOTA:Gli passiamo il numero dei byte,per questo è corretta la seconda! Es: v = (*int)malloc (sizeof(int));


28. Dopo l'istruzione x = (4>9) ? 7 : 88; la variabile intera x contiene:

- 7 - 88 - (4>9)

NOTA:Osserviamo l'istruzione:la dobbiamo interpretare così: 4 è maggiore di 9 ? se si x vale 7 altrimenti x=88.


29. La funzione clock() restituisce un valore che si riferisce

- al tempo relativo che il programma e' stato effettivamente in esecuzione - ad un tempo assoluto

NOTA:E' la funzione time() che ci restituisce un tempo assoluto.


30. La funzione sprintf() e' equivalente alla printf eccetto che l'output sara' memorizzato su una stringa invece che stampato a terminale.

- vero - falso NOTA:Le funzioni fprintf() e printf() sono simili, solo che la funzione printf() stampa a monitor, mentre la funzione fprintf() stampa su una stringa