Tipos de Datos Estructurados

Documentos relacionados
Algoritmos y Programación I

Instituto Tecnológico de Celaya

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

Memoria Dinámica. Jornadas de Marzo 2010 Grupo de Usuarios de Linux Tania Pérez

Apuntadores (Punteros)

Lenguajes de programación LPSI EUI UPM CADENAS DE CARACTERES

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

Programación. Test Autoevaluación Tema 3

Tema 2: La clase string

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

Lenguaje C Elementos de un Programa. Ing. Hugo Fdo. Velasco Peña Universidad Nacional 2006

Arrays y Cadenas en C

Programación Estructurada

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

PROGRAMACIÓN EN C#.NET Módulo 4.- Arreglos y cadenas. Ing. Bruno López Takeyas

Lenguajes de programación

Cadenas de Caracteres

Elementos de un programa en C

Algoritmos de Búsqueda y Ordenamiento

Objetivos de la sesión. Aplicación de consola 7/30/11. Código con que se inicia un programa en Visual C# (aplicación de consola)

PROGRAMACION / Clave: 11214

Laboratorio de Arquitectura de Redes. Punteros en lenguaje C

FUNDAMENTOS DE INFORMÁTICA 1º Ingeniería Industrial

En este artículo vamos a conocer los tipos de datos que podemos manejar programando en C.

Tema 9. Vectores y Matrices

Instituto Politécnico Nacional

LENGUAJE. Tema 2 Elementos de un programa

TEMA 4. ESTRUCTURAS DE CONTROL

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

Programación En Lenguaje C

PHP: Lenguaje de programación

Java para programadores

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

Apuntadores en C y C++

Ficheros conceptos. Manejo de ficheros en C. Apertura del fichero Función fopen: nombre del fichero. Apertura del fichero Función fopen

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones

LENGUAJES DE PROGRAMACIÓN I Lenguaje C

Programación Java - Ingeniería de Sistemas - UATF 12 Ing. Limber Ruíz Molina

Práctica 3. Paso de parámetros entre subrutinas. 3. Consideraciones sobre el paso de parámetros

Un módulo de programa tiene dos partes bien diferenciadas: la definición del módulo y la invocación o llamada al módulo.

PROGRAMA DE ASIGNATURA DE PROGRAMACIÓN I

UNIVERSIDAD DON BOSCO FACULTAD DE ESTUDIOS TECNOLÓGICOS ESCUELA DE COMPUTACION

Examen Principios de Programación Febrero 2012

EJEMPLOS DE PROGRAMACIÓN DE FUNCIONES EN C: Página 1 de 5

Informática Ingeniería en Electrónica y Automática Industrial

Agradecimientos. Nota de los autores. 1 Problemas, algoritmos y programas 1

Curso de Programación Avanzada en C

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

TIPO DE DATO ABSTRACTO (TDA)

INTRODUCCIÓN AL LENGUAJE C

ESCUELA POLITÉCNICA SUPERIOR PRÁCTICA 2: EXPRESIONES, PRINTF Y SCANF

INTRODUCCIÓN AL TIPO COMPUESTO CADENA CONTENIDOS

Laboratorio de Arquitectura de Redes. Entrada y salida estándar

Punteros, Arreglos y Cadenas en C

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

OPERADORES Y EXPRESIONES

Lenguaje de programación C. Introducción

MIA RICARDO GONZALEZ LOZANO APLICACIONES EN LENGUAJE C

Guía práctica de estudio 11: Funciones

Introducción al tipo de dato ARRAY

DATOS GENERALES 60 HORAS 3 HORAS

UNIVERSIDAD DON BOSCO FACULTAD DE ESTUDIOS TECNOLÓGICOS ESCUELA DE COMPUTACION

Fundamentos de programación

Esquema de un programa en C: bloques básicos

Un puntero no es más que una variable estática cuyo contenido es una dirección de memoria.

Introducción a los Computadores Arreglos en C

Segundo Taller Final de PROGRAMACIÓN ORIENTADO A OBJETOS. INGENIERÍA DE SISTEMAS. Docente y Administrativo: Luz Esperanza Espitia Preciado

1. Origen del lenguaje C: fue creado por Brian Kernighan y Dennis Ritchie a mediados de los años 70.

UNIVERSIDAD DE LOS ANDES NUCLEO UNIVERSITARIO RAFAEL RANGEL (NURR) DEPARTAMENTO DE FISICA Y MATEMATICA AREA COMPUTACION TRUJILLO EDO.

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

