Desarrollodehabilidadesdelpensamiento leccion1-130415213326-phpapp02
Programacion ii modulo3-leccion1
-
Upload
karlalopezbello -
Category
Documents
-
view
706 -
download
3
description
Transcript of 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
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.
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.
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.
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
FUNDAMENTOS DEL LENGUAJE C - Tipo de arreglos
PROGRAMACION II
FUNDAMENTOS DEL LENGUAJE C – Arreglos - Concepto
PROGRAMACION II
FUNDAMENTOS DEL LENGUAJE C - Arreglos
PROGRAMACION II
FUNDAMENTOS DEL LENGUAJE C - Arreglos
PROGRAMACION II
#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
FUNDAMENTOS DEL LENGUAJE C – Arreglos –Ejercicio
PROGRAMACION II
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.
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.
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.
FUNDAMENTOS DEL LENGUAJE C - Arreglo – Carga de datos aleatoria
PROGRAMACION II
FUNDAMENTOS DEL LENGUAJE C - Arreglo – Carga de datos aleatoria
PROGRAMACION II
FUNDAMENTOS DEL LENGUAJE C - Funciones con cadena de caracteres
PROGRAMACION II