Tablas y Cadenas CONTENIDO Tablas

Slides:



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

ING SEC 3 - UCSC Agosto 2009 Laboratorio Lenguaje de Programación ING – Universidad Católica SSMA Concepción Semestre II Tema:
Curso de Java Capitulo 6: Cadenas y Arrays Profesor:
Curso de Java Capitulo 2: Introducción a Java Profesor:
Instrucciones Básicas Entrada de Información
Fundamentos de Programación I Agradecimientos al Ing. Namuel Solórzano Peralta por el contenido de esta presentación.
Tablas. Descripción general Introducción a las tablas Creación de tablas Uso de tablas.
Informática I – 4to año Volumen II.
Funciones y recursividad
Introducción a C++.
Programación I Teoría III
Tipos de Datos Básicos y Estructurados
INFORMATICA I Arreglos 2 CLASE 18.
VECTORES.
Informática II Prof. Dr. Gustavo Patiño MJ
ARREGLOS Estructuras de datos.
Unidad 3 Punteros.
Vectores en java.
Programación Orientada a Objetos usando C++
Compiladores II ( /04/ :03) Tema 2. Generación de Código para Estructuras Complejas Lecciones 3 y 4.
SESIÓN 2. Completados por el tipo de objeto sobre el que actúan y el objeto concreto: CREATE DATABASE mibase ; Permite crear una base de datos llamada.
Tema 3 Entrada y Salida.
Paso de Vectores como Parámetros
LENGUAJE “C” Programación.
Introducción a los punteros
3.1 Declaración de tablas en C
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.
 2003 Prentice Hall, Inc. All rights reserved. 1 Capítulo 4 - Arrays Índice del Capítulo 4.1Introducción 4.2Arrays 4.3Declaración de Arrays 4.4Ejemplos.
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.
TIPOS DE DATOS ABSTRACTOS
LENGUAJE “C” Programación.
Clase 10: Estructuras de datos y arreglos.
COMPUTACIÓN I TEMA 6. Pasaje de parámetros por Referencia. Uso de apuntadores Prof. Mireya Morales.
PROGRAMACIÓN ORIENTADA A OBJETOS USANDO C++
Metodología de Programación Ayudantía 2 lelagos.ublog.cl 2009.
Programación en C para electrónicos
Introducción a la Programación
APUNTADORES.
CAPITULO V ARREGLOS Y CADENAS.
Arreglos Bidimensionales Arreglos Multidimensionales.
Introducción a la Programación “Conceptos Básicos” Manuel Crisosto M., Claudio Gutiérrez S., Christian Vidal C.
Elementos básicos del lenguaje
Los punteros Programación modular.
C# desde cero.
Arreglos de Objetos.
Programación Orientada a Objeto
Registros Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes.
Términos algoritmo diseñar algoritmo implementar algoritmo
Registros Departamento de Computación
Visual Basic FUNCIONES Y PROCEDIMIENTOS
Arreglos: Vectores Departamento de Computación
ALGORITMOS Y ESTRUCTURAS DE DATOS Operaciones sobre cadenas de caracteres y Funciones LIA. Suei Chong Sol.
Metodología de Programación Clase 1 Leonel Lagos V
Unidad 2 Estructuras ESCUELA DE COMPUTACIÓN.
COMPUTACIÓN I TEMA 9. Constructor de tipos: struct Definición de nuevos tipos: typedef. Arreglos de estructuras Prof. Mireya Morales.
Ejemplos: float R[10] = {2, 32, 4.6, 2, 1, 0.5, 3, 8, 0, 12}; float S[] = {2, 32, 4.6, 2, 1, 0.5, 3, 8, 0, 12}; int N[] = {1, 2, 3, 6}; int M[][3] = {
ARREGLOS (arrays).
6. Clases y Métodos..  6.1 Structs  6.2 Funciones  6.3 Namespaces  6.4 Clases.
CONCEPTOS.
Ing. Esp. Ricardo Cujar.  Lenguaje de programación orientado a objetos.  Desarrollado por Sun MicroSystems.  Independiente del Sistema Operativo gracias.
Lenguaje de programación c
Arreglos: Vectores Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes.
Sentencia de Impresión. Qué es? Cuan do en un algoritmo necesitamos pedirle al usuario algún dato como: dame un numero. Lo anterior debemos pedirlo y.
ARREGLOS. La sintaxis para declarar e inicializar un array será: Tipo_de_variable[ ] Nombre_del_array = new Tipo_de_variable[dimensión]; También podemos.
OBJETIVOS DEFINIR LA ESTRUCTURA DE ARREGLOS. DECLARAR ARREGLOS 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.
3.6 Manejo de E/S Estructuras En la creación de soluciones para algunos problemas surge la necesidad de agrupar datos de diferente tipo o de manejar datos.
Tipos Básicos.
Tema 5: Matrices Antonio J. Sierra.
Transcripción de la presentación:

Tablas y Cadenas CONTENIDO Tablas Declaración de variables TABLA y definición de tipos. Manejo de TABLAS. Paso de parámetros de variables tipo TABLA. Cadenas de Caracteres (un caso especial de tablas) Declaración de variables CADENAS y definición de tipos. Manejo de Cadenas. La librería String.h. Paso de parámetros de Cadenas. Curso 04-05.Práctica 5

Tablas Una tabla es un conjunto de datos (llamados elementos), con las siguientes propiedades: Son del mismo tipo (int, char, float, etc.). Se denominan por el mismo nombre (el de la tabla) y se diferencian unos de otros mediante su posición (usando índices). Se denomina dimensión de una tabla al número máximo de elementos que la componen. ¡Atención! Distinguir entre número máximo de elementos (N) y número real de elementos (n) (Se puede preparar una tabla para una máximo de "N"elementos pero en cada ejecución trabajar con la información de sólo "n" elementos ,evidentemente n <= N. En C, n < N ) Curso 04-05.Práctica 5

Tablas Declaración de variables de tipo tabla: (LEA vs C) LEA C Tabla unidimensional: nombre: tabla[dim] de tipo Tabla multidimensional: nombre: tabla[dim_1, dim_2, ..., dim_N] de tipo C Tabla unidimensional: tipo nombre [dim]; Tabla multidimensional: tipo nombre [dim_1][dim_2]...[dim_N]; Curso 04-05.Práctica 5

Tablas Declaración de variables de tipo tabla: (Ejemplos) LEA C const TAM: 10 MAXCAR: 80 NHORAS: 24 NFIL: 2 NCOL: 5 var v: tabla[TAM] de entero palabra: tabla[MAXCAR] de caracter tempera: tabla[NHORAS] de real m: tabla[NFIL, NCOL] de entero dias_semana: tabla[7,10] de caracter C #define TAM 10 #define MAXCAR 80 #define NHORAS 24 #define NFIL 2 #define NCOL 5 int v [TAM]; char palabra [MAXCAR]; double tempera [NHORAS]; int m [NFIL][NCOL]; char dias_semana [7] [10]; Tablas unidimensionales Tablas bidimensionales Curso 04-05.Práctica 5

Tablas ¡No ocupan memoria! Declaración de tipo tabla: (LEA vs C) LEA C Tabla unidimensional: Nombre: tabla [dim] de tipo Tabla multidimensional: Nombre: tabla[dim_1, dim_2, ..., dim_N] de tipo C Tabla unidimensional: typedef tipo Nombre [dim]; Tabla multidimensional: typedef tipo Nombre [dim_1][dim_2]...[dim_N]; Curso 04-05.Práctica 5

Tablas Declaración de tipos de tabla y de variables: (Ejemplos I) LEA Declaración de tipos Declaración de variables Vector10: tabla[TAM] de entero v: Vector10 Cadena: tabla[MAXCAR] de carácter palabra: Cadena Tempe: tabla[NHORAS] de real tempera: Tempe Matriz2x5: tabla[NFIL, NCOL] de entero m: Matriz2x5 C Declaración de tipos Declaración de variables typedef int Vector10[TAM]; Vector10 v; typedef char Cadena[MAXCAR]; Cadena palabra; typedef double Tempe[NHORAS]; Tempe tempera; typedef int Matriz2x5[NFIL][NCOL]; Matriz2x5 m; Curso 04-05.Práctica 5

Tablas Declaración de tipos de tabla y de variables: (Ejemplos II) C Declaración de tipos Declaración de variables typedef int Vector10[TAM]; Vector10 v; typedef char Cadena[MAXCAR]; Cadena palabra; typedef double Tempe[NHORAS]; Tempe tempera; typedef int Matriz2x5[NFIL][NCOL]; Matriz2x5 m; v 10 elementos Si recordamos que: #define TAM 10 #define MAXCAR 80 #define NHORAS 24 #define NFIL 2 #define NCOL 5 palabra ... 80 elementos tempera ... 24 elementos m 10 elementos Curso 04-05.Práctica 5

Tablas Acceso a los elementos de una tabla Se realiza usando números enteros llamados índices. LEA variable_tabla[índice] i := v[6] (el índice comienza en 1) palabra[1] := 'A’ m[2,3] := 5 v 0 1 2 3 4 5 6 7 8 9 0 1 2 3 ... 76 77 78 79 palabra m 0 1 2 3 4 1 C variable_tabla[índice] i = v[5]; (el índice comienza en 0) palabra[0] = 'A’; m[1][2] = 5; Curso 04-05.Práctica 5

otra tabla (la primera fila) Tablas Uso del nombre de una tabla El nombre de una tabla es la dirección donde comienza la tabla, es decir, donde el compilador ubica la tabla, por tanto es una constante que no se puede modificar. Vector10 v; FF3A v v = &v[0] = FF3A palabra ... DA23 Cadena palabra; palabra = &palabra[0] =DA23 m F9B1 Matriz2x5 m; m = m[0] = &m[0][0] =F9B1 Es a su vez el nombre de otra tabla (la primera fila) Curso 04-05.Práctica 5

Pasa la dirección de comienzo de vector Tablas Paso de una tabla como parámetro (Por referencia - variable) LEA Llamada: funcion2 ( n_elementos, vector ) Definición: proc funcion2 (ent n: entero, ent/sal v: Vector10) var i: entero prin desde i:=1 hasta n v[ i ] := v[ i ] + 1 fdesde fin C Prototipo: /* cualquiera vale */ void funcion2 (int, Vector10); void funcion2 (int, int [ ]); void funcion2 (int, int *); Llamada: funcion2 ( n_elementos, vector ); Definición: void funcion2 ( int n, Vector10 v ) { int i; for ( i=0; i<n; i++) v[ i ]++; } Pasa la dirección de comienzo de vector Pasa el número real de elementos, para que la función2 sepa hasta donde recorrer Curso 04-05.Práctica 5

Tablas Paso de una tabla como parámetro por valor: (unidimensional) El compilador avisa si encuentra en la función1 una sentencia que modifica la tabla LEA Llamada: funcion1 (vector, n_elementos) Definición: proc funcion1 (ent v: Vector10, n: entero) var i: entero prin desde i:=1 hasta n escribir v[ i ] fdesde fin C Prototipo: /* cualquiera vale */ void funcion1 (const Vector10, int); void funcion1 (const int [ ], int); void funcion1 (const int *, int); Llamada: funcion1 (vector, n_elementos); Definición: void funcion1 (const Vector10 v, int n) { int i; for ( i=0; i<n; i++) printf ("%d\n", v[ i ] ); } Curso 04-05.Práctica 5

Tablas Paso de una tabla como parámetro por valor: (multidimensional) LEA Llamada: funcion3 (matriz, f, c) Definición: proc funcion3 (ent m: Matriz2x5, a: entero, b: entero) var i,j: entero prin desde i:=1 hasta a desde j:=1 hasta b escribir m[ i , j ] fdesde fin C Prototipo: /* cualquiera vale */ void funcion3 (const Matriz2x5, int, int); void funcion3 (const int [ ][ 5], int, int); Llamada: funcion3 ( matriz, f, c); Definición: void funcion3 (const Matriz2x5 m, int a, int b) { int i, j; for ( i=0; i<a; i++) for ( j=0; j<b; j++) printf ("%d\n", m[ i ][ j ]); } Curso 04-05.Práctica 5

Cadenas de Caracteres El lenguaje C no tiene tipo predefinidos de datos para almacenar cadenas de caracteres. Se puede conseguir un tipo de dato que permita el almacenamiento de cadenas de caracteres mediante el uso de tablas. Declaración de Cadena: (LEA vs C) LEA nombre: cadena C char nombre [dim]; Curso 04-05.Práctica 5

Cadenas de Caracteres Declaración de Cadena: (Ejemplo) C #define MAXCAR 256 char palabra [MAXCAR]; char palabra [MAXCAR]={'H','o','l','a','\0'}; char palabra [MAXCAR]="Hola"; Se pueden inicializar en el momento de la declaración char palabra [ ]="Hola"; La dimensión se ajusta al tamaño del valor inicial 0 1 2 3 4 H o l a \0 El último elemento de la cadena es el carácter '\0' 0 1 2 3 4 5 6 ... maxcar-1 H o l a \0 ? ? ... ? Curso 04-05.Práctica 5

Cadenas de Caracteres ¡No ocupa memoria! Definición del Tipo Cadena: (LEA vs C) LEA const MAXCAR: 255 tipos cadena: tabla[MAXCAR] de caracter var palabra: cadena C #define MAXCAR 256 typedef char Cadena[MAXCAR]; Cadena palabra; ¡No ocupa memoria! Curso 04-05.Práctica 5

Cadenas de Caracteres Acceso a los elementos de una cadena Se realizan usando números enteros llamados índices. LEA nombre_cadena[índice] palabra[1] := ’h’ (el índice comienza en 1) palabra 0 1 2 3 4 5 ... 255 h o l a \0 ? ... ? ? C nombre_cadena[índice] palabra[0] = ’h’; (el índice comienza en 0) Curso 04-05.Práctica 5

¡cadena es una dirección! Cadenas de Caracteres Lectura y Escritura de Cadenas: (LEA vs C) Sin el & ¡cadena es una dirección! LEA Lectura leer cadena Escritura escribir cadena C Lectura scanf ("%s", cadena); gets (cadena); Escritura printf ("%s", cadena); puts (cadena); Curso 04-05.Práctica 5

Cadenas de Caracteres Lectura y Escritura de Cadenas: (Ejemplos) LEA C leer palabra Escritura escribir “Hola” C Lectura scanf ("%s", palabra); gets (palabra); Escritura printf ("%s", “Hola”); puts (“Hola”); Diferencia entre scanf y gets: scanf se detiene al encontrar un espacio en blanco, un tabulador o un ‘\n’, que no se lee (se quedan en el buffer de entrada -con fflush(stdin) se limpia el buffer- ), y añade un ‘\0’ al final. gets lee hasta encontrar un ‘\n’, que se lee (el buffer de entrada queda vacío), y se sustituye por un ‘\0’. Curso 04-05.Práctica 5

Estas funciones están incluidas en el fichero de cabecera string.h Cadenas de Caracteres Funciones para la manipulación de cadenas:(LEA vs C) LEA longitud := >, <, >=, <=, =, <> C strlen( ) /* longitud */ strcpy( ) /* asignación */ strcmp( ) /* comparación */ Estas funciones están incluidas en el fichero de cabecera string.h Curso 04-05.Práctica 5

Cadenas de Caracteres Funciones para la manipulación de cadenas:(Ejemplos) LEA l := longitud (cadena) cadena1 := “Hola” si (cadena1 = cadena2) escribir "Las cadenas son iguales" si (cadena1 > cadena2) escribir "La 1ª cadena es mayor" si (cadena1 < cadena2) escribir "La 1ª cadena es menor" C l = strlen (cadena); strcpy (cadena1, “Hola”); if ( strcmp (cadena1, cadena2) == 0) puts ("Las cadenas son iguales"); if ( strcmp(cadena1, cadena2) > 0) puts ("La 1ª cadena es mayor"); if ( strcmp (cadena1, cadena2) < 0) puts ("La 1ª cadena es menor"); Curso 04-05.Práctica 5

Cadenas de Caracteres Tabla de cadenas:(LEA vs C) LEA C nombre: tabla[dim] de cadena C Cadena nombre[dim]; Curso 04-05.Práctica 5

Cadenas de Caracteres Tabla de cadenas:(Ejemplo) LEA C 256 7 const NDIAS: 7 var diasSemana: tabla[NDIAS] de cadena C #define NDIAS 7 #define MAXCAR 256 typedef char Cadena[MAXCAR]; Cadena diasSemana[NDIAS]; Cadena diasSemana[NDIAS] = {“lunes”, “martes”, ”miércoles”, ”jueves”, “viernes”, ”sábado”, “domingo”}; L u n e s \0 M a r t i é c o l J v V S á b d D m g 256 7 Curso 04-05.Práctica 5

Cadenas de Caracteres Cadenas en C y Punteros Alternativas para la declaración de una cadena a) Cadena palabra; b) char palabra[MAXCAR]; c) char *palabra; ¡Atención! No son equivalentes. En el caso b) se reserva memoria, en el caso c) no. Sin embargo, ambos sirven para recorrer una cadena. En la definición de una función a) void funcion (Cadena cadena1, Cadena cadena2) b) void funcion (char cadena1[ ], char cadena2[ ] ) c) void funcion (char *cadena1, char *cadena2) válido porque el nombre de una tabla es la dirección del comienzo de la tabla en memoria, por tanto, se puede almacenar en un puntero. Curso 04-05.Práctica 5