ARREGLOS UNIDAD 2 PROGRAMACIÓN -...

26
1 ARREGLOS UNIDAD 2 PROGRAMACIÓN Primavera 2009

Transcript of ARREGLOS UNIDAD 2 PROGRAMACIÓN -...

Page 1: ARREGLOS UNIDAD 2 PROGRAMACIÓN - galia.fc.uaslp.mxgalia.fc.uaslp.mx/~rmariela/programacion/unidad21.pdf · ARREGLOS UNIDAD 2 PROGRAMACIÓN Primavera 2009. Contenido Definición Procesamiento

1

ARREGLOSUNIDAD 2PROGRAMACIÓN

Primavera 2009

Page 2: ARREGLOS UNIDAD 2 PROGRAMACIÓN - galia.fc.uaslp.mxgalia.fc.uaslp.mx/~rmariela/programacion/unidad21.pdf · ARREGLOS UNIDAD 2 PROGRAMACIÓN Primavera 2009. Contenido Definición Procesamiento

Contenido

Definición

Procesamiento de Arreglos

2

Paso de Parámetro a funciones

Cadenas y caracteres

Arreglos multidimensionales

Page 3: ARREGLOS UNIDAD 2 PROGRAMACIÓN - galia.fc.uaslp.mxgalia.fc.uaslp.mx/~rmariela/programacion/unidad21.pdf · ARREGLOS UNIDAD 2 PROGRAMACIÓN Primavera 2009. Contenido Definición Procesamiento

Introducción

� Una variable puede almacenar un valor único. Ejemplo� a = 5;� contador = 0;

� Si el número de valores a guardar es mayor a 5 necesitamos una estrategia diferente

3

� contador = 0;

� Si necesitamos 5 valores diferentes del mismo tipo, usaríamos 5 variables� int a,b,c,d,e ;

diferente

� Los arreglos nos permitirán definir conjunto de valores del mismo tipo

Page 4: ARREGLOS UNIDAD 2 PROGRAMACIÓN - galia.fc.uaslp.mxgalia.fc.uaslp.mx/~rmariela/programacion/unidad21.pdf · ARREGLOS UNIDAD 2 PROGRAMACIÓN Primavera 2009. Contenido Definición Procesamiento

Arreglo

� Un arreglo es una colección finita y homogénea de datos.

D0 D1 D2 D3 D4 D5 D6 D7 D8 D9D

4

� Cada elemento de la colección es almacenado en una casilla del arreglo

� Para obtener cada elemento se debe referenciar por medio del índice del arreglo

0 1 2 3 4 5 6 7 8 9

Page 5: ARREGLOS UNIDAD 2 PROGRAMACIÓN - galia.fc.uaslp.mxgalia.fc.uaslp.mx/~rmariela/programacion/unidad21.pdf · ARREGLOS UNIDAD 2 PROGRAMACIÓN Primavera 2009. Contenido Definición Procesamiento

Definición

� Un arreglo se define de la siguiente forma:

tipo nombre_del_arreglo[expresion]

5

Tipo de datos:intfloatchar

Nombre de la variable

Indica la cantidad de elementos del arreglo

Page 6: ARREGLOS UNIDAD 2 PROGRAMACIÓN - galia.fc.uaslp.mxgalia.fc.uaslp.mx/~rmariela/programacion/unidad21.pdf · ARREGLOS UNIDAD 2 PROGRAMACIÓN Primavera 2009. Contenido Definición Procesamiento

Ejemplo

SIZE = 10;

int A[10];

int B[SIZE];

int C[SIZE*2];

6

int C[SIZE*2];

15 23 8 14 0 -6 11 4 -5 8

A[0] A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] A[9]

A

Page 7: ARREGLOS UNIDAD 2 PROGRAMACIÓN - galia.fc.uaslp.mxgalia.fc.uaslp.mx/~rmariela/programacion/unidad21.pdf · ARREGLOS UNIDAD 2 PROGRAMACIÓN Primavera 2009. Contenido Definición Procesamiento

Arreglo

� El compilador se encarga de reservar el espacio en memoria necesario para almacenar los datos del arreglo

7

A

15

23

8

14

0

A[0]

A[1]

A[2]

A[3]

A[4]

