INFORMATICA I Arreglos 2 CLASE 18.

Slides:



Advertisements
Presentaciones similares
Arreglos.
Advertisements

FUNDAMENTALS OF THE JAVA PROGRAMMING LANGUAGE
Arreglos Unidimensionales y Bidimensionales ESTRUCTURAS DE DATOS I
Programación Orientada a Objetos (con Java)
Curso de java básico (scjp)
PROF. CARLOS RODRIGUEZ SANCHEZ COMP 242 Introducci Ó n a los Arreglos (arrays) en C++
Abstracción de Datos Arrays.
Tablas. Descripción general Introducción a las tablas Creación de tablas Uso de tablas.
Unidad 5 Listas Enlazadas Bibliografía: Algoritmos y Estructuras de datos de Aguilar y Martinez. Unidad 9 Autor: Ing Rolando Simon Titiosky.
Diseño de algoritmos “Estructuras”
Repaso para la construcción del intérprete 2012
Estructuras de Datos (ARRAYS)
Programación I Teoría III
Programación, Algoritmos y Estructuras de Datos
Tipos de Datos Básicos y Estructurados
MANEJO DE ARRAYS EN C.
FUNCIONES EN C.
INFORMATICA I Arreglos 1 CLASE 17.
INFORMATICA I Funciones CLASE 13.
ARREGLOS y MATRICES UNIVERSIDAD NACIONAL AUTONOMA DE MEXICO
III. DISEÑO DE ALGORITMOS PARA LA SOLUCIÓN DE PROBLEMAS.
Estructuras Compuestas.
Mergesort como ejemplo de Divide y Vencerás
Programación Estructurada
Arreglos Ing. Nahiby Castillo.
VECTORES.
ARREGLOS Estructuras de datos.
Análisis y programación 13051A. * Como se había comentado anteriormente, un vector es un arreglo o colección de datos donde los datos se almacenan de.
Unidad 3 Punteros.
Ejemplos en C /* Ejemplos L/E en C con printf y scanf */ #include #include main(){ int i; int i; char nombre[30]; char nombre[30]; printf ("\nIntroduce.
¿Qué es un PUNTERO?: Un puntero es un objeto que apunta a otro objeto. Es decir, una variable cuyo valor es la dirección de memoria de otra variable. No.
String o Cadenas Prof. Gonzalo Pastor. Cadenas o String ► En C, una cadena o texto se define como un vector de caracteres de longitud determinada que.
Vectores en java.
Arreglos: Vectores en JAVA
FUNCIONES EN C.
Departamento de Informática Universidad Técnica Federico Santa María Capítulo 2 “Subprogramas/Funciones - Arreglos” Arreglos-Arrays.
FUNCIONES EN C.
Arreglos.
Curso Programación en Java
UNIDAD V Arreglos y Cadenas
APUNTADORES EN C. MENU DEL DIA Repaso clase anterior Apuntadores. Eso pa que? Solución al problema: Funciones. Ventajas de trabajar un programa usando.
Archivos.
 2003 Prentice Hall, Inc. All rights reserved. 1 Capítulo 4 - Arrays Índice del Capítulo 4.1Introducción 4.2Arrays 4.3Declaración de Arrays 4.4Ejemplos.
