ELO311 Estructuras de Computadores Digitales. Estructuras de Datos

Tamaño: px
Comenzar la demostración a partir de la página:

Download "ELO311 Estructuras de Computadores Digitales. Estructuras de Datos"

Transcripción

1 ELO311 Estructuras de Computadores Digitales Estructuras de Datos Tomás Arredondo Vidal Este material está basado en: material de apoyo del texto de David Patterson, John Hennessy, "Computer Organization & Design", (segunda y tercera edición), Morgan Kaufmann, CA material del curso anterior ELO311 del Prof. Leopoldo Silva

2 Arreglos Arreglos son una estructura de datos consecutivos en memoria usados para almacenar elementos. Se requiere una variable entera sin signo, denominada el índice del arreglo, generalmente se emplea un registro para este índice. (e.g. en C es A[i]) Todas los elementos tienen igual tamaño, típicamente se asume que están almacenadas en forma contigua En assembler si se conoce la dirección del primero entonces la dirección del elemento i, queda dada por: Dirección del primero + i * (tamaño del elemento en bytes) En assembler típicamente el tamaño del elemento es una constante (múltiplo de dos) y la multiplicación puede efectuarse como corrimientos a la izquierda.

3 Arreglos (cont) En C, si se usan índices se inicia con el elemento 0 (e.g. A[0] es el primer elemento del arreglo). Este modelo de representación de los arreglos en assembler, es el que usa el lenguaje C, que emplea el nombre del arreglo como un puntero al primer elemento (e.g. A es la misma dirección que &A[0] para el arreglo A). C también permite acceder a un elemento vía indirección, con la expresión A+i, que es la dirección del elemento i del arreglo A. En C la aritmética de punteros (e.g. A+i) calcula la posición de memoria del elemento i acuerdo al tamaño de los elementos i (e.g. primer elemento es A + 0, segundo es A + 1, ).

4 Arreglos (cont) Con este modelo es posible ubicar un elemento cualquiera del arreglo sin tener que acceder a los elementos secuencialmente. Ubicar cualquier elemento del arreglo (e.g. el primero, A[0] o el ultimo: A[99]) toma el mismo tiempo. Porque tiene la capacidad de acceder a cualquier elemento de memoria de acuerdo a la necesidad del usuario sin tener que hacerlo secuencialmente es que esta estructura se la denomina RAM (Random Access Memory) o Memoria de Acceso Aleatorio.

5 Ejemplo: Arreglos con Índices El siguiente segmento, en C, describe la manipulación mediante acceso vía un índice: int a[ ] = {0,1,2,3,4,5,6}; int i = 0; int k = 0; void main(void) { i = 5;... k = a[i]; /* lectura de elemento de arreglo */... a[i] = k; /* escritura en elemento de arreglo */ }

6 Ejemplo: Arreglos con Índices En assembler:.data 0x # comienzo segmento datos a:.word 0,1,2,3,4,5,6 i:.word 0 k:.word 0.text.globl main main: # inicia variable i, en zona estática, con constante 5. li $t3, 5 # t3=5 Macro que puede escribirse: ori $t3,$zero,5 la $t0, i # t0=&i t0 es un puntero. Apunta a variable i. # este macro se puede remplazar por un lui y un ori sw $t3, 0($t0) # *t0=t3 Escribe en lo que apunta t0: i=5 # Los 2 comandos anteriores pueden escribirse con macro: sw $t3, i($zero)

7 Ejemplo: Arreglos con Índices (cont) #Primero se obtiene en t2, el offset en bytes respecto al inicio. la $t0, i # t0 = &i lw $t0, 0($t0) # t0 = *t0 o también t0 = i sll $t2, $t0, 2 # t2 = 4*i # Luego se forma, en t2, la dirección de a[i] la $t1, a # t1 = &a[0] = &a, sin usar macro la: lui $t1, 0x1001 # ori $t1, $t1, 0 addu $t2, $t2, $t1 # t2 = &a + 4*i = &( a[i] ) # Finalmente se deposita en t3 el contenido de a[i] lw $t3, 0($t2) # t3 = a[i] # Los comandos previos pueden escribirse con un macro: lw $t3, a($t2) la $t4, k # t4 = &k sw $t3, 0($t4) # k = a[i] jr ra # De similar forma se implementa a[i] = k

8 Ejemplo: Arreglos con Punteros El siguiente segmento, en C, describe la manipulación mediante acceso vía un puntero: int a[ ] = {0,1,2,3,4,5,6}; int i = 0; int k = 0; void main(void) { i = 5;... k = *(a + i); /* lectura de elemento de arreglo */... *(a + i) = k; /* escritura en elemento de arreglo */ }

9 Ejemplo: Arreglos con Punteros (cont) En assembler:.data a:.word 0,1,2,3,4,5,6 i:.word 0 k:.word 0.text.globl main main: # por defecto comienza en 0x # inicia variable i, en zona estática, con constante 5. li $t3, 5 # t3=5 Macro que puede escribirse: ori $t3,$zero,5 la $t0, i # t0=&i t0 es un puntero. Apunta a variable i. sw $t3, 0($t0) # *t0=t3 Escribe el contenido de $t3 donde apunta $t0. # Los 2 comandos anteriores pueden escribirse con macro: sw $t3, i($zero

10 Ejemplo: Arreglos con Punteros (cont) #Primero se obtiene en t2, el offset en bytes respecto al inicio. la $t0, i # t0 = &i lw $t0, 0($t0) # t0 = *t0 o también t0 = i sll $t2, $t0, 2 # t2 = 4*i # Luego se forma, en t2, la dirección de (a+i) la $t1, a # t1 = &a, sin usar macro la: lui $t1, 0x1001 # ori $t1, $t1, 0 addu $t2, $t2, $t1 # t2 = a+4*i # Finalmente se deposita en t3 el contenido de *(t2) lw $t3, 0($t2) # t3 = *(t2) # Los comandos previos pueden escribirse con un macro: lw $t3, a($t2) la $t4, k # t4 = &k sw $t3, 0($t4) # k = *(a + i); jr ra De similar forma se implementa *(a+i) = k

