Descargar la presentación
La descarga está en progreso. Por favor, espere
Publicada porJerónimo Ruan Modificado hace 10 años
1
Estructuras de Datos Memoria y Variables
2
Conceptos Computador: CPU + Memoria + Dispositivos E/S La memoria se encarga de almacenar los datos y los programas La memoria puede verse como un arreglo lineal En cada posición (“posición de memoria”) del arreglo se puede almacenar un byte (8 bits)
3
Dato 0001 01101101 0002 01100100 0003 11101111 0004 00001111 0005 11001001... Dirección Posición de memoria Byte (8 bits) Memoria
4
Paso de argumentos por valor Las funciones reciben argumentos, que son los valores de entrada sobre los cuales se llevará a cabo el proceso especificado por la función Si un argumento se pasa por valor significa que al enviar una variable como argumento a una función, la función tomará el valor guardado en la variable y creará una copia de esta sobre la cual operará Esta copia, ocupa un espacio diferente en memoria y es totalmente independiente de la primera Luego se verá el paso de argumentos por referencia…
5
Ámbito y Visibilidad de los Datos La declaración de una variable asocia un nombre (identificador) a un espacio de memoria en el cual puede guardarse un dato del tipo indicado en la declaración El tipo determina cuanto espacio de memoria se le asigna a una variable La variable adquiere un ámbito y una visibilidad y estos dependen del lugar* donde se haga la declaración * Y de otras “cosas” que no se detallarán aquí como los cualificadores static, extern etc…
6
Ámbito El ámbito de una variable es la parte del programa en la cual la variable existe Cuando el programa sale del ámbito de una variable, el espacio asociado a esta se libera (la variable se destruye) Se verán 2 tipos de ámbitos: –Local (o de bloque) –Global (o de archivo)
7
Ámbito local Tienen ámbito local aquellas variables que se declaran dentro de un bloque: dicho ámbito empieza en el punto de declaración y termina en la llave ( } ) que cierra el bloque Los argumentos pasados por valor y las variables declaradas al inicio de una función tienen un ámbito local, que corresponde al bloque que define la función
8
Ejemplo void imprimir10siguientes(int a) { for(int i=0; i<10; i++) { printf(" %d ", a+i); } Ámbito de i Ámbito de a
9
Nota: El ámbito de una variable definida en la expresión de inicio de un ciclo for depende del compilador (o de como se configure) int main(void) { for(int i=0; i<10; i++) { cout << "Dentro del ciclo, i = " << i; } cout << "Fuera del bucle, i = " << i; //Puede producir error... }
10
Ámbito Global Las variables con ámbito global son aquellas que son declaradas por fuera de todos los bloques (incluido el bloque de la función main()) y de las clases Pueden usarse en cualquier parte del archivo fuente (programa)
11
Ejemplo int a=3; void sumar5() { int b=5; a=a+5; } void main() { void sumar5(); a = a+4; } Ámbito de a (global) Ámbito de b (local)
12
Visibilidad La visibilidad se refiere a las partes del programa en las que puede accederse al espacio de memoria asignado a una variable. En algunas ocasiones una declaración de variable puede ocultar otra variable con el mismo nombre:
13
Ejemplo int a=8; int sumar5(int a) { cout <<a; // Imprime 4 (parámetro) Oculta la vble a global a=a+5; cout <<a; // Imprime 9 return a; } void main() { int b=4; b=sumar5(b); cout <<b; // Imprime 9 cout <<a;// Imprime 8 (vble global) }
14
MAPAS DE MEMORIA La memoria lógicamente se divide en: –Stack (pila) Almacena todas las vables con duración local, como las declaradas dentro de funciones y los parámetros por valor pasados a las funciones –Segmento de Datos En él se almacenan todas las variables globales y las constantes. Considérese el siguiente programa:
15
#include int p=4; float b=30.2; int sumar1(int a) { a = a+1; return a; } int buscar(char e) { char cadena[4]; int i=0; scanf("%s",cadena); while(cadena[i]!='\0') { if( cadena[i]==e ) return 1; i=sumar1(i); } return 0; } void main() { int resp=0; char letra='u'; resp=buscar(letra); cout<<resp; }
16
Ver seguimiento paso a paso de los Mapas de Memoria correspondientes en el Módulo 5
Presentaciones similares
© 2024 SlidePlayer.es Inc.
All rights reserved.