|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Jan 2006
Messaggi: 5
|
funzioni C
Potreste aiutarmi a risolvere questo quesito?
Grazie 1000, manu Dato il seguente comando C, dove f è una variabile di tipo funzione da int a char e1 = f( e2 + e3 / e4); a) Di che tipo possono essere le espressioni e1, e2, e3, e4 ? b) In quale ordine vengono valutate le espressioni e sotto-espressioni presenti in questo comando? c) In quale ambiente viene valutata la variabile f? d) Quale valore viene assegnato al designatore e1? |
|
|
|
|
|
#2 | |||||
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Quote:
Quote:
Quote:
Quote:
Spiegati meglio ... non vorrei aver capito male io!
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|||||
|
|
|
|
|
#3 |
|
Junior Member
Iscritto dal: Jan 2006
Messaggi: 5
|
Grazie,
non mi so spiegare meglio perchè mi hanno assegnato il testo così senza delucidazioni. Ne invio uno simile, magari è più chiaro: Dato il seguente comando C, dove e1, e2, e3 sono espressioni di tipo int, ed f è una variabile di tipo funzione da int a int e1 = f( e2 * e3); a) In quale ordine vengono valutate le espressioni presenti in questo comando? b) Quale valore viene assegnato al designatore e1? |
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: Oct 2005
Città: Genova
Messaggi: 937
|
Quote:
1) "f" e' una funzione il cui dominio e' "int" e il codominio e' sempre "int" ovvero, detto alla C: int f(int parametro) {...}; 2) "e2" ed "e3" sono - o semplici variabili intere - o funzioni che comunque restituiscono interi - o costanti intere, quindi: int e2; int e3; oppure int e2() {..}; int e3() {..}; oppure #define e2 2 #define e3 3 3) "e1" e' una variabile intera, quindi int e1; (in questo momento non mi sembra ci siano altre possibilita' che abbiano senso) A questo punto: a) In quale ordine vengono valutate le espressioni presenti in questo comando? Be', forse ti interessa piu' in quale ordine vengono eseguite (sul termine "valutate" secondo me si potrebbe aprire una discussione) e1 = f( e2 * e3); a occhio direi che: - viene eseguita e2 (se e' una funzione) - viene eseguita e3 (se e' una funzione) - viene eseguita e2*e3 - viene eseguita f(e2*e3) - viene eseguita e1=f(e2*e3) Giusto "per fini didattici" ti ricordo inoltre che anche l'intera e1 = f(e2*e3) e' una funzione con un risultato e che quindi potresti scrivere int e4 = e1 = f(e2*e3) o anche (capita spesso questa forma) if ((e1 = fe2*e3) == 0) {} b) Quale valore viene assegnato al designatore e1? C'e' forse un trabocchetto? Direi semplicemente il valore di f(e2*e3) Quando davo ripetizioni di informatica mi capitava che alcune volte i ragazzi che venivano da me, specialmente se erano agli inizi, avessero difficolta' a capire il "verso" delle assegnazioni, ovvero che a = b significa, per usare una vecchia notazione a <- b (ovvero ad a viene assegnato il valore di b e il valore di b non cambia) Forse questa domanda serve per valutare se hai capito come funziona il "verso" delle assegnazioni? Ciao, Mr Hyde
__________________
MacMini Late 2009/MacMini 2018 |
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Oct 2002
Città: Roma
Messaggi: 1502
|
Penso che stia facendo semantica operazionale su frammenti di linguaggio C; per poterti rispondere bisognerebbe vedere le regole di inferenza che state usando per il calcolo della semantica e degli ambienti.
__________________
Sun Certified Java Programmer EUCIP Core Level Certified European Certification of Informatics Professionals |
|
|
|
|
|
#7 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Cosa vuol dire?
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 13:23.



