11 Arreglos de Caracteres (Strings) Arreglos de caracteres (e.g. strings) son arreglos en el cual cada elemento almacenado es un carácter (típicamente de un byte si es ASCII). Z-strings (vs L-strings) son los strings usados en C y assembler normalmente, estos strings están terminados por un carácter NULL ASCII (0x00) como delimitador. Al inicializar un string usando el carácter NULL es insertado automaticamente (e.g. hola string ) pero de generar strings carácter por carácter hay que insertar el NULL explicitamente.

12 Ejemplo: Strings Este ejemplo en C recorta largo carácteres de un string, desde la posición inicial ; y devuelve un puntero al string resultante. Se le pasa como argumentos la dirección del string y punteros a variables enteras que contienen la posición inicial y el largo. Entonces, un ejemplo de invocación es: pchar = recortastring(arr, &inicio, &largo); Recordar que en assembler: los argumentos van en registros $a0, $a1, $a2 y resultado en registro $v0 char *recortastring(register char *s, register int *inicial, { } s = s + *inicial; *(s + *largo) = '\0'; return s; register int *largo)

13 Ejemplo: Strings (cont) # v0 = recortastring($a0, $a1, $a2) # char *recortastring(register char *s, register int *inicial, register int *largo) recortastring: # no usa el stack al usar solo registros tn move $t0, $a0 # t0 = s, macro puede usar: addu $t0, $zero, $a0 lw $t2, 0($a1) addu $t0, $t0, $t2 lw $t1, 0($a2) addu $t1, $t0, $t1 sb $zero, 0($t1) move $v0, $t0 # t2 = *inicial # t0 = s + *inicial # t1 = *largo # t1 = s + *largo # *t1 = '\0' Coloca el carácter nulo de fin de string. # vo = nuevo inicio del string recortado. return(s) jr $ra

14 Manipulación de arreglos via índice vs punteros Existen diferencias en la eficiencia de manipular arreglos usando índices vs punteros. void cleararray1(int a[], int celdas) { } int i; for( i = 0; i < celdas ; i++) { } a[i] = 0; Código assembler generado por lcc ($4 = $a0, $5 = $a1) ->.text.ent cleararray1 cleararray1: addu $sp,$sp,-8 sw $30,0($sp) addu $30, $zero, $zero # i = 0 b L.5 L.2: sll $24,$30,2 # $t8 = 4*i addu $24,$24,$4 # $t8 = a + 4*i sw $0,($24) # Mem($t8) = 0 la $30,1($30) # i = i + 1 L.5: blt $30,$5,L.2 # $ i < a1 -> L.2 lw $30,0($sp) addu $sp,$sp,8 j $31.end cleararray1

15 Manipulación de arreglos via índice vs punteros Versión con punteros 1: void clearpunt1(int *a, int celdas) // Versión con punteros { int *p; for( p = a; p < a+celdas ; *p = 0, p++); } Código assembler generado por lcc -> a+celdas es una constante.text.ent clearpunt1 clearpunt1: addu $sp,$sp,-8 sw $30,0($sp) addu $30, $zero, $4 # p = a b L.10 L.7: sw $0,($30) # Mem(p) = 0 la $30,4($30) # p = p + 4 L.10: addu $24, $zero, $30 # $t8 = p sll $15,$5,2 # $t7 = 4*celdas addu $15,$15,$4 # $t7 = a + 4*i bltu $24,$15,L.7 # $t8 < t7 -> L.7 lw $30,0($sp) addu $sp,$sp,8 j $31.end clearpunt1

16 Manipulación de arreglos via índice vs punteros Versión con punteros 2: void clearpunt2(int *a, int celdas) // Versión con punteros { int *p, *q; for( p = a, q=a+celdas; p < q; p++) *p = 0; } En general los punteros son mas eficientes ya que referenciar a+celdas requiere menos instrucciones que a[i] en el lazo interno (inner loop)..text.ent clearpunt2 clearptr2: addu $sp,$sp,-8 sw $23,0($sp) # guardar $s7 en stack sw $30,4($sp) # guardar $fp en stack addu $30, $zero, $4 # p = a sll $24,$5,2 # $t8 = 4*celdas addu $23,$24,$4 # $s7 = a + 4*i b L.15 L.12: sw $0, ($30) # *p = 0 la $30,4($30) # p = p + 4 L.15: addu $24, $zero, $30 # $t8 = p bltu $24,$23,L.12 # if $t8 < $s7 -> L.12 lw $23,0($sp) lw $30,4($sp) addu $sp,$sp,8 j $31.end clearpunt2

17 Estructuras En C se puede definir estructuras que contienen elementos compuestos de diferentes tipos de datos (e.g. int, char, float, etc). Para declarar estas estructuras se usa la palabra struct La dirección del primer campo está dada por la dirección de inicio de la estructura. La dirección del segundo campo está dada por la dirección de inicio de la estructura + tamaño del primer campo. La dirección del tercer campo está dada por la dirección de inicio de la estructura + suma de los tamaños del primer y segundo campo. Puede ser necesario el uso de.space para mantener el alineamiento (ver ejemplo mas adelante)

18 Ejemplo: Estructuras En lenguaje C: struct punto { int x; int y; }; struct punto a = { 1, 2}; /* Se inicializan al definir el espacio */ struct punto b = { 3, 4}; void main(void) { a.x=b.x; a.y=b.y; /* Se puede escribir a = b, pero es una */ } /* copia superficial (o shallow copy) */

