Seguimos buscando a Arshak. Ayudanos compartiendo!
Encuesta no oficial de docentes
Resultados de la encuesta no oficial de docentes
Probaste el SIGA Helper?

Donar $100 Donar $200 Donar $500 Donar mensualmente


Enviar respuesta 
 
Calificación:
  • 0 votos - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Buscar en el tema
[APORTE] [SINTAXIS] Final 27/5/2011
Autor Mensaje
Ricitos Sin conexión
Secretario General
Sin estado :(
*******

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 736
Agradecimientos dados: 9
Agradecimientos: 16 en 10 posts
Registro en: Apr 2008
Mensaje: #16
RE: [APORTE] [SINTAXIS] Final 27/5/2011
Sisi, ese ejemplo del final lo entendi
Y si tenes esta sentencia :
int a,b=1 ;a=3+b; while (a) printf ("%d\n",a) ;
Alguien hizo el de las gramaticas de este final ? Como lo hicieron ?
Y si tuviese esta sentencia:
{double a,b=1.4;a=3.2 +b;while (a) printf ("%s\n","***") ; }

Devuelve 4.6 y tres asteriscos por linea
Eso solo ? O hay que aclarar que es un ciclo infinito
(Este mensaje fue modificado por última vez en: 31-07-2011 18:57 por Ricitos.)
31-07-2011 18:51
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
batty Sin conexión
Profesor del Modulo A

*****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 211
Agradecimientos dados: 1
Agradecimientos: 11 en 8 posts
Registro en: Mar 2010
Mensaje: #17
RE: [APORTE] [SINTAXIS] Final 27/5/2011
(31-07-2011 18:51)Ricitos escribió:  int a,b=1 ;a=3+b; while (a) printf ("%d\n",a) ;

Qué hace?
Declara las variables a y b como enteras inicianizandolas con 1 y luego asigna a la variable a, 4.
Luego realiza un ciclo infinito que imprime por pantalla 4

(31-07-2011 18:51)Ricitos escribió:  {double a,b=1.4;a=3.2 +b;while (a) printf ("%s\n","***") ; }

Qué hace?
Declara las variables a y b como reales inicianizandolas con 1.4 y asigna 4.6 a la variable a.
Luego realiza un ciclo infinito que imprime por pantalla la cadena ***

Tenés las respuestas de esas sentencias? Lo que puse en negrita creo que no es necesario ponerlo Confused

[Imagen: firmbatty.png]
31-07-2011 19:10
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
proyectomaru Sin conexión
Secretario de la SAE
Ufa
******

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 699
Agradecimientos dados: 241
Agradecimientos: 328 en 86 posts
Registro en: Mar 2010
Mensaje: #18
RE: [APORTE] [SINTAXIS] Final 27/5/2011
int a,b=1 ; a=3+b; while (a) printf ("%d\n",a) ;

No lo ví nunca ese ejemplo!!! Pero ves, en éste caso, es re díficil decir qué retorna sin conocer internamente lo que hace la función...

Creo que imprime 1 y hace un salto, 2 y hace salto, 3 y hace salto, y 4 y hace un salto. Pero cómo sabés que a vale 4 sino ves el comportamiento interno de la función?

Respecto a

{double a,b=1.4;a=3.2 +b;while (a) printf ("%s\n","***") ; }

No sé como hace el while para trabajar con un double, lo toma como int?

Una fotito no cuesta nada, ayuda a muchos y nos ahorra a todos de darle plata al CEIT. Colaboremos subiendo finales! thumbup3
(Este mensaje fue modificado por última vez en: 31-07-2011 19:20 por proyectomaru.)
31-07-2011 19:16
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Ricitos Sin conexión
Secretario General
Sin estado :(
*******

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 736
Agradecimientos dados: 9
Agradecimientos: 16 en 10 posts
Registro en: Apr 2008
Mensaje: #19
RE: [APORTE] [SINTAXIS] Final 27/5/2011
No,no tengo las rtas . Son sentencias que saque de parciales para practicar y ver que opinaban ustedes

Lo que esta en negrita no creo que tengamos que ponerlo, solo lo que devuelve como vos dijiste creo que esta bien

Mande mail al grupo de la catedra a ver que responden acerca de esto y les comento
31-07-2011 19:20
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
batty Sin conexión
Profesor del Modulo A

*****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 211
Agradecimientos dados: 1
Agradecimientos: 11 en 8 posts
Registro en: Mar 2010
Mensaje: #20
RE: [APORTE] [SINTAXIS] Final 27/5/2011
(31-07-2011 19:16)proyectomaru escribió:  int a,b=1 ; a=3+b; while (a) printf ("%d\n",a) ;

No lo ví nunca ese ejemplo!!! Pero ves, en éste caso, es re díficil decir qué retorna sin conocer internamente lo que hace la función...

Creo que imprime 1 y hace un salto, 2 y hace salto, 3 y hace salto, y 4 y hace un salto. Pero cómo sabés que a vale 4 sino ves el comportamiento interno de la función?

Respecto a

{double a,b=1.4;a=3.2 +b;while (a) printf ("%s\n","***") ; }

No sé como hace el while para trabajar con un double, lo toma como int?

Pero fijate que no es todo una sola funcion, es asi:
Esto:
int a,b=1 ; a=3+b; while (a) printf ("%d\n",a) ;
es esto:
int a,b=1;
a=3+b;
while (a) printf ("%d\n",a);


La primer linea declara las variables y las inicializa, la segunda linea asigna un valor a a y la tercer linea realiza un ciclo infinito (porque a es distinto de 0 o sea verdadero) y lo que va realizando por cada iteración es imprimir por pantalla el valor de a (que tiene que ser entero por %d)

Lo mismo aca:
Esto:
{double a,b=1.4;a=3.2 +b;while (a) printf ("%s\n","***") ; }
es esto:
{
double a,b=1.4;
a=3.2+b;
while (a) printf ("%s\n","***");
}

La primer linea declara las variables y las inicializa, la segunda linea asigna un valor a a y la tercer linea realiza un ciclo infinito (porque a es distinto de 0 o sea verdadero) y lo que va realizando por cada iteración es imprimir por pantalla la cadena *** (que tiene que ser una cadena por %s)

[Imagen: firmbatty.png]
31-07-2011 19:27
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
proyectomaru Sin conexión
Secretario de la SAE
Ufa
******

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 699
Agradecimientos dados: 241
Agradecimientos: 328 en 86 posts
Registro en: Mar 2010
Mensaje: #21
RE: [APORTE] [SINTAXIS] Final 27/5/2011
TENES RAZONNNNNNN QUE MANERA DE MENTIR JAJAJA

lo vi rápido y pensé en a=algo

cuestión que estamos en la misma, hasta donde separás lo que retorna de lo que ves en la función? o sea, como sabés que a no vale 0 si no ves lo anterior?

Una fotito no cuesta nada, ayuda a muchos y nos ahorra a todos de darle plata al CEIT. Colaboremos subiendo finales! thumbup3
31-07-2011 19:37
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
batty Sin conexión
Profesor del Modulo A

*****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 211
Agradecimientos dados: 1
Agradecimientos: 11 en 8 posts
Registro en: Mar 2010
Mensaje: #22
RE: [APORTE] [SINTAXIS] Final 27/5/2011
Igual no siempre es cuestión de decir que es lo que retorna una función, te pueden dar un bloque de código (una sentencia compuesta) y eso no devuelve nada, son sentencias una tras otra y hay que decir el objetivo de todo eso.
Por ejemplo:
La sentencia compuesta {int a=1; printf("%d\n", a);} no retorna nada, lo que hace es imprimir por pantalla 1
La sentencia simple while(2) 3; no retorna nada, representa un ciclo infinito que no hace nada.
La función int XX (int a){a=1; return a;} sí retorna algo, porque es una función, retorna 1
La función int XX (int a){if(a==1) return a+1; else return 0;} también retorna algo, pero dependiendo el caso, si a es 1 retorna 2 sino retorna 0

[Imagen: firmbatty.png]
(Este mensaje fue modificado por última vez en: 31-07-2011 19:57 por batty.)
31-07-2011 19:55
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Ricitos Sin conexión
Secretario General
Sin estado :(
*******

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 736
Agradecimientos dados: 9
Agradecimientos: 16 en 10 posts
Registro en: Apr 2008
Mensaje: #23
RE: [APORTE] [SINTAXIS] Final 27/5/2011
Batty
Excelente tu aporte !

Hiciste el de las gramaticas de este final ?
31-07-2011 20:07
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
proyectomaru Sin conexión
Secretario de la SAE
Ufa
******

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 699
Agradecimientos dados: 241
Agradecimientos: 328 en 86 posts
Registro en: Mar 2010
Mensaje: #24
RE: [APORTE] [SINTAXIS] Final 27/5/2011
(31-07-2011 19:55)batty escribió:  Igual no siempre es cuestión de decir que es lo que retorna una función, te pueden dar un bloque de código (una sentencia compuesta) y eso no devuelve nada, son sentencias una tras otra y hay que decir el objetivo de todo eso.
Por ejemplo:
La sentencia compuesta {int a=1; printf("%d\n", a);} no retorna nada, lo que hace es imprimir por pantalla 1
La sentencia simple while(2) 3; no retorna nada, representa un ciclo infinito que no hace nada.
La función int XX (int a){a=1; return a;} sí retorna algo, porque es una función, retorna 1
La función int XX (int a){if(a==1) return a+1; else return 0;} también retorna algo, pero dependiendo el caso, si a es 1 retorna 2 sino retorna 0

Sí, tenés razón, en los 2 era muestra, no retorna. Pasa que los 2 ejemplos de finales retornaba algo.

Lo que quiero decir es que cómo sabés que entra en bucle infinito o no hace nada? También existiría la posibilidad que a sea 0. Y ahí tendrías que conocer lo que va antes para saber, que es lo que para mí entra en el "cómo".

Además, en el caso que imprime a, yo entiendo que tendrías que poner es "imprime 4 por pantalla y hace un salto de línea, infinitas veces".
Que es un ciclo infinito creo que tampoco lo tendrías que poner...eso es lo que me da muchas dudas, ver hasta donde separás el qué muestra del cómo lo hace.

Una fotito no cuesta nada, ayuda a muchos y nos ahorra a todos de darle plata al CEIT. Colaboremos subiendo finales! thumbup3
(Este mensaje fue modificado por última vez en: 31-07-2011 20:35 por proyectomaru.)
31-07-2011 20:32
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
batty Sin conexión
Profesor del Modulo A

*****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 211
Agradecimientos dados: 1
Agradecimientos: 11 en 8 posts
Registro en: Mar 2010
Mensaje: #25
RE: [APORTE] [SINTAXIS] Final 27/5/2011
A ver, esta es la gramática

E -> T | E+T
T -> F | T*F
F -> 2 | 5 | 3


Para que sea recursiva a derecha era genericamente:
Sea la gramatica recursiva a izquierda:
X -> Xa | b
Pasado a recursiva a derecha:
X -> bZ
Z -> aZ | pVacia


Entonces
E -> T | E+T
que es lo mismo que
E -> E+T | T
quedaría
E -> TZ
Z -> +T Z | pVacia


para
T -> F | T*F
que es lo mismo que
T -> T*F | F
quedaría
T -> FY
Y -> *F Y | pVacia


para
F -> 2 | 5 | 3
no es recursiva, asi que no es necesario

Finalmente quedaría
E -> TZ
Z -> +T Z | pVacia
T -> FY
Y -> *F Y | pVacia
F -> 2 | 5 | 3



(31-07-2011 20:32)proyectomaru escribió:  Además, en el caso que imprime a, yo entiendo que tendrías que poner es "imprime 4 por pantalla y hace un salto de línea, infinitas veces".
Que es un ciclo infinito creo que tampoco lo tendrías que poner...eso es lo que me da muchas dudas, ver hasta donde separás el qué muestra del cómo lo hace.
Tenés razon, no debería poner que es un ciclo infinito. Solo lo que hace, que es eso que dijiste.
Creo que la forma de diferenciar el cómo del que hace sería pensando que se lo vas a decir a alguien que no sabe lo que es un while ni un for ni nada de programación Confused

Edit:
Pratt escribió:Ejemplo 3:
En ANSI C, la semántica de while (2) 3; representa un ciclo infinito.
Palmface

[Imagen: firmbatty.png]
(Este mensaje fue modificado por última vez en: 31-07-2011 20:46 por batty.)
31-07-2011 20:36
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Ricitos Sin conexión
Secretario General
Sin estado :(
*******

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 736
Agradecimientos dados: 9
Agradecimientos: 16 en 10 posts
Registro en: Apr 2008
Mensaje: #26
RE: [APORTE] [SINTAXIS] Final 27/5/2011
Genio ! Grosso !

En la pag 70 del Vol II esta explicado, no le habia prestado atencion a eso !
31-07-2011 20:54
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
proyectomaru Sin conexión
Secretario de la SAE
Ufa
******

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 699
Agradecimientos dados: 241
Agradecimientos: 328 en 86 posts
Registro en: Mar 2010
Mensaje: #27
RE: [APORTE] [SINTAXIS] Final 27/5/2011
(31-07-2011 20:07)Ricitos escribió:  Batty
Excelente tu aporte !

Hiciste el de las gramaticas de este final ?

Una fotito no cuesta nada, ayuda a muchos y nos ahorra a todos de darle plata al CEIT. Colaboremos subiendo finales! thumbup3
(Este mensaje fue modificado por última vez en: 31-07-2011 21:02 por proyectomaru.)
31-07-2011 20:56
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
rodri042 Sin conexión
Militante

***

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 81
Agradecimientos dados: 11
Agradecimientos: 44 en 10 posts
Registro en: Aug 2010
Mensaje: #28
RE: [APORTE] [SINTAXIS] Final 27/5/2011
batty, ponele que yo hago "simplemente"...
E -> T | T+E
T -> F | F*T
F -> 2|5|3

... en este caso (porque la GIC lo permite) no la estaría tambien transformando en recursiva a derecha? porque al parecer genera lo mismo
31-07-2011 22:32
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
batty Sin conexión
Profesor del Modulo A

*****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 211
Agradecimientos dados: 1
Agradecimientos: 11 en 8 posts
Registro en: Mar 2010
Mensaje: #29
RE: [APORTE] [SINTAXIS] Final 27/5/2011
(31-07-2011 22:32)rodri042 escribió:  batty, ponele que yo hago "simplemente"...
E -> T | T+E
T -> F | F*T
F -> 2|5|3

... en este caso (porque la GIC lo permite) no la estaría tambien transformando en recursiva a derecha? porque al parecer genera lo mismo

Eso estaba pensando, parece que como la suma y la multiplicación son conmutativas eso se podría hacer.
Estás obteniendo una gramática recursiva a derecha, la única diferencia es que no es LL(I) y no se si eso influye en este caso...
Yo igual por las dudas lo hago como dice el libro, es más, esto es parecido al Ejercicio 23 pag 70 Vol II y en los resueltos lo hacen como en el libro..

[Imagen: firmbatty.png]
31-07-2011 22:46
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
rodri042 Sin conexión
Militante

***

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 81
Agradecimientos dados: 11
Agradecimientos: 44 en 10 posts
Registro en: Aug 2010
Mensaje: #30
RE: [APORTE] [SINTAXIS] Final 27/5/2011
joya lo hago asi por las dudas.. gracias, exitos mañanaa (rendías mañana no? xD)
31-07-2011 23:15
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Buscar en el tema
Enviar respuesta 




Usuario(s) navegando en este tema: 1 invitado(s)