Capitulo 4 Arreglos o Arrays Unidimensionales Bidimensionales Strings

Slides:



Advertisements
Presentaciones similares
Arreglos Unidimensionales y Bidimensionales ESTRUCTURAS DE DATOS I
Advertisements

Curso de java básico (scjp)
Curso de Java Capitulo 6: Cadenas y Arrays Profesor:
Abstracción de Datos Arrays.
Unidad 5 Listas Enlazadas Bibliografía: Algoritmos y Estructuras de datos de Aguilar y Martinez. Unidad 9 Autor: Ing Rolando Simon Titiosky.
Repaso para la construcción del intérprete 2012
Estructuras de control
Fundamentos de la Programación Estructurada
Estructuras de Datos (ARRAYS)
Programación I Teoría III
Tipos de Datos Básicos y Estructurados
Variables Prof. Gonzalo Pastor.
INFORMATICA I Arreglos 1 CLASE 17.
INFORMATICA I Arreglos 2 CLASE 18.
ESTRUCTURAS DE SECUENCIA
Unidad 3 Punteros.
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
Lenguaje C.
Semana 5 Subprogramas..
Departamento de Informática Universidad Técnica Federico Santa María Capítulo 2 “Subprogramas/Funciones - Arreglos” Arreglos-Arrays.
Cadenas y apuntadores Programación.
Matrices Es una estructura homogénea, compuesta por varios elementos, todos del mismo tipo y almacenados consecutivamente en memoria A cada elemento se.
Arreglos.
Archivos.
1 3Tablas o matrices 3.1. Concepto Las tablas corresponden al concepto matemático de matriz. Todos sus elementos deben ser del mismo tipo y se accede a.
Universidad Domingo Savio Facultad de Ciencias y Tecnología de la Información Carrera Ingeniería en Redes y Telecomunicaciones Materia : Programación I.
Capítulo 1 “Elementos de Programación”
Informática Ingeniería en Electrónica y Automática Industrial
LENGUAJE “C” Programación.
Clase 10: Estructuras de datos y arreglos.
METODOLOGÍA DE LA PROGRAMACIÓN
El lenguaje de programación C - Vectores y matrices -
Aplicación de estructuras de datos
75.40 Algoritmos y Programación I
Arreglos Programación I MC Beatriz Beltrán Martínez.
Arrays Arreglos Prof. Gonzalo Pastor Vectores. Definición Un vector es un tipo de variable que puede guardar muchos valores Una variable sólo puede guardar.
Fundamentos de Programación
Programación en C para electrónicos
Tipo de dato Arreglo en C Uso del for con arreglos
Tema 8: Tipos de Datos Estructurados I
Matrices Departamento de Computación Escuela de Ingeniería de Sistemas
Recursividad (2 clases) 1. Nivelación Funciones Menú Vectores String
Elementos básicos del lenguaje
PUNTEROS Y REFERENCIAS
Vectores y Matrices.
CAPITULO V ARREGLOS Y CADENAS.
Introducción a la Programación “Conceptos Básicos” Manuel Crisosto M., Claudio Gutiérrez S., Christian Vidal C.
Matrices Prof. Flor Narciso Departamento de Computación
FUNDAMENTOS DE PROGRAMACIÓN
Departamento de Informática Universidad Técnica Federico Santa María Capítulo 2 “Subprogramas/Funciones - Arreglos” Arreglos-Arrays.
Objetivo Mostrar los fundamentos de la programación a través de ejemplos y prácticas utilizadas cotidianamente en el desarrollo de aplicaciones.
Registros Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes.
ELEMENTOS DE COMPUTACIÓN Profesor: Guillermo Figueroa
Arreglos: Vectores Departamento de Computación
LENGUAJE “C” Programación.
Fundamentos de Programación
Capítulo 2 “Subprogramas/Funciones - Arreglos”
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
Arreglos: Vectores Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes.
ESTRUCTURAS DE DATOS “Conceptualización de estructuras de datos” Por: Eduardo Robayo.
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 (II) Cadenas de caracteres, archivos de cabecera, lectura y escritura Fundamentos de Programación Departamento de Lenguajes.
UNIVERSIDAD TECNOLÓGICA DE PANAMÁ Facultad de Ingeniería de Sistemas Computacionales Programa de Lic. en Informática Educativa Computación.
Lenguaje de Programación II Prof. Rafael Montenegro B. Carrera: T.S.U en Informática Periodo: 2014-I.
UNIVERSIDAD AUTÓNOMA DEL ESTADO DE MÉXICO FACULTAD DE INGENIERÍA COORDINACIÓN DE MATERIAS PROPEDÉUTICAS INGENIERÍA EN SISTEMAS ENERGÉTICOS SUSTENTABLES.
Transcripción de la presentación:

Capitulo 4 Arreglos o Arrays Unidimensionales Bidimensionales Strings Ordenamiento Bubble Sort

Arreglos - Arrays Supongan que tenemos 10 variables: a; b; c; d; e; f; g; h; i; j Si se desea manipular las variables debemos poner sus nombres cada vez que se requiera. Un enfoque más general es utilizar las variables con el mismo nombre, pero diferenciándolas con un numero. Semejante a como los libros de matemáticas utilizan los vectores y las tuplas. a1; a2; a3; a4; a5; a6; a7; a8; a9; a10

Arreglos - Arrays Ahora sumar las variables, es mucho más fácil:

Arreglos - Arrays Suponer que se quieren leer 5000 enteros y hacer algún tipo de operación con ellos Con los contenidos que conocemos(¿?) hasta ahora necesitamos utilizar 5000 variables. Problemas: De comprensión en la codificación. De utilización de memoria. La solución es utilizar ARREGLOS o ARRAYS.

Arreglos - Arrays Los arreglos son conjuntos de variables que comparten un mismo nombre, permiten almacenar una colección de datos del mismo tipo. Pueden ser referenciadas de manera individual con ayuda de uno o más índices. Los arreglos en C, se almacenan en posiciones contiguas de memoria y tienen un tamaño definido en tiempo de compilación. Tenemos según su dimensionalidad: Unidimensionales (Ej. Vector Matemático). Bidimensionales (Ej. Matriz). Tridimensional (Ej. Cubo). Multidimensionales.

Ejemplos UNIDIMENSIONAL BIDIMENSIONAL TRIDIMENSIONAL

Ejemplos // Enteros tamaño 4 int numeros [ ] = { 2, 0, 0, 7 }; //arreglo de caracteres de tamaño 5 char alfabeto [ 5 ] = { 'A', 'B', 'C', 'D', 'E' }; //5 filas y columnas a lo mas de 40 caracteres. char nombres [ ][ 40 ] = { “francisco”, “sebastian", “daniela”,“liliana”, “alfonso” }; //arreglo bidimensional de enteros int coordenadas [ 2 ][ 2 ] = { { 0, 0 }, { 1, 1 } };

Observación En C los índices de los arreglos comienzan en cero. El primer elemento, es el elemento cero. Todos los elementos son del mismo tipo. Se debe conocer el largo del arreglo en tiempo de compilación.

Arreglos Unidimensionales Es una lista o vector. Declaración Tipo_dato nom_arreglo [ tamaño ]; Tipo_dato: de que tipo serán los elementos. Recordar que todos los elementos son del mismo tipo nom_arreglo: nombre para la variable tipo arreglos . [ ]: nos indica que su dimensionalidad es uno tamaño: la cantidad de elementos que a los más podrá contener el arreglo.

Accediendo los elementos Un elemento individual dentro de un arreglo es accedido por el uso de un índice. Un índice describe la posición de un elemento dentro de un arreglo. Recordar en C el primer elemento tiene el índice cero!

#include <stdio.h> int main ( ) { Ejemplo #include <stdio.h> int main ( ) { int muestra [ 10 ], t; for ( t = 0; t < 10; t ++ ) muestra [ t ] = t * t; printf ( "muestra [ %d ] = %d", t, muestra [ t ] ); return ( 0 ); }

Trabajando con Arreglos No se puede asignar un arreglo a otro Lo siguiente es ilegal: int a [ 10 ], b [ 10 ]; a = b; //error ilegal En vez, se debe hacer asignaciones por cada elemento : int i; for ( i = 0; i < 10; i ++ ) a [ i ] = b [ i ]; //mas adelante strcpy