19 Ejemplo: Estructuras En lenguaje C: struct punto { int x; int y; }; struct punto a = { 1, 2}; struct punto b = { 3, 4}; void main(void) { a.x=b.x; a.y=b.y; } En assembler:.data structa:.word 1.word 2 structb:.word 3.word 4.text.globl main main: # apuntar a estructuras, registro base con offset la $t0, structb la $t1, structa lw $t3, 0($t0) # t3=b.x sw $t3, 0($t1) lw $t4, 4($t0) # t4=b.y sw $t4, 4($t1) jr ra # retorna del main.

20 Ejemplo: Estructuras con Strings En lenguaje C: struct pixel{ char color[6]; int lugar[2]; }; struct pixel p1 = {"red", {10,20}}; void main(void) { p1.color[0]='g'; p1.color[1]='r'; p1.color[2]='e'; p1.color[3]='e'; p1.color[4]='n'; p1.color[5]='\0'; }

21 Ejemplo: Estructuras con Strings (cont) En lenguaje C: struct pixel{ char color[6]; int lugar[2]; }; struct pixel p1 = {"red", {10,20}}; void main(void) { p1.color[0]='g'; p1.color[1]='r'; p1.color[2]='e'; p1.color[3]='e'; p1.color[4]='n'; p1.color[5]='\0'; } En assembler:.globl p1.data.align 2 p1:.byte 114 # 104 = r en ASCII.byte 101 # 101 = e en ASCII.byte 100 # 100 = d en ASCII.byte 0 # 0 = NULL Terminator.space 2 # 2 bytes de espacio.space 2 # 2 bytes de espacio.word 0xa # 10.word 0x14 # continua...

22 Ejemplo: Estructuras con Strings (cont) En lenguaje C: struct pixel{ char color[6]; int lugar[2]; }; struct pixel p1 = {"red", {10,20}}; void main(void) { p1.color[0]='g'; p1.color[1]='r'; p1.color[2]='e'; p1.color[3]='e'; p1.color[4]='n'; p1.color[5]='\0'; } En assembler: main:.frame $sp,0,$31 la $24,103 # $t8 = g = 103 sb $24,p1 # p1.color[0] = g la $24,114 # $t8 = r = 114 sb $24,p1+1 # p1.color[1] = r la $24,101 # etc... sb $24,p1+2 la $24,101 sb $24,p1+3 la $24,110 sb $24,p1+4 sb $0,p1+5 L.1: j $31.end main

23 Manejo dinámico de la memoria malloc, calloc y free se usan para obtener memoria dinámicamente Del Linux Programmer's Manual (man malloc): NAME calloc, malloc, free, realloc - Allocate and free dynamic memory SYNOPSIS #include <stdlib.h> void *calloc(size_t nmemb, size_t size); void *malloc(size_t size); void free(void *ptr); DESCRIPTION calloc() allocates memory for an array of nmemb elements of size bytes each and returns a pointer to the allocated memory. The memory is set to zero. malloc() allocates size bytes and returns a pointer to the allocated memory. The memory is not cleared.

24 Manejo dinámico de la memoria (cont) Se puede usar la función estándar sizeof para determinar el número de bytes de un cierto tipo de datos que se solicitaran al administrador de memoria (parte del sistema operativo) sizeof(char *) es igual a 4 (un word) y no refleja el tamaño de un string (usar strlen) Si es posible asignar espacio retorna un puntero a carácter del primer byte asignado; en caso contrario retorna Null. El administrador dinámico mantiene datos para asignar y desasignar segmentos de memoria en la zona de memoria dinámica (denominada heap). En MIPS por defecto el inicio del segmento datos es 0x el comienzo del heap es 0x y el comienzo de datos estáticos es 0x

25 Organización de Memoria en MIPS (spim) $sp Memory Mem Map I/O f f f f f f f c Kernel Code & Data Stack 7f f e f f fc 2 30 words $gp PC Dynamic data Static data Your Code Reserved OS

26 Manejo dinámico de la memoria (cont) El código siguiente ilustra la forma de pedir espacio para un entero y luego libera el espacio asignado. #include <stdio.h> #include <stdlib.h> /* Para incluir prototipos de malloc y free */ int main(void) { } int *punt=0; /*Define e inicia puntero*/ punt = (int *) malloc(sizeof(int));/*pide espacio y lo encadena. */ if (punt ==0) return(1); /* si no hay espacio */ *punt=5; printf("%d\n",*punt); free(punt); return(0); /*Libera espacio*/

27 Manejo dinámico de la memoria (cont) Otro ejemplo de asembler MIPS usando servicios: main:... li $v0,9 # $v0=9 para pedir memoria en heap (sbrk) li $a0,8 # se pide en bytes (dos palabras) syscall # heap por defecto en 0x move $t0,$v0 # retorna en $v0 un puntero al espacio li $t1,0xffffffff sw $t1,0($t0) # escribe en las celdas asignadas. sw $t1,4($t0)

Direccionamiento y Estructuras de Datos.

Direccionamiento y Estructuras de Datos. Capítulo 7. 1 Direccionamiento y Estructuras de Datos. Una vez conocidos los mecanismos de direccionamiento de un procesador es útil visualizar cómo se pueden emplear para manipular arreglos y estructuras.

Más detalles

Funciones. Diseño de funciones. Uso de instrucción jal y retorno de subrutina.

Funciones. Diseño de funciones. Uso de instrucción jal y retorno de subrutina. MIPS Funciones 1 Funciones Diseño de funciones. Uso de instrucción jal y retorno de subrutina. Se suelen denominar funciones, procedimientos, subrutinas, subprogramas a las estructuras que emplean los

