Tipos de Datos Básicos y Estructurados
-
Upload
savannah-walker -
Category
Documents
-
view
32 -
download
0
description
Transcript of Tipos de Datos Básicos y Estructurados
Programación, Algoritmos y Estructuras de Datos.Introducción teórica al Trabajo Práctico 4.
Tema: Punteros y Arreglos.
Tipos de Datos Básicos y Estructurados
Datos BásicosNuméricos
EnterosRealesCaracteres
Datos Derivados Puntero
Datos Estructurados
Internos
Externos
Estáticos Arreglos
DinámicosListas, Pila, Cola
Árbol.
Ficheros
Primer cuatrimestre de 2011 Pablo A. García
Programación, Algoritmos y Estructuras de Datos.Introducción teórica al Trabajo Práctico 4.
Tema: Punteros y Arreglos.
Tipos de Datos Básicos y Estructurados
Datos BásicosNuméricos
EnterosRealesCaracteres
Datos Derivados Puntero
Datos Estructurados
Internos
Externos
Estáticos Arreglos
DinámicosListas, Pila, Cola
Árbol.
Ficheros
Primer cuatrimestre de 2011 Pablo A. García
Programación, Algoritmos y Estructuras de Datos.Introducción teórica al Trabajo Práctico 4.
Tema: Punteros y Arreglos.
Punteros
Introducción: el puntero es una de las características más poderosas del lenguaje de programación C y también una de las capacidades más difíciles de dominar. Los punterosnos permiten simular llamadas por referencia, crear y manipular estructuras de datos.
Definición: (según Deitel y Deitel)Los punteros son variables que contienen direcciones de memoria como sus valores. Por logeneral una variable contiene directamente un valor específico. Un puntero contiene ladirección de una variable que contiene un valor específico. En este sentido, un nombre devariable se refiere “directamente” a un valor y un puntero se refiere “indirectamente” aun valor.
Primer cuatrimestre de 2011 Pablo A. García
Programación, Algoritmos y Estructuras de Datos.Introducción teórica al Trabajo Práctico 4.
Tema: Punteros y Arreglos.
Primer cuatrimestre de 2011 Pablo A. García
Declaración: int * ptr; & es un operador que regresa int a; la dirección de su operando. a=7; ptr=&a;
Un puntero puede ser inicializado a 0, NULL o a una dirección. Un apuntador con valor NULLno apunta a nada. Ponerlo a 0 es igual a NULL, pero se prefiere NULL.
La representación del puntero en memoria sería:
El operador * se conoce como “el operador de indirección o de desreferencia”, y nos retornaEl valor del objeto hacia el cual su operando apunta. Por ejemplo:
printf(“%d”, *ptr); /* Imprime el valor de la variable a, es decir, 7 */
7
ptr a
0xFF0A 70xFF0Aptr a
0xFF8C
Programación, Algoritmos y Estructuras de Datos.Introducción teórica al Trabajo Práctico 4.
Tema: Punteros y Arreglos.El especificador de formato %p dentro del printf extrae la dirección de memoria en formatoHexadecimal.Ejercicio ejemplificador (Problema 1 práctica 4):
#include <stdio.h>int j, k;int *ptr;int main(void){ j = 1; k = 2; ptr = &k; printf("\n"); printf("j tiene el valor %d y está almacenado en %p\n",j,&j); printf("k tiene el valor %d y está almacenado en %p\n",k,&k); printf("ptr tiene el valor %p y está almacenado en %p\n",ptr,&ptr); printf("El valor del entero al que apunta ptr es %d\n", *ptr); return 0;}
Primer cuatrimestre de 2011 Pablo A. García
1
2
0x40A0
0x40A0
0x4080
0x40C0
j
k
ptr
Programación, Algoritmos y Estructuras de Datos.Introducción teórica al Trabajo Práctico 4.
Tema: Punteros y Arreglos.
Introducción: Los arreglos sirven como una introducción al tema de las estructuras de datos.Los arreglos o arrays son estructuras de datos formadas por elementos del mismo tipo. Unaestructura de datos está formada por elementos relacionados por el mismo nombre pero de distintos tipos. Los arreglos y las estructuras son entidades estáticas debido a que conservansu tamaño durante la ejecución del programa. También existen las estructuras dinámicas dedatos como son las listas, colas o pilas, que pueden crecer o encogerse durante la ejecución del programa [Deitel y Deitel].
Primer cuatrimestre de 2011 Pablo A. García
Arreglos
ARREGLOS UNIDIMENSIONALES
Definición: Colección de datos del mismo tipo que se referencian por un mismo nombre y que son almacenados en posiciones de memoria contiguas, donde la posición de memoria más baja corresponde al primer elemento o componente del arreglo.Los tipos de elementos almacenados en el arreglo pueden ser cualquier tipo de dato de C. Ejemplos de arreglos:
•Un listado telefónico.•la edad de los alumnos de una clase•las temperaturas de cada día de un mes de una ciudad, etc.
Programación, Algoritmos y Estructuras de Datos.Introducción teórica al Trabajo Práctico 4.
Tema: Punteros y Arreglos.
Como declarar los arreglos: Los arreglos ocupan espacio en memoria. El programadorespecifica el tipo de cada elemento y el número de elementos para cada arreglo para que la PC pueda reservar la memoria necesaria. Para indicarle a la PC que reserve 6 elementospara el arreglo entero C hacemos: int c[6];Otros arreglos pueden ser: char b[10]; o float a[1000];
Primer cuatrimestre de 2011 Pablo A. García
-45
6
0
72
1543
-89
C[0]
C[1]
C[2]
C[3]
C[4]C[5]
Posición numérica delelemento dentro del arreglo
C: Nombre del arreglo.El número de posición que aparece dentro de los corchetesSe conoce como “subíndice del arreglo”.El subíndice puede ser un entero o una expresión entera:C[0]=-45;C[2]=0;C[a+b]+=2; /* C[4]= C[4]+2; C[4]=1545; */
Por ejemplo: para imprimir la suma de los 3 primeros elementos del arreglo hacemos: printf( “%d”, C[0]+C[1]+C[2] );
Programación, Algoritmos y Estructuras de Datos.Introducción teórica al Trabajo Práctico 4.
Tema: Punteros y Arreglos.
Ejemplo integrador usando un arreglo: en el siguiente programa usamos una estructura derepetición “for” para inicializar un arreglo de enteros con los primeros 10 números impares,e imprimimos el arreglo en forma tabular./*Inicializamos el arreglo*/#include<stdio.h>
main(){ int arreglo[10],i; for(i=0;i<=9;i++) arreglo[i]=2*i+1; printf("%s%10s\n","Subindice","Valor"); for(i=0;i<=9;i++) printf("%9d%10d\n",i,arreglo[i]); getchar();return 0;}
Primer cuatrimestre de 2011 Pablo A. García