1. Conceptos de memoria.
|
|
|
- Sara Murillo Díaz
- hace 9 años
- Vistas:
Transcripción
1 1. Conceptos de memoria. Cuando se habla de memoria en el contexto de un programa, se trata de una serie de celdas que tienen la capacidad de almacenar datos durante la ejecución del programa. Estas celdas se denominan byte o antiguamente word representados en 8 bits. Que es la unidad básica de manejo de información en sistemas. Estas celdas tienen características básicas: Su dirección. Es el lugar donde el procesador encontrará esta celda. Esta dirección será un valor numérico que es único para cada celda. Las direcciones de las celdas se escriben por convención en formato hexadecimal. (Ej.: X03C4782). El valor almacenado. Cada celda tiene un tamaño de 8 bits, que permite un rango de 256 valores (de 0 a 255 / x00 a xff / a ). Su organización. Toda la memoria se organiza en forma secuencial (consecutivo), que significa que las celdas tienen una dirección que va incrementándose hasta el final físico de la misma. Las computadoras actuales estan organizadas de acuerdo a la arquitectura Von Neuman Dependiendo de las características de cada máquina, las direcciones de la memoria se organizan dentro de rango específicos de valores que luego cada sistema administra de acuerdo al contexto del hardware y software de base. Cuando se trabaja con máquinas con un sistema operativo subyacente, la administración de la memoria es propiedad exclusiva del sistema con el cual interactúa un programa. En el caso de programas que operan directamente sobre hardware, la administración es responsabilidad del propio programa. El programa solicita al sistema porciones de memoria para su uso interno y lleva un control sobre los bloques de memoria libres y en uso. Informática II Pág. 1
2 2. Variables: Tipos, tamaños y alojamiento. En los lenguajes de programación se definen variables, pero que son las variables? Son entidades que tienen un nombre, es de un tipo, un valor y un lugar donde se almacena. En la declaración de una variable se definen tres cosas: Nombre. Que tiene sus convenciones. En C una variable debe comenzar con una letra y luego tener la secuencia de letras y números hasta un máximo de longitud. Lugar de alojamiento. Porción de memoria que se reserva a esa variable. La variable tiene asociada la dirección de memoria donde comienza el alojamiento de los datos, cuantos bytes consecutivos se asignaron depende del tipo de variable. Para obtener la dirección asignada a una variable se utiliza un operador &. Entonces la dirección de cualquier variable se obtiene haciendo &variable. Tipo. Propios del lenguaje.(ej. int, float,etc). El tipo define dos cosas muy importantes: La longitud en byte que necesita (para el rango de valores que define), y la forma binaria en que se almacenan los valores asignados a la variable. En un instrucción de asignación, (int n= 8), el sistema toma su dirección donde almacenar y el tipo para definir el formato en bytes del dato a guardar. Es decir cuando la variable esta a la izquierda del igual, podemos decir que indica donde y como guardar. Cuando se usan variables dentro de una expresión, como un argumento de función, etc. (n!=6), aquí decimos en general que nos referimos al valor, pese a que el sistema buscará la dirección donde está, su tipo y luego interpreta para obtener el valor. Esto nos acerca a la idea de que la referencia a una variable dentro de una expresión, siempre hace mención al dato guardado y nos oculta la problemática de donde y como estan guardados los datos. Esto es una facilidad enorme para muchos usos dentro de la programación. Pero esto nos reduce las posibilidades de nuestros programas a cosas sencillas, ninguna posibilidad de controlar donde y como almacenar. Tampoco puedo definir datos complejos. A partir de este razonamiento es que surgen el concepto de punteros, que en el lenguaje C y luego el C++, tienen un papel determinante en la potencia del lenguaje. Resumen: a partir de una declaración del tipo, float area; queda definido: Nombre area. Tipo de dato float. Forma de almacenar: punto flotante de 32 bits. Comienza su almacenamiento en la dirección &area. Informática II Pág. 2
3 3. Los punteros. Los punteros se definen como un tipo de variable que almacena direcciones. Como toda variable tiene un nombre, es de un tipo, un valor y una dirección donde se almacena. Las características de las variables puntero, es que estan vinculadas a los tipos de datos primitivos del lenguaje o a tipos ya conocido o declarados en el programa. Si bien todos los punteros almacenan direcciones, por lo tanto su longitud (tamaño del dato que se almacena) es la misma, toman algunas características del tipo de dato del que provienen. Puedo definir punteros asociados a variables, a vectores (array) o a estructuras más complejas, como así tambien punteros universales. Para declarar un puntero, se debe especificar a que tipo de datos apuntara la dirección que contiene. La forma de declarar un puntero es: tipo * nombre; Ejemplo: float * nro; Esta variable puede almacenar un valor entero positivo, que representa una dirección, no almacena un número flotante, indica que en esta dirección (valor de la variable nro) comienza el almacenamiento de un número del tipo float y por lo tanto desde esa dirección serán cuatro 4 bytes. Para obtener el valor del flotante almacenado en la dirección que dice el puntero nro, se utiliza un operador de indirección *. Ejemplo: int n; declara una variable entera (32 bits / 4 bytes). int *j; declara un puntero tipo entero (almacena direcciones 32 bits / 4 bytes). j contiene una dirección donde comienza un entero. *j valor entero almacenado en la dirección apuntada por j (indirección). n contenido= valor del entero j contenido= valor de la dirección. &n dirección del entero en n *j contenido en la dirección de j. j = &n Almaceno en j la dirección de n. *j Representa el valor entero almacenado en n. Informática II Pág. 3
4 Representamos int n=40, *j=&n; suponemos que se almacenan: n en la dirección 0x0013FF60 y j en la dirección 0x0013FF48 Lugar: 4 byte donde esta almacenado j Lugar: 4 byte donde esta almacenado n Valor j 0x0013FF60 Valor *j=n 40 = 0x Dirección de j: &j 0x0013FF48 Dirección de n:&n j 0x0013FF60 4. Administración dinámica de memoria. Hasta ahora vimos definición de variables y punteros tomando direcciones de las variables ya definidas. Esto significa que lo definido es lo que puedo usar. El uso de punteros me permite administrar datos de longitud variable, como ser los array de tamaño dinámico. En el desarrollo de un programa, el array puede variar de tamaño por distintas situaciones. Como ejemplo simple si tenemos un archivo de texto que se necesita cargar a memoria. Al hacer el programa no se conoce cuantas líneas tiene y no se conoce el largo de cada línea. La solución es poder administrar la memoria de los datos en forma dinámica, que en este caso del ejemplo es poder hacer los array del tamaño que necesita al leer una línea. Es una modalidad diferente, que le da sentido al uso de punteros. Cuando se declara un puntero, se reserva memoria para almacenar el valor que maneja: una dirección, por lo tanto en las máquinas de 32 bits, el tamaño será de 4 bytes. Pero no reserva memoria para lo que apunta, y debe darse valor antes de usarse, para lo cual se utilizan funciones específicas. Para usar la memoria en forma dinámica en necesario recurrir a punteros, el cual apunta el inicio de la memoria reservada. Existen funciones especiales para solicitar al sistema bloques de memoria del tamaño que se necesite. Por ejemplo, si necesitamos un array de enteros, declaramos un puntero a enteros, (int *pint) que asigna memoria para la variable puntero (32 bits/4bytes), pero no memoria para el array, hay que obtenerla. Cuando se obtiene asigna al puntero la dirección del primer elemento del array. Aquí aparece un segundo objeto que es generado en forma dinámica y se accede a través del puntero. En este caso el puntero apunta a una zona de memoria reservada en forma dinámica. Esta memoria luego puede liberarse y asignar al puntero otro sector de diferente tamaño de acuerdo a las necesidades. La obtención de memoria en C++ se realiza con el operador new y su liberación con delete. Informática II Pág. 4
5 También podemos usar las llamadas de que provee C: void *malloc( size ); //llamada que devuelve puntero a un bloque de size bytes de tamaño. void *calloc(nmemb, size); //llamada que devielve puntero a un bloque de nmemb mienbros de size tamaño. void *free(void *ptr); //Libera un bloque otorgando por malloc/calloc. Ejemplos: acción requerida Asignación Liberación Un elemento del tipo 'float' float * pf = new float; delete pf; Array de '40' elementos de tipo 'float' float * pf = new float[40]; delete [] pf; Con el operador new obtenemos bloques de memoria según se necesite, asignando al puntero el valor de comienzo de la zona. Cuando se quiere liberar esa memoria usamos delete. Cuando se solicita cierta cantidad de memoria, puede pasar que no tenga disponible. El operador en ese caso devuelve un valor NULL, (cero binario). Por lo tanto es necesario tener en cuenta que en programas que requieren grandes cantidades de memoria puede fallar la asignación y es necesario verificar que el resultado del pedido no sea NULL. En el caso del ejemplo del array, el puntero tiene asignada la dirección del primer elemento, para acceder al segundo se debe incrementar el valor del puntero lo suficiente como para que apunte al siguiente elemento float. El puntero fue definido del tipo float, eso define el tamaño de lo que apunta, por lo tanto al incrementar (pf++) automáticamente avaza los 4 bytes que necesita para apuntar el segundo elemento. 5. Aritmética de punteros. La posibilidad de operar con punteros se ve facilitada por su propia algebra. Las operaciones matemáticas con punteros son ligeramente modificadas para darle un efecto que facilite los accesos a datos dentro de los bloques de memoria. Si es un apuntador a enteros (int *pi), cuando se incremente se quiere que avance hasta el próximo entero, por lo tanto deberá subir 4 posiciones de memoria que es el tamaño del un entero (int). De aquí que el incremento (decremento) de las variables punteros dependen del tipo de dato que apuntan. Este criterio es el usado en todas las operaciones básicas que pueden realizarse con variables punteros. La unidad de operación es el tamaño del tipo de datos que lo define. Podríamos decir entonces que si el puntero: Apuntador de char, su unidad de incremento/decremento será de 1 byte. Apuntador de short, su unidad de incremento/decremento será de 2 bytes. Apuntador de int, su unidad de incremento/decremento será de 4 bytes. Apuntador de double, su unidad de incremento/decremento será de 8 bytes. Si se extiende esta lógica a todas las operaciones, el resultado de una operación tendrá en cuenta el tipo. Las direcciones de memorias pueden considerarse números naturales, las operaciones básicas contempladas (+,-,*,/) deben devolver números naturales, para que apunten a una dirección válida. Informática II Pág. 5
6 Ejemplos: int *arr = new int[230];... cout << *(arr+22) << endl;... int suma=0; for (n=0;n<230;n++) suma += *(arr+n); Define un puntero y asigna memoria para un array. El valor de arr apunta al primer elemento. (arr+22) significa avanzar 22 posiciones, como las posiciones son (0,1,2,..,22) por lo tanto apunta al elemento 23. El valor de la direccion será valor de arr + 4*22. Este caso es idéntico, buscara el elemento n+1 valor de arr + 4*n. Nota: el * indica que nos interesa el valor almacenado. En los ejemplos puede verse claramente la facilidad de operar con punteros. Para recuperar el contenido de lo apuntado se utilisa el *, por lo tanto tener en cuenta que *(arr+n) significa el n+1elemmento, muy diferente de *arr+22 que significa sumar 22 al entero que apunta arr. int *arr = new int[230]; int *pfin=arr+229; int suma=0;... for (;arr<=pfin;pfin--) suma += *pfin; cout << suma << endl;... Define un puntero y asigna memoria para un array. Define otro puntero. Valor inicial: dirección de la posicion 229 apunta al elemento 230. Bucle ligeramente distinto, pero sumamente eficiente y simple. Recorre el array en sentido inverso, muestra la versatilidad de los punteros. Informática II Pág. 6
7 6. Doble indireción. Punteros de punteros. Los punteros contienen como datos direcciones, donde esta el valor almacenado. Si en esa dirección hay como dato otra dirección que indica donde esta el valor real, surge el concepto de punteros de punteros. Y puede darse que a su vez en el valor final apuntado haya otro puntero y así sucesivamente. Este concepto se conoce como in dirección. A través del operador * se definen punteros de doble in dirección. Ejemplo: int nro=4652, *pnro=&nro,**ppnro=&pnro; // Definicion y asignacion. cout << "Dir nro:" << &nro << " Valor :" << nro << endl; // Valores de un entero común. cout << "Dir pnro:" << &pnro << " Valor :" << pnro << endl; // Acceso a traves del puntero. cout << "Dir nro:" << &ppnro << " Valor :" << ppnro << endl; // Acceso a traves del puntero. cout << "Valor:" << *pnro << " Valor :" << **ppnro << endl; // Definicion y asignacion. Salida: Dir nro: 0013FF60 Valor :4652 // Direccion asignada al entero, y valor de la variable. Dir pnro:0013ff54 Valor :0013FF60 // Direccion asignada al puntero, y valor como variable. // Es la direccion que se asigno a la variable nro. Dir nro: 0013FF48 Valor :0013FF54 // Direccion asignada al puntero doble y valor almacenado // como variable, que es la direccion asignada a pnro. Valor: 4652 Valor: 4652 // Valores finales recuperados a través de los punteros Representación gráfica de doble in dirección Lugar: 4 byte donde esta almacenado ppnro ppnro 0x0013FF54 int n= 4562; int *pnro = &n; int **ppnro =&pnro; &n 0x0013FF60 &pnro 0x0013FF54 &ppnro 0x0013FF48 Dirección: &ppnro 0x0013FF48 Dirección: &pnro 0x0013FF54 pnro 0x0013F60 Lugar: 4 byte donde esta almacenado pnro Lugar: 4 byte donde esta almacenado nro **ppnro=*pnro=nro *ppnro=pnro ppnro x0013FF60 0x0013FF54 **ppnro=*pnro=nro 4562 Dirección: &nro 0x0013FF60 Informática II Pág. 7
8 La potencia del uso de punteros se puede visualizar a través del siguiente ejemplo, donde se define en forma dinámica una matriz de números flotantes de dimensiones variables. float **matrix; int filas=5, col=5; // puntero a un área de punteros a float. // tamaño de las filas y columnas de la matriz. // Cada fila podría ser de distinta longitud de columnas Matriz no rectangular. matrix = new float*[filas]; //primer reserva de un array de punteros: uno puntero a cada fila. for(int i=0;i<filas;i++){ matrix[i] = new float[col]; // p/cada fila reserva 5 celdas float de cada columna. Tam: 5*4 =20 bytes. for(int j=0; j<col;j++) matrix[i][j]=(float)(i+1)*(j+1)*3.14; } // Asignamos valore iniciales (una cuenta obvia). Podemos acceder a esta matriz de diferentes formas, con idénticos resultados: for(int i=0;i<filas;i++){ for(int j=0; j<col;j++) cout << matrix[i][j] << "\t" ; cout <<endl; } Salida: float *f;// puntero intermedio for(int i=0;i<filas;i++){ f = *(matrix+i); for(int j=0; j<col;j++) cout << *f++ << "\t"; cout <<endl; } Salida: for(int i=0;i<filas;i++){ for(int j=0; j<col;j++) cout << *(*(matrix+i)+j) << "\t " ; cout <<endl; } Salida: Informática II Pág. 8
9 7. Estructuras. Las agrupaciones de datos a través de los vectores (arrays) son homogéneos, ya que son del mismo tipo. Las estructuras son un tipo de datos que define el usuario permitiendo asociar diversos tipos de datos y manejarlos como una unidad o grupo. Las estructuras permiten crear registros de información de entidades/objetos complejos. Una entidad necesita asociar sus datos de diferentes tipos, y manejarlos como una unidad de información. Para la definición de los datos agrupados se utiliza la siguiente sintaxis: struct nombre_del_tipo { datos/campos... } //fin de la declaración Supongamos que necesitamos asociar en un registro los resultados de un turno de exámenes. Datos involucrados: Numero acta, fecha, materia, datos del alumno y nota. Una definición primaria de un registro de cada examen sería: Nombre del tipo/ estructura: examen Lista de campos miembros. Lista de variables. reg_exa Referencia a campos miembros. Array de estructuras. Informática II Pág. 9
10 Se define un tipo de datos/registro llamado examen, que contiene miembros detallados en el orden que serán almacenados. Al final se declara una variable del tipo examen llamada reg_exa. Asigna memoria para todos los tipos de datos que involucra la estructura o registro. El ejemplo muestra como se pueden seguir definiendo otras variables (nuevoexa), de la misma forma se declara un array y como se accede al miembro 33 a través del subíndice 32. El punto es el operador de conexión entre la variable del registro y el miembro al que se referencia. En este caso tomará la dirección de comienzo del registro, almacenada en la variable reg_exa y le sumará el desplazamiento necesario para alcanzar el dato buscado. En el caso de reg_exa.nacta, como es el primer campo de la estructura, el desplazamiento es cero, pero en el caso de reg_exa.fechaexamen tendrá un desplazamiento de 4 byte, que es lo que ocupa el campo nacta. Una definición más elaborada sería: Que se usa de la siguiente manera: En la definición rg.alumno.legajo.nro el punto es el operador de conectividad, y el lugar donde se aloja el entero nro se aplica las mismas reglas del desplazamiento de memoria mencionadas. Como en todo tipo de datos, es posible definir punteros a estructuras, que tienen las características típicas de todo puntero: Almacenan una dirección donde comienzan los datos del registro/estructura. Tienen el tamaño de la estructura y operan en su aritmética con ellos. Ocupan en memoria lo necesario para almacenar una dirección (4 bytes). Tienen la misma versatilidad de los punteros de tipos primitivos. Permiten la administración dinámica de memoria. Informática II Pág. 10
11 En el caso particular de estructuras/registros para evitar confusiones, se utiliza el operador -> para el uso de punteros. En el ejemplo analizado un puntero se define: examennew *pexa; pexa = new examennew[9]; pexa->nmesa.nacta = 33; pexa->nmesa.materia = 456; Haciendo extensivo, analizar la siguiente porción de código: Formas de inicializar. Array de Punteros. Uso de Punteros. Cálculo de tamaños. Salida.. Informática II Pág. 11
12 Uniones. Las uniones son otro tipo de datos que pueden definir. Es un tipo especial de estructura. Su función es poder redefinir un segmento de memoria de acuerdo a las necesidades. Los miembros de una unión, comparten el mismo segmento de memoria, por lo tanto solo puedo usar una por vez. A veces esto es requerido para almacenar de una forma y recuperar de otra los datos, haciendo las conversiones más simples. Pero su mayor uso, es el compartir áreas de datos que de acuerdo a ciertos condicionantes puedan almacenar diferentes tipos de datos. En el siguiente ejemplo, en una misma área de datos puedo guardar números en formato enteros largos, enteros cortos o números en formato flotantes. union int_float { int nint [10]; float nfloat [10]; unsigned char nchar [40]; } i_f; i_f.nint[0]=1254; i_f.nfloat[1] = 9.8f; i_f.nchar[8] = 58; Esto es extensible a tipos de datos más complejos, como estructuras, lo que permite que compartan áreas de memoria registros con formatos totalmente diferentes. Informática II Pág. 12
Apuntadores en C y C++
Apuntadores en C y C++ Universidad de Carabobo Facultad Experimental de Ciencias y Tecnología Prof. Marcos A. Gil T. 8 de diciembre de 2004 1. Introducción Los apuntadores en C y C++ son una herramienta
Tema 18: Memoria dinámica y su uso en C
Tema 18: Memoria dinámica y su uso en C M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com [email protected] @edfrancom edgardoadrianfrancom Estructuras de datos (Prof. Edgardo A. Franco) 1
PUNTEROS (Apuntadores)
PUNTEROS (Apuntadores) Unidad III INTRODUCCIÓN A PUNTEROS. CONCEPTOS BÁSICOS. DECLARACIÓN DE PUNTEROS. PUNTEROS Como una colección de posiciones de memoria consecutivas. En ella se almacenan los distintos
Tema 6: Memoria dinámica
: Programación 2 Curso 2013-2014 Índice 1 2 3 El tamaño es fijo y se conoce al implementar el programa Declaración de variables int i=0; char c; float vf[3]={1.0, 2.0, 3.0}; i c vf[0] vf[1] vf[2] 0 1.0
Apuntadores (Punteros)
Apuntadores (Punteros) x9ff10 X int 209 SESION 7 *ptr Definición Llamados también punteros. Un Apuntador es una variable que contiene una dirección de memoria, la cual corresponderá a un dato o a una variable
Tema 13: Apuntadores en C
Tema 13: Apuntadores en C M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com [email protected] @edfrancom edgardoadrianfrancom Estructuras de datos (Prof. Edgardo A. Franco) 1 Contenido Introducción
Elementos de un programa en C
Elementos de un programa en C Un programa en C consta de uno o más archivos. Un archivo es traducido en diferentes fases. La primera fase es el preprocesado, que realiza la inclusión de archivos y la sustitución
ESTRUCTURA DE DATOS. Memoria estática Memoria dinámica Tipo puntero Declaración de punteros Gestión de memoria dinámica Resumen ejemplo
ESTRUCTURA DE DATOS Memoria estática Memoria dinámica Tipo puntero Declaración de punteros Gestión de memoria dinámica Resumen ejemplo DATOS ESTÁTICOS Su tamaño y forma es constante durante la ejecución
Laboratorio de Arquitectura de Redes. Punteros en lenguaje C
Laboratorio de Arquitectura de Redes Punteros en lenguaje C Punteros en lenguaje C Definición Declaración e inicialización de punteros Operadores de punteros: «*» y «&» Operaciones con punteros Operaciones
Tipos de Datos Estructurados
- Unidad 3 Tipos de Datos Estructurados 1 Tipos de Datos Compuestos en C 2 Arreglos (1) Un arreglo (array) una colección homogénea de datos simples ó compuestos, que se referencian con un nombre comú,
Informática PRÀCTICA 9 Curs Práctica Nº 9: Rango y precisión de representación de números en el ordenador.
Departamento de Práctica Nº 9: Rango y precisión de representación de números en el ordenador. Uso de punteros Objetivos de la práctica: - Entender la representación de números (enteros y reales) en el
Tema 2. El lenguaje JAVA
Tema 2. El lenguaje JAVA Nomenclatura habitual Variables Tipos de variables Tipos primitivos Referencias Arrays Operadores Operadores de Java Precedencia de operadores Sentencias de control Sentencias
Nelson David Muñoz Politécnico CJIC TUTORIAL DISPLAYS
1 TUTORIAL DISPLAYS OBJETIVOS Familiarizarse con el manejo de displays de 7 segmentos por medio de microcontroladores. Crear y manipular variables y vectores de constantes. Realizar la implementación física
APUNTADORES. Un apuntador es un objeto que apunta a otro objeto. Es decir, una variable cuyo valor es la dirección de memoria de otra variable.
APUNTADORES Un apuntador es un objeto que apunta a otro objeto. Es decir, una variable cuyo valor es la dirección de memoria de otra variable. No hay que confundir una dirección de memoria con el contenido
Curso de Programación en C. Licenciatura, FCQeI. APUNTADORES.
APUNTADORES. La memoria de una máquina esta ordenada en forma de celdas numeradas consecutivamente y que se pueden manipular individualmente o en grupos contiguos. La siguiente figura muestra una representación
Tipos de datos y Operadores Básicos
Módulo I: Conceptos Básicos Tema 1. Qué es un ordenador? Tema 2. Cómo se representan los datos en un ordenador? Tema 3. Qué es un lenguaje de programación? Tema 4. Cómo se hace un programa informático?
Definición de Memoria
Arquitectura de Ordenadores Representación de Datos en Memoria Abelardo Pardo [email protected] Universidad Carlos III de Madrid Departamento de Ingeniería Telemática Definición de Memoria DRM-1 La memoria
Desde los programas más simples escritos en un lenguaje de programación suelen realizar tres tareas en forma secuencial.
Tipos de Datos Desde los programas más simples escritos en un lenguaje de programación suelen realizar tres tareas en forma secuencial. Entrada de datos Procesamientos de datos Salida de resultados Los
PUNTEROS (APUNTADORES)
2010 UNAN LEON Departamento de Computación Ing. En Sistemas Sabatino Autor: Ing: Karina Esquivel Alvarado. Asignatura: Algoritmo y Estructura de Datos. PUNTEROS (APUNTADORES) TEMA 4: PUNTEROS (APUNTADORES)
Informática PRÀCTICA 3 Curs Práctica Nº 3: Tipos de datos simples. Constantes y variables. Operadores aritméticos. Formato de salida.
Práctica Nº 3: Tipos de datos simples. Constantes y variables. Operadores aritméticos. Formato de salida. Objetivos de la práctica: - Mostrar la sintaxis de los diferentes tipos de datos presentes en C/C++.
Tema 2: Desarrollo de Algoritmos. E.E. de Algorítmica
Tema 2: Desarrollo de Algoritmos E.E. de Algorítmica Temas a tratar Identificadores Variables Constantes Tipos de Datos Separadores Operadores Aritméticos Unarios Relacionales y Condicionales Nivel de
UNIVERSIDAD DE LOS ANDES NUCLEO UNIVERSITARIO RAFAEL RANGEL (NURR) DEPARTAMENTO DE FISICA Y MATEMATICA AREA COMPUTACION TRUJILLO EDO.
UNIVERSIDAD DE LOS ANDES NUCLEO UNIVERSITARIO RAFAEL RANGEL (NURR) DEPARTAMENTO DE FISICA Y MATEMATICA AREA COMPUTACION TRUJILLO EDO. TRUJILLO 1.- Resumen de Prog1 Comentarios es C++ Declaraciones de variables.
TEMA 8: Gestión dinámica de memoria
TEMA 8: Gestión dinámica de memoria 8.1.-Tipo de datos puntero Hasta ahora, los tipos de datos que hemos visto (a excepción de strings y ficheros) eran estructuras de datos estáticas, es decir, estructuras
Memoria Estática Punteros, Vectores y Matrices
Memoria Estática Punteros, Vectores y Matrices Organización del Computador II 1 o Cuatrimestre 2017 28 de Marzo Organización del Computador II Memoria Estática / Punteros / Vectores / Matrices 1 / 29 Repaso
Algoritmo, Estructuras y Programación II Ing. Marglorie Colina
Unidad III Punteros Algoritmo, Estructuras y Programación II Ing. Marglorie Colina Ejemplo: Paso de Punteros a una Función Arreglos (Arrays) Unidimensionales Los Arreglos son una colección de variables
El lenguaje C. 1. Identificadores, constantes y variables
Principios de Programación El lenguaje C 1. Identificadores, constantes y variables 1.1. Conceptos de memoria Los nombres de variable como x, y, suma corresponden a localizaciones o posiciones en la memoria
TEMA 2. EL LENGUAJE C. ELEMENTOS BÁSICOS
TEMA 2. EL LENGUAJE C. ELEMENTOS BÁSICOS Una vez que ya sabes crear tus propios programas, vamos a analizar los fundamentos del lenguaje de programación C. Este capítulo incluye además los siguientes temas:
LENGUAJE. Tema 2 Elementos de un programa
LENGUAJE Tema 2 Elementos de un programa ELEMENTOS DE UN PROGRAMA Comentarios. Identificadores. Constantes. Variables. Operadores. Sentencias o instrucciones. COMENTARIOS Los comentarios en C pueden ocupar
Guia#9: Punteros en C#.
Guia#9: Punteros en C#. Facultad: Ingeniería Escuela: Ingeniería en Computación Asignatura: Programación I Objetivos. Conocer el concepto de punteros y su aplicación en C#. Desarrollar aplicaciones en
Autoestudio 2: Variables y Operadores
Autoestudio 2: Variables y es Componentes de un programa Cuando escribimos en un lenguaje de programación tenemos que entender la sintaxis del lenguaje. A continuación empezaremos con la sintaxis básica
abril de 2017 Desarrollo de aplicaciones en Java Tipos de datos primitivos Tipos de datos Elementos de aplicaciones simples
Desarrollo de aplicaciones en Java Generación de código fuente Compilación Ejecución Elementos de aplicaciones simples EII147-01-02 Introducción a las tecnologías de información Escuela de Ingeniería Industrial
Organización de Computadoras. Clase 6
Organización de Computadoras Clase 6 Tema de Clase Ciclo de Instrucción Notas de Clase 6 2 Función de la computadora(1) Ejecutar programas El programa está compuesto de instrucciones almacenadas en memoria
Memoria en C++ Punteros - Referencias Clases Y ahora, a trabajar! Memoria Dinámica en C++
Qué es una variable? Variables Memoria Matemática: una etiqueta que representa a un valor en una expresión: f (y) = y 2 + 2y Programación: Nombre simbólico dado a un valor residente en la memoria. Propiedades
Punteros. Programación en C 1
Punteros Programación en C 1 Índice Variables y direcciones de memoria. Punteros definición, declaración e inicialización. Punteros declaración, asignación y dereferencia. Puntero nulo, tipo void. Aritmética
Conocimientos previos
Ficha de aprendizaje Tema: Datos, variables y Operaciones n 6 Logro Reconoce las partes de un programa y comprende su estructura. Reconoce la diferencia entre los tipos de datos. Asigna datos a las variables
ESTRUCTURAS. Struct Identificador_ tipo_estructura { Tipo miembro_1; /*Declaración de los miembros*/
DECLARACION DE ESTRUCTURAS ESTRUCTURAS La estructura es una colección de variables, la cual puede poseer distintos tipos de datos (a diferencia de los arreglos que solamente pueden tener un solo tipo de
Tema 05: Elementos de un programa en C
Tema 05: Elementos de un programa en C M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com [email protected] @edfrancom edgardoadrianfrancom Estructuras de datos (Prof. Edgardo A. Franco) 1
TEMA 02 TIPOS, OPERADORES Y EXPRESIONES
TEMA 02 TIPOS, OPERADORES Y EXPRESIONES 2.1.- Introducción. 2.2.- Datos. 2.3.- Entrada y salida básica. 2.4.- Modificadores. 2.5.- Cadenas de caracteres. 2.6.- Operadores. 2.7.- Precedencia de operadores.
INTRODUCCIÓN A LA POO EN C++
INTRODUCCIÓN A LA POO EN C++ ÍNDICE DEL TEMA 1.- Introducción 2.- Diferencias C/C++ 3.- Programación orientada a objetos 4.- Aspectos avanzados C++ 1 1. Introducción Lenguaje C Lenguaje de propósito general
Tema 1. Programación modular. Programación Avanzada Ingeniería Técnica en Informática de Gestión Jorge Badenas
Tema 1. Programación modular Programación Avanzada Ingeniería Técnica en Informática de Gestión Jorge Badenas 1.1. Objetivos Repasar brevemente mediante ejemplos los elementos principales del lenguaje
Programación. Test Autoevaluación Tema 3
Programación Test Autoevaluación Tema 3 Autores: M. Paz Sesmero Lorente Paula de Toledo Heras Fco. Javier Ordoñez Morales Juan Gómez Romero José A. Iglesias Martínez José Luis Mira Peidro SOLUCIONES 1.
Operadores aritméticos. / División operando enteros o reales si operandos son entero resultado es entero. Resto de caso resultado real
7.1 Operadores aritméticos Operadores aritméticos operadores Operación + Suma operandos pueden ser enteros o reales - Resta operandos pueden ser enteros o reales * Multiplicación operando enteros o reales
Punteros. Lenguaje C ANSI
Punteros. Lenguaje C ANSI Qué es un PUNTERO?: Un puntero es un objeto que apunta a otro objeto. Es decir, una variable cuyo valor es la dirección de memoria de otra variable. No hay que confundir una dirección
Laboratorio 5 Tema 7. Tipos de Datos Estructurados: Arreglos, Registros y Archivos
Laboratorio 5 Tema 7. Tipos de Datos Estructurados: Arreglos, Registros y Archivos PARTE 1. Arreglos Unidimensionales o Vectores Un arreglo es una estructura de datos conformada por una sucesión de celdas,
Punteros y aritmética de punteros. se almacena el operando
1. Introducción Punteros y aritmética de punteros Una de las características más poderosas del C, es el puntero o apuntador. Los punteros permiten simular las llamadas por referencia y crear y manipular
Punteros. Índice. 1. Qué es un puntero y por que son importantes.
Punteros Índice 1. Qué es un puntero y por que son importantes. 2. Punteros a tipos básicos. 3. Punteros sin tipo. 4. Memoria dinámica. 5. Punteros a estructuras. 6. Punteros a matrices. 7. Punteros a
Algoritmos y Programación I
Algoritmos y Programación I ARREGLOS Y ESTRUCTURAS EN C Arreglos Un arreglo o vector es un conjunto de datos del mismo tipo, almacenados de forma contigua (es decir uno al lado del otro) en memoria principal.
Introducción a variables de tipo Puntero (Apuntadores) Contenidos. 1. Introducción a las variables puntero 2. Repaso:
Contenidos 1. Introducción a las variables untero 2. Reaso: - oerador de dirección: & - referencias 3. Declaración de variables de tio untero 4. Inicialización de variables de tio untero - El untero nulo:
INTRODUCCIóN A LA PROGRAMACIóN APUNTES DE JAVA APUNTES DE JAVA
APUNTES DE JAVA FUNCIONAMIENTO DE UN PROGRAMA Assembler Ensamblador Ejecuta Programador Programa fuente BASIC Interprete Ejecuta C, C++, Pascal Compilador Compila Ejecuta Programa fuente Programa Objeto
Lección 2 Introducción al lenguaje C
Lección Introducción al lenguaje C Decimal Binario Hexadecimal A B C D E F Octal Equivalencia entre decimal, binario, hexadecimal y octal. Código ASCII (American Standard Code for Information Interchange)
Tema: Punteros.Puntero this en C#.
POO. Guía No.7 1 Tema: Punteros.Puntero this en C#. Facultad: Ingeniería Escuela: Computación Asignatura: Programación Orientada a Objetos Materiales y Equipo Computadora con el software C#. Guía Número
Memoria Dinámica. Jornadas de Marzo 2010 Grupo de Usuarios de Linux Tania Pérez
Jornadas de Marzo 2010 Grupo de Usuarios de Linux Tania Pérez 1. PUNTEROS 2. MEMORIA DINÁMICA 2 1. PUNTEROS 3 Qué es un puntero? Un tipo de variable cuyo valor es la dirección de memoria de otra variable.
Práctica 2 - Manejo de estructuras de datos y punteros
Práctica 2 - Manejo de estructuras de datos y punteros Organización del Computador 2 1er Cuatrimestre 2017 1. Estructuras estáticas: Vectores y Matrices Ejercicio 1 Para cada uno de los siguientes ítems,
UNIVERSIDAD TECNOLÓGICA DE LOS ANDES INGENIERÍA DE SISTEMAS E INFORMÁTICA FUNDAMENTOS DE PROGRAMACIÓN ARREGLOS (ARRAYS)
UNIVERSIDAD TECNOLÓGICA DE LOS ANDES INGENIERÍA DE SISTEMAS E INFORMÁTICA FUNDAMENTOS DE PROGRAMACIÓN DOCENTE: Ing. Ronald Rentería Ayquipa. MARCO TEÓRICO: ARREGLOS (ARRAYS) En clase ya conocimos algunos
Una expresión es una combinación de uno o más operandos y operadores para obtener un resultado.
1.6. EXPRESIONES CONCEPTO: Una expresión es una combinación de uno o más operandos y operadores para obtener un resultado. Los operandos pueden ser constantes, variables, otras expresiones e incluso funciones.
TEMA 2. LENGUAJE C. CONCEPTOS BÁSICOS Y PROGRAMACIÓN ELEMENTAL.
Tema 2. TEMA 2. LENGUAJE C. CONCEPTOS BÁSICOS Y PROGRAMACIÓN ELEMENTAL. PARTE : VARIABLES, OPERADORES Y CONSTANTES.. INTRODUCCIÓN AL LENGUAJE C 2. PROGRAMAS BÁSICOS EN LENGUAJE C 3. DATOS EN LENGUAJE C
Diagrama de una computadora. Unidad Central de procesamiento (CPU)
2008 FORTRAN 90/95 Diagrama de una computadora Memoria principal Memoria secundaria Memoria interna (registros) Periféricos de entrada Unidad de control Periféricos de salida Unidad aritmética y lógica
Para crear un arreglo de cualquier tipo de elementos la sintaxis es:
Arreglos (arrays) Un arreglo es una estructura de datos homogénea o conjunto de elementos del mismo tipo. En Java se pueden manejar arreglos de elementos de tipo primitivo (8 tipos primitivos hay en Java)
Tipos de variables. Lenguaje C. Departamento de Electrónica. Tipos de datos, variables y constantes. Fundación San Valero
Lenguaje C Tipos de variables Departamento de Electrónica Fundación San Valero Tipos de datos, Cinco tipos de datos básicos: Carácter (char): 8 bits -128 a 127. Entero (int): 32 bits -2.147.483.648 a 2.147.483.647.
DEFINICIONES BÁSICAS DE LAS ESTRUCTURAS DE DATOS
DEFINICIONES BÁSICAS DE LAS ESTRUCTURAS DE DATOS En programación, una estructura de datos es una forma de organizar un conjunto de datos elementales con el objetivo de facilitar su manipulación Un dato
Curso de Programación Avanzada en C
Curso de Programación Avanzada en C Copyright, 1996 Universidad Sim on Bol ivar 1 Prof. Mariela J. Curiel Contenido del Curso Conceptos BásicosB Estructuras de Control Arreglos Otros tipos de datos derivados
Unidad I Tipos de Datos en C
Tipos de Datos en C 1. El concepto de los tipos de datos. 2. Tipos de datos básicos del C. 3. Modificadores de tipo. 4. Declaración de variables. 5. Inicialización de variables. 6. Declaración de identificadores
FUNDAMENTOS DE PROGRAMACIÓN. PRÁCTICA 11: Apuntadores
Objetivos El alumno conocerá y aplicará el concepto de apuntadores para la solución de programas en Lenguaje C Introducción Un apuntador es una variable que mantiene la dirección de memoria de un elemento
6.1.- Introducción a las estructuras de datos Tipos de datos Arrays unidimensionales: los vectores Operaciones con vectores.
TEMA 6: ESTRUCTURAS DE DATOS (Arrays). CONTENIDO: 6.1.- Introducción a las estructuras de datos. 6.1.1.- Tipos de datos. 6.2.- Arrays unidimensionales: los vectores. 6.3.- Operaciones con vectores. 6.4.-
Ficha de Aprendizaje N 13
Ficha de Aprendizaje N 13 Curso: Lógica y lenguaje de programación Tema: Fundamentos de programación Duración: 2 horas pedagógicas Logros de aprendizaje Identifica los diferentes tipos de operadores que
Tema 10: Arreglos estáticos en C
Tema 10: Arreglos estáticos en C M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com [email protected] @edfrancom edgardoadrianfrancom Estructuras de datos (Prof. Edgardo A. Franco) 1 Contenido
Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones
Unidad Didáctica 2 Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión 1.0.3 Índice
Objetivos de la sesión. Aplicación de consola 7/30/11. Código con que se inicia un programa en Visual C# (aplicación de consola)
Objetivos de la sesión Entender el tipo de programas que se pueden realizar con aplicaciones de consola. Conocer el concepto de variable, la forma en que se declaran y su utilización. Conocer la forma
VARIABLES, CONSTANTES Y EXPRESIONES ASIGNACIÓN. TIPOS ELEMENTALES. PRECEDENCIA DE LOS ESTRUCTURAS DE CONTROL. CONDICIONAL E
Java Java es un lenguaje de programación presentado en 1995 enfocado a: soportar los fundamentos de la programación orientada a objetos. generar código independiente de la arquitectura de la computadora
1.1 Tipos de Datos Primitivos. 1.2 Tipos de datos estructurados. 1.3 Definición de estructura de datos
1.1 Tipos de Datos Primitivos 1.2 Tipos de datos estructurados 1.2.1 Arreglos unidimensionales, bidimensionales y cadenas de caracteres 1.2.2 Registros o Estructuras (unión y estructura) 1.3 Definición
Java. Introducción a la Programación Orientada a Objetos
Java Java es un lenguaje de programación presentado en 1995 enfocado a: soportar los fundamentos de la programación orientada a objetos. generar código independiente de la arquitectura de la computadora
funciones printf scanf
FUNCIONES EN C FUNCIONES Los módulos en C se llaman funciones. Hemos estado utilizando funciones de la biblioteca estandar stdio.h como por ejemplo printf y scanf. Comenzaremos viendo algunas funciones
4. Operadores Operador asignación
Programación orientada a objetos con Java 43 4. Operadores Objetivos: a) Describir los operadores (aritméticos, incrementales, de relación, lógicos y de asignación) y los tipos de dato primitivos sobre
Prof. Dr. Paul Bustamante
Prácticas de C++ Practica Nº 5 Informática II Fundamentos de Programación Prof. Dr. Paul Bustamante Practica Nº5 Programación en C++ Pág. 1 ÍNDICE ÍNDICE... 1 1. Introducción... 1 1.1 Ejercicio 1: Trabajando
Práctica 3. Paso de parámetros entre subrutinas. 3. Consideraciones sobre el paso de parámetros
Práctica 3. Paso de parámetros entre subrutinas 1. Objetivo de la práctica El objetivo de esta práctica es que el estudiante se familiarice con la programación en ensamblador y el convenio de paso de parámetros
Clases y Objetos en C++
Informática II Clases y Objetos en C++ Introducción Las variables de los tipos fundamentales de datos no son suficientes para modelar adecuadamente objetos del mundo real. alto, ancho y longitud para representar
Especificación IEEE-754, para representar valores decimales en punto flotante de simple precisión.
Especificación IEEE-754, para representar valores decimales en punto flotante de simple precisión. Ing. Cosme Rafael Marcano Gamero, MSc, DEA. [email protected] En este escrito se explica la especificación
Principios de Computadoras II
Departamento de Ingeniería Electrónica y Computadoras Operadores y Expresiones [email protected] Primer programa en Java 2 Comentarios en Java Comentario tradicional (multi-línea) Comentario de línea Comentario
Repaso de lenguaje C. Índice. Repaso de lenguaje C. Repaso de lenguaje C: Tipos básicos
Índice. Repaso de C: Tipos de variables. Declaración de variables Sentencias de control Funciones. Paso de argumentos a una función. Punteros, operaciones con punteros, punteros y arrays. Repaso de lenguaje
Memoria Dinámica en C++
Memoria Dinámica en C++ Algoritmos y Estructuras de Datos II DC-FCEyN-UBA 26 de Agosto de 2015 AED2 (DC-FCEyN-UBA) Memoria Dinámica en C++ 26 de Agosto de 2015 1 / 46 Repaso: Qué es una variable? Matemática:
Programación en Lenguaje C
Lenguaje de programación C Programación en Lenguaje C Introducción El Lenguaje de programación C fue implantado por primera vez en los años 70 por Dennis Ritchie para una computadora DEC PDP-11 corriendo
Expresiones y sentencias
Expresiones y sentencias Expresión Construcción (combinación de tokens) que se evalúa para devolver un valor. Sentencia Representación de una acción o una secuencia de acciones. En C, todas las sentencias
Comprender las diferencias entre tipos de datos primitivos similares, y aprender a elegir el tipo más conveniente en cada caso.
Elementos básicos de programación en Java Objetivos del tema Conocer la estructura básica de un programa Java. Comprender los conceptos de tipo, valor y variable. Comprender las diferencias entre tipos
Lenguajes de Programación I
Lenguajes de Programación I Tipos de Datos Compuestos Ernesto Hernández-Novich Copyright c 2006-2010 Registros Registros agrupan datos de tipos heterogéneos para almacenarlos y manipularlos
Manual de referencia de C++ Parte IV Variables Punteros. Preparado por Prof. Luis A. Ortiz Ortiz
Manual de referencia de C++ Parte IV Variables Punteros Preparado por Prof. Luis A. Ortiz Ortiz TABLA DE CONTENIDO Memoria de la computadora... 1 Representación de la memoria de la computadora... 1 Declaración
Tipos Recursivos de Datos
1/1 Tipos Recursivos de Datos Josefina Sierra Santibáñez 27 de noviembre de 2016 2/1 Introducción La recursividad no sólo se puede aplicar a la definición de procedimientos (i.e. funciones o acciones),
Estructuras Dinámicas
Departamento de Lenguajes yciencias de la Computación 4 Estructuras Dinámicas Contenido 1. Gestión dinámica de memoria. 2. El tipo puntero. 3. Operaciones con punteros. 4. Operaciones básicas sobre listas
ALGORITMOS Y PROGRAMACIÓN I Unidad 3
ALGORITMOS Y PROGRAMACIÓN I Unidad 3 Tipos de Datos Estructurados Prof. Jaime Soto Sección (007) Material original de Prof. AURELY LEAL Introducción a las Estructuras de Datos Una estructura de datos es
Programación I Unidad III. Tema: Tipos, estructuras y uniones
Programación I Unidad III Tema: Tipos, estructuras y uniones El especificador typedef La palabra reservada typedef representa un especificador de clase de almacenamiento, y se utiliza para definir nuevos