Más detalles

Analista Universitario en Sistemas. Taller de Programación II. Instituto Politécnico Superior MEMORIA DINAMICA

Analista Universitario en Sistemas. Taller de Programación II. Instituto Politécnico Superior MEMORIA DINAMICA MEMORIA DINAMICA 1 Introducción La allocación dinámica de memoria en C trata de la solicitud de memoria en tiempo de ejecución La memoria se administra estática, automática o dinámicamente - Las variables

Más detalles

Programación 1 Grado de Ingeniería Robótica

Programación 1 Grado de Ingeniería Robótica Programación 1 Grado de Ingeniería Robótica Tema 6: Datos estructurados Índice (sesión 11/11/2015): Arrays estáticos Cadenas de caracteres Funciones de la librería string.h Punteros Declaración de punteros

Más detalles

Punteros. Programación en C 1

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

Más detalles

Tema 18: Memoria dinámica y su uso en C

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 edfrancom@ipn.mx @edfrancom edgardoadrianfrancom Estructuras de datos (Prof. Edgardo A. Franco) 1

Más detalles

Generación de un ejecutable

Generación de un ejecutable ASSEMBLER Generación de un ejecutable Programa de alto nivel Programa Compiler Assembler Linker Archivo Ejecutable Programa en lenguaje assembler Archivo Fuente Assembler Archivo Objeto Archivo Fuente

Más detalles

UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA ELO311 Estructuras de Computadores Programación Assembler.

UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA ELO311 Estructuras de Computadores Programación Assembler. 2. Creación del ambiente de trabajo. Una vez instalado el compilador cruzado lcc, éste queda en C:\Program Files\lcc\4.1 Conviene crear una subcarpeta para colocar los ejemplos. Sea ésta ej. En la carpeta

Más detalles

Creación del ambiente de trabajo.

Creación del ambiente de trabajo. Capítulo 2. 1 Creación del ambiente de trabajo. Una vez instalado el compilador cruzado lcc, éste queda en C:\Program Files\lcc\4.1 Conviene crear una subcarpeta para colocar los ejemplos. Sea ésta ej.

Más detalles

Guía práctica de estudio 04. Almacenamiento en tiempo de ejecución

Guía práctica de estudio 04. Almacenamiento en tiempo de ejecución Guía práctica de estudio 04. Almacenamiento en tiempo de ejecución Elaborado por: M.C. Edgar E. García Cano Ing. Jorge A. Solano Gálvez Autorizado por: M.C. Alejandro Velázquez Mena Guía práctica de estudio

Más detalles

PUNTEROS (Apuntadores)

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

Más detalles

2. Variables dinámicas

2. Variables dinámicas 2. Variables dinámicas 1. Introducción 2. Gestión de memoria dinámica 3. Punteros y variables dinámicas en lenguaje algorítmico 4. Gestión de memoria dinámica y punteros en C Bibliografía Biondi y Clavel.

Más detalles

PUNTEROS (APUNTADORES)

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)

Más detalles

GESTIÓN DE MEMORIA DINÁMICA EN C 1. Creación y destrucción de variables dinámicas

GESTIÓN DE MEMORIA DINÁMICA EN C 1. Creación y destrucción de variables dinámicas GESTIÓN DE MEMORIA DINÁMICA EN C 1. Creación y destrucción de variables dinámicas en lenguaje algorítmico Partimos de: p: puntero de tipo T; ok, lógico; En general, el MGMD dispondrá d de alguna versión

Más detalles

Memoria Dinámica. Jornadas de Marzo 2010 Grupo de Usuarios de Linux Tania Pérez

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.

Más detalles

Tema 13: Apuntadores en C

Tema 13: Apuntadores en C Tema 13: Apuntadores en C M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com edfrancom@ipn.mx @edfrancom edgardoadrianfrancom Estructuras de datos (Prof. Edgardo A. Franco) 1 Contenido Introducción

Más detalles

Clase Práctica Administración de Memoria en C. Organización de Computadoras Depto. Cs. e Ing. de la Comp. Universidad Nacional del Sur

Clase Práctica Administración de Memoria en C. Organización de Computadoras Depto. Cs. e Ing. de la Comp. Universidad Nacional del Sur Clase Práctica Administración de Memoria en C Depto. Cs. e Ing. de la Comp. Universidad Nacional del Sur Copyright Copyrigth 2018 Ing. Federico Joaquín. Las presentes transparencias constituyen una guía

Más detalles

ELO311 Estructuras de Computadores Digitales. Ambiente de Ejecución de Funciones

ELO311 Estructuras de Computadores Digitales. Ambiente de Ejecución de Funciones ELO311 Estructuras de Computadores Digitales Ambiente de Ejecución de Funciones Tomás Arredondo Vidal Este material está basado en: material de apoyo del texto de David Patterson, John Hennessy, "Computer

Más detalles

Repaso 02: Apuntadores y manejo de memoria dinámica

Repaso 02: Apuntadores y manejo de memoria dinámica Repaso 02: Apuntadores y manejo de memoria dinámica Solicitado: Ejercicios 02: Programación con memoria dinámica M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com edfrancom@ipn.mx @edfrancom

Más detalles

Apuntadores en C y C++

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

Más detalles

Grupo de Arquitectura y Tecnología de Computadores (ARCOS)

Grupo de Arquitectura y Tecnología de Computadores (ARCOS) Grupo de Arquitectura y Tecnología de Computadores (ARCOS) http://arcos.inf.uc3m.es/~ec 2 http://arcos.inf.uc3m.es/~ec 4 http://arcos.inf.uc3m.es/~ec 5 http://arcos.inf.uc3m.es/~ec 6 Código fuente en

Más detalles

