Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Apuntes Semana 11

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 7

5.

ARREGLOS Y ARCHIVOS
SEMANA 11. UNIDAD 5

ACTIVIDAD 1, 2, 3, 4

5.1 Arreglos Unidimensionales (1 semana)

Introducción a Arreglos:
Un arreglo o matriz es una estructura homogénea compuesta por varios elementos
todos del mismo tipo y almacenados consecutivamente en memoria. Cada
elemento puede ser accedido directamente por el nombre de la variable tipo
arreglo, seguido de uno o más subíndices encerrados entre corchetes.

Las variables que se han visto hasta ahora son de tipo simple (entero, real,
alfabético), es decir, consisten solamente de una localidad de memoria y sólo
puede contener un valor a la vez, el cual puede ser actualizado en forma directa,
pero también existen las variables tipo arreglo (array) o estructurado que consisten
en una colección finita, homogénea y ordenada de elementos del mismo tipo,
que se almacenan en posiciones consecutivas de memoria y reciben un nombre
común:

Finita: Todo arreglo tiene un límite, es decir, debe determinarse cuál será el
número máximo de elementos que podrán formar parte del arreglo.

Homogénea: Todos los elementos del arreglo deben ser del mismo tipo.

Ordenada: Se puede determinar cuál es el primer elemento, el segundo, el


tercero,.... y el n-ésimo elemento.

En general, la representación de los arreglos se hace mediante variables suscritas


o subíndices y pueden tener una o más dimensiones. El número de subíndices
representa la dimensión del arreglo.

Esto significa que si se declara una variable de tipo arreglo de una dimensión la
variable solamente tendrá un subíndice (ejemplo x[5]), si es de dos dimensiones,
dos subíndices(ejemplo x[3][2]), y así sucesivamente.

Para referirse a un determinado elemento de un arreglo se deberá utilizar el


nombre del arreglo y uno o más subíndices, que especifique su posición relativa
en el arreglo.

En base al número de dimensiones, los arreglos se clasifican en:

- Unidimensionales (también llamados vector o lista)


- Bidimensionales (tablas o matrices)
- Multidimensionales (tres o más dimensiones)
Un arreglo unidimensional, también llamado vector, es una colección ordenada
de elementos todos del mismo tipo bajo un mismo nombre y se diferencian por la
posición que tiene cada elemento dentro del arreglo de datos.
Igual que sucede con otras variables, antes de ser utilizadas deben declararse.
La declaración de un vector especifica el nombre, el número y el tipo de dato de
los elementos.
Por ejemplo, el siguiente es un vector de nombre V de tamaño 5, de elementos
enteros:
0 1 2 3 4
V 15 23 58 96 75

Observe que el 1er. Elemento está guardado en la posición 0. El compilador de C


así lo determina por lo que es necesario aclarar que siempre se hará el acceso a
una casilla considerando n-1.

La siguiente es la sintaxis en “C” para declarar el vector:

Int V [5]
Tipo nombre [tamaño];

Donde:
Tipo: Indica el tipo de dato de los elementos del vector, que pueden ser de
cualquier tipo primitivo o definido por el usuario.
Nombre: Es un identificador que nombra al vector
Tamaño: Constante entera que especifica el número de elementos del vector

Ejemplos:
int m[10]; Significa que se declara el vector m de 10 elementos de tipo entero
que pueden ser las edades de diez personas
float R[5]; Significa que se declara el vector R de 5 elementos de tipo flotante, que
pueden ser precios de cinco productos.
double LD [100]; Significa que se declara el vector LD de 100 elementos de tipo
double, que pueden ser los datos de temperatura para un experimento.
PÁGINA DE CONSULTA:
http://www.mailxmail.com/curso-introduccion-lenguaje-c/arrays-cadenas

Actividad 1:
Escribe 3 ejemplos de vectores y qué datos pueden contener.
Cómo acceder a los elementos de un vector:
a) En forma directa
b) A través de una estructura de control repetitiva donde se despliegue toda la
información contenida en el vector.
a) Forma Directa
Se utiliza el nombre del vector seguido del subíndice entre corchetes.
Por ejemplo, para acceder al tercer elemento del vector V y guardarlo en una
variable simple x se escribe de la siguiente manera:
0 1 2 3 4
V 15 23 58 96 75

x = v[2];
printf (“%d”, x); dará como resultado 58

Ejemplo:
int m[100], k=0, a=0;
//…..
a= m[1]+m[99];
k=50;
[k]++;
m[k+1]=m[k];

Observe que para referenciar un elemento del vector se puede utilizar como
subíndice una constante, una variable o una expresión de tipo entero. El subíndice
especifica la posición del elemento dentro del vector. La primera posición es la 0.
** NOTA IMPORTANTE:
Si se intenta acceder a un elemento con un subíndice menor o igual que cero o
mayor que el número de elementos de la matriz menos uno, el compilador de “C”
no checa el error, es el sistema operativo quien lo hace enviando un mensaje de
error, solo si el intento transgrede los límites de la zona de memoria asignada por
él a dicha aplicación. Por lo tanto es responsabilidad del programador escribir el
código necesario para detectar ese tipo de error, esto se hace verificando siempre
que el índice está entre 0 y el tamaño del arreglo menos 1. Por ejemplo:
#define N 100 //Asigna el tamaño del vector a una constante N
//…
int m[N], k=0; // Declara el vector m de tamaño N
//…..
k=99; // k es utilizada como subíndice
if (k >= 0 && k < N-1) // Valida que k se encuentre en el rango de 0 a 99
m[k+1]=m[k];
else
printf(“Indice fuera de límites\n”);
//…

