APUNTADORES EN C
MENU DEL DIA Repaso clase anterior Apuntadores. Eso pa que? Solución al problema: Funciones. Ventajas de trabajar un programa usando funciones. Introducción a las funciones 1. Conceptos previos. Introducción a las funciones 2. Estructura de una funcion. Definicion de una funcion. Invocacion de funciones.
REPASO CLASE ANTERIOR Ámbito: Global. Local (Bloque). Ocultamiento de variables. Caja negra #include int a, b = 1, c = 2; int main() { int d = 3, e = 3; { int f = 8; int g = 9; } return 0; } Ámbito global Ámbito local Bloque 1 Bloque 2 #include int a=1; int main() { int a = 3; { int a = 5; } return 0; } Bloque 1 Bloque 2 Variable global a = 1. Ocultamiento de la variable a, global por la variable local al bloque del main. a = 3. Ocultamiento de la variable a, local a la función main por la variable local al bloque definido al interior del main. a = 5.
REPASO CLASE ANTERIOR #include declaracion_variables_globales; int main() { declaracion_variables_locales; instruccion_1; instruccion_2;... instruccion_N; return 0; } #include protipo_funciones; declaracion_variables_globales; int main() { declaracion_variables_locales; funcion_1(); funcion_2();... funcion_N(); return 0; } funcion_1() { codigo_funcion_1; }... funcion_N() { codigo_funcion_N; }
REPASO CLASE ANTERIOR... Caja negra in_1 in_N out_1 In_2 Función: Nombre. (Con el cual es invocada). Entradas. (Parámetros de la función). Salida. (Valor de retorno si tiene). capitan_planeta(agua, tierra, aire, fuego, corazon); Por sus poderes reunidos yo soy,… EL CAPITAN PLANETA
REPASO CLASE ANTERIOR... Caja negra in_1 in_N out_1 In_2 tipo_retorno nombre_funcion(tipo_1,..., tipo_N); tipo_retorno nombre_funcion(tipo_1 param_1,..., tipo_N param_N) { intruccion_1;... instrucción_N; return expresion; } Declaración de la función (Prototipo). Definición de la función
REPASO CLASE ANTERIOR #include protipo_funciones; declaracion_variables_globales; int main() { declaracion_variables_locales; funcion_1(); funcion_2();... funcion_N(); return 0; } funcion_1() { codigo_funcion_1; }... funcion_N() { codigo_funcion_N; } #include float suma(float,float); int main() {... float a= suma(2.3,4.1);... return 0; } float suma(float num1, float num2) { float res; res = num1 + num2; return res; }
LOS APUNTADORES, Y ESO PA QUE? (1) char doc[1000][80]; Características (Color, autocompletar, etc.). Estructura de datos (Como se almacena la información en memoria) líneas. 80 car/linea caracteres. Que el documento tenga mas de 1000 líneas. Que el numero de caracteres de una línea sea mayor de 80. PROBLEMAS
LOS APUNTADORES, Y ESO PA QUE? (2) (+) Estructura de datos (Que sea posible abrir simultáneamente hasta 10 archivos). (+) char doc[50000][1000][10]; líneas car / línea. 10 archivos caracteres.
LOS APUNTADORES, Y ESO PA QUE? (2) Gasto extravagante de memoria, pues esta se reserva en tiempo de compilación, y dicha reserva se hace tomando el peor de los casos. Problemas en equipos que no posean la RAM suficiente para cargar la aplicación. PROBLEMAS
LOS APUNTADORES, Y ESO PA QUE? (2) Gasto extravagante de memoria, pues esta se reserva en tiempo de compilación, y dicha reserva se hace tomando el peor de los casos. Problemas en equipos que no posean la RAM suficiente para cargar la aplicación. PROBLEMAS
LOS APUNTADORES, Y ESO PA QUE? (3) Creación de estructuras dinámicas de datos tales como listas y arboles. Llamado de funciones por referencia. Acceso a arreglos y matrices. Oh, y ahora quien podrá ayudarme??? Pos los punteros home!!!. Ya que estos permiten resolver problemas como los anteriores ya que gracias a estos es posible crear estructuras dinámicas de datos en vez de estructuras estáticas. Algunos programadores prefieren los apuntadores por que hacen el código mas eficiente.
LOS APUNTADORES Lista de variables #include double a,b; int c = -3,d; int main() { char e = ’A’, f = ‘Z’;... return 0; }
LOS APUNTADORES. ALGUNAS DEFINICIONES Variable: Lugar de memoria que puede mantener un valor. Una variable posee tres atributos básicamente. Nombre. Tipo. Dirección. #include char a = ‘H’,b; short c = 6; int main() { int d; float e = 1.0;... return 0; } 0x x00404A90 0x00404A9B 0x00504A90 a b c d e H 0 6 xxxx 1.0
LOS APUNTADORES. ALGUNAS DEFINICIONES Variable: Lugar de memoria que puede mantener un valor. Una variable posee tres atributos básicamente. Nombre. Tipo. Dirección. #include char a = ‘H’,b; short c = 6; int main() { int d; float e = 1.0;... return 0; } 0x x00404A90 0x00404A9B 0x00504A90 a b c d e H 0 6 xxxx 1.0
DIRECCION DE MEMORIA #include int main() { float f = 3.14;... return 0; } f
¿ENTONCES QUE ES UN APUNTADOR? Apuntador: Un apuntador no es mas que una variable que almacena una dirección de memoria
¿ENTONCES QUE ES UN APUNTADOR? #include int main() { int i,j; int *p; p = &i; *p = 5; j = i; return 0; } Apuntador: Un apuntador no es mas que una variable que almacena una dirección de memoria. Acceso indirecto Desreferenciar Referenciar.
¿ENTONCES QUE ES UN APUNTADOR? #include int main() { int i; int *p; p = &i; *p = 5; return 0; }
TOME APUNTE PA QUE NO SE DUERMA Declaración de apuntadores. Inicialización de apuntadores. Referenciar (&): Apuntar a una direccion. Desrefereneciar (Indireccion *): Obtencion del valor al que apunta. Punteros a punteros. Punteros void y NULL. Funciones por referencia.
FUNCIONES POR REFERENCIA #include void swap(int *, int *); int main() { int a,b; a=5; b=10; printf("%d %d\n",a,b); swap(&a,&b); printf("%d %d\n",a,b); return 0; } void swap(int *i, int *j) { int t; t = *i; *i = *j; *j = t; }
TOME APUNTE PA QUE NO SE DUERMA