Tipo de dato Arreglo en C Uso del for con arreglos

Slides:



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

Tablas. Descripción general Introducción a las tablas Creación de tablas Uso de tablas.
MANUAL EXPRESS DE C J.M.sevilla.
Repaso para la construcción del intérprete 2012
Fundamentos de la Programación Estructurada
Programación I Teoría III
Tipos de Datos Básicos y Estructurados
MANEJO DE ARRAYS EN C.
INFORMATICA I Arreglos 1 CLASE 17.
INFORMATICA I Arreglos 2 CLASE 18.
ARREGLOS Estructuras de datos.
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 y procedimientos
CI TEORIA semana 8 Subprogramas o funciones Definición de funciones.
Tema 3 Entrada y Salida.
Lenguaje C.
Características de “C”
Características de “C” Y Esta conformado por un Ambiente Integrado. Y Es un Lenguaje de Nivel medio. Y Es un compilador. YContiene un conjunto de palabras.
Departamento de Informática Universidad Técnica Federico Santa María Capítulo 2 “Subprogramas/Funciones - Arreglos” Arreglos-Arrays.
Cadenas y apuntadores Programación.
Estructuras de Iteracion (Repetitivas ) while , for,, do-while
Matrices Es una estructura homogénea, compuesta por varios elementos, todos del mismo tipo y almacenados consecutivamente en memoria A cada elemento se.
Arreglos.
UNIDAD V Arreglos y Cadenas
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.
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.
Informática Ingeniería en Electrónica y Automática Industrial
Clase 10: Estructuras de datos y arreglos.
Programación en Lenguaje C
El lenguaje de programación C - Vectores y matrices -
Aplicación de estructuras de datos
Archivos Programación I MC Beatriz Beltrán Martínez.
Programación Orientada Objetos
Elementos básicos del lenguaje
Fundamentos de Programación
Introducción Lenguaje de Programación ING2101 SECC Ayud. Ariel Fierro Sáez.
Informática Ingeniería en Electrónica y Automática Industrial
Programación en C para electrónicos
Matrices Departamento de Computación Escuela de Ingeniería de Sistemas
Elementos básicos del lenguaje
PUNTEROS Y REFERENCIAS
Introducción a la Programación “Conceptos Básicos” Semestre de Otoño 2006 Claudio Gutiérrez Soto.
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
Estructura de datos I CIS - UABJB.
Capitulo 4 Arreglos o Arrays Unidimensionales Bidimensionales Strings
Arreglos: Vectores Departamento de Computación

LENGUAJE “C” Programación.
Fundamentos de Programación
Arrays multidimensionales en JAVA
Al finalizar el curso el alumno será capaz de: Diseñar algoritmos utilizando estructuras estáticas de datos y programación modular.
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.
ESTRUCTURAS DE DATOS “Conceptualización de estructuras de datos” Por: Eduardo Robayo.
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.
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.
Lenguaje de Programación II Prof. Rafael Montenegro B. Carrera: T.S.U en Informática Periodo: 2014-I.
Transcripción de la presentación:

Tipo de dato Arreglo en C Uso del for con arreglos CI2125 TEORIA semana 6 Tipo de dato Arreglo en C Uso del for con arreglos Arreglos de caracteres Uso del %s en printf y scanf No incluye algoritmos de Búsqueda nio de Ordenamiento, revisar la bibliografía los diferentes tipos: Intercambio, Selección e Inserción. (ver Pracitca5_sem6)

Arreglos unidimensionales y multidimensionales en C VECTORES Y MATRICES Arreglos unidimensionales y multidimensionales en C Un tipo de dato en C Colección de variables del mismo tipo que se referencian utilizando un nombre común. Un arreglo consta de posiciones de memoria contigua. La dirección más baja corresponde al primer elemento y la más alta al último. Un arreglo puede tener una o varias dimensiones. Para acceder a un elemento en particular de un arreglo se usa un índice.

Arreglos unidimensionales en C VECTORES Arreglos unidimensionales en C x x(0) x(1) x(2) 3 2 4 índice Memoria: Ejemplo: Vector Vector x = (3,2,4) Declarar un arreglo unidimensional en C: tipo nombre-arreglo[dimension]; “En C todos los arreglos usan cero como índice para el primer elemento” “el elemento i-esimo esta en la posición i-1” int x[3]; x[0] = 3; x[1] = 2; x[2] = 4; printf(“El segundo elemento del vector x es %d “,x[1]);

Arreglos unidimensionales en C VECTORES Arreglos unidimensionales en C Ejemplo, declarar un arreglo de enteros llamado listanum con diez elementos #define N 10 … int listanum[N]; /* arreglo de enteros con diez elementos desde listanum[0] hasta listanum[9]. */ Usamos la estructura ‘for’ para acceder los elementos del arreglo int i, k=1; for( i=0; i<N; i++) { listanum[ i ] = k; k++; } printf(“ elemento %d del arreglo vale %d \n”, i+1, listanum[ i ]);

