Estructuras de datos

Documentos relacionados
Tema 10: Estructuras de control de entrada y salida

Computación archivos

Tema 8: Tratamiento de datos. Ficheros

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

Tema 5. Entrada y Salida

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

Tema 13: Manejo de archivos en lenguaje C

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

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

Instituto Tecnológico de Celaya

Apunte Laboratorio ALPI - El lenguaje de programación Pascal

Fundamentos de Informática 7. Introducción al manejo de archivos

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

Tema 3: Entrada/Salida de Ficheros

Laboratorio de Procesamiento Digital de Voz Practica 1. INTRODUCCION DE MATLAB Y MANEJO DE ARCHIVOS DE VOZ

Tema 10: Arreglos estáticos en C

Tipos de datos y Operadores Básicos

Entrada y salida de datos. Informática aplicada al medio ambiente curso 2010/2011

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

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

Algoritmos y Programación I

Introducción a Python. Cecilia Manzino

$0 Representa al parámetro cero o nombre del programa $1 Representa al parámetro uno $2 Representa al parámetro dos

Archivos en lenguaje C

Programación. Test Autoevaluación Tema 3

Tema 14: Arreglos estáticos en C

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

U nidad 6: A rreglos: U nidim ensionales y m ultidim ensionales

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

M a tl a b. Oriol Roca ARREGLOS EN MATLAB.

Tipos de Datos en C. Palabras reservadas en C

>> % suma de dos números reales, el resultado se asigna a ans

Clase 2: Operaciones con matrices en Matlab

Arreglos, colecciones

Programación 1 Tema 15. Trabajo con ficheros binarios

Introducción. Universidad de Concepción, Chile Departamento de Geofísica Programación Científica con Software libre.

Informática PRÀCTICA 3 Curs Práctica Nº 3: Tipos de datos simples. Constantes y variables. Operadores aritméticos. Formato de salida.

Inicio del programa. Entrada de datos. Proceso de datos. Salida de datos. Fin del programa

LEX. Las definiciones y subrutinas son opcionales. El segundo %% es opcional pero el primer %% indica el comienzo de las reglas.

LIBRO BASICO DE MICROSOFT EXCEL ) Usted puede crear la URL (una carpeta para guardar el libro).

Lenguajes de programación

Programación En Lenguaje C

Tema 2: EL TIPO DE DATOS ENTERO. INSTRUCCIÓN DE ASIGNACIÓN Y DE COMPOSICIÓN SECUENCIAL

Fundamentos de Informática Parte II Análisis y Visualización de Datos mediante Matlab

INTRODUCCIÓN A LA PROGRAMACIÓN EN FORTRAN. Métodos Numéricos Carlos Zotelo

Introducción a la Programación

Herramientas computacionales para la matemática MATLAB: Scripts

ESCALARES, VECTORES Y MATRICES

FUNDAMENTOS DE PROGRAMACIÓN TALLER No. 1 Profesor: Alvaro Ospina Sanjuan

GUÍA DE TRABAJO N 1 C# Ing. Néstor Raúl Suarez Perpiñan Página 1 de 13

Tema 2. Tipos predefinidos

Taller de Informática I Quinta Clase: Gráficos y Archivos

Desarrollo de Programas. Prof. Lisbeth C. Pérez Rivas

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

Informática I para Bachillerato

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

Ejercicios Tema 6. Funciones

Universidad Autónoma del Estado de México Facultad de Medicina

Operaciones de E/S en ANSI C

LENGUAJE. Tema 8 Ficheros

Operadores y Expresiones

Lenguaje de Programación: C++ ARCHIVOS I/O

COLEGIO PABLO DE TARSO IED CONSTRUCCION DE PROYECTOS DE VIDA PRODUCTIVOS VISUAL BASIC PRÁCTICAS DOC RAUL MONROY PAMPLONA

Cadenas de caracteres

FUNDAMENTOS DE INFORMÁTICA 1º Ingeniería Industrial

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)

Clase 4: Un poco más de Python

Elementos de Cálculo Numérico

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

Estructura de Datos: Archivos

TEMA 2. EL LENGUAJE C. ELEMENTOS BÁSICOS

Sobre la lectura y escritura de datos en FORTRAN.