Manejo de memoria en C

Manejo de memoria en C Manejo de memoria en C Todas las variables, en el lenguaje C, se definen dentro de alguna función, fuera de esa función no es posible acceder a ellas. Al entrar a una función, a cada una de las variables

Más detalles

UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA ELO320 Estructuras de Datos y Algoritmos. 3. Estructuras. Tomás Arredondo Vidal

UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA ELO320 Estructuras de Datos y Algoritmos. 3. Estructuras. Tomás Arredondo Vidal 26/8/2008 UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA ELO320 Estructuras de Datos y Algoritmos 3. Estructuras Tomás Arredondo Vidal 1.Arreglos (arrays) Los arreglos son estructuras

Más detalles

Apuntadores y Memoria dinámica. Apuntadores. M.C. Yolanda Moyao Martínez

Apuntadores y Memoria dinámica. Apuntadores. M.C. Yolanda Moyao Martínez Apuntadores y Memoria dinámica Apuntadores M.C. Yolanda Moyao Martínez Por que? Es la única forma de expresar algunos cálculos. Se genera código compacto y eficiente. Es una herramienta muy poderosa. Uso

Más detalles

Programación I Teoría III.

Programación I Teoría III. Programación I Teoría III http://proguno.unsl.edu.ar proguno@unsl.edu.ar DATOS ESTRUCTURADOS Estructuras de Datos Hasta ahora hemos trabajado con Datos simples enteros reales Caracteres punteros Sin embargo,

Más detalles

Punteros. 1.- Paso de parámetros por referencia. Ya hablamos de ésto en funciones. 2.- Declaración de arreglos dinámicos.

Punteros. 1.- Paso de parámetros por referencia. Ya hablamos de ésto en funciones. 2.- Declaración de arreglos dinámicos. 1 Punteros. Dentro de la memoria de la computadora cada dato almacenado ocupa una o más celdas contiguas de memoria. El número de celdas de memoria requeridas para almacenar un dato depende de su tipo.

Más detalles

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 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

Más detalles

Apuntadores (Punteros)

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

Más detalles

Algoritmos y estructuras de datos

Algoritmos y estructuras de datos Algoritmos y estructuras de datos Estructuras, apuntadores y memoria dinámica Francisco Javier Zaragoza Martínez Universidad Autónoma Metropolitana Unidad Azcapotzalco Departamento de Sistemas 11 de mayo

Más detalles

Algoritmos y Programación I

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.

Más detalles

Informática Ingeniería en Electrónica y Automática Industrial

Informática Ingeniería en Electrónica y Automática Industrial Informática Ingeniería en Electrónica y Automática Industrial Asignación dinámica de memoria en lenguaje C V1.2 Asignación dinámica de memoria en lenguaje C Definición La memoria en los programa en ejecución

Más detalles

Laboratorio 2: Uso de un Simulador MIPS32: PCSpim

Laboratorio 2: Uso de un Simulador MIPS32: PCSpim Laboratorio 2: Uso de un Simulador MIPS32: PCSpim Objetivos. Dominar el uso de un simulador assembler y herramientas para la depuración de programas. Analizar la creación de frames en la invocación de

Más detalles

Algoritmo, Estructuras y Programación II Ing. Marglorie Colina

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

Más detalles

Un puntero no es más que una variable estática cuyo contenido es una dirección de memoria.

Un puntero no es más que una variable estática cuyo contenido es una dirección de memoria. Los punteros en C 1 Introducción Cómo se organiza la memoria asociada a un programa? Como una colección de posiciones de memoria consecutivas. En ellas se almacenan los distintos tipos de datos, que ocupan,

Más detalles

