Programacion ii modulo3-leccion1

17
MODULO III - ESTRUCTURA DE DATOS LINEALES TEMA Nº 0 pág. 1/6 1. Estructuras continuas / lineales 2. Concepto de arreglos 3. Tipos 4. Declaraciones 5. Referencia 6. Ejemplos PROGRAMACION II LECCION I ARREGLOS

description

 

Transcript of Programacion ii modulo3-leccion1

Page 1: Programacion ii modulo3-leccion1

MODULO III - ESTRUCTURA DE DATOS LINEALES

TEMA Nº 0 pág. 1/6

1. Estructuras continuas / lineales

2. Concepto de arreglos

3. Tipos

4. Declaraciones

5. Referencia

6. Ejemplos

PROGRAMACION II

LECCION I – ARREGLOS

Page 2: Programacion ii modulo3-leccion1

FUNDAMENTOS DEL LENGUAJE C – Estructuras continuas / lineales

PROGRAMACION II

Son aquellas que ocupan un espacio de memoria (bloque) continuo (un byte

al lado del otro).

Todas las declaraciones de tipos básicos son lineales, tanto si se reservan

de manera estática como de manera dinámica.

Es necesario tener una dirección de memoria que permita llegar al bloque

donde está la estructura.

Ventajas:

1)Sólo se requiere una

dirección de memoria para

llegar al bloqueacceso fácil a

la información.

2)Una vez que se llega al

bloque toda la data está

accesible acceso rápido a la

información.

Desventajas:

1)Es necesario conocer, ya sea en tiempo

estático o dinámico, el número de bytes

que se requiere para reservar el bloque su

tamaño es estático, no puede crecer.

2)Para bloques de gran tamaño, es posible

que se de el caso de no encontrar un

espacio continuo lo suficientemente

grande para satisfacer la necesidad (aún

habiendo memoria disponible) posibles

problemas de reserva de memoria.

Page 3: Programacion ii modulo3-leccion1

FUNDAMENTOS DEL LENGUAJE C – Estructuras continuas / lineales

PROGRAMACION II

NOTA: Las estructuras continuas son susceptibles al problema de

fragmentación de memoria aún habiendo varios bytes de memoria

disponibles, la alternación de bloques ocupados y libres hace que los

espacios continuos sean más pequeños de los que se necesitan.

Page 4: Programacion ii modulo3-leccion1

FUNDAMENTOS DEL LENGUAJE C - Estructuras continuas / lineales

PROGRAMACION II

Dos clases de estructuras:

1)Arreglos: conjunto finitode elementos del mismo tipo.

2)Registros: conjunto finitode elementos de tipo diferente

Para su definición / declaración se requieren tres cosas:

1)Conocer el tipo de dato único de todos sus elementos.

2)Conocer la cantidad de elementos del conjunto.

3)Dar un identificador válido para acceder a los

elementos del conjunto.

Page 5: Programacion ii modulo3-leccion1

FUNDAMENTOS DEL LENGUAJE C - Tipo de arreglos

PROGRAMACION II

¿Cómo representar arreglos de más de una dimensión: matrices por ejemplo?

1 dimensión vector

2 dimensiones matriz bidimensional

3 dimensiones matriz tridimensional

N dimensiones matriz híper-espacial

Se agrega otro tamaño y se usa otro índice para cada nueva dimensión

Page 6: Programacion ii modulo3-leccion1

FUNDAMENTOS DEL LENGUAJE C - Tipo de arreglos

PROGRAMACION II

Page 7: Programacion ii modulo3-leccion1

FUNDAMENTOS DEL LENGUAJE C – Arreglos - Concepto

PROGRAMACION II

Page 8: Programacion ii modulo3-leccion1

FUNDAMENTOS DEL LENGUAJE C - Arreglos

PROGRAMACION II

Page 9: Programacion ii modulo3-leccion1

FUNDAMENTOS DEL LENGUAJE C - Arreglos

PROGRAMACION II

Page 10: Programacion ii modulo3-leccion1

#include <stdio.h>

#define LONGITUD 81

#define NULO '\0'

main( )

