Arreglos Computción.

Slides:



Advertisements
Presentaciones similares
Arreglos.
Advertisements

Arreglos Unidimensionales y Bidimensionales ESTRUCTURAS DE DATOS I
ESTRUCTURA DE DATOS Unidad 01 MATRICES.
Arreglos en C++ (una y dos dimensiones)
PROF. CARLOS RODRIGUEZ SANCHEZ COMP 242 Introducci Ó n a los Arreglos (arrays) en C++
Abstracción de Datos Arrays.
Ejemplo de Programa C++
LOGROS DEL PERÍODO Utiliza de forma correcta las funciones para entrada y salida de datos en c++. Utiliza los elementos básicos de un programa en c++.
Repaso para la construcción del intérprete 2012
Elementos básicos del Lenguaje
Programación I Teoría III
Tipos de Datos Básicos y Estructurados
Las estructuras de arreglos fueron usadas en las primeras computadoras digitales, cuando la programación se hacía todavía en lenguaje máquina, para tablas.
Punteros Universidad Nacional Mayor de San Marcos
INFORMATICA I Arreglos 1 CLASE 17.
VECTORES.
SOBRECARGA DE FUNCIONES
Unidad 3 Punteros.
¿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.
Vectores en java.
Funciones Computación.
Tema 3 Entrada y Salida.
Semana 5 Subprogramas..
FUNCIONES EN C. SOBRE FUNCIONES... Caja negra in_1 in_N out_1 In_2 Función: Nombre. (Con el cual es invocada). Entradas. (Parámetros de la función). Salida.
Cadenas y apuntadores Programación.
Introducción a los punteros
Matrices Es una estructura homogénea, compuesta por varios elementos, todos del mismo tipo y almacenados consecutivamente en memoria A cada elemento se.
Arreglos.
3.1 Declaración de tablas en C
UNIDAD V Arreglos y Cadenas
Programación III Clase 06 Funciones.
Programación III Clase 08 Arreglos.
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.
Universidad Domingo Savio Facultad de Ciencias y Tecnología de la Información Carrera Ingeniería en Redes y Telecomunicaciones Materia : Programación I.
ESTRUCTURA DE DATOS EN JAVA
Clase 10: Estructuras de datos y arreglos.
Administración de Proyectos de desarrollo de Software Ciclo de vida de un proyecto Enfoque moderno Temas Componentes Directivas Declaraciones globales.
FIEE VARIABLES Ing. José Antonio Poma G.. FIEE Variables Una variable es un identificador (nombre de la variable) que hace referencia a.
El lenguaje de programación C - Vectores y matrices -
Elementos básicos del lenguaje
Unidad II Introducción a la programación en C++
FUNCIONES Conceptos básicos. Retorno de una función Clases de funciones. Paso de parámetros. Funciones y arrays.
Programación Técnica1UVM Tipos de Datos. Programación Técnica2UVM.
Programación en C para electrónicos
Punteros.
Estructuras de repetición
Elementos básicos del lenguaje
Vectores y matrices Curso de Computación.
Introducción a la Programación
Funciones Curso Propedéutico Maestría en Ingeniería Electrónica.
CAPITULO V ARREGLOS Y CADENAS.
Matrices Prof. Flor Narciso Departamento de Computación
Eficiencia en uso de recursos y memoria
INTRODUCCIÓN AL LENGUAJE C++
Registros Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes.
Capitulo 4 Arreglos o Arrays Unidimensionales Bidimensionales Strings
Fundamentos de Programación
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.
Computación I. CI-2125 Tema VII
Algoritmo.
Arreglos: Vectores Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes.
Paso de Parámetros a una Función Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de.
1 Definición y Conversión de datos Agustín J. González ELO-329.
OBJETIVOS DEFINIR LA ESTRUCTURA DE ARREGLOS. DECLARAR ARREGLOS EN C.
PROF. RAFAEL MONTENEGRO B. UNELLEZ-APURE Introducci Ó n a los Arreglos (“arrays”) en C++
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.
Computación I :: Prof. Yeniffer Peña Lenguaje C Presentación Computación I.
Arreglos en C++ (una y dos dimensiones)
Transcripción de la presentación:

Arreglos Computción

Definición Un arreglo es una colección de elementos del mismo tipo que se reconocen por un solo identificador. Para acceder a los elementos individuales de un arreglo se utiliza un subíndice que debe ser un número entero. Arreglo con nombre a a[0] 56 a[1] 56 a[2] 91 a[3] a[4] -3224 a[5] 100 a[6] 62 a[7] 12 Número de la posición de cada elemento