ESTRUCTURAS. Struct Identificador_ tipo_estructura { Tipo miembro_1; /*Declaración de los miembros*/

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

Más detalles

Universidad del Papaloapan

Universidad del Papaloapan Universidad del Papaloapan Materia: Programación Estructurada Tema: Punteros Expositor: M. C. Bertha López Azamar Tuxtepec, Oaxaca. Enero/2005-2006 1 PUNTEROS M. C. Bertha López Azamar Un tema muy ligado

Más detalles

Estructuras y Uniones

Estructuras y Uniones 1 Estructuras y Uniones Estructuras. Las estructuras ( struct ) son agrupaciones de una o más variables de tipos posiblemente diferentes, agrupadas bajo un mismo nombre. Esto permite un manejo más cómodo

Más detalles

Punteros. Índice. 1. Qué es un puntero y por que son importantes.

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

Más detalles

MIPS. Universidad de Sonora 2

MIPS. Universidad de Sonora 2 MIPS MIPS (Microprocessor without Interlocked Pipeline Stages) es una familia de microprocesadores RISC desarrollada por MIPS Technologies desde 1981 y por Imagination Technologies desde 2012. Principio

Más detalles

Punteros y Memoria Dinámica I

Punteros y Memoria Dinámica I Memoria Punteros y Memoria Dinámica I Curso INEM. Programación en C++ Santiago Muelas Pascual smuelas@fi.upm.es! Lugar donde almacenan los datos y las instrucciones! Compuesta de un gran número de bytes!

Más detalles

Laboratorio de Arquitectura de Redes. Punteros en lenguaje C

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

Más detalles

Estructura de Computadores 2 [08/09] Entrada/Salida en procesadores MIPS

Estructura de Computadores 2 [08/09] Entrada/Salida en procesadores MIPS Estructura de Computadores 2 [08/09] Entrada/Salida en procesadores MIPS GAC: Grupo de Arquitectura de Computadores Dpt. Electrónica e Sistemas. Universidade da Coruña. Bibliografía Computer Organization

Más detalles

Programación I Teoría II.

Programación I Teoría II. Programación I Teoría II http://proguno.unsl.edu.ar proguno@unsl.edu.ar MODULARIDAD FUNCIONES EN C Modularidad Principio para resolución de problemas: Dividir para reinar Modularidad Módulo Función Procedimiento

Más detalles

3.1. Definición de datos enteros como variables globales.

3.1. Definición de datos enteros como variables globales. 3. Variables. 3.. Definición de datos enteros como variables globales. El siguiente segmento ilustra una serie de definiciones de enteros inicializados. En C, se denomina definición de datos, la instancia

Más detalles

FUNDAMENTOS DE PROGRAMACIÓN. PRÁCTICA 11: Apuntadores

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

Más detalles

Laboratorio de Arquitectura de Redes. Asignación dinámica de memoria en lenguaje C

Laboratorio de Arquitectura de Redes. Asignación dinámica de memoria en lenguaje C Laboratorio de Arquitectura de Redes Asignación dinámica de memoria en lenguaje C Asignación dinámica de memoria en lenguaje C Definición La memoria en los programa en ejecución Asignación y liberación

Más detalles

UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA ELO311 Estructuras de Computadores

UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA ELO311 Estructuras de Computadores 6.5. Comunicación de las funciones con su entorno. Hasta el momento se ha conceptualizado una subrutina como un segmento de código que ocurre a menudo en un programa. La idea puede flexibilizarse y aumentar

Más detalles

El operador contenido ( ) permite acceder al contenido de

El operador contenido ( ) permite acceder al contenido de 3. Memoria Dinámica y Punteros Objetivos: Distinguir los conceptos de memoria estática y memoria dinámica Comprender el concepto de puntero como herramienta de programación Conocer cómo se definen y cómo

Más detalles

Ejercicio 1. Considere el siguiente fragmento en ensamblador:

Ejercicio 1. Considere el siguiente fragmento en ensamblador: UNIVERSIDAD CARLOS III DE MADRID DEPARTAMENTO DE INFORMÁTICA GRADO EN INGENIERÍA INFORMÁTICA. ESTRUCTURA DE COMPUTADORES Para la realización del presente examen se dispondrá de 1:30 horas. NO se podrán

Más detalles

05 Funciones en lenguaje C. Diego Andrés Alvarez Marín Profesor Asociado Universidad Nacional de Colombia Sede Manizales

05 Funciones en lenguaje C. Diego Andrés Alvarez Marín Profesor Asociado Universidad Nacional de Colombia Sede Manizales 05 Funciones en lenguaje C Diego Andrés Alvarez Marín Profesor Asociado Universidad Nacional de Colombia Sede Manizales 1 Temario Programación funcional Declaración (prototipos) y definición de funciones

Más detalles

Punteros. Lenguaje C ANSI

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

Más detalles

Informática Ingeniería en Electrónica y Automática Industrial

Informática Ingeniería en Electrónica y Automática Industrial Informática Ingeniería en Electrónica y Automática Industrial Punteros en lenguaje C Punteros en lenguaje C Definición Declaración e inicialización de punteros Operadores de punteros: «*» y «&» Operaciones

Más detalles

TEMA 7. ARRAYS (LISTAS Y TABLAS).

TEMA 7. ARRAYS (LISTAS Y TABLAS). TEMA 7. ARRAYS (LISTAS Y TABLAS). En capítulos anteriores se han descrito las características de los tipos de datos básicos o simples (carácter, entero y coma flotante). Asimismo, se ha aprendido a definir

Más detalles

* Operador de Indirección ( o de referencia ) ( o de desreferencia )

* Operador de Indirección ( o de referencia ) ( o de desreferencia ) PUNTEROS INTRODUCCION 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 estructuras de datos dinámicas,

Más detalles

Programación en ensamblador Ejercicios propuestos

Programación en ensamblador Ejercicios propuestos Programación en ensamblador Ejercicios propuestos Ejercicio 1. Dada la siguiente expresión de un lenguaje de alto nivel int a = 6; int b = 7; int c = 3; int d; d = (a+b) * (a+b); Indique un fragmento de

Más detalles

PUNTEROS EN C (APUNTADORES)

PUNTEROS EN C (APUNTADORES) 2010 UNAN LEON Departamento de Computación Ing. En Sistemas Sabatino Autor: Ing: Karina Esquivel Alvarado. Asignatura: Programación Estructurada PUNTEROS EN C (APUNTADORES) TEMA 10: PUNTEROS (APUNTADORES)

Más detalles

Tipos de Datos Recursivos

Tipos de Datos Recursivos 1/1 Tipos de Datos Recursivos Josefina Sierra Santibáñez 15 de mayo de 2018 2/1 Introducción La recursividad no sólo se puede aplicar a la definición de procedimientos (i.e. funciones o acciones), sino

Más detalles

ELO311 Estructuras de Computadores Digitales. Operaciones MIPS para Control de flujo

ELO311 Estructuras de Computadores Digitales. Operaciones MIPS para Control de flujo ELO311 Estructuras de Computadores Digitales Operaciones MIPS para Control de flujo Tomás Arredondo Vidal Este material está basado en: material de apoyo del texto de David Patterson, John Hennessy, "Computer

Más detalles

El repertorio de instrucciones

El repertorio de instrucciones El repertorio de instrucciones Montse Bóo Cepeda Este trabajo está publicado bajo licencia Creative Commons Attribution- NonCommercial-ShareAlike 2.5 Spain. Estructura del curso 1. Evolución y caracterización

Más detalles

Programación en ensamblador Ejercicios resueltos

Programación en ensamblador Ejercicios resueltos Programación en ensamblador Ejercicios resueltos Ejercicio 1. Dado el siguiente fragmento de programa en ensamblador..globl main main:... li $a0, 5 jal funcion move $a0, $v0 li $v0, 1 li $v0, 10 funcion:

Más detalles

CAPITULO 2: VARIABLES Y CONSTANTES

CAPITULO 2: VARIABLES Y CONSTANTES CAPITULO 2: VARIABLES Y CONSTANTES 1. TIPOS DE DATOS. Existen cinco tipos de datos atómicos en C; char: carácter, int: entero, float: real coma flotante, double: real de doble precisión y void: sin valor.

Más detalles

Estructuras Dinámicas

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

Más detalles

Tipos Recursivos de Datos

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),