Elaborado por Fernando Torre - Universidad Simón Bolívar ARREGLOS CI Computación I Universidad Simón Bolívar Dpto. de Computación y Tecnología de.
TABLAS Definición. El tipo tabla permite definir objetos formados por un conjunto de elementos del mismo tipo. Ejemplos. El tipo tabla se utiliza para.
ESTRUCTURA DE DATOS EN JAVA
Clase 10: Estructuras de datos y arreglos.
Programación IMC José Andrés Vázquez Flores. Definición Un arreglo es un conjunto finito e indexado de elementos homogéneos, que se referencian por un.
El lenguaje de programación C - Vectores y matrices -
FUNCIONES Conceptos básicos. Retorno de una función Clases de funciones. Paso de parámetros. Funciones y arrays.
Programación en C para electrónicos
Tipo de dato Arreglo en C Uso del for con arreglos
Programación Avanzada y Métodos Numéricos
APUNTADORES.
Elementos básicos del lenguaje
Capitulo 4 Arreglos o Arrays Unidimensionales Bidimensionales Strings
Arreglos: Vectores Departamento de Computación
LENGUAJE “C” Programación.
Arreglos unidimensionales
Un sistema de administración de bases de datos DBMS (es un sistema basado en computador (software) que maneja una base de datos, o una colección de bases.
Al finalizar el curso el alumno será capaz de: Diseñar algoritmos utilizando estructuras estáticas de datos y programación modular.
Universidad Domingo Savio Facultad de Ciencias y Tecnología de la Información Carrera Ingeniería en Redes y Telecomunicaciones Materia : Programación I.
Arreglos: Vectores Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes.
OBJETIVOS DEFINIR LA ESTRUCTURA DE ARREGLOS. DECLARAR ARREGLOS EN C.
Archivos. Introducción Los datos que hemos tratado hasta el momento han residido en la memoria principal. Sin embargo, las grandes cantidades de datos.
Introducción al Lenguaje C (II) Cadenas de caracteres, archivos de cabecera, lectura y escritura Fundamentos de Programación Departamento de Lenguajes.
Introducción al Lenguaje C (I) Tipos básicos, arrays y punteros Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión
UNIVERSIDAD TECNOLÓGICA DE PANAMÁ Facultad de Ingeniería de Sistemas Computacionales Programa de Lic. en Informática Educativa Computación.
Programación Orientada Objetos Vectores de Objetos.
MANEJO DE ARRELOGS EN C Clase 8: Arreglos.
Transcripción de la presentación:

INFORMATICA I Arreglos 2 CLASE 18

Chiste del día

Definición 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

Accediendo a los arreglos Un array así como las variables ordinarias debe ser declarado antes de ser usado. int edad[10]; Nombre Subíndices Edad 1 2 3 4 5 6 7 8 9 Valores Número de elementos = 10 Cada dato de un arreglo puede ser utilizado como si fuera una variable mas. edad[i] Un dato de un arreglo se referencia así: índice Nombre del arreglo

Ejemplo Arreglos INTRODUCCION Un arreglo es como una caja para guardar elementos o como un archivador. Utiliza un sistema de indexación para encontrar el valor de cada una de las variables almacenadas en su interior.

ACCESO A LOS ELEMENTOS DE UN ARRAY LECTURA nombreVariable = nombreArray[indice] m= a[9]; n = a[3]; m = 33; a[2]=m; m=33/11; a[0]=m; a[4]=10; ESCRITURA nombreArray[indice] = valor m 9 m m 33 m 3 a 1 2 3 4 5 6 7 8 9 10 3 33 10 n 3 n

Lectura y Escritura de Cadenas CADENAS DE CARACTERES 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);

FUNCIONES PARA MANIPULAR CADENAS CADENAS DE CARACTERES FUNCIONES PARA MANIPULAR CADENAS 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);

AGENDA Ejemplo repaso arreglos Ejemplo repaso arreglos 1 Ejemplo repaso arreglos 1 Ejemplo repaso arreglos 2 Arreglos multidimensionales 3 Funciones y arreglos

Ejemplo 0 EJEMPLO REPASO ARRAY 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 #include <stdio.h> #define SIZE 10 int 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; 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.

AGENDA Ejemplo repaso arreglos Cadena de Caracteres Ejemplos Ejemplos 1 Ejemplo repaso arreglos 2 Cadena de Caracteres 3 Ejemplos 3 Ejemplos 4 Arreglos multidimencionales 5 Funciones y arreglos

Ejemplo 1 EJEMPLOS Crear un programa que cuente cuantas vocales tiene una cadena.

Ejemplo 1 #include <stdio.h> #include <string.h> 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;

CADENAS DE CARACTERES 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 (.).

Ejemplo 2 CADENAS DE CARACTERES #include <stdio.h> #define MAXCAR 60 void 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'); CADENAS DE CARACTERES Ejemplo 2

Ejemplo 3 EJEMPLOS Crear un programa que invierta un nombre.

#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; EJEMPLOS

AGENDA Ejemplo repaso arreglos Arreglos multidimensionales 1 Ejemplo repaso arreglos 2 Arreglos multidimensionales 2 Arreglos multidimensionales 3 Funciones y arreglos

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: tipo nombre [d1] [d2] [d3]… [dN];

Arreglos de 2 Dimensiones ARREGLOS MULTIDIMENSIONALES Arreglos de 2 Dimensiones Declaración Ejemplo: tipo nombre [fila] [columna]; int A[2] [3]; Nombre A[0][0] A[0][1] A[0][2] A Filas = 2 A[1][0] A[1][1] A[1][2] Columnas = 3

Representación en memoria Realmente todo arreglo de mas de una dimensión queda representado en memoria simplemente como un vector de 1 sola dimensión 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]