Page 8: ARREGLOS UNIDAD 2 PROGRAMACIÓN - galia.fc.uaslp.mxgalia.fc.uaslp.mx/~rmariela/programacion/unidad21.pdf · ARREGLOS UNIDAD 2 PROGRAMACIÓN Primavera 2009. Contenido Definición Procesamiento

Inicialización8

int A[10] = {15,23,8,14,0,-6,11,4,-5,8}

15 23 8 14 0 -6 11 4 -5 8A

int A[] = {15,23,8,14,0,-6,11,4,-5,8}

15 23 8 14 0 -6 11 4 -5 8A

Page 9: ARREGLOS UNIDAD 2 PROGRAMACIÓN - galia.fc.uaslp.mxgalia.fc.uaslp.mx/~rmariela/programacion/unidad21.pdf · ARREGLOS UNIDAD 2 PROGRAMACIÓN Primavera 2009. Contenido Definición Procesamiento

Inicialización9

int A[10] = {15,23}

15 23 0 0 0 0 0 0 0 0A

int A[10] = {}

0 0 0 0 0 0 0 0 0 0A

Page 10: ARREGLOS UNIDAD 2 PROGRAMACIÓN - galia.fc.uaslp.mxgalia.fc.uaslp.mx/~rmariela/programacion/unidad21.pdf · ARREGLOS UNIDAD 2 PROGRAMACIÓN Primavera 2009. Contenido Definición Procesamiento

Definición de Constantes10

� El tamaño del arreglo puede definirse por medio de una constante, de esta forma será mas fácil modificar el programa en caso necesario

#define nombre expresion#define nombre expresion

� #define es una directiva al compilador que indica que el texto que sigue sera reemplazado por la expresión

� Ejemplo#define size 15

Page 11: ARREGLOS UNIDAD 2 PROGRAMACIÓN - galia.fc.uaslp.mxgalia.fc.uaslp.mx/~rmariela/programacion/unidad21.pdf · ARREGLOS UNIDAD 2 PROGRAMACIÓN Primavera 2009. Contenido Definición Procesamiento

Ejemplo11

� Escriba un programa en el cual lea 10 números enteros y almacénelos en un arreglo

� Pida un número y búsquelo dentro del arreglo

Page 12: ARREGLOS UNIDAD 2 PROGRAMACIÓN - galia.fc.uaslp.mxgalia.fc.uaslp.mx/~rmariela/programacion/unidad21.pdf · ARREGLOS UNIDAD 2 PROGRAMACIÓN Primavera 2009. Contenido Definición Procesamiento

Ejemplo12

#include <stdio.h>

#include <stdlib.h>

#define size 10

int main()