Fundamentos de Programación 2017-I

Fundamentos de Programación Visual Basic

EXAMEN PARCIAL TRABAJO INTEGRADOR (TI) EVALUACIÓN CONTINUA PESO PORCENTUAL PESO PORCENTUAL 1 30% 06-MAY-14 30% 03-MAY-14 20% 20%

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

Lenguaje C. Lenguaje C. Erwin Meza Vega

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

#include <stdio.h> /* Factorial de un número - versión 1- */

UNIVERSIDAD DON BOSCO FACULTAD DE ESTUDIOS TECNOLÓGICOS ESCUELA DE COMPUTACION

void int int for void int int for void int int for for void int int for int int

Lenguaje C [Apuntadores y arreglos]

Programación de Computadores 4 Iteraciones y Decisiones. Prof. Javier Cañas. Universidad Técnica Federico Santa María Departamento de Informática

Unidad II Fundamentos de C++ M.C. Juan Carlos Olivares Rojas

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

Estructuras. Registros (struct) Idea de estructura tipo registro. Partes de una estructura. Programación Prof. Teddy Alfaro Olave

Hoja de problemas Estructuras de Control

Programación Estructurada

Representación de la información

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

Práctica 3: Vectores y matrices en C.

Reglas básicas de la programación en lenguaje C

INICIACIÓN A LA PROGRAMACIÓN EN C

Fundamentos de programación JAVA

Capítulo. Listas, pilas y colas en C. Contenido. Introducción

Transcripción:

Departamento de Informática Universidad Técnica Federico Santa María Tipos de Datos Estructurados Programación de Computadores IWI-131-p1 Prof.: Teddy Alfaro Olave Arreglos (array) El arreglo es un tipo estructurado de dato, el cual es capaz de almacenar una colección de datos del mismo tipo. Es la estructura de datos más utilizada por los programadores Es la forma más simple de agrupar componentes de un mismo tipo y asociarles un número de orden de cada componente llamado índice. Los arreglos en C, se almacenan en posiciones contiguas de memoria Posee un tamaño 1

Dimensionalidad El arreglo es una estructura multidimensional En una dimensión puede ser visto como un vector, necesita de un índice (la posición) para recorrer sus elementos Un arreglo de dos dimensiones puede representarse como una matriz, necesita de dos índices (fila y columna) para acceder a uno de sus elementos Dimensionalidad Un arreglo de 3 dimensiones podemos tomarlo como un espacio. Ejemplo: el cubo de rubik Contiene 4*4*4 cubos, para acceder a uno de ellos necesito altura, posición horizontal, y profundidad (3 índices) En general un arreglo puede ser n- dimensional, y requerirá de n índices para recorrer o acceder a sus elementos. 2

Unidimensional int a[20]; Ejemplos Tridimensional float a[7][7][4]; Bidimensional Int a[6][7]; Ejemplos int numeros[]={1,3,34,54; //su tamaño es 4 char alfabeto[5]={ A, B, C, D, E ; //arreglo de caracteres de tamaño 5 Char nombres[][40]={ pedro, pablo, luis, karina, lisa ; //5 filas y columnas a lo mas de 40 caracteres. int Coordenadas[2][2]={ {0,0,{1,1; //arreglo bidimensional de enteros 3

Observaciones Los índices de los arreglos comienzan en cero, es decir, el primer elemento, es el elemento cero. Si un arreglo es declarado en la función principal main() tendra las dimensiones incluidas. Cuando se pasa un arreglo a una función, esta ultima no necesita saber el tamaño. 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 todo 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. 4

Accesando a 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. En C/C++ el primer elemento tiene el índice cero! int V[5]; V 13 34 7 61 1 Posición 0 1 2 3 4 V[2] contiene el 7 V[4] contiene el 1 V[0] contiene el 13 Ejemplo #include <stdio.h> int main(){ int muestra[10],t; for(t=0;t<10;t++) muestra[t]=t*t; for(t=0;t<10;t++) printf( muestra[%d]=%d,t,muestra[t]); 5

Mapeo de un Arreglo en Memoria En C, un arreglo es mapeado a localizaciones de memoria continua Todos los elementos de memoria residen uno al lado del otro La dirección más baja corresponde al primer elemento, y la más alta al último elemento La cantidad de bytes del arreglo de tamaño n está dada por sizeof(tipo_dato)*n Arreglo y punteros de memoria #include <stdio.h> int main( ){ int lista[20],i,*list; for (i=0;i<10;i++) lista[i]=i*i; list = &lista[10]; for(i=0;i<10;i++) *(list+i)=-i*i; for(i=0;i<20;i++) { printf("lista[%d]=%d\n",i,lista[i]); Lleno los 10 primeros elementos Pasamos la dirección del elemento 10 al puntero list Lleno los siguientes 10 elementos usando el puntero list Muestra los 20 elementos del arreglo lista 6

Asignando arreglos No se puede asignar un arreglo a otro Lo siguiente es ilegal: int a[10], b[10]; //hacer algo 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]; 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 7

Ejemplo 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); #include <stdio.h> int main(){ int x[10]; int i,suma; Ejemplo 2 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; for (i=0;i<10;i++) suma+=x[i]; printf("\n El resultado de la suma es = %d ",suma); printf("\n El resultado del promedio es = %d ",suma/10); 8