Inicialización int matrizA [2] [3] = { {3,5,7} , {8,6,4} }; 3 5 7 8 6 ARREGLOS MULTIDIMENSIONALES Fila 0 Fila 1 int matrizA [2] [3] = { {3,5,7} , {8,6,4} }; matrizA A[0][0] A[0][1] A[0][2] 3 5 7 A[1][0] A[1][1] A[1][2] 8 6 4 int matrizA [2] [3] = { {3,5,7} , {8,6,4} }; int matrizA [2] [3] = { 3,5,7,8,6,4 };

Arreglos de 3 Dimensiones Declaración tipo nombre [fila] [columna] [Plano]; Int matrizB[2] [3] [3]; B[0][0][2] B[0][1][2] B[0][2][2] Planos = 3 B[0][0][1] B[0][1][1] B[0][2][1] B[1][0][1] B[1][1][1] B[1][2][2] Nombre B[0][0][0] B[0][1][0] B[0][2][0] matrizB B[1][0][1] B[1][1][1] B[1][2][1] Filas = 2 B[1][0][0] B[1][1][0] B[1][2][0] Columnas = 3

Arreglos de 3 Dimensiones Fila 0 Fila 1 Plano 0 int matrizA [2] [3] [3]={ {{1,3,5}, {7,9,11}}, {{2,4,6}, {8,10,12}}, {{3,7,11}, {15,19,23}} }; Plano 1 Plano 2 Plano 0 Plano 1 Plano 2 F0 1 3 5 2 4 6 3 7 11 F1 7 9 11 8 10 12 15 19 23 C0 C1 C2 C0 C1 C2 C0 C1 C2

Ejercicios ARREGLOS MULTIDIMENSIONALES Crear programa que llene una matriz de un tamaño fijo. Los valores se le piden al usuario. Columnas (j) Filas(i) Programa que suma los elementos de las filas de una Matriz Programa que suma los elementos de las Columnas de una Matriz

ARREGLOS MULTIDIMENSIONALES EJEMPLO: Crear un programa que verifique que una matriz de 5x5 enteros es una matriz identidad. Columnas (j) 1 Posición??? [1][2] i = 1, j = 2 Filas (i)

Para recorrer la matriz es necesario utilizar dos ciclos. #include <stdio.h> #define FILAS 5 #define COLUMNAS 5 int 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; ARREGLOS MULTIDIMENSIONALES Para recorrer la matriz es necesario utilizar dos ciclos. 1. Recorre las filas (externo) 2.Recorre las columnas (interno)

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).

AGENDA Ejemplo repaso arreglos Arreglos multidimensionales 1 Ejemplo repaso arreglos 2 Arreglos multidimensionales 3 Funciones y arreglos 3 Funciones y arreglos

Arreglos como Parámetros a Funciones FUNCIONES Y ARREGLOS 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.

Arreglos como Parámetros a Funciones FUNCIONES Y ARREGLOS 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. tipoRetorno funcion (tipoDato vector[]); tipoRetorno funcion (tipoDato matriz[][SIZE]);

Arreglos como Parámetros a Funciones FUNCIONES Y ARREGLOS 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. tipoRetorno funcion(tipoDato vector[], int fila); tipoRetorno funcion(tipoDato matriz[][colum] , int fila);

FUNCIONES Y ARREGLOS 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

Arrays como Parámetros a Funciones FUNCIONES Y ARREGLOS 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. tipoRetorno funcion (tipoDato vector[]); funcion (nombreVector); tipoRetorno funcion (tipoDato vector[], int size); funcion (nombreVector, tamaño);

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

Prototipo Main Función 1 Función 2 #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; acum = acum + vect [i]; return acum; FUNCIONES Y ARREGLOS Prototipo Main Función 1 Función 2

Ordenación de Vectores Arreglos Ordenación de Vectores Una tarea muy importante en los sistemas de computo es la ordenación de datos - Numericos, caracteres. (BASES DE DATOS). 12 6 5 17 90 34 5 6 12 17 34 90 90 34 17 12 6 5

Ordenación de Vectores Arreglos Ordenación de Vectores Ejercicio: Realizar un programa para ordenar en forma ascendente un vector dado. 12 6 5 17 90 34 5 6 12 17 34 90 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.

Ejercicios Programa que convierte una matriz en su transpuesta. Arreglos Ejercicios Programa que convierte una matriz en su transpuesta. Programa que permita visualizar el triángulo de Pascal: 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1

Bibliografía Joyanes Aguilar, Luis. PROGRAMACIÓN EN C. Metodología, algoritmos y estructura de datos Capitulo8. Google

GRACIAS POR SU ATENCIÓN