Ejemplo int main(){ int n[ 10 ]; // n es un arreglo de 10 enteros // inicializa los elementos del arreglo n en 0 for ( int i = 0; i < 10; i++ ) //establece el elemento de la ubicación i en 0 n[ i ] = 0; cout << "Elemento" << setw(13)<< "Valor" << endl; //despliega el contenido de un arreglo n //en formato tabular for ( int j = 0; j < 10; j++ ) cout <<setw(7)<<j<<setw(13)<<n[j] << endl; return 0; // indica terminación exitosa } // fin de main

Inicialización de un arreglo #include <iostream> using std::cout; using std::endl; #include <iomanip> using std::setw; int main() {//utiliza una lista de inicialización para //inicializar el arreglo n int n[10]={32,27,64,18,95,14,90,70,60,37}; cout <<"Elemento"<<setw(13) << "Valor" << endl; //salida del contenido del arreglo n en formato tabular for ( int i = 0; i < 10; i++ ) cout<<setw(7)<<i<<setw(13)<<n[i]<<endl; return 0; // indica terminación exitosa } // fin de main

Otra inicialización Variable constante int main() { // la variable constante se puede utilizar para //especificar el tamaño del arreglo const int tamanoArreglo = 10; int s[tamanoArreglo];//el arreglo s tiene 10 elementos for (int i=0;i<tamanoArreglo;i++)//establece los valores s[ i ] = 2 + 2 * i; cout << "Elemento" << setw( 13 ) << "Valor" << endl; // muestra el contenido del arreglo s en formato tabular for ( int j = 0; j < tamanoArreglo; j++ ) cout << setw( 7 ) << j << setw( 13 ) << s[ j ] << endl; return 0; // indica terminación exitosa } // fin de main

Suma de un arreglo Suma los elementos de un arreglo int main() { const int tamanoArreglo = 10; int a[tamanoArreglo] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; int total = 0; // suma el contenido del arreglo a for ( int i = 0; i < tamanoArreglo; i++ ) total += a[ i ]; cout <<"El total de los elementos del arreglo es "<< total << endl; return 0; // indica terminación exitosa } // fin de main

Histograma int main() { const int tamanoArreglo = 10; int n[tamanoArreglo] = {19,3,15,7,11,9,13,5,17,1}; cout << "Elemento" << setw( 13 ) << "Valor" << setw( 17 ) << "Histograma" << endl; //para cada elemento del arreglo n, muestra una barra //en el histograma for ( int i = 0; i < tamanoArreglo; i++ ) { cout << setw( 7 ) << i << setw( 13 ) << n[ i ] << setw( 9 ); //despliega una barra for ( int j = 0; j < n[ i ]; j++ ) cout << '*'; cout << endl; // inicia la siguiente línea de salida } // fin de la estructura for externa return 0; // indica terminación exitosa } // fin de main

La criba de Eratóstenes int main(){ int N = 10000,i,j; int primo[N]; for(i = 0; i<N; i++) primo[i] = 1; for(i = 2; i<=N/2; i++){ for(j = 2; j<=N/i; j++) if(i*j<N) primo[i*j] = 0; } if(primo[i]) cout << " " << i; getch(); return 0;

Tarea Haga un programa que calcule la desviaciòn estandar de un arreglo de valores.

Paso de arreglos a funciones Para pasar un arreglo a una función debemos conocer su tamaño para poder saber cuantos elementos se van a procesar. Para esto declare la función con un parámetro extra para pasar el número de elementos a la función

Ejemplo #include <iostream.h> #include <conio.h> double promedio(double a[], int tamanio){ double suma = 0; for(int i=0; i<tamanio; i++) suma += a[i]; return suma/tamanio; } int main(){ double x[] = {3.5, 6.3, 4.5, 7.5, 5.4}; cout << promedio(x,5) << endl; getch(); return 0;

Modificación de elementos mediante funciones En C los arreglos siempre se pasan por referencia de tal manera que siempre es posible modificar los elementos dentro de una función. Ejemplo, inicia un arreglo con valores aleatorios entre 0 y 99. void inicia(double a[], int tamanio){ for(int i=0; i<tamanio; i++) a[i] = rand()%100; }

Ordenación La operación de ordenación es de las más comunes en computación. #include <iostream.h> #include <conio.h> void Burbuja(int a[],int tam){ for(int i = 0; i< tam - 1 ; i++) for(int j = i; j< tam;j++) if(a[i]>a[j]){ int temp = a[i]; a[i]=a[j]; a[j]=temp; } int main(){ int b[20] = {1,2,3,2,4,3, 5,6,3,7,8,9, 4,5,3,5,3,4,5,6}; Burbuja(b,20); for(int i =0; i<20; i++) cout << b[i] << endl; getch(); return 0; }

Búsqueda Otra operación importante es la búsqueda de el valor de un elemento dentro de un arreglo. int BusquedaLineal(int a[],int b,int tam){ for(int i = 0; i< tam; i++) if(a[i]==b) return n; return -1; }

Arreglos de dos dimensiones Los arreglos de dos dimensiones se declaran de acuerdo al esquema tipo variable[renglones][columnas]; Ejemplo int a [5][4]; a[0][0] a[0][1] a[0][2] a[0][3] a[1][0] a[1][1] a[1][2] a[1][3] a[2][0] a[2][1] a[2][2] a[2][3] a[3][0] a[3][1] a[3][2] a[3][3] a[4][0] a[4][1] a[4][2] a[4][3]

inicialización int a[5][4] = {{2,3,4,2},{2,0,6,1}, {3,5,5,0},{2,2,1,1},{3,2,5,6}}; 2 3 4 2 2 0 6 1 3 5 5 0 2 2 1 1 3 2 5 6

inicialización (cont.) int a[5][4] = {{2,3},{1}, {3,5,5,0},{2},{3}}; 2 3 0 0 1 0 0 0 3 5 5 0 2 0 0 0 3 0 0 0

ejemplo Debe especificarse void despliegaArreglo( int a[][ 3 ] ){ for ( int i = 0; i < 2; i++ ) {// for para cada fila for ( int j = 0; j < 3; j++ )//despliega los valores de columnas cout << a[ i ][ j ] << ' '; cout << endl; // inicia una nueva línea de salida } // fin de la estructura for externa } // fin de la función despliegaArreglo int main(){ int arreglo1[ 2 ][ 3 ] = { { 1, 2, 3 }, { 4, 5, 6 } }; int arreglo2[ 2 ][ 3 ] = { 1, 2, 3, 4, 5 }; int arreglo3[ 2 ][ 3 ] = { { 1, 2 }, { 4 } }; cout << "Los valores del arreglo1 por fila son:" << endl; despliegaArreglo( arreglo1 ); cout << "Los valores del arreglo2 por fila son:" << endl; despliegaArreglo( arreglo2 ); cout << "Los valores del arreglo3 por fila son:" << endl; despliegaArreglo( arreglo3 ); return 0; // indica terminación exitosa } // fin de main

Operaciones con matrices Se puede utilizar la técnica vista anteriormente para matrices de tamaño fijo. Si las matrices que se van a manipular son de 3x3 la función para sumar podría ser void Suma(double a[][3],double b[][3],double c[][3]){ for(int i = 0; i< 3 ; i++) for(int j = 0; j< 3 ; j++) c[i][j] = a[i][j] + b[i][j]; }

Otras operaciones de matrices void Resta(double a[][3],double b[][3],double c[][3]){ for(int i = 0; i< 3 ; i++) for(int j = 0; j< 3 ; j++) c[i][j] = a[i][j] - b[i][j]; } void Multiplica(double a[][3],double b[][3],double c[][3]){ for(int j = 0; j< 3 ; j++){ c[i][j] = 0; for(int k = 0; k< 3 ; k++) c[i][j] += a[i][k]*b[k][j];

Otras operaciones de matrices impresión de una matriz de 3x3 void print(double a[][3]){ for(int i = 0; i< 3 ; i++){ for(int j = 0; j< 3 ; j++) cout << a[i][j] << " "; cout << endl; }

Tarea #10 Escriba una función para obtener la traspuesta de una matriz de 3x3. Escriba una función que calcule la suma de todos los elementos de una matriz de 3x3 Escriba una función que calcule la traza de una matriz de 3x3 Calcule con esta tarea y lo anterior lo siguiente: a + b, a - b, a * b, traspuesta(a), traspuesta(b), traza(a), traza(b), sumatotal(a), sumatotal(b),

Matrices de cualquier tamaño Es conveniente manejar las matrices de tamaño arbitrario mediante un vector de una sola dimensión. La matriz que se pasa como parámetro se pasa como un apuntador. Las funciones para manipular matrices se definen para un tamaño máximo de elementos.

Ejemplo suma void sumaMat(int nrRow,int nrCol, int maxCol, Tamaño real de las matrices Debe especificarse máximo tamaño void sumaMat(int nrRow,int nrCol, int maxCol, float *mat1, float *mat2, float *mat3) { int i, j; for( i=0; i<nrRow; i++ ) for( j=0; j<nrCol; j++ ) mat3[i*maxCol + j] = mat1[i*maxCol + j] + mat2[i*maxCol + j]; // o: mat3[i*maxCol + j] = *(mat1 + i*maxCol + j) // + *(mat2 + i*maxCol + j) }

producto void prodMat(int nrRow,int nrCol, int maxCol,float *mat1, float *mat2, float *mat3) { int i, j, k; for( i=0; i<nrRow; i++ ) for( j=0; j<nrCol; j++ ){ mat3[i*maxCol + j] = 0; for( k=0; k<nrCol; k++ ) mat3[i*maxCol + j] += mat1[i*maxCol + k] * mat2[k*maxCol + j]; }

Impresión void printMat(int nrRow,int nrCol, int maxCol,float *mat) { int i, j; for( i=0; i<nrRow; i++ ){ for( j=0; j<nrCol; j++ ) cout << mat[i*maxCol + j] << " "; cout << endl; }

Ejemplo de programa principal int main(void) { int row=4, col=4; float add, maxRow; float a[MAXROW][MAXCOL] = {{1,2,3,4},{3,2,1,1},{4,3,7,6},{4,5,5,6}}; float b[MAXROW][MAXCOL] = {{4,5,7,1},{2,4,8,9},{3,3,0,0},{2,1,1,1}}; float c[MAXROW][MAXCOL]; printMat(row,col,MAXCOL,(float *) a); printMat(row,col,MAXCOL,(float *) b); sumaMat(row,col,MAXCOL,(float *) a,(float *) b,(float *) c); printMat(row,col,MAXCOL,(float *) c); getch(); return 0; }