Ejemplos 1.- Realizar un programa en el que se ingresen 10 enteros, y luego muestre la suma de ellos y su promedio. 2.- Encontrar el máximo de una lista de 10 elementos. 3.- Desarrolle un programa que calcule el promedio de las notas de un curso.

Solución 1 #include<stdio.h> int main() { } int i, max = 0; int list [ 100 ]; for ( i = 0; i < 100 ; i ++ ) list [ i ] = rand ( ); for ( i = 0 ; i < 100; i ++ ) if ( max < list [ i ] ) max = list [ i ]; printf ( "max = %d", max ); return ( 0 ); }

Solución 2 #include <stdio.h> int main() { int x [ 10 ]; int i, suma; printf ( "\n Ingrese 10 números:\n“ ); for ( i = 0; i < 10; i ++ ) scanf ("%d",&x[ i ] ); //lleva & pq es componente a componente suma = 0; suma += x [ i ]; printf ("\n El resultado de la suma es = %d ", suma ); printf ("\n El resultado del promedio es = %d ", suma / 10 ); return ( 0 ); }

Arreglos Bidimensionales Un arreglo bidimensional es una lista de arreglos unidimensional Para declarar un arreglo bidimensional de enteros int matriz[3][4];

#include<stdio.h> int main ( ) { Ejemplo #include<stdio.h> int main ( ) { int fila = 3,col = 4,matriz [ fila ][ col ]; for ( fila = 0; fila < 3; fila ++ ) for ( col = 0; col < 4; col ++ ) matriz [ fila ][ col ] = fila * col; return ( 0 ); }

Arreglos Bidimensionales Por ejemplo: Cada alumno tiene tres notas, una por cada certamen. Entonces las notas de un alumno pueden contenerse en un arreglo de tamaño tres. Ahora si queremos mantener las notas de un curso de 52 alumnos. Podemos mantener las notas en un arreglo de 52 arreglos de tamaño 3.

Notas del curso #include<stdio.h> #define alumnos 52 #define notas 3 int main ( ) { int curso [ alumnos ][ notas ], fila, col; for ( fila = 0; fila < alumnos; fila ++ ) for ( col = 0; col < notas; col ++ ) scanf ( "%d“, &curso [ fila ][ col ] ); return ( 0 ); } Con lo cual curso [ 10, 2 ] representa la nota del tercer certamen del onceavo alumno.

Ejemplo Desarrolle un programa que reciba como entrada las notas de cada pregunta del certamen 1 de programación, para todos los alumnos, y muestre como salida un resumen con las notas finales de todos los alumnos

Multidimensionales No existe un limite lógico definido para la cantidad de dimensiones que puede tener un arreglo, físico sí, la memoria reservada. C permite arreglos con mas de dos dimensiones La forma general de una declaración de arreglo es tipo nombre_var[tamaño1][tamaño2]…[tamañoN] int a = 3, b = 4, c = 5, i , j , k , arr [ a ][ b ][ c ]; for ( i = 0; i < a; i ++) for ( j = 0; j < b; j ++ ) for ( k = 0; k < c; k ++ ) arr [ i ][ j ][ k ] = i + j + k;

String El uso más común para un arreglo unidimensional es guardar un arreglo de caracteres. Un string esta definido como un arreglo de caracteres terminado por un símbolo null ('\0'). Para que un arreglo contenga un string de 10 caracteres, es necesario definirlo de largo 11, ya que 11 hace lugar para el null al final del string.

Asignación carácter a carácter String Definición char cadena[tamaño]; Asignación carácter a carácter cadena[0]='h'; cadena[1]='o'; cadena[2]='l'; cadena[3]='a'; cadena[4]='\0';

Para asignar un carácter a un char se utiliza la comilla simple String Inicialización: Se copia directamente en el array todos los caracteres y se incluye automáticamente el carácter '\0' cadena="hola"; Para asignar un carácter a un char se utiliza la comilla simple 'a' carácter con comilla simple "ab“ una string, arreglo de caracteres

