informatica i

39
INFORMATICA I CLASE 18 Arreglos 2

Upload: lobo

Post on 20-Feb-2016

119 views

Category:

Documents


0 download

DESCRIPTION

INFORMATICA I. Arreglos 2. CLASE 18. Definición. Definición: Un array es una colección de variables del mismo tipo de datos con un mismo nombre. En l os arrays : Hay un número de piezas de datos contenidos en el mismo nombre. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: INFORMATICA I

INFORMATICA I

CLASE 18

Arreglos 2

Page 2: INFORMATICA I

Definición:• Un array es una

colección de variables del mismo tipo de datos con un mismo nombre.

• En los arrays:– Hay un número de

piezas de datos contenidos en el mismo nombre.

– Hay un método ordenado para la extracción de datos individuales del array

Definición

Page 3: INFORMATICA I

Accediendo a los arreglosUn array así como las variables ordinarias debe ser declarado antes de ser usado.

edad[i]índice

Nombre del arreglo

int edad[10];

Cada dato de un arreglo puede ser utilizado como si fuera una variable mas.

Un dato de un arreglo se referencia así:

Edad0 1 2 3 4 5 6 7 8 9

Número de elementos = 10

Subíndices

Valores

Nombre

Page 4: INFORMATICA I

ACCESO A LOS ELEMENTOS DE UN ARRAY

LECTURAnombreVariable = nombreArray[indice]

ESCRITURAnombreArray[indice] = valor

a0 1 2 3 4 5 6 7 8 910

2 2 3 4 5 6 7 8 9 n 0

m= a[9];n = a[3];

m 0

n 3

m = 33;a[2]=m;m=33/11;a[0]=m;a[4]=10;

33

3 10

m 9m 33m 3

Page 5: INFORMATICA I

Lectura y Escritura de Cadenas• Leer una cadena introducida por

teclado:• letra=getchar; //igual que scanf

(“%c”,&letra);• gets(linea); // cadena completa hasta '\n'• scanf(“%s”, palabra); // 1 palabra Sin espacios

• Escribir una cadena en la pantalla:• putchar(letra); //Igual que printf(“%c”,letra);• puts(palabra);• printf(“%s”,palabra);

CADENAS DE CARACTERES

Page 6: INFORMATICA I

FUNCIONES PARA MANIPULAR CADENAS

CADENAS DE CARACTERES

FUNCIÓN DESCRIPCIÓN EJEMPLO#include <string.h> Librería necesaria -

strlen Devuelve longitud Longit=strlen(cad);

strcpy Copia la cad1 a la cad2 strcpy(cad1, cad2);

strcmp Compara la cad1 y la cad2 strcmp(cad1,cad2);

strcat Copia la cad2 al final de la cad1 strcat(cad1,cad2);

Page 7: INFORMATICA I

AGENDA

2 Arreglos multidimensionales

3 Funciones y arreglos

1 Ejemplo repaso arreglos1 Ejemplo repaso arreglos

Page 8: INFORMATICA I

Ejemplo 0

• Programa que almacena 10 números en un vector, y luego halla cual es el mayor de todos y su posición dentro del vector.

EJEMPLO REPASO ARRAY

Page 9: INFORMATICA I

Ejemplo

• Programa que almacena 10 numeros en un vector, y luego halla cual es el mayor de todos y su posición dentro del vector.

EJEMPLO REPASO ARRAY#include <stdio.h>#define SIZE 10int main (void){ int array[SIZE]; int i, mayor=0,posMayor=0; for (i=0; i < SIZE; i++){ //Ciclo para llenar el array

printf(“Ingrese el valor: %d”, i);scanf(“%d”,&array[i]);

} for(i=0; i <= SIZE-1; i++){ //Ciclo para hallar Mayor

if(mayor < array[i]){ mayor = array[i];

posMayor=i;}

} printf(“El mayor es: %d y su posicion es %d. \n”,

mayor,posMayor); return 0;}

Page 10: INFORMATICA I

Ejemplo 1

• Crear un programa que cuente cuantas vocales tiene una cadena.