Más detalles

Ejercicios del Tema 3. Fundamentos de la programación en ensamblador

Ejercicios del Tema 3. Fundamentos de la programación en ensamblador Ejercicios del Tema 3. Fundamentos de la programación en ensamblador Ejercicio 1. Dada la siguiente expresión de un lenguaje de alto nivel int a = 6; int b = 7; int c = 3; int d; d = (a+b) * (a+b); Indique

Más detalles

3.1. Definición de datos enteros como variables globales.

3.1. Definición de datos enteros como variables globales. Capítulo 3. Variables. 3.. Definición de datos enteros como variables globales. El siguiente segmento ilustra una serie de definiciones de enteros inicializados. En C, se denomina definición de datos,

Más detalles

Estructura de Datos ARREGLOS

Estructura de Datos ARREGLOS Estructura de Datos ARREGLOS ESTRUCTURAS DE INFORMACIÓN Una estructura de datos o de información es una colección de datos que pueden ser caracterizados por su organización y las operaciones que se definen

Más detalles

Tipos de Datos Estructurados

Tipos de Datos Estructurados Departamento de Informática Universidad Técnica Federico Santa María Tipos de Datos Estructurados Programación de Computadores IWI-131-p1 Prof.: Teddy Alfaro Olave Arreglos (array) El arreglo es un tipo

Más detalles

ARREGLOS, PUNTEROS Y ASIGNACIÓN DINÁMICA DE MEMORIA

ARREGLOS, PUNTEROS Y ASIGNACIÓN DINÁMICA DE MEMORIA CAPÍTULO 3 ARREGLOS, PUNTEROS Y ASIGNACIÓN DINÁMICA DE MEMORIA Un arreglo, también llamado matriz (array), es un conjunto de elementos dispuestos secuencialmente, que contienen datos del mismo tipo. El

Más detalles

2.2 Nombres, Ligado y Ámbito

2.2 Nombres, Ligado y Ámbito 2.2 Nombres, Ligado y Ámbito Ligado estático y dinámico, reglas de ámbito y prueba de tipos. Conceptos Nombres e Identificadores Variables Tipos Ámbito Constantes Nombres Identificador que designa en el

Más detalles

Curso de Programación en C. Licenciatura, FCQeI. APUNTADORES.

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

Más detalles

Curso de Introducción a C en Plan 9

Curso de Introducción a C en Plan 9 Curso de Introducción a C en Plan 9 Enrique Soriano Laboratorio de Sistemas Grupo de Sistemas y Comunicaciones URJC 3 de febrero de 2010 (cc) 2010 Enrique Soriano Salvador Algunos derechos reservados.

Más detalles

Un puntero no es más que una variable estática cuyo contenido es una dirección de memoria.

Un puntero no es más que una variable estática cuyo contenido es una dirección de memoria. Los punteros en C 1 Introducción Cómo se organiza la memoria asociada a un programa? Como una colección de posiciones de memoria consecutivas. En ellas se almacenan los distintos tipos de datos, que ocupan,

Más detalles

Ing. Informática Programación I Bloque 7

Ing. Informática Programación I Bloque 7 Bloque 7 Punteros Estructuras de datos dinámicas Hasta ahora: todos los tios tienen un tamaño estático (que se determina en tiemo de comilación) Ahora: tios de datos dinámicos, cuyo tamaño no es fijo y

Más detalles

Asignación Dinámica de Memoria. Agustín J. González Versión original de Kip Irvine ELO 326: Seminario II 2do. Sem. 2001

Asignación Dinámica de Memoria. Agustín J. González Versión original de Kip Irvine ELO 326: Seminario II 2do. Sem. 2001 Asignación Dinámica de Memoria Agustín J. González Versión original de Kip Irvine ELO 326: Seminario II 2do. Sem. 2001 1 Asignación Dinámica Asignación Dinámica es la creación de un objeto mientras el

Más detalles

Tema 3 (III) Fundamentos de la programación en ensamblador

Tema 3 (III) Fundamentos de la programación en ensamblador Tema 3 (III) Fundamentos de la programación en ensamblador Grupo ARCOS Estructura de Computadores Grado en Ingeniería Informática Universidad Carlos III de Madrid Contenido } Fundamentos básicos de la

Más detalles

Tema 11: Manejo de cadenas en C

Tema 11: Manejo de cadenas en C Tema 11: Manejo de cadenas en C M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com edfrancom@ipn.mx @edfrancom edgardoadrianfrancom Estructuras de datos (Prof. Edgardo A. Franco) 1 Contenido

Más detalles

Fundamentos y Arquitectura de Computadores (ITTSE UV)

Fundamentos y Arquitectura de Computadores (ITTSE UV) REGISTROS DEL MIPS32 Nombre Código del Uso común registro $zero 0 El contenido de este registro siempre es nulo $v0 - $v1 2 3 Valores de retorno para las llamadas al sistema $a0 - $a3 4 7 Argumentos para

Más detalles

Programación. Test Autoevaluación Tema 3

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.

Más detalles

INTRODUCCIÓN AL LENGUAJE DE PROGRAMACIÓN C