Ejemplo #include <stdio.h> int main ( ) { } char str [ 80 ]; printf ( "escribir string“ ); scanf ( "%s", str ); //no lleva & return ( 0 ); } /* Lee un string hasta que encuentra un espacio vacío */

#include <stdio.h> int main ( ) { Ejemplo #include <stdio.h> int main ( ) { char str [ 80 ]; printf ( "escribir string“ ); gets ( str ); //con espacios return ( 0 ); }

String La librería string.h, permite hacer operaciones con string. Los más usados son: strcpy ( ) : copia caracteres de un string a otro. strcat ( ) : concatenación de strings. strlen ( ) : largo del string. strcmp ( ) : comparación de strings.

Ejemplo Sean s1 y s2 string de largo fijo: strcpy ( s1, s2 ) copia s2 en s1 y devuelve s1. strcat ( s1, s2 ) concatena s2 en s1, retorna s1. strlen ( s1 ) devuelve el la longitud de s1. strcmp ( s1, s2 ) compara s1 con s2: Si son iguales devuelve 0 si s1>s2 devuelve un nº >0 si s1<s2 devuelve un nº <0

Ejemplo #include <stdio.h> #include <string.h> int main ( ) { char s [ 10 ], c [ 10 ] = { “iwi131“ }; do printf ( "ingrese su clave "); scanf ( "%s",s); if ( strcmp ( s, c ) != 0 ) printf ( "clave incorrecta, intente nuevamente\n“ ); } while ( strcmp ( s, c ) != 0 ); printf ( "la clave es correcta\n“ ); return ( 0 ); }

Ejemplo #include <string.h> #include <stdio.h> int main ( void ) { char c1 [ 80 ], c2 [ 80 ]; printf ( “\n Ingrese una cadena de caracteres:“ ); scanf ( "%s", c1 ); printf ( "\n Ingrese una cadena de caracteres:“ ); scanf ( "%s", c2 ); printf ( "\n Longitudes: %d %d ", strlen ( c1 ), strlen ( c2 ) ); if ( ! strcmp ( c1, c2 ) ) printf ( "\nLas cadenas son iguales“ ); strcat ( c1, c2 ); printf ( "\n %s", c1 ); return ( 0 ); }

String.h

Ejercicio Realizar un programa que convierta un string a mayúscula y contar número de dígitos.

Bonus: Cadenas Inmutables Las cadenas inmutables se declaran como un puntero a un char, representan un string constante y no requieren saber su largo. Inicializando char X [ 10 ] = { "hola“ }; char * Y = "chao"; // En profundidad en Estructura de datos Asignando char X [ 10 ]; char * Y; // En profundidad Est de datos strcpy ( X, "hola“ ); // X="hola" es un error Y = "chao“; // En profundidad Est de datos

Ordenamiento Burbuja Existen numerosos algoritmos para ordenar. A continuación se verá Ordenamiento Burbuja (bublesort). Idea: vamos comparando elementos adyacentes y empujamos los valores más livianos hacia arriba (los más pesados van quedando abajo). Idea de la burbuja que asciende, por lo liviana que es.

Ordenamiento Burbuja Código for ( i = N - 1; i > 0; i -- ) for ( j = 0; j < i; j ++ ) if ( V [ j ] > V [ j + 1 ] ) //lo siguiente se conoce { tmp = *f; //como swap de variables *f = *g; *g = tmp; }

Ordenamiento Burbuja

Ordenamiento Burbuja Código #include <stdio.h> #define N 6 void intercambia ( int * f, int * g ) { int tmp; tmp = *f; *f = *g; *g = tmp; } int main ( ) int i, j, v [ N ] = { 3, 4, 5, 2, 6, 8 }; for ( i = N - 1; i > 1; i -- ) for ( j = 0; j < i; j ++ ) if ( v [ j ] > v [ j + 1 ] ) intercambia ( &v [ j ], &v [ j + 1 ] ); for ( i = 0; i < N; i ++ ) printf ( "%d\n", v [ i ] ); return ( 0 );

Preparando la revancha … Fin Preparando la revancha …