EJEMPLOS

Page 11: INFORMATICA I

Ejemplo 1 EJEMPLOS#include <stdio.h>#include <string.h>

int main (void){ char nom[20]; int i, vocal=0, tam; printf(“Ingrese su nombre: ”); scanf(“%s”,nom); tam=strlen(nom); for (i=0; i<tam; i++){ if(nom[i]==‘a’||nom[i]==‘e’||nom[i]==‘i’||nom[i]==‘o’||nom[i]==‘u’) vocal++; } printf(“El numero de vocales es: %d\n”,vocal) return 0;}

Page 12: INFORMATICA I

Ejemplo 2

• Escribir un programa en C que lea una secuencia de caracteres ASCII y que escriba este mensaje codificado. Si el carácter es una letra o dígito, será reemplazado por el siguiente carácter en el conjunto de caracteres, excepto Z que será reemplazado por A, z por a y 9 por 0. Por tanto, 1 se transforma en 2, C en D, p en q, etc. Cualquier carácter que no sea letra o dígito será reemplazado por un punto (.).

CADENAS DE CARACTERES

Page 13: INFORMATICA I

Ejemplo 2CADENAS DE CARACTERES#include <stdio.h>

#define MAXCAR 60void main() { char LIN[MAXCAR], LOUT [MAXCAR]; int i; puts("INGRESE TEXTO A CODIFICAR: \n"); gets(LIN); puts("EL TEXTO CODIFICADO ES: \n"); for (i= 0; LIN[i] != '\0'; i++) { if (((LIN[i] >='0')&&(LIN[i] < '9'))||((LIN[i] >='A‘)&&(LIN[i] < 'Z'))|| ((LIN[i] >='a') && (LIN[i] < 'z'))) { LOUT[i]= LIN[i] + 1; } else if (LIN[i] == '9') LOUT[i]='0'; else if (LIN[i] == 'Z') LOUT[i]='A'; else if (LIN[i] == 'z') LOUT[i]='a'; else LOUT[i]='.';

putchar(LOUT[i]); } putchar('\n');}

Page 14: INFORMATICA I

Ejemplo 3

• Crear un programa que invierta un nombre.

EJEMPLOS

Page 15: INFORMATICA I

EJEMPLOS#include <stdio.h>//#include <string.h>int main (void){ char nombre[20]; char invertido[20]; int i, j, largo=0; printf(“Ingrese su nombre: ”); scanf(“%s”,nombre); //largo=strlen(nombre); for (i=0; nombre[i]!=‘\0’; i++){ largo++; } for (i=0,j=largo-1; j>=0; j--, i++){ invertido[i]= nombre[j]; } printf(“El nombre invertido es: %s\n”) return 0;}

Page 16: INFORMATICA I

AGENDA

2 Arreglos multidimensionales

3 Funciones y arreglos

1 Ejemplo repaso arreglos

2 Arreglos multidimensionales

Page 17: INFORMATICA I

Arreglos Multidimensionales

• Es posible crear arrays de tantas dimensiones como requieran sus aplicaciones.•Se declaran siguiendo el patrón de la declaración de un vector:

ARREGLOS MULTIDIM

tipo nombre [d1] [d2] [d3]… [dN];

Page 18: INFORMATICA I

Arreglos de 2 Dimensiones

•Declaración

•Ejemplo:

ARREGLOS MULTIDIMENSIONALES

tipo nombre [fila] [columna];

int A[2] [3];

A

A[0][0]Nombre

Columnas = 3

Filas = 2

A[0][1] A[0][2]

A[1][0] A[1][1] A[1][2]

Page 19: INFORMATICA I

Representación en memoria

A

A[0][0] A[0][1] A[0][2]

A[1][0] A[1][1] A[1][2]

A A[0][0] A[0][1] A[0][2] A[1][0] A[1][1] A[1][2]

Realmente todo arreglo de mas de una dimensión queda representado en memoria simplemente como un vector de 1 sola dimensión

Page 20: INFORMATICA I