INTRODUCCIÓN AL LENGUAJE DE PROGRAMACIÓN C INTRODUCCIÓN AL LENGUAJE DE PROGRAMACIÓN C Programación en Entornos Multitarea Curso 2006/2007 Introducción C: lenguaje de medio nivel 32 palabras clave Eficiencia de ejecución del código generado Portabilidad

Más detalles

1. Presentación del lenguaje C Creado en 1972 por D. Ritchie Lenguaje de propósito general Portátil o transportable (generalmente) Inicialmente de niv

1. Presentación del lenguaje C Creado en 1972 por D. Ritchie Lenguaje de propósito general Portátil o transportable (generalmente) Inicialmente de niv Introducción al lenguaje C Informática Belarmino Pulido Junquera Índice 1. Presentación del lenguaje C 2. Estructura de un programa en C 3. Instrucciones del pre-procesador procesador 4. Tipos de datos

Más detalles

RESEÑA DE LENGUAJE C

RESEÑA DE LENGUAJE C RESEÑA DE LENGUAJE C VARIABLES La función main. Es el punto de entrada al programa. void main(void) Aquí escribo mi programa Tipos de datos. Char. El char es una variable de 1 byte. Almacena números enteros.

Más detalles

Arquitectura del MIPS: Introducción

Arquitectura del MIPS: Introducción Arquitectura del MIPS: Introducción Montse Bóo Cepeda Este trabajo está publicado bajo licencia Creative Commons Attribution- NonCommercial-ShareAlike 2.5 Spain. Estructura del curso 1. Evolución y caracterización

Más detalles

MIPS: Modelo de programación. (I Parte)

MIPS: Modelo de programación. (I Parte) MIPS: Modelo de programación (I Parte) MIPS: Microprocessor without Interlocked Pipeline Stages Trabajaremos como MIPS Son similares a las desarrolladas en los años 80 Cerca de 100 millones de procesadores

Más detalles

Tema 13: Manejo de archivos en lenguaje C

Tema 13: Manejo de archivos en lenguaje C Tema 13: Manejo de archivos en lenguaje C M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com edfrancom@ipn.mx @edfrancom edgardoadrianfrancom Estructuras de datos (Prof. Edgardo A. Franco)

Más detalles

Práctica 2 - Manejo de estructuras de datos y punteros

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,

Más detalles

ELO311 Estructuras de Computadores Digitales. Ensamblador MIPS

ELO311 Estructuras de Computadores Digitales. Ensamblador MIPS ELO311 Estructuras de Computadores Digitales Ensamblador MIPS Tomás Arredondo Vidal Este material está basado en: material de apoyo del texto de David Patterson, John Hennessy, "Computer Organization &

Más detalles

Tema 10: Arreglos estáticos en C

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 edfrancom@ipn.mx @edfrancom edgardoadrianfrancom Estructuras de datos (Prof. Edgardo A. Franco) 1 Contenido

Más detalles

Introducción al lenguaje C

Introducción al lenguaje C Introducción al lenguaje C Programación 2 Instituto de Computación, Facultad de Ingeniería, Universidad de la República, Uruguay 2 de marzo de 2016 Programación 2 Introducción al lenguaje C 2 de marzo

Más detalles

void clear1( int array[], int size ) /* Versión con arreglos */ { int i; for( i = 0; i < size; i++) array[i] = 0; }

void clear1( int array[], int size ) /* Versión con arreglos */ { int i; for( i = 0; i < size; i++) array[i] = 0; } 2.10 Apuntadores contra arreglos. El manejo de apuntadores es uno de los aspectos más interesantes en los lenguajes de programación; los apuntadores y los arreglos comparten algunas características, sin

Más detalles

Teoría 8: Segunda Parte. Estructuras de Datos y Funciones de Entrada en Lenguaje C

Teoría 8: Segunda Parte. Estructuras de Datos y Funciones de Entrada en Lenguaje C Teoría 8: Segunda Parte Estructuras de Datos y Funciones de Entrada en Lenguaje C Int. a la Computación-Int. a la Programación Fund. De la Informática Primer Cuatrimestre 2018 Lenguaje C Objetos de Datos

Más detalles

Memoria Dinámica en C++

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:

Más detalles

Tipos de datos y Operadores Básicos

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?

Más detalles

Punteros. Definición Un puntero es un dato que contiene una dirección de memoria.

Punteros. Definición Un puntero es un dato que contiene una dirección de memoria. Punteros Definición Un puntero es un dato que contiene una dirección de memoria. NOTA: Existe una dirección especial que se representa por medio de la constante NULL (definida en ) y se emplea

Más detalles

Lenguaje C, tercer bloque: Funciones

Lenguaje C, tercer bloque: Funciones Lenguaje C, tercer bloque: Funciones José Otero 1 Departamento de informática Universidad de Oviedo 28 de noviembre de 2007 Índice 1 Tipo puntero Concepto de puntero Operador dirección Operador indirección

Más detalles

Informática PRÀCTICA 9 Curs Práctica Nº 9: Rango y precisión de representación de números en el ordenador.

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

Más detalles

Tema 8 Punteros. Fundamentos de Informática

Tema 8 Punteros. Fundamentos de Informática Tema 8 Punteros Fundamentos de Informática Contenidos Qué es un puntero? Declaración de punteros Operadores unarios: & y * Operaciones con punteros Aritmética de punteros Punteros y funciones Punteros

Más detalles

ELO311 Estructuras de Computadores Digitales. Algoritmos de Multiplicación y División

ELO311 Estructuras de Computadores Digitales. Algoritmos de Multiplicación y División ELO311 Estructuras de Computadores Digitales Algoritmos de Multiplicación y División Tomás Arredondo Vidal Este material está basado en: material de apoyo del texto de David Patterson, John Hennessy, "Computer

Más detalles