Paso de Arreglos unidimensionales a funciones Forma 1: Arreglo delimitado #include <stdio.h> func1(int x[10]){ /*Arreglo delimitado*/... int main(){ int a[10];.. func1(a);... Se debe especificar el tamaño del arreglo Se pasa la dirección del primer elemento del arreglo a la función Paso de Arreglos unidimensionales a funciones Forma 1: Arreglo no delimitado #include <stdio.h> func1(int x[]){ /*Arreglo no delimitado*/... int main(){ int a[10];.. func1(a);... No se especifica el tamaño del arreglo 9

Paso de Arreglos unidimensionales a funciones Nota: Al llamar una función pasándole un arreglo como parámetro, como se le entrega la dirección del primer elemento, entonces si los valores del arreglo son modificados dentro de la función, también son modificados en la función que llama. Hacia un arreglo dinámico Los arreglos de tamaño dinámico no exiten, pero C permite reservar memoria en tiempo de ejecución para determinar el tamaño de un arreglo. Para ello se necesita la librería stdlib.h Las funciones son malloc, calloc, free y realloc. 10

Hacia un arreglo dinámico int main() { int *p,*k,num,i; printf("ingrese el tamaño del arreglo "); scanf("%d",&num); printf("malloc\n"); p= (int *)malloc(sizeof(int)*num); for(i=0;i<num;i++) p[i]=rand()%13; for(i=0;i<num;i++) printf(" p[%d]=%d\n",i,p[i]); free(p); printf("calloc\n"); k = (int *)calloc(num,sizeof(int)); for(i=0;i<num;i++) k[i]=rand()%13; for(i=0;i<num;i++) printf(" k[%d]=%d\n",i,k[i]); k = (int *)realloc(k,sizeof(int)*num*2); for(i=0;i<num*2;i++) k[i]=rand()%13; for(i=0;i<num*2;i++) printf(" k[%d]=%d\n",i,k[i]); free(k); Return 0; Tipo de dato estructurado STRING 11

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 ) h o l a \0 Para que un arreglo sostenga un string de 10 caracteres, char str[11], ya que 11 hace lugar para el null al final del string. Leyendo un string desde un teclado #include<stdio.h> int main(){ char str[80]; printf( escribir string ); scanf( %s,str);//no lleva & /* Lee un string hasta que encuentra un espacio vacío */ 12

String con espacios #include<stdio.h> int main(){ char str[80]; printf( escribir string ); gets(str);//con espacios Asignación de String Para asignar un carácter a un char se utiliza la comilla simple 13

Librería para menejo de 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 string strlen() : largo del string strcmp() : comparación de string Descripción 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 14

#include <stdio.h> #include <stdlib.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 de nuevo\n"); while(strcmp(s,c)!=0); printf("la clave es correcta\n"); #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); 15

String.h strcat strchr strcmp strcmpi strcpy strlwr strncat strncmp strncpy strnset strrchr strrev strset strspn strupr Appends a string Finds first occurrence of a given character Compares two strings Compares two strings, non-case sensitive Copies one string to another strlen Finds length of a string Converts a string to lowercase Appends n characters of string Compares n characters of two strings Copies n characters of one string to another Sets n characters of string to a given character Finds last occurrence of given character in string Reverses string Sets all characters of string to a given character Finds first substring from given character set in string Converts string to uppercase String Ejercicio: 4.- Realizar un programa que convierta un string a mayúscula y contar número de dígitos. 16

Arreglos de 2 dimensiones Arreglo 2-dimensional Un arreglo bidimensional es una lista de arreglos unidimensional Para declarar un arreglo bidimensional de enteros int matriz[3][4]; 17

#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; Arreglos Multidimensionales 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] 18