UTNianos

Versión completa: [PEDIDO] final sintaxis 06/10/16
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Páginas: 1 2
Alguien le saco una foto al final de sintaxis de hoy?
Me respondo a mi mismo, aca tengo el final
el 1 y 2 estan bien
el 3 hice la mitad bien pero la verdad no me acuerdo bien
los VoF creo que estan bien aunque el 6 no se...
[attachment=14068]
Hola! 15406644
De donde sacaste lo de "orden de evaluacion" "efecto de lado" y lo del arbol de derivacion" ?

Dejo el punto 3
Si
Si
Si
No
Si
Si
la verdad es q desaprobé por los vf, tuve bien todos los ejercicios y 3 vf...
lo de árbol de deribacion creo que esta en el manual de C
"orden de evaluación" "efecto de lado" esto supongo que se les mezclo con paradigmas jaja
en el vf 3 se que es verdadero por que se lo pregunte, no se si sabes de la propiedad del &&(AND).
Por ejemplo (1 > 2) && (2 = 3) && 1 ; en este caso se evaluaría la el primer and y como da falso la exprecion da falso y ese seria el "orden de evaluacion" osea de derecha a izquierda, creo q lo llaman cortocircuito a esto....
sobre el efecto de lado es cuando https://es.wikipedia.org/wiki/Efecto_sec...C3%A1tica) esto lo explica bien
Gracias che!
Lo de orden de evaluacion es la asociatividad no ? Por que cuando me decis "en este caso se evaluaría la el primer and y como da falso la exprecion da falso y ese seria el "orden de evaluación""
Me extraño esa pregunta y bueno, dude.
Bruno subio un pdf de C y eso esta ahi, por si lo queres ver (Es una tabla) No se si están todas estas cosas, las BNF seguro.

Sobre lo demas, tmb me pareció que lo habían mezclado con paradigmas jaja.
se que en el libro de C te eplica lo de orden de evaluacion, y toman a C como el lenguaje asociado al parcial.
la mayoria de las cosas es de izquierda a derecha
CarooLina te dejo lo del and y or, que encontre en el libro de C
[attachment=14249]
Para mi el VoF es así:
1- F
2- V
3- V
4- V (tengo mis dudas)
5- F
6- V
7- V
15406644 estan chequeadas estas respuestas o son tuyas?

Omnipresent

4 Este lo consulte! no es algo que este definido por ansi c, se da en tiempo de ejecucion
5 no se como darme cuenta si tiene o no. Solo se que las GICS ambiguas, tienen dos arboles por que tienen dos derivaciones distintas.
6 (Leer abajo!)
Si mal no recuerdo (curse con bruno y nos mostro este final en clase) las afirmaciones quedan:
1.-F
2.-V
3.-V: como ya dijeron antes and tiene el orden de evaluacion predefinido (al igual que or, la coma y el operador trinario. Son los unicos 4 que lo tienen)
4.-V (dicho por bruno en el minuto 8 https://youtu.be/lBZkFmt2z24?t=479)
5.-F: porque el else siempre corresponde al ultimo if, por lo tanto hay una sola forma de derivacion.
6.-V: si mal no recuerdo hay uno error de tipos y de eso se encarga el analisis semantico
7.-F: porque cuando invocas una funcion en los parametros solo pones las constantes o los nombres de las variables que uses, mientras que en el prototipo de la funcion tenes que poner el tipo de cada parametro
CarooLina

El 5 yo lo justificaría por eso, que la GIC no debe ser ambigua en ANSI C.
El 6 yo creo que es verdadero por lo que dijo Ivodan pero con lo que decís ahora tengo dudas.
Omnipresent PERDON! rindo el lunes y leo todo asi nomas.

Me corrijo :

{
int a(void);
char a;
a(a);
}

es sintacticamente correcta. Por que tenes primero la lista de declaraciones ( que en la bnf muestra que puede ser opcional) y dps la lista de sentencias(que tmb puede ser opcional). No falta ningun parentesis, estan todos los ;.

El problema es semantico ya que:
1* declara la funcion a
2* Define a como char

Aca las sentencias
3* invoca a la funcion a con un parametro a

1) a es tipo void, no puede recibir nada => se ve en lo semantico, la gic no lo especifica. Y para la gic a(a); es algo correcto.
2) usa 'a' para dos cosas diferentes! Este seria el segundo error semantico
Me corrijo y edito el mensaje anterior:
la afirmacion 4 es verdadera: dicho por bruno en el minuto 8 https://youtu.be/lBZkFmt2z24?t=479
es otro final pero creo que aclara esta afirmacion tambien no?
EFECTO COLATERAL (o efecto de lado)
Lo saque del libro de C K&R

Spoiler: Mostrar
Las llamadas a funciones, proposiciones de asignación anidadas y los operadores de incremento y decremento provocan efectos colaterales. (alguna variable es modificada como producto de la evaluación de una expresión) En cualquier expresión que involucra efectos colaterales, pueden existir sutiles dependencias del orden en que las variables involucradas en la expresión se actualizan.

a[i]=i++;

cuando hay efectos colaterales (asignación a variables) dentro de una expresión, se deja a la prudencia del compilador, puesto que el mejor orden depende grandemente de la arquitectura de la maquina
El standar si especifica que todos los efectos colaterales sobre argumentos sucedan antes de que la función sea llamada, pero eso podría no ayudar en la llamada a printf mostrada.

PRINTF("%D %D \n",++n, power(2,n)) puede producir efectos diferentes dependiendo si n se incrementa antes de que se llame a power.
(por eso una forma de solucionarlo es que se saque a fuera el ++n)

Pag 220 ( A modo resumen! )
Precedencia y asociatividad de los operadores esta especificada compeltamente (En la gic, volumen 1), el orden de evaluacion de las expresiones, con ciertas excepciones, indefinido.

Precedencia= cuanto mas cerca del axioma, menos prioridad
Asociatividad = si la produccion que genera (al + pj) es recursiva a izquierda, la operacion es asociativa a izquierda

Para justificar la 4
Y el eje 1) donde pregunta lo del efecto, esta bien por que no hay forma de que tenga dos posibles resultados segun como se ejecute, no?
En el ejercicio 1 cuando pregunta si hay efecto de lado.
Efecto de lado hay cuando ademas de retornar algo, se modifica algun valor en memoria (alguna variable o algo por el estilo).
En este caso la unica variable que tenemos es la del argumento (n), y nunca se modifica su valor en las invocaciones de la funcion, por lo que no hay efecto de lado.
Páginas: 1 2
URLs de referencia