Arreglos unidimensionales en C VECTORES Arreglos unidimensionales en C La inicialización de un arreglo puede realizarse a través de una lista, si la lista es mas corta que el número de elementos en el arreglo, el resto se inicializa a cero. float a[5] = {0.1, 1.2, 2.3, 3.4, 4.5 }; double b[100] = { 1.0 }; /* los 99 elementos restantes serán 0.0 */ int a[] = { 2, 3, -5, 7 }; /* equivale a a[4] = { 2, 3, -5, 7 } */ #include <stdio.h> main() { int x; int vec[10]={9,3,4,8,1,6,2,0,7,5}; for( x=0; x<10; x++) if ( vec[x] == 5) printf(“encontre un cinco\n”); else printf(“ vec[ %d ] vale: %d \n”, x, vec[x] ); } EJEMPLO

Arreglos unidimensionales en C VECTORES Arreglos unidimensionales en C Problema: Escriba un programa que lea un vector de longitud máxima MAX, y determine si el vector es simétrico. Un vector de n datos es simétrico si el contenido de la posición i_ésima coincide con el que ocupa la posición n-i_ésima, ej: v=(2,4,7,8,7,4,2) es simétrico. #include <stdio.h> #define MAX 7 main() { /* declaración de variables */ int i; int vec[MAX]; /* lectura de elementos del vector */ for( i=0; i<MAX; i++) printf(“Dame dato del vector que ocupa posicion i = %d\n”, i+1); scanf(“ %d”, &vec[i] ); } …

Arreglos unidimensionales en C VECTORES Arreglos unidimensionales en C Problema: continuación …. /* imprime los elementos del vector */ printf(“ Elementos del vector: \n”); for( i=0; i<MAX; i++) printf(“ %3d ”, vec[i] ); /* determina si el vector es simétrico */ sime =1; /* asume que es simétrico, no lo será si encuentra al menos un caso que lo niegue */ for( i=0; i<= MAX/2; i++) if ( ! (vec[i]==vec[MAX-1-i]) ) sime =0; /* imprime el resultado */ if (sime) printf(“ El vector es simétrico \n”); else printf(“ El vector no es simétrico \n”); }

Arreglos bi-dimensionales en C MATRICES Arreglos bi-dimensionales en C Ejemplo: Matriz M(3,3) = _ _ | 1 2 3 | | 4 5 6 | | 7 8 9 | - - M M(0,0) M(0,1) M(0,2) 1 2 3 Índice filas 4 5 6 7 8 9 M(1,1) M(2,1) Índice columnnas En C: int M[3][3]; M[0][0] = 1; M[0][1] = 2; M[0][2] = 3; M[1][0] = 4; M[1][1] = 5; M[1][2] = 6; M[2][0] = 7; M[2][1] = 8; M[2][2] = 9; printf(“El elemento 2x2 de M es %d “,M[1][1]);

Arreglos bi-dimensionales en C MATRICES Arreglos bi-dimensionales en C Usamos la estructura ‘for’ para acceder los elementos de la matriz #define DIM1 3 #define DIM2 3 … int i, j, k; int M[DIM1][DIM2] = { 1,2,3,4,5,6,7,8,9}; /*inicializa la matriz M */ k=1; for( i=0; i<DIM1; i++) /* se inicializa la matriz M con for’s anidados*/ for( j=0; j<DIM2; j++) { M[ i ][ j ] = k; k ++; } for( i=0; i<DIM1; i++) /* se imprime la matriz M */ printf(“ elemento M(%2d,%2d) vale %d \n”, i+1, j+1, M[ i ][ j ]);

Arreglos bi-dimensionales en C MATRICES Arreglos bi-dimensionales en C Problema: Escriba un programa que lea una matriz cuadrada, la presente en pantalla, y nos escriba la suma de todos los números que no están en la diagonal #include <stdio.h> #define FILAS 3 #define COLUM 3 void main() { /* Declaracion de variables */ int M[FILAS][COLUM] /* ENTRADA se guarda en arreglo de 2 dimensiones */ int i, j, suma; /* lectura por filas, la matriz es cuadrada */ for( i=0; i<FILAS; i++) for( j=0; j<COLUM; j++) scanf(“%d”,M[ i ][ j ] );

Arreglos bi-dimensionales en C MATRICES Arreglos bi-dimensionales en C Problema: continuación … /* escritura por filas, la matriz es cuadrada */ for( i=0; i<FILAS; i++) { for( j=0; j<COLUM; j++) printf(“%5d”,M[ i ][ j ] ); printf(“\n”); } /* calculo de la suma */ suma = 0; for( i=0; i<FILAS; i++) /* se imprime la matriz M */ if( ! (i==j)) suma += M[i][j]; /* imprime suma */ printf(“La suma es: %5d”, suma );