{

char texto[LONGITUD];

unsigned int longitud, izq, der;

printf( "Comprobación de palíndromos.\n" );

printf( "Introduzca texto: ");

gets( texto );

longitud = 0;

while( texto[longitud] != NULO ) {

longitud = longitud + 1;

} /* while */

izq = 0;

der = longitud;

while( ( texto[izq] == texto[der] ) && ( izq < der ) ) {

izq = izq + 1;

der = der – 1;

} /* while */

if( izq < der ) {

printf( "No es palíndromo.\n" );

} else {

printf( "¡Es palíndromo!\n" );

} /* if */

} /* main */

FUNDAMENTOS DEL LENGUAJE C – Arreglos –Ejemplo palindromos

PROGRAMACION II

Page 11: Programacion ii modulo3-leccion1

FUNDAMENTOS DEL LENGUAJE C – Arreglos –Ejercicio

PROGRAMACION II

Page 12: Programacion ii modulo3-leccion1

FUNDAMENTOS DEL LENGUAJE C – Arreglos – Carga de Datos Secuencial

PROGRAMACION II

Como se comentó anteriormente la carga secuencial es ordenada y de acuerdo a esto deberemos

llenar el vector respetando el siguiente orden

v[0], v[1], v[2], v[3], v[4]

Como se ve, el que cambia en forma creciente es el índice del vector que es el que me permite hacer

la carga en forma secuencial.

Para llevar esto a código de programa debemos pensar en una estructura de control que me permita

realizar un número prefijado de repeticiones y que me incremente una variable en una unidad. Dicha

estructura de control es el ciclo FOR.

Un ejemplo de programa que me permite cargar un vector en forma secuencial es el siguiente

#include <stdio.h>

void main(void)

{

int v[5],i;

for (i=0;i<5;i++)

{

printf("Ingrese valor a cargar en el vector");

scanf("%d",&v[i]);

}

}

En el programa la variable i del ciclo for va a tomar valores desde 0 a 4 ordenadamente. Cuando comienza el for la variable i

vale 0 (i=0), se cumple con la condición de que i<5 y entonces entramos al for. Se ejecuta el printf y luego el scanf lee desde

el teclado y carga el valor en v[i] (v[0]). Se vuelve al for incrementando i en 1 (i++) por lo tanto el valor de i ahora es 1 y se

cargará v[1], siguiendo i=2 y v[2], i=3 y v[3] para finalmente i=4 y v[4]. De esta forma se carga el vector en forma secuencial.

Note que de esta forma se cargan todos los elementos del vector.

Page 13: Programacion ii modulo3-leccion1

FUNDAMENTOS DEL LENGUAJE C – Arreglos – Carga de Datos Secuencial

PROGRAMACION II

Observe que el promedio

se calcula recién cuando

termina el FOR, es decir

cuando tengo la suma

completa. Si se

pone dentro del FOR, en

lugar de calcular el

promedio 1 sola vez se

calcularía 100 veces.

Page 14: Programacion ii modulo3-leccion1

FUNDAMENTOS DEL LENGUAJE C – Arreglo – Carga de datos aleatoria

PROGRAMACION II

De acuerdo a lo comentado con anterioridad para la carga aleatoria debo ingresar

2 valores que son la posición donde quiero guardar el número y luego el número

que quiero cargar.

Puede ocurrir que en algún caso no se carguen todos los elementos del vector o

que se pretenda cargar algún valor en un lugar ya cargado. Para analizar esto

comenzaremos por el caso más simple y dejando que el usuario decida cuando

terminar de cargar elementos en el vector. De acuerdo a esto como no se sabe

cuantos elementos se van a cargar ni en que orden , debemos primero inicializar

todos los elementos del vector en un valor conocido que normalmente es cero.

Seguidamente se debe usar un ciclo de control en el cuál la cantidad de iteraciones

que se realicen quede fijada por alguna condición que acepte el usuario, en este

caso el ciclo que más se adecua es el while o do while.

Page 15: Programacion ii modulo3-leccion1

FUNDAMENTOS DEL LENGUAJE C - Arreglo – Carga de datos aleatoria

PROGRAMACION II

Page 16: Programacion ii modulo3-leccion1

FUNDAMENTOS DEL LENGUAJE C - Arreglo – Carga de datos aleatoria

PROGRAMACION II

Page 17: Programacion ii modulo3-leccion1

FUNDAMENTOS DEL LENGUAJE C - Funciones con cadena de caracteres

PROGRAMACION II