b) Acceder a los elementos del arreglo través de una estructura de control


repetitiva
Para explicar el tema se realizará un programa para que el usuario capture 6 datos
de tipo flotante a un vector llamado temperatura.
Primer paso, declarar variables a utilizar:
float temperatura[6]; // declara el vector temperatura de 6 elementos
int c; // variable subíndice que cuenta los elementos del vector

Segundo paso: Capturar los elementos del vector


for (c=0; c<6; c++) // el rango de la condición es de 0 a 5
{
printf(“Dame el elemento %d =”, c); // despliega el mensaje de captura. %d tipo
de dato del subíndice, siempre es entero
scanf(“%f”, &temperatura[c]); // %f es el formato del tipo de dato de la
} temperatura, valor que guarda el vector

Tercer paso: Desplegar los elementos capturados en el vector.


for (c=0; c<6; c++) // el rango de la condición es de 0 a 5
{
printf(“temperatura[%d]= %f \n”, temperatura[c]); // despliega el valor contenido
en el vector temperatura
}

El programa completo se presenta a continuación:


/* temperaturas.c
Autor: Juan Perez
Fecha: 5/abr/2011
Objetivo: Guardar en un vector las temperaturas de 6 reacciones de un experimento
*/
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
main()
{
float temperatura[6]; // declarar vector temperatura de 6 elementos
int c; // variable subíndice que cuenta los elementos del vector

// Capturar los elementos del vector


for (c=0; c<6; c++) // el rango de la condición es de 0 a 5.
{
printf("Dame el elemento %d =", c); // despliega el mensaje de captura. %d tipo de dato del
subíndice, siempre es entero
scanf("%f", &temperatura[c]); // %f es el formato del tipo de dato de la temperatura.
}
for (c=0; c<6; c++) // Impresion de resultados
{
printf("temperatura [%d] = %.2f \n",c, temperatura[c]); // despliega el valor contenido en el
vector temperatura
}
getche();

Actividad 2:
Escribir un programa para guardar en un vector de 10 elementos la edad de 10
personas mayores de edad. Solo se registran las edades mayores de 17 años.
Desplegar la información de la siguiente manera:
Edad de persona 1: 25
Edad de persona 2: 33
Edad de persona 3: 19
….
Edad de persona 10: 87

Actividad 3:
Escribir un programa para guardar en un vector de 7 elementos, el promedio de
las materias del primer semestre. Suponer que cada materia solo tiene 3
unidades. Desplegar la información de la siguiente manera:

Materia 1:
Parcial 1: 90
Parcial 2: 100
Parcial 3: 80
Promedio Materia 1: 90

Materia 2:
Parcial 1: 70
Parcial 2: 90
Parcial 3: 80
Promedio Materia 2: 80

……
Materia 7:
Parcial 1: 100
Parcial 2: 100
Parcial 3: 100
Promedio Materia 7: 100

Cadenas de Caracteres:
Se representa igual que el vector con la diferencia de que el tipo de dato es char.
Por ejemplo: Crear un vector para que se guarde e imprima su nombre:
Se va a declarar la variable nombre de tipo char de tamaño 20:
char nombre[20];

Ejemplo:
/*nombre.C
autor: Lola Lopez
fecha:octubre de 2010
objetivo:Elaborar un programa que capture nombre utilizando scanf y printf
*/

#include<stdlib.h>
#include <conio.h>
#include <stdio.h>

main ()
{
char nombre[20];

printf ("\n Captura tu nombre: ");


scanf("%s", nombre);
printf("Tu nombre es: ");
printf("%s \n ", nombre);
getche();
}

Como se observa al correr este programa, no se guardó el nombre completo, es


decir, después del espacio no se guardó la información, esto es porque la
sentencia scanf lee datos delimitados por espacios en blanco.

Para guardar cadenas de caracteres, incluyendo espacios en blanco, es


recomendable utilizar la función gets y para imprimir la función puts.
Ejemplo:
/*nombregets.C
autor: Lola Lopez
fecha:octubre de 2010
objetivo:Elaborar un programa que capture nombre utilizando gets
*/

#include<stdlib.h>
#include <conio.h>
#include <stdio.h>
//char *gets(char, *var); // invocar a la función gets. La variable var
// representa la matriz que contendra todos los caracteres tecleados excepto el
caracter
//\n que sea automaticamente reemplazado por el caracter \0 con el que C finaliza
// toda la cadena de caracteres.

main ()
{
char *c = NULL; // Almacena el valor retornado por gets
char nombre[20];

printf ("\n Captura tu nombre: ");


c=gets(nombre);

printf("Tu nombre es: ");


puts(nombre);

getche();
}

También podría gustarte