Inicialización ARREGLOS MULTIDIMENSIONALES

matrizA

A[0][0] A[0][1] A[0][2]

A[1][0] A[1][1] A[1][2]

int matrizA [2] [3] = { {3,5,7} , {8,6,4} };Fila 0 Fila 1

3 5 7

8 6 4

int matrizA [2] [3] = { {3,5,7} , {8,6,4} };

int matrizA [2] [3] = { 3,5,7,8,6,4 };

Page 21: INFORMATICA I

B[0][0][2] B[0][1][2] B[0][2][2]

B[1][2][2]B[1][0][1] B[1][1][1]B[0][0][1] B[0][1][1]

B[1][0][1] B[1][1][1] B[1][2][1]

B[0][2][1]

Arreglos de 3 Dimensiones•Declaración

tipo nombre [fila] [columna] [Plano];Int matrizB[2] [3] [3];

matrizB

B[0][0][0]Nombre

Columnas = 3

Filas = 2

B[0][1][0] B[0][2][0]

B[1][0][0] B[1][1][0] B[1][2][0]

Planos = 3

Page 22: INFORMATICA I

int matrizA [2] [3] [3]={ {{1,3,5}, {7,9,11}}, {{2,4,6}, {8,10,12}},

{{3,7,11}, {15,19,23}} };

Arreglos de 3 Dimensiones

Fila 0 Fila 1

1 3 5

7 9 11

Plano 0Plano 1Plano 2

2 4 6

8 10 12

3 7 11

15 19 23

F0

F1

C0 C1 C2 C0 C1 C2 C0 C1 C2

Plano 0 Plano 1 Plano 2

Page 23: INFORMATICA I

Ejercicios ARREGLOS MULTIDIMENSIONALES

Crear programa que llene una matriz de un tamaño fijo. Los valores se le piden al usuario.

Filas(i)

Columnas (j)

Programa que suma los elementos de las filas de una Matriz

Programa que suma los elementos de las Columnas de una Matriz

Page 24: INFORMATICA I

EJEMPLO:ARREGLOS MULTIDIMENSIONALES

Crear un programa que verifique que una matriz de 5x5 enteros es una matriz identidad.

1 0 0 0 0

0 1 0 0 0

0 0 1 0 0

0 0 0 1 0

0 0 0 0 1

Filas (i)

Columnas (j)

Posición???

[1][2]i = 1, j = 2

Page 25: INFORMATICA I

ARREGLOS MULTIDIMENSIONALES#include <stdio.h>#define FILAS 5#define COLUMNAS 5int main (void){ int matriz [FILAS][COLMUNAS]; int i, j, indent = 1; for(i=0; i < FILAS; i++){ for(j=0; j < COLUMNAS; i++){

printf(“Ingrese el valor: (%d,%d)”, i, j);scanf(“%d”,&matriz [i][j]);

} } for(i=0; i < FILAS, ident == 1; i++){ for(j=0; j < COLUMNAS, ident == 1; i++){

if(i==j){ if(matriz [i][j]==1) { indent = 1; } else{ indent = 0;}}else{

if(matriz [i][j]==0) { indent = 1; } else{ indent = 0; }}

} } if(ident==1) { printf(“La matriz SI es la Identidad”); } else { printf(“La matriz NO es la Identidad”); } return 0;}

Para recorrer la matriz es necesario utilizar dos ciclos.1. Recorre las filas (externo)

2.Recorre las columnas (interno)

Page 26: INFORMATICA I

Ejercicios: ARREGLOS MULTIDIMENSIONALES

Programa que suma o multiplica dos vectores (verifique que las dimensiones sean correctas).

Programa que sume o multiplique dos matrices (Verifique que las dimensiones sean correctas).

Page 27: INFORMATICA I

AGENDA

2 Arreglos multidimensionales

3 Funciones y arreglos

1 Ejemplo repaso arreglos

3 Funciones y arreglos

Page 28: INFORMATICA I

Arreglos como Parámetros a Funciones

• Los parámetros se le pasan a una función:

– El paso de parámetros por valor significa que la función solo esta recibiendo el valor de la variable. Se le realiza una copia en otro lugar de memoria.

– En el paso de parámetros por referencia, se le pasa la dirección de la variable, esto significa que la función tiene acceso a la variable original.

FUNCIONES Y ARREGLOS

Page 29: INFORMATICA I

Arreglos como Parámetros a Funciones

• En C todos los arrays se pasan por REFERENCIA (dirección). Esto significa que cuando se llama a una función y se utiliza un array como parámetro la función accede a los valores del arreglo original.

FUNCIONES Y ARREGLOS

tipoRetorno funcion (tipoDato vector[]);

tipoRetorno funcion (tipoDato matriz[][SIZE]);

Page 30: INFORMATICA I

Arreglos como Parámetros a Funciones

Siempre que tengamos un array como parámetro a una función, ésta debe saber hasta donde va el arreglo, ya que se le está pasando el inicio del arreglo. Generalmente se envia el tamaño del arreglo.

FUNCIONES Y ARREGLOS

tipoRetorno funcion(tipoDato vector[], int fila);

tipoRetorno funcion(tipoDato matriz[][colum] , int fila);

Page 31: INFORMATICA I

Tener en cuenta…

• Cuando se utiliza una variable array como argumento, la función receptora puede no conocer cuántos elementos existen en el array. Sin su conocimiento una función no puede utilizar el array.

• Aunque la variable array puede apuntar al comienzo de él, no proporciona ninguna indicación de donde termina el array

FUNCIONES Y ARREGLOS

Page 32: INFORMATICA I

Arrays como Parámetros a Funciones

• 1.Situar un valor de señal al final del array, que indique a la función hasta donde va el arreglo;

• 2.Pasarle un segundo argumento que indica el número de elementos del array.

FUNCIONES Y ARREGLOS

tipoRetorno funcion (tipoDato vector[]);

funcion (nombreVector);

tipoRetorno funcion (tipoDato vector[], int size);

funcion (nombreVector, tamaño);

Page 33: INFORMATICA I

EjemploFUNCIONES Y ARREGLOS

Programa que sume los elementos de un arreglo. Utlice una Función que lleve a cabo la suma

Page 34: INFORMATICA I

#include <stdio.h>void leerDatos (int vect [], int size);int sumarDatos (int vect [], int size);

int main (void){ int datos [5]; int suma; leerDatos (datos, 5); suma = sumarDatos (datos, 5); printf(“La suma de los datos es: %d\n”, suma); return 0;}

void leerDatos (int vect[ ], int size) { int i; for(i=0; i < size; i++){ printf(“Ingrese el valor: (%d)”, i); scanf(“%d”, &vect [i]); }}

int sumarDatos (int vect[ ], int size) { int i, acum=0; for(i=0; i < size; i++){ acum = acum + vect [i]; } return acum;}

FUNCIONES Y ARREGLOS

Prototipo

Main

Función 1

Función 2

Page 35: INFORMATICA I

Ordenación de Vectores

• Una tarea muy importante en los sistemas de computo es la ordenación de datos - Numericos, caracteres. (BASES DE DATOS).

Arreglos

1265179034

56

12173490

9034171265

Page 36: INFORMATICA I

Ordenación de Vectores

Ejercicio: Realizar un programa para ordenar en forma ascendente un vector dado.

Arreglos

1265179034

56

12173490

BUSCAR: Existen numerosos algoritmos de ordenación de arrays: inserción, burbuja, selección, rápido (quick sort), fusión (merge), montículo (heap), shell, etc.

Page 37: INFORMATICA I

Ejercicios Arreglos

Programa que convierte una matriz en su transpuesta.

Programa que permita visualizar el triángulo de Pascal:

11 2 1

1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1

Page 38: INFORMATICA I

Bibliografía• Joyanes Aguilar, Luis. PROGRAMACIÓN EN

C. Metodología, algoritmos y estructura de datos Capitulo8.

• Google

Page 39: INFORMATICA I

GRACIAS POR SU ATENCIÓN