{

int i,num,freq=0;

int arreglo[size]={};

for (i=0;i< size;i ++){for (i=0;i< size;i ++){

printf(“Arreglo[%d] =”); scanf(“%d”,&arreglo[i]);

}

printf(“Proporcione el número que va a buscar ”);

scanf (“%d”,&num);

for(i=0;i<size;i++){

if(arreglo[i] == num) freq++;}

printf(“El número %d se encuentra %d veces en el ar reglo”, num, freq);

system(“pause”);

return 0;

}

Page 13: ARREGLOS UNIDAD 2 PROGRAMACIÓN - galia.fc.uaslp.mxgalia.fc.uaslp.mx/~rmariela/programacion/unidad21.pdf · ARREGLOS UNIDAD 2 PROGRAMACIÓN Primavera 2009. Contenido Definición Procesamiento

Ejemplo13

� Escriba un programa en el cual lea 10 números reales y almacénelos en un arreglo

� Calcule la media de los números

� Calcule la desviación de la media para cada � Calcule la desviación de la media para cada número

Page 14: ARREGLOS UNIDAD 2 PROGRAMACIÓN - galia.fc.uaslp.mxgalia.fc.uaslp.mx/~rmariela/programacion/unidad21.pdf · ARREGLOS UNIDAD 2 PROGRAMACIÓN Primavera 2009. Contenido Definición Procesamiento

Ejemplo14

#include <stdio.h>

#include <stdlib.h>

#define size 100

int main()

{

int i,n;

float media=0,num[size]={};

// lea los números

printf(“Proporcione la cantidad de números a leer ” );scanf (“%d”,&n);

for(i=0;i<n;i++){

printf (“Lista[%d] =”); scanf (“% f”,&num [i]);printf (“Lista[%d] =”); scanf (“% f”,&num [i]);

media += num[i];

}

// calcule la media

media = media/n; printf(“La media es %f\n”,media);

// calcule la desviación de la media para cada mues tra

printf(“La desviacion por muestra es\n”)

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

printf(“i = %d\t x = %f\t d = %f\n”,i, num[i] , num[i]-media );

system(“pause”);

return 0;

}

Page 15: ARREGLOS UNIDAD 2 PROGRAMACIÓN - galia.fc.uaslp.mxgalia.fc.uaslp.mx/~rmariela/programacion/unidad21.pdf · ARREGLOS UNIDAD 2 PROGRAMACIÓN Primavera 2009. Contenido Definición Procesamiento

Ejemplo15

� Lee y almacena las calificaciones de 20 alumnos. Las calificaciones son números enteros comprendidos entre 5 y 10.

� Escribe un programa que calcule, almacene e � Escribe un programa que calcule, almacene e imprima la frecuencia de cada una de las calificaciones y además obtenga e imprima la frecuencia mas alta

� Si hubiera calificaciones con la misma frecuencia, debe obtener la primer ocurrencia

Page 16: ARREGLOS UNIDAD 2 PROGRAMACIÓN - galia.fc.uaslp.mxgalia.fc.uaslp.mx/~rmariela/programacion/unidad21.pdf · ARREGLOS UNIDAD 2 PROGRAMACIÓN Primavera 2009. Contenido Definición Procesamiento

Ejemplo16

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

#define size 100

int main(){

int i,n,max;int cal[size],freq[6];// lea los números// lea los númerosprintf(“Proporcione la cantidad de calificaciones ” );scanf (“%d”,&n);printf(“Proporcione las calificaciones (5 -10)”)for(i=0;i<n;i++){

printf(“calificación[%d] =”); scanf(“%d”,&cal[i]); }

// calcule la frecuencia

for(i=0;i<n;i++)freq[cal[i]-5]++;

Page 17: ARREGLOS UNIDAD 2 PROGRAMACIÓN - galia.fc.uaslp.mxgalia.fc.uaslp.mx/~rmariela/programacion/unidad21.pdf · ARREGLOS UNIDAD 2 PROGRAMACIÓN Primavera 2009. Contenido Definición Procesamiento

Ejemplo17

// determine la maxima frecuencia

max = freq[0]; indice = 0;

for(i=1; i < 6; i++)

if (max < freq[i]){

max = freq[i];

indice = i;}

// imprima las frecuencias

printf(“Las frecuencias de las calificaciones son:\n”);

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

printf(“Existen %d alumnos con %d”, freq[i],i+5);

printf(“La calificación con mayor frecuencia es %d con %d alumnos”,indice+5,max);

system(“pause”);

return 0;

}

Page 18: ARREGLOS UNIDAD 2 PROGRAMACIÓN - galia.fc.uaslp.mxgalia.fc.uaslp.mx/~rmariela/programacion/unidad21.pdf · ARREGLOS UNIDAD 2 PROGRAMACIÓN Primavera 2009. Contenido Definición Procesamiento

Paso de arreglo como parámetro18

� Los arreglos pueden pasar como parámetros hacia las funciones

� Los arreglos pasan por referencia hacia las funciones por lo cual las funciones pueden afectar su valor originalpor lo cual las funciones pueden afectar su valor original

� En la declaración de arreglos formales se le indican los corchetes para indicar que se espera un arreglo

� La llamada a la función no incluye los corchetes

Page 19: ARREGLOS UNIDAD 2 PROGRAMACIÓN - galia.fc.uaslp.mxgalia.fc.uaslp.mx/~rmariela/programacion/unidad21.pdf · ARREGLOS UNIDAD 2 PROGRAMACIÓN Primavera 2009. Contenido Definición Procesamiento

Ejemplo19

void lectura( int A[], int size )

