Informática II Vectores y Matrices

Documentos relacionados
PROGRAMACION / Clave: 11214

Informática I para Bachillerato

LENGUAJE. Tema 4 Vectores, Matrices y Cadenas de caracteres.

Objetivo El alumno conocerá y aplicará los conceptos de arreglo y estructura en la realización de programas que resuelvan problemas de tipo numérico.

Instituto Tecnológico de Celaya

Cadenas y Caracteres. Universidad Católica de Honduras Nuestra Señora Reina de la Paz. Asignatura. Programación Científica. Tema de Exposición

Algoritmo, Estructuras y Programación I Ing. Marglorie Colina

PROGRAMACIÓN ESTRUCTURADA

Informática I (2014-2) Taller Lenguaje C Prof. Sebastián Isaza Departamento de Ingeniería Electrónica Facultad de Ingeniería Universidad de Antioquia

Estructuras de datos: vectores en C. Clase 7 y 8 Introducción a la Computación Patricia Borensztejn

Algoritmos y Programación I

TEMA 8: ESTRUCTURAS DE DATOS COMPLEJAS 1 VECTORES ESTÁTICOS 2 2 CADENAS O VECTORES DE CARACTERES 6 3 PASO DE CADENAS Y ARRAYS A FUNCIONES 8

Tipos de Arreglos. Notación Algoritmica de los Arreglos multidimensionales tipo_dato nombre[dim 1. , dim 2. ,..., dim n

Punteros. Programación en C 1

Asignatura: Estructuras de Datos. Año Escolar: Grado y Sección: 6to INF A-B Docente: Ing. Yesika Medina

Introducción al lenguaje C

Informática PRÀCTICA 9 Curs Práctica Nº 9: Rango y precisión de representación de números en el ordenador.

Tema 10: Arreglos estáticos en C

UTN FRBA Algoritmos y Estructura de Datos Examen Final 18/07/2014. Apellido y nombre: Legajo: Cursó con Prof:

Tipos de Datos Estructurados

PUNTEROS (Apuntadores)

Estructuras de Datos Estáticas. Diseñar y programar en lenguaje C soluciones utilizando estructuras de datos estáticas

Es un lenguaje estructurado, tiene una abundante cantidad de operadores y tipos de datos.

Apuntadores (Punteros)

FUNCIONES. Identificador valido. Tipo-Funcion Identificador_de_la_funcion (Tipo par1,tipo par2 )

ESTRUCTURAS. Struct Identificador_ tipo_estructura { Tipo miembro_1; /*Declaración de los miembros*/

Tema 14: Arreglos estáticos en C

Archivos & Cadenas CURSO DE PROGRAMACIÓN EN C. Centro de Investigación y de Estudios Avanzados del IPN. CINVESTAV - Tamaulipas.

En un arreglo x de n elementos los elementos del arreglo son: El número de índices determina la dimensionalidad del arreglo.

Se guardan en archivos con extencion c y los cabezales con extension h

Programación. Test Autoevaluación Tema 3

Principal material bibliográfico utilizado

Programación I Teoría II.

Formato para prácticas de laboratorio

Lenguaje de programación C. Introducción

Examen de Fundamentos de la Programación (Modelo 1)

Algoritmo, Estructuras y Programación II Ing. Marglorie Colina

Tema 13: Apuntadores en C

UNIVERSIDAD TECNOLÓGICA DE LOS ANDES INGENIERÍA DE SISTEMAS E INFORMÁTICA FUNDAMENTOS DE PROGRAMACIÓN ARREGLOS (ARRAYS)

TEMA 2. LENGUAJE C. CONCEPTOS BÁSICOS Y PROGRAMACIÓN ELEMENTAL.

INTRODUCCIÓN AL LENGUAJE DE PROGRAMACIÓN C

Analista Universitario en Sistemas. Taller de Programación II. Instituto Politécnico Superior STRINGS

EQUIVALENCIAS EN C DE CONSTRUCCIONES SECUENICIALES EN PSEUDOCÓDIGO

Fundamentos de programación

Cátedra I Informática Autor I Carlos Bartó

Programcaión Básica. Arreglos y Estructuras de Datos (2)

Introducción al tipo de dato ARRAY

Esquema de un programa en C: bloques básicos

Programación digital I Escuela de Sistemas Facultad de Ingeniería Gilberto Diaz

Escuela Politécnica Superior de Elche

Tema 7 Vectores y cadenas de caracteres. Fundamentos de Informática

Actividad Algoritmos, Estructura y Programación I. FOR, DO-WHILE

Arrays y Cadenas en C

PUNTEROS (APUNTADORES)

Objetivo N 2. Conocer la Estructura General de un Programa en C++ Estructura de Datos Prof. Egilde Márquez

Introducción a variables de tipo Puntero (Apuntadores) Contenidos. 1. Introducción a las variables puntero 2. Repaso:

for(i = 0; i <= 45; i+=5) { x = (i*3.1416)/180; printf( seno(%d) = %f\n,i,seno(x));

Caracteres y Cadenas Conversión de Datos Funciones y procedimientos Archivos cabecera. Fundamentos de programación

Tema 18: Memoria dinámica y su uso en C

Objetivos. El alumno conocerá y aplicará el concepto de archivo para el almacenamiento y recuperación de datos persistentes.

Curso de Programación en C. Licenciatura, FCQeI. APUNTADORES.

Funciones y paso de parámetros

OPERADORES Y EXPRESIONES

Cadena de caracteres. 1. Fundamentos de cadenas y caracteres

Lenguaje C. Estructuración de Datos: Arreglos. Funciones de Entrada y de Salida. Segundo Cuatrimestre 2015

INTRODUCCIÓN AL TIPO COMPUESTO CADENA CONTENIDOS

Para crear un arreglo de cualquier tipo de elementos la sintaxis es:

Cadenas de Caracteres

FUNDAMENTOS DE INFORMÁTICA 1º Ingeniería Industrial

CAPITULO 4: ENTRADA Y SALIDA DE DATOS.

Tipos de variables. Lenguaje C. Departamento de Electrónica. Tipos de datos, variables y constantes. Fundación San Valero

Programación en C. Algoritmo y Estructura de Datos. Ing. M. Laura López. Programación en C

Vectores. 27/05/05 Programación Digital I 1

GUÍA DE LABORATORIO #3 ESTRUCTURAS ALGORÍTMICAS CONDICIONALES SIMPLES, DOBLES Y MÚLTIPLES

Lenguaje C, tercer bloque: Funciones

Unidad 3. Estructuras simples de datos. Tema 1. Cadenas de caracteres

Cadenas de caracteres. 1. Definición 2. Funciones para manejo de cadenas

Relación de prácticas de la asignatura METODOLOGÍA DE LA PROGRAMACIÓN Segundo Cuatrimestre Curso º Grado en Informática

Algoritmos y estructuras de datos

Introducción al lenguaje C

Repaso de lenguaje C. Índice. Repaso de lenguaje C. Repaso de lenguaje C: Tipos básicos

Laboratorio 5 Tema 7. Tipos de Datos Estructurados: Arreglos, Registros y Archivos

Definición de estructuras. Estructuras, uniones y enumeraciones. Declaración. Definición y declaración. (struct, union y enum)

Tema 8 Vectores y Matrices

Tipos de datos y Operadores Básicos

INICIACIÓN A LA PROGRAMACIÓN EN C

Informática Lección 5. Arreglos (vectores) Curso Pedro Álvarez y José Ángel Bañares 2/11/2010. Dpto. Informática e Ingeniería de Sistemas.

Tema ADQUISICIÓN Y TRATAMIENTO DE DATOS. Departamento de Ciencias de la Computación e IA. Subprogramas en C

ARREGLOS (ARRAYS)- MATRICES.

Autoestudio 2: Variables y Operadores

Contenido. Capítulo 1. Introducción a lenguaje C 1

Lenguajes de programación

Lenguaje C. República Bolivariana de Venezuela Fundación Misión Sucre Aldea Fray Pedro de Agreda Introducción a la Programación III

Programación I Arrays, cadenas de caracteres y estructuras

Punteros. Lenguaje C ANSI

Universidad de Pamplona Materia: Programación 1 Docente: Ing. Lusbin Raúl Vargas LENGUAJE C ESTRUCTURA DE UN PROGRAMA EN C

Examen de Repetición. Lenguajes de Programación

Práctica Guiada: Vectores y Matrices

Estructuras. //identificador del cliente

Operadores aritméticos

Transcripción:

UTN Facultad Regional Tucumán Informática II Vectores y Matrices Arreglos unidimensionales y multidimensionales en C Prof. Ing. Oscar Gálvez A.T.P. Ing. César Ovejero

VECTORES Y MATRICES Arreglos unidimensionales y multidimensionales en C Un tipo de dato en C Tipo de dato Arreglo en C Uso del for con arreglos Arreglos de caracteres Uso del %s en printf y scanf

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.

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

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++; } for( i=0; i<n; i++) printf( elemento %d del arreglo vale %d \n, i+1, listanum[ i ]);

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> EJEMPLO 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] ); } }

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] ); }

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

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

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++) for( j=0; j<dim2; j++) { M[ i ][ j ] = k; k ++; } /* se inicializa la matriz M con for s anidados*/ for( i=0; i<dim1; i++) /* se imprime la matriz M */ for( j=0; j<dim2; j++) printf( elemento M(%2d,%2d) vale %d \n, i+1, j+1, M[ i ][ j ]);

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 MATRICES Arreglos bi-dimensionales en C 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 ] );

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 */ for( j=0; j<colum; j++) if(! (i==j)) suma += M[i][j]; /* imprime suma */ printf( La suma es: %5d, suma ); }

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, como arreglos de caracteres 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("c es %s\n",c); printf("la longitud de a es %d\n",strlen(a)); } system("pause");