Arreglos multi-dimensionales en C MATRICES Arreglos multi-dimensionales en C Declarar un arreglo multidimensional en C: tipo nombre-arreglo[dim-1][dim-2]…[dim-n]; Uso del for para acceder a sus elementos: int nombre-arreglo[dim-1][dim-2]…[dim-n]; for( i=0; i<dim-1; i++) for( j=0; j<dim-2; j++) . for( n=0; n<dim-n; n++) nombre-arreglo[i][j]…[n] = 0;

CADENAS, como arreglos de caracteres A diferencia de otros lenguajes de programación que emplean un tipo denominado cadena string para manipular un conjunto de símbolos, en C, se debe simular mediante un arreglo de caracteres, en donde la terminación de la cadena se debe indicar con nulo. Un nulo se especifica como '\0'. Por lo anterior, cuando se declare un arreglo de caracteres se debe considerar un carácter adicional a la cadena más larga que se vaya a guardar. char cadena[5]; cadena[1] = ‘H’; cadena[2] = ‘o’; cadena[3] = ‘l’; cadena[4] = ‘a’; cadena[5] = ‘\0’; cadena H o l a \0

CADENAS, como arreglos de caracteres Al inicializar arreglos de caracteres al momento de declararlos C automáticamente asigna el carácter nulo al final de la cadena char nombre_arr[ 7 ] = "cadena"; char ejemplo[7]; Es equivalente a: nombre_arr[ 0 ] = ‘c’; nombre_arr[ 1 ] = ‘a’; nombre_arr[ 2 ] = ‘d’; nombre_arr[ 3 ] = ‘e’; nombre_arr[ 4 ] = ‘n’; nombre_arr[ 5 ] = ‘a’; nombre_arr[ 6 ] = ‘\0’; Sin embargo, NO SE PUEDE ASIGNAR una cadena a un arreglo nombre-arr = “ABCD_E”; /* ERROR */ ejemplo = nombre-arr; /* ERROR */ if (opcion == “si”) /* ERROR */

CADENAS, como arreglos de caracteres El Lenguaje C no tiene operaciones con cadenas, se usan funciones de la librería ‘string.h’ y se incluye como archivo cabecera con: #include <string.h> Estas funciones son: strcpy(s1,s2) s1 = s2; strcat(s1,s2); s1 = s1+ s2; strcmp(s1,s2) compara s1 con s2 strlen(s) longitud de s

CADENAS, como arreglos de caracteres strcpy(string_destino, string_original); Se utiliza para copiar el contenido de un string original en un string de destino. Ejemplo: char nombre[30] = “nombre”; char copia[30]; strcpy(copia,nombre); strcpy(nombre,"pato"); strcat(string1, string2); Encadena o agrega al final de la string1 la string2. Ejemplo: char nombre[30], copia[30]; strcpy(nombre,"pepe"); strcat(nombre,"lopez");

CADENAS, como arreglos de caracteres strcmp(string1, string2); Se utiliza para comparar 2 strings, esta función regresa cero si ambas strings son iguales, regresa un número mayor que cero si string 1 es mayor que string 2 y regresa un número menor que cero si string 1 es menor alfabeticamente que string 2. Ejemplo: char opcion[3]; if ( strcmp(opcion,"si") == 0 ) printf(“la opcion es si”); strlen(string); Esta función regresa la cantidad de caracteres que tiene la string. Ejemplo: char nombre[30]; strcpy(nombre,"juan"); printf(“La cantidad de caracteres de nombre es %d”, strlen(nombre)); /* 4 */

CADENAS, scanf printf, con convertidor %s Para asignar a un arreglo de caracteres una cadena de la ‘entrada estándar’ se puede usar la función scanf con la opción %s Nota: que no se requiere usar el operador & De igual forma para mostrarlo en la ‘salida estándar’. .. Ejemplo: main() { char nombre[15], apellidos[30]; printf("Introduce tu nombre: "); scanf("%s",nombre); printf("Introduce tus apellidos: "); scanf("%s",apellidos); printf("Usted es %s %s\n",nombre,apellidos); }

EJEMPLO Usando la Librería string.h #include <stdio.h> #include <stdlib.h> #include <string.h> #define CERO 0 void main() { char a[6]="Hola "; char b[6]="Mundo"; char c[20]; char d[11]="Hola "; printf("strcmp de %s y %s devuelve %d\n",a,b,strcmp(a,b)); printf(" a es %s\n",a); printf(" d es %s\n",d); if ( strcmp(a,d) == CERO ) printf("a y d son iguales\n"); else printf("a y d son diferentes\n"); strcpy(c,a); printf("c es %s\n",c); strcat(c,b); printf("la longitud de a es %d\n",strlen(a)); system("PAUSE"); } EJEMPLO Usando la Librería string.h