{

for (int i=0; i < size ; i++)

{{

printf (“dato %d = ”,i);

scanf (“% d”,&A [i]);

}

}

Page 20: ARREGLOS UNIDAD 2 PROGRAMACIÓN - galia.fc.uaslp.mxgalia.fc.uaslp.mx/~rmariela/programacion/unidad21.pdf · ARREGLOS UNIDAD 2 PROGRAMACIÓN Primavera 2009. Contenido Definición Procesamiento

Ejemplo20

void imprime( int A[], int size )

{

for (int i=0; i < size ; i++)

printf (“dato %d = ”,i, A[i]);printf (“dato %d = ”,i, A[i]);

}

Page 21: ARREGLOS UNIDAD 2 PROGRAMACIÓN - galia.fc.uaslp.mxgalia.fc.uaslp.mx/~rmariela/programacion/unidad21.pdf · ARREGLOS UNIDAD 2 PROGRAMACIÓN Primavera 2009. Contenido Definición Procesamiento

Ejemplo21

void frecuencia(int f[], int A[], int size)

{

for(int i=0; i < size; i++)

f[A[i]-5]++;

}

Page 22: ARREGLOS UNIDAD 2 PROGRAMACIÓN - galia.fc.uaslp.mxgalia.fc.uaslp.mx/~rmariela/programacion/unidad21.pdf · ARREGLOS UNIDAD 2 PROGRAMACIÓN Primavera 2009. Contenido Definición Procesamiento

Ejemplo22

int maximo(int A[],int size){

int max = A[0];int indice = 0;for(int i=1; i < size; i++)

if ( max < A[i])if ( max < A[i]){max = A[i];indice = i;}

return indice;}

Page 23: ARREGLOS UNIDAD 2 PROGRAMACIÓN - galia.fc.uaslp.mxgalia.fc.uaslp.mx/~rmariela/programacion/unidad21.pdf · ARREGLOS UNIDAD 2 PROGRAMACIÓN Primavera 2009. Contenido Definición Procesamiento

Ejemplo23

#include <stdio.h>

#include <stdlib.h>

#define size 100

void lectura(int A[],int size);

void imprime(int A[],int size);

void frecuencia(int f[], int A[], int size);

int maximo(int A[],int size)

int main()

{

int i,n,max;

int cal[ size ], freq [5];int cal[ size ], freq [5];

// lea los números

printf(“Proporcione la cantidad de calificaciones ” );

scanf (“%d”,&n);

printf(“Proporcione las calificaciones (5 -10)”)

lectura(cal,n); //lectura de calificaciones

frecuencia(freq,cal,n); // calcule la frecuencia

max = maximo(freq,6); // obtenga la máxima frecuencia

imprime(freq,6); // imprima las frecuencias

printf(“La calficacion con la maxima frecuencia %d es %d\n”,max+5, freq[max]);

system(“pause”);

return 0;

}

Page 24: ARREGLOS UNIDAD 2 PROGRAMACIÓN - galia.fc.uaslp.mxgalia.fc.uaslp.mx/~rmariela/programacion/unidad21.pdf · ARREGLOS UNIDAD 2 PROGRAMACIÓN Primavera 2009. Contenido Definición Procesamiento

Ejercicio24

� Escriba una función que calcule la media de una lista de números enteros

� La función debe recibir como parámetros de � La función debe recibir como parámetros de entrada el arreglo y el tamaño del arreglo

� La función deberá regresar la media de la lista de números

Page 25: ARREGLOS UNIDAD 2 PROGRAMACIÓN - galia.fc.uaslp.mxgalia.fc.uaslp.mx/~rmariela/programacion/unidad21.pdf · ARREGLOS UNIDAD 2 PROGRAMACIÓN Primavera 2009. Contenido Definición Procesamiento

Solución25

float media( float A[], int size )

{

int i;

float suma=0;float suma=0;

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

suma+=A[i];

return (suma/ size );

}

Page 26: ARREGLOS UNIDAD 2 PROGRAMACIÓN - galia.fc.uaslp.mxgalia.fc.uaslp.mx/~rmariela/programacion/unidad21.pdf · ARREGLOS UNIDAD 2 PROGRAMACIÓN Primavera 2009. Contenido Definición Procesamiento

Ejemplo26

#include <stdio.h>

#include <stdlib.h>

#define size 100

float media(float A[], int size);

int main()

{

int i,n;

float m,num[size]={};

// lea los números

printf (“Proporcione la cantidad de números a leer ”); scanfprintf (“Proporcione la cantidad de números a leer ”); scanf(“%d”,&n);

lectura(num,n);

m = media(num,n) // calcule la media

printf(“La media es %f\n”,m);

// calcule la desviación de la media para cada mues tra

printf(“La desviacion por muestra es\n”)

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

printf(“i = %d\t x = %f\t d = %f\n”,i, num[i] , num[i]-m );

system(“pause”);

return 0;

}