Descargar la presentación
La descarga está en progreso. Por favor, espere
Publicada porMaría Elena Blázquez Prado Modificado hace 9 años
1
AYUDANTÍA 2 Lenguaje Imperativo y Java
2
Punteros Dirección a memoria (puede apuntar a NULL). Permite trabajar con memoria (variables dinámicas de heap). Asignación ‣ A una variable le da como valor una dirección a algún objeto de memoria. Desreferenciación: ‣ Entrega el valor del objeto apuntado. (*ptr). Problemas: ‣ Dangling ‣ Pérdida de Variables. Dangling: int *p,*q; *p = 5; q = p; free(p); Perdida de Variables: p = malloc(sizeof(int)); la primera memoria guardada en el primer malloc se pierde for ever. Dangling: int *p,*q; *p = 5; q = p; free(p); Perdida de Variables: p = malloc(sizeof(int)); la primera memoria guardada en el primer malloc se pierde for ever.
3
Punteros y Estructuras struct nodo{ int data; struct nodo *next; } Punteros y Arreglos ‣ char a[5]; ‣ char *ptr; ‣ ptr = a; || ptr = &a[0]; Referencias: ‣ Se hacen a través de & y actúan como un alias de una variable. Como en Estructura de Datos.
4
Recolección de Basura Contadores de Referencia: (Impaciente) ‣ Contador por celda. ‣ Incrementa con nueva referencia y decrementa cuando se pierde una. ‣ Cuando el contador llega a 0 se libera. Perezoso: ‣ Acumula basura hasta agotar memoria. Una vez llena identifica la basura y la elimina Primero: Necesita mucha memoria para mantener los contadores y mas tiempo de ejecución. Segundo: Un solo bit por celda para saber si es basura, cuando queda poca memoria corre mal. Primero: Necesita mucha memoria para mantener los contadores y mas tiempo de ejecución. Segundo: Un solo bit por celda para saber si es basura, cuando queda poca memoria corre mal.
5
Operadores Unarios: ‣ !, ++, --, etc... Binarios: ‣ /, &&, ||, +, -, %, >, etc... Mayor aridad: ‣ ?: (ternario). Prefijo: ‣ --, !, *, etc... ‣ funciones (n-arios). x > y ? “Si” : “No”; Para el ternario Precedencia: orden de ejecución de las operaciones. (Multiplicación antes que suma, suma al mismo tiempo que resta). Asociatividad: Orden de ejecución de operaciones con igual precedencia. (Si van de derecha a izquierda son asociativas derechas y viceversa). Precedencia Booleanos: NOT, AND y OR. x > y ? “Si” : “No”; Para el ternario Precedencia: orden de ejecución de las operaciones. (Multiplicación antes que suma, suma al mismo tiempo que resta). Asociatividad: Orden de ejecución de operaciones con igual precedencia. (Si van de derecha a izquierda son asociativas derechas y viceversa). Precedencia Booleanos: NOT, AND y OR. Infijo: ‣ +, &&, !=, etc... Postfijo: ‣ ++, --, etc... Mayor aridad: ‣ ?: (ternario). Prefijo: ‣ --, !, *, etc... Booleanos: ‣ AND, OR, NOT
6
Corto Circuito y Asignación Cuando hay 2 o más condiciones: ‣ if(cond1 && cond2) ‣ if(cond3 || cond4) Sentencias de Asignación: ‣ C, C++ y Java se usa = Operadores + Asignación: ‣ suma = ++a; ‣ suma = a++; 1er if: Si cond1 es falso, kga too. 2do if: Si cond3 es verdado, pasa. 1era suma: A a le suma 1 y se lo asigna a suma. 2da Suma: A suma le asigna a y a a le suma 1. 1er if: Si cond1 es falso, kga too. 2do if: Si cond3 es verdado, pasa. 1era suma: A a le suma 1 y se lo asigna a suma. 2da Suma: A suma le asigna a y a a le suma 1.
7
Sentencias BEGIN y END como en base de datos para las consultas SQL. elseif como en base de Datos para las consultas SQL. FOR EACH ROW en base de datos para las consutlas SQL. BEGIN y END como en base de datos para las consultas SQL. elseif como en base de Datos para las consultas SQL. FOR EACH ROW en base de datos para las consutlas SQL. Compuestas: ‣ { }, begin end Selección: ‣ Binaria: if else, if ‣ Multiple: switchm if, elseif, else Iterativas: ‣ for, do while, while, foreach. Incondicional: ‣ break, continue.
8
Firma: Se va a llamar pepe, recibe estas cosas, funciona así y devuelve tal cosa. Por valor: Se copia el valor en una variable local y se utiliza. Por resultado: Se copia el valor en una variable local, y cuando se retorna, se copia el valor en el parámetro actual. Por referencia: Se asigna una variable local con la misma dirección que el valor real. Es eficiente en espacio (no duplica variable) y en tiempo (no copia nada). Sin embargo, es más lento y puede producir errores. Firma: Se va a llamar pepe, recibe estas cosas, funciona así y devuelve tal cosa. Por valor: Se copia el valor en una variable local y se utiliza. Por resultado: Se copia el valor en una variable local, y cuando se retorna, se copia el valor en el parámetro actual. Por referencia: Se asigna una variable local con la misma dirección que el valor real. Es eficiente en espacio (no duplica variable) y en tiempo (no copia nada). Sin embargo, es más lento y puede producir errores. Firmas, Protocolos y Parametros Firma: Define la semántica de la interfaz. “Contraro” entre “quien la llama” con el “subprograma”. Protocolo: Especifíca como debe realizarse la comunicación de parametros y resultados. Parámetros: Variables mudas que se ligan a los parametros reales cuando se activa el subprograma. Permiten comunicación explícita de datos copiando valor o pasadas por referencia. ‣ Paso por Valor ‣ Paso por Resultado ‣ Paso por Referencia
9
Sobrecarga Diferentes funciones con el mismo nombre. Deben tener firmas diferentes (cantidad de parámetros de entrada, diferencia en los tipos de parámetros de entrada).
Presentaciones similares
© 2025 SlidePlayer.es Inc.
All rights reserved.