Funciones en MATLAB. Prof. Saúl. Buitrago y Oswaldo Jiménez

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

Lista de problemas: ciclos y funciones en el lenguaje MATLAB

Informática General 2016 Cátedra: Valeria Drelichman, Pedro Paleo, Leonardo Nadel, Norma Morales

Unidad II. Fundamentos de programación en Java. Ing. José Luis Llamas Cárdenas

Curso Completo de Visual Basic 6.0

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

Enteros. Son los números que no contienen componentes fraccionarios y, por tanto, no contienen punto decimal.

Operaciones básicas con hojas de cálculo

Resumen de LISP. Javier Gil Julio, 2011

7. Manejo de Archivos en C.

%&%& ' 10 2 i, i =1!

Lenguaje de programación C. Introducción

MÓDULO SE: SISTEMAS DE ECUACIONES

8.1.- FUNCIONES Y PROCEDIMIENTOS DEFINIDOS POR EL USUARIO EN TURBO PASCAL.

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

Curso de Programación Avanzada en C

Introducción a la Programación en MATLAB

Características básicas de Matlab

Características de JavaScript

Lección 2 Introducción al lenguaje C

abril de 2017 Desarrollo de aplicaciones en Java Tipos de datos primitivos Tipos de datos Elementos de aplicaciones simples

GUIA BÁSICA DEL PROCEDIMIENTO MATRIX END MATRIX

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

Práctica 1 de Excel (Curso )

Docente: Juan Carlos Pérez P. Alumno : Fecha : Nota:

Rancagua, Agosto 2009

El lenguaje C. 1. Identificadores, constantes y variables

Transcripción:

Estructuras de datos Ejemplo: Cálculo de la integral de un polinomio en un intervalo [a,b] dado. N: número de subintervalos en [a,b] a b x i x i+1 x i x i+1 h x f x f area i i 2 ) ( ) ( 1 + + = + + = + + + + = + = = = + 1 1 1 1 0 1 0 1 ) ( ) 2 ) ( ) ( ( )) ( ) ( 2 ) ( 2 ) ( ( 2 2 ) ( ) ( N i i N N N i i i x f b f a f h x f x f x f x f h x f x f h total area L hi a x i + = N i,, = 0 K N a b h = archivo : calculo_integral.m

Estructuras de datos Cadenas de caracteres A menudo es necesario manipular texto en los programas Declaración de un texto >> t = esto es un texto Acceso a las entradas de una cadena de caracteres >> d = t(1:9) almacena en la variable d el texto: esto es u de la posición 1 a la 9 (incluye los espacios en blanco) >> d = t(3:10) almacena en la variable d el texto: to es un de la posición 3 a la 10

Estructuras de datos Cadena de caracteres Operadores sobre cadenas de caracteres Formas de concatenar texto: strcat y strvcat >> a = pepe Concatenación horizontal: >> strcat( yo me llamo, a, blanco ) almacena en la variable ans el texto: yo me llamo pepe blanco Concatenación vertical: >> strvcat( yo me llamo, a, blanco ) almacena en la variable ans el texto: yo me llamo pepe blanco >> t = [ yo me llamo blanks(1) a blanks(1) blanco ] Almacena en la variable t el texto: yo me llamo pepe blanco blanks(1) asigna un espacio en blanco

Estructuras de datos Cadena de caracteres Operadores char y abs s = char(x): convierte un entero x (código ascii) a caracter (texto) y lo almacena en la variable s x = abs(s): convierte el caracter s (texto) a su código ascii y lo almacena en la variable x >> abs( a ) 97 >> char(97) a >> abs( saul ) 115 97 117 108 >> char([115 97 117 108 ]) saul >> char(32) (espacio en blanco) >> abs( ) 32 Funciones ischar y isnumeric ischar(s) retorna 1 si s es una cadena, en cualquier otro caso 0. >> ischar('11') 1

Ejemplo: uso del if múltiple anidado y manejo de cadenas de caracteres genera el vector genero con entradas f y m. Como calcular el número de f y m en el vector genero? archivo : gen_edad_hijos.m nota: funciones double, char y abs >> vectores_aleatorios >> load gen_edad_hijos >> mf = m - f ; cantidad de m : >> sum(genero - 'f')/mf ans = 272 cantidad de f >> - sum(genero - 'm')/mf ans = 728

tabla ascii

Estructuras de datos Cadenas de caracteres Operadores num2str y str2num permiten pasar un valor numérico a caracter y viceversa >> t = num2str(pi,3) corresponde al texto: 3.14 (3 dígitos) y es almacenado en la variable t >> a = [ el número pi es blanks(1) t ] concatena y almacena en a el texto: el número pi es 3.14 >> x = str2num(t) corresponde al número: 3.14 >> S = ['1 2'; '3 4'] >> str2num(s)

Estructuras de datos Cadenas de caracteres Operador eval permite evaluar una expresión válida en MATLAB pero escrita en forma de texto >> x = eval( 2 + 4 ) interpreta el texto, lo ejecuta como instrucción válida en MATLAB y lo almacena en la variable x >> a = eval( sin(pi) ) almacena en a el número 1.2246e-016 >> for n = 1:4; eval([ 'M' num2str(n) ' = magic(n) ' ]); end genera una sucesión de matrices con nombres M1 a M4 M1 = M2 = M3 = M4 = 1 1 3 4 2 8 1 6 3 5 7 4 9 2 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1

Estructuras de datos Cadenas de caracteres Las funciones length, size y find sobre una cadena de caracteres: >> a = 'esto es una prueba >> length(a) retorna el número de caracteres de la cadena, es decir 18 >> find(a == e ) retorna el vector 1 6 16, correspondientes a las posiciones de la letra e sobre el arreglo a >> S = ['1 2'; '3 4']; >> size(s) 2 3 size(s) retorna el número de filas y columnas de la matriz. >> find(s == '4') 6 Función strcmp permite comparar cadenas de caracteres, así strcmp(s1,s2) retorna 1 si s1 y s2 son iguales, si no retorna 0. >> s1 = sss ; s2 = ss ; a = strcmp(s1,s2) a = 0 >> s1 = sss ; s2 = sss ; a = strcmp(s1,s2) a = 1

Estructuras de datos Cadena de caracteres Función findstr permite encontrar una cadena de caracteres sobre otra cadena dada. findstr(s1,s2) retorna las posiciones (índice) del primer carácter de la cadena más corta sobre la cadena más larga. >> s = Como estas y donde estas? ; >> a = findstr(s, m ) a = 3 >> a = findstr(s, estas ) a = [ 6 20 ] >> a = findstr(s, Estas ) a = [ ] >> a = findstr(s, ) a = [ 5 11 13 19] Función inline : construye una función a partir de una cadena de caracteres, Por ejemplo f = inline('cos(x)+2*sin(x) ') y así poder calcular f(pi/3) 2.2321

Estructuras de datos Ejemplo: construcción de la fórmula de un polinomio dado sus coeficientes en orden decreciente de las potencias como un vector archivo : const_formula_polinomio.m

Instrucciones de entrada (lectura) y de salida (escritura) (cont.) A continuación veremos funciones para lectura y escritura de archivos. Funciones fopen y fclose Estas funciones sirven para abrir y cerrar archivos, respectivamente. La función fopen tiene la forma: [ fi, texto ] = fopen( nom_archivo, c) donde fi es una variable que recibe el valor de retorno que identifica al archivo de nombre nom_archivo, texto es un mensaje para el caso de que se produzca un error, y c es un carácter (o dos) que indica el tipo de operación que se desea realizar con el archivo. Las opciones más importantes para c son las siguientes: 'r' lectura (de read) 'w' escritura reemplazando (de write) 'a' escritura a continuación (de append) 'r+' lectura y escritura

Instrucciones de entrada (lectura) y de salida (escritura) (cont.) Funciones fopen y fclose (cont.) Cuando por alguna razón el archivo no puede ser abierto, se devuelve un -1 en la variable fi. En este caso el valor de retorno texto puede proporcionar información sobre el tipo de error que se ha producido. Después de realizar las operaciones de lectura y escritura deseadas, el archivo se puede cerrar con la función fclose en la forma siguiente: st = fclose( fi ) donde st es un valor de retorno para posibles condiciones de error, (cuando st retorna como 0 significa que el archivo cerró bien). Si se quieren cerrar a la vez todos los archivos abiertos puede utilizarse el comando: st = fclose( 'all' )

Instrucciones de entrada (lectura) y de salida (escritura) (cont.) Funciones fscanf y fprintf Estructuras de control Estas funciones permiten leer y escribir en archivos ascii, es decir, en archivos formateados. Forma general de la función fscanf: N lee a lo más N elementos en un vector columna inf [ var, count ] = fscanf( fi, format, size ) Lee del archivo identificado por fi de acuerdo a un formato especificado por format y lo devuelve en la variable var (real, vector o matriz). count (opcional) devuelve el número de elementos leídos satisfactoriamente. size (opcional) limita el número de elementos a ser leidos en el archivo Si no se coloca, lee hasta el final del archivo. Si se especifica, se tienen las siguientes opciones lee hasta el final del archivo [M,N] lee a lo más M * N elementos llenando al menos una matriz M N siguiendo el orden de columnas. N puede ser inf, pero no M.

Instrucciones de entrada (lectura) y de salida (escritura) (cont.) Funciones fscanf y fprintf (cont.) format va encerrada entre comillas simples, y contiene los especificadores de formato para las variables %s para cadenas de caracteres %d para variables enteras %f para variables de punto flotante %lf para variables de doble precisión Ejemplos: >> fi1 = fopen('entrada1.txt', 'r'); >> s = fscanf( fi1, '%s'); lee una cadena de caracteres >> fi2 = fopen('entrada1.txt', 'r'); >> s = fscanf( fi2, '%d'); lee todos enteros posibles en el archivo >> fi2 = fopen('entrada1.txt', 'r ) >> s = fscanf( fi2, '%d,1); lee un entero

Instrucciones de entrada (lectura) y de salida (escritura) (cont.) Funciones fscanf y fprintf (cont.) Forma general de la función fprintf: count = fprintf( fi, format, var, ) Dirige su salida formateada hacia el archivo indicado por el identificador fi, format contiene los formatos de escritura y count retorna el número de bytes escritos satisfactoriamente. Ejemplos: >> fi1 = fopen( salida1, w ); >> count = fprintf( fi1, el número de ecuaciones es %d \n, n); escribe el texto entre comillas y el valor de la variable n según el formato indicado (número entero) >> fi2 = fopen( salida2, w ); >> count = fprintf( fi2, el determinante es %10.4f \n, n); Obs. \n en el formato obliga a crear una línea nueva al final del texto.

Instrucción de lectura textread Lee datos numéricos (sin formato) o heterogéneos (con formato) de un archivo de texto (ascii) Sintaxis sin usar formato: a = textread(archivo) a = textread(archivo, ', n) a = textread(archivo, ', param, valor,...) a = textread(archivo, ', n, param, valor,...) Lee n líneas de archivo y las almacena en la variable a. Se supone que archivo contiene sólo datos numéricos. Opciones para param 'delimiter': identifica el carácter de separación entre los datos 'headerlines': número de líneas de cabecera del archivo, estas líneas son ignoradas en la lectura 'commentstyle : con valor 'matlab, indica que los caracteres después de % son ignorados

Instrucción de lectura textread (cont.) Ejemplos: >> a = textread('datos1.txt ') lee todas las líneas del archivo >> a = textread('datos1.txt ', ' ', 1) lee la primera línea del archivo >> a = textread('datos2.csv ', ' ', 'delimiter', ',') lee todas las líneas del archivo >> a = textread('datos2.csv', ' ', 1, 'delimiter', ',') lee la primera línea del archivo >> a = textread('datos22.csv', ' ', 'delimiter', ',', 'headerlines', 1) lee todas las líneas del archivo después del encabezado >> a = textread('datos23.csv', ' ', 'delimiter', ',', 'headerlines', 1, 'commentstyle', 'matlab') lee todas las líneas del archivo después del encabezado, ignorando las comentadas

Instrucción de lectura textread (cont.) Sintaxis usando formato: [a, b, c, ] = textread(archivo, formato) [a, b, c, ] = textread(archivo, formato, n) [a, b, c, ] = textread(archivo, formato, param, valor,...) [a, b, c, ] = textread(archivo, formato, n, param, valor,...) Lee n líneas de archivo con formato especificado y las almacena en las variables a, b, c, etc., respectivamente. Los datos en archivo pueden ser heterogéneos (números y caracteres), pero se espera que estén organizados homogéneamente por columnas. Formatos: El tipo de dato de cada columna se %n : números reales o enteros suministra en formato y corresponde %d : números enteros a cada variable a, b, c, %f : números reales Si n no se especifica o si es -1, lee el %s : cadena de caracteres archivo completo, en caso contrario lee n líneas %5c : 5 caracteres (incluye espacios en blanco)

Instrucción de lectura textread (cont.) Ejemplos: >> [nombre, tipo, x, y, respuesta] = textread('datos.txt', '%s %s %f %d %s') lee todas las líneas del archivo, según el formato especificado y las almacena en las variables indicadas nombre = 'Sally' 'Joe' 'Bill' tipo = 'Type1' 'Type2' 'Type1' x = 12.3400 23.5400 34.9000 y = 45 60 12 respuesta = 'Si' 'No' 'No' >> nombre = textread('datos.txt', '%s %*[^\n]') lee la primera columna nombre = 'Sally' 'Joe' 'Bill'

Instrucciones de lectura textread (cont.) >> inicial = textread('datos.txt', '%c %*[^\n]') lee el primer caracter inicial = S J B >> x = textread('datos.txt', '%*s %*s %f %*d %*s') lee la tercera columna x = 12.3400 23.5400 34.9000 >> a = textread('datos.txt', '%s', 'delimiter', '\n') cada línea como cadena de caracteres a = 'Sally Type1 12.34 45 Si' 'Joe Type2 23.54 60 No' 'Bill Type1 34.90 12 No'

Arreglos de cadenas de caracteres Estructuras de datos Un arreglo de cadena de caracteres es como un vector cuyos elementos son cadenas de caracteres. Este puede ser creado usando llaves, así >> s1 = { hola si adios } >> ss = {'saul' 'pedro' ; 'pepe' 'maria'} ss = 'saul' 'pedro 'pepe' 'maria' s1 = 'hola' 'si' 'adios' Si construimos la cadena de caracteres concatenados verticalmente >> s2 = strvcat( hola', 'si', adios') La podemos interpretar como arreglo de cadena de caracteres, pero es no es tal. Se tiene que s1 y s2 son diferentes, pero se puede pasar de un tipo al otro usando las funciones char y cellstr. Además existen las funciones ischar y iscellstr para identificar entre cada uno de ellos.

>> nombre = cellstr(strvcat(char(nombre), Pedro')) agrega al arreglo de cadena de caracteres nombre el elemento Pedro nombre = 'Sally' 'Joe' 'Bill' Pedro' >> size(nombre) ans = 4 1 Estructuras de control Instrucciones de lectura textread (cont.) Dado el arreglo de cadena de caracteres nombre: >> nombre nombre = 'Sally' 'Joe' 'Bill' Podemos agregar una cadena de caracteres a este arreglo:

Ejemplo: Leer un conjunto de matrices de un archivo, determinar cuales son DD y cuales no, y las escribe en un archivo con el resultado. Archivo de entrada: datos_matrices_dd.txt Archivo de salida: salida_matrices_dd.txt Procedimiento: lectura_matrices_dd.m Definición: Una matriz A de orden n n es diagonal dominante estricta si a ii n > j = 1, j i a ij, 1 i n La matriz A = 7 3 0 2 5 5 0 1 6 es diagonal dominante estricta, ya que 7 > 2 + 0 5 > 3 + 1 6 > 0 + 5

Ejemplo: Archivo de entrada: datos_matrices_dd.txt número de matrices dimensiones de las matrices

Ejemplo: Archivo de entrada: datos_matrices_dd.txt Archivo de salida: salida_matrices_dd.txt Procedimiento: lectura_matrices_dd.m

Instrucción de lectura load Lee el contenido de un archivo y lo deposita en un arreglo con nombre archivo. >> load datos1.txt almacena el contenido en la variable datos1 la instrucción es equivalente a load ascii datos1.txt >> s = load( datos1.txt ) almacena el contenido en la variable s >> var = datos1.txt ; s = load(var) almacena en la variable s Obs: El archivo puede tener cualquier extensión diferente a.mat, el archivo es tratado como ascii Es importante que todas las filas tengan el mismo número de columnas Las separaciones entre elementos: blancos o comas (,) El archivo debe tener sólo números