12.Arrays dinámicos. Ejemplo en C #include <stdio.h> #include <malloc.h> #include <string.h>

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

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

El lenguaje de Programación C. Fernando J. Pereda

INTRODUCCIÓN AL TIPO COMPUESTO CADENA CONTENIDOS

ARCHIVOS. 1. Introducción. 2. Definición de archivo. 3. Archivos de acceso secuencial. 4. Gestión de un archivo secuencial de estructuras

Prof. Dr. Paul Bustamante

FILE *nombre_puntero_fichero; fopen(char_nombre_archivo,char_modo_apertura ); MODOS DE APERTURA. Abre un archivo de texto para lectura.

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

LENGUAJE. Tema 1 - Introducción

PROGRAMACION / Clave: 11214

Tema 10: Tipos de datos definidos por el usuario

Instituto Politécnico Nacional

Arrays y Cadenas en C

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

Programación I Ficheros de texto

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

Tema 13: Apuntadores en C

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

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)

Ficheros de acceso aleatorio

Punteros. Definición Un puntero es un dato que contiene una dirección de memoria.

Introducción al Lenguaje de Programación C

PROGRAMACIÓN ORIENTADA A OBJETOS (L40629) Sabino Miranda-Jiménez

CURSO BASICO DE PROGRAMACION EN C. Apoyo a Investigación C. P. D. Servicios Informáticos U. C. M.

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

2.2 Nombres, Ligado y Ámbito

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

Escuela Politécnica Superior de Elche

RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA

Programación en C++/Funciones

Ejercicios de evaluación de fundamentos de programación en Java

CURSO DE LENGUAJE C. 4.1 Conceptos básicos de funciones 4.2 Funciones que regresan valores no enteros 4.3 Variables externas 4.4 Reglas de alcance

Formatos para prácticas de laboratorio

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

Unidad 7: Procesamiento de archivos en el lenguaje C

Arrays. Programación. Licenciatura de Lingüística y Nuevas Tecnologías

Guia#12: Tema: Archivos en C#.

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

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

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

FUNDAMENTOS DE PROGRAMACIÓN

Este material es de uso exclusivo para estudio, los textos fueron tomados textualmente de varios libros por lo que está prohibida su impresión y

Prof. Dr. Paul Bustamante

Algoritmos y Programación I

1. Cuestiones. Ejercicios resueltos de C. Diego Rodríguez-Losada 1. //a) #include <stdio.h> main( ) { int x = 0, y = 0; //b) #include <stdio.

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

Contenidos. Gestión dinámica de memoria. Gestión dinámica de memoria. Introducción. 1. Introducción 2. El operador NEW 3. El operador DELETE

INTRODUCCIÓN...9 CAPÍTULO 1. ELEMENTOS DE UN PROGRAMA INFORMÁTICO...11

Entrada y Salida de Datos. Lectura de archivos.

INDICE Capitulo 1. El Turbo C++ y el Lenguaje C Capitulo 2. Declaración e inicialización de variables Capitulo 3. Funciones de entrada y salida

Práctica A: Definición y uso de variables de tipo referencia

Examen de Programación II (Ingeniería Informática)

Compiladores e Intérpretes Proyecto N 1 Sintaxis de MiniJava Segundo Cuatrimestre de 2015

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

Programación Estructurada

EDITRAN/TR. Windows/Unix. Manual de referencia

4. Memoria, Stack, Strings

public static void main(string[ ] args) { Numero f1 = new Numero(3); Numero f2 = new Numero(4); Numero f3 = f1; f1.value = f2.value; Numero f4 = null;

fundamentos Cifrar y descifrar datos

Todo programa en 'C' consta de una o más funciones, una de las cuales se llama main.

7. Manejo de Archivos en C.

Tema 2. Memoria Dinámica. 2.1 Datos estáticos y dinámicos

Programación Estructurada

Examen Principios de Programación Febrero 2012

Un identificador le da nombre único a un elemento en un programa (Variables, procedimientos, etc.). No puede contener operadores como + - * /

AGRUPA P R OBJET E OS 1

Apuntadores (Punteros)

Tema: Arreglos de Objetos en C++.

Programación estructurada (Introducción a lenguaje C)

Modulo 1 El lenguaje Java

FUNDAMENTOS DE INFORMÁTICA 1º Ingeniería Industrial

OBJETIVOS. Explicar el manejo de archivos de texto. Explicar el manejo de archivos binarios. Desarrollar programas que usen archivos.

Ejercicio 1 (2 puntos. Tiempo: 25 minutos)

Variables. Una variable no es más que un nombre simbólico que identifica una dirección de memoria: vs.

Lenguaje C Entrada y Salida de Datos. Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia

Esquema de un programa en C: bloques básicos

Elementos léxicos del lenguaje de programación Java

FACULTAD DE INGENIERÍA

TEMA 4. ELEMENTOS BÁSICOS DE PROGRAMACIÓN

Para leer la entrada de consola, lo primero que se hace es construir un Scanner que este asociado al flujo de entrada estándar System.

Tema 2: La clase string

Clases y Objetos. Informática II Ingeniería Electrónica

Elementos de un programa en C

Tema: INTÉRPRETE ENSAMPOCO/3

Estructuras de Datos Declaraciones Tipos de Datos

Lenguajes de programación LPSI EUI UPM CADENAS DE CARACTERES

Programación en C+ +/ Funciones

Objetivo de aprendizaje del tema

324 MR Versión 1 Prueba Integral 1/3 Semana 10 Lapso

1. Ejemplo de clase: La clase Disco 2. Ejemplo de clase: La clase Colección. 3. Relación entre clases: Clientismo

Por ejemplo, para declarar un arreglo de enteros llamado a con diez elementos se hace de la siguiente forma:

Problemas de Redes de Computadores. Conjunto de problemas 1

Instrucciones de control

4. Operadores Operador asignación

Tema 8 Vectores y Matrices

COMO PROGRAMAR EL PUERTO PARALELO

Examen Septiembre Curso Programación en C++ Pág. 1

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

Lenguaje C [Apuntadores y arreglos]

CURSO de C++ Ignacio López

Transcripción:

12.Arrays dinámicos. #include <malloc.h> #include <string.h> typedef struct char Nombre[80]; int Edad; Persona; typedef struct Persona* Gente; int NumPersonas; Personas; void IniPersonas (Personas* X) X->Gente = NULL; X->NumPersonas = 0; void FinPersonas (Personas* X) free (X->Gente); X->Gente = NULL; X->NumPersonas = 0; void AgregarPersona (Personas* X, Persona* P) X->Gente = (Persona*) realloc (X->Gente,sizeof(Persona)*(X->NumPersonas+1)); X->Gente[X->NumPersonas++] = *P; void EliminarPersona (Personas* X, int Indice) int i; for (i=indice ; i<x->numpersonas-1 ; i++) X->Gente[i] = X->Gente[i+1]; X->Gente = (Persona*) realloc (X->Gente,sizeof(Persona)*(--X->NumPersonas)); void ImprimirPersonas (Personas* X) int i; printf ("Listado de personas:\n"); for (i=0 ; i<x->numpersonas ; i++) printf ("%d - %s\n",x->gente[i].edad,x->gente[i].nombre); printf ("\n"); Personas K; IniPersonas (&K); Persona A; A.Edad = 15; strcpy (A.Nombre,"Manolo"); A.Edad = 25; strcpy (A.Nombre,"Filomeno"); A.Edad = 48; strcpy (A.Nombre,"Martirio"); ImprimirPersonas (&K); EliminarPersona (&K,1); ImprimirPersonas (&K); FinPersonas (&K); El ejemplo anterior muestra el uso frecuente de un array dinámico de estructuras.

En C, el manejo de este tipo de estructuras involucra malloc (reservar memoria), realloc (reasignar el espacio asignado), free (liberar espacio), y copias entre elementos. C# considera estas operaciones como no seguras, y ofrece tipos de datos para realizar estas tareas de forma segura. Además, dichos tipos de datos son mucho más fáciles de utilizar. using System.Collections; class Persona public int Edad; public string Nombre; static void ImprimirPersonas (ArrayList K) Console.WriteLine ("Listado de personas:"); for (int i=0 ; i<k.count ; i++) Persona P = (Persona) K[i]; Console.WriteLine ("0-1",P.Edad,P.Nombre); Console.WriteLine (); ArrayList K = new ArrayList (); Persona P = new Persona(); P.Edad = 15; P.Nombre = "Manolo"; P = new Persona(); P.Edad = 25; P.Nombre = "Filomeno"; P = new Persona(); P.Edad = 48; P.Nombre = "Martirio"; ImprimirPersonas (K); K.RemoveAt (1); ImprimirPersonas (K); Vemos que un objeto ArrayList tiene las operaciones necesarias para agregar y eliminar elementos, igual que el tratamiento implementado por malloc, realloc y free. Un objeto ArrayList se inicializa solo y se destruye solo. Pero esto es un tema sobre el que incidiremos profundamente cuando veamos la programación orientada al objeto, ahora no es relevante.

13.Acceso a ficheros de texto en modo lectura. #include <stdlib.h> FILE* F; char c; F = fopen ("C:\\Texto.txt","r"); while (!feof(f)) fscanf (F,"%c",&c); printf ("%c",c); fclose (F); FileStream F = new FileStream ("C:\\Texto.txt",FileMode.Open, FileAccess.Read); while (F.Position < F.Length) char c = (char) F.ReadByte (); Console.Write (c); El ejemplo anterior muestra cómo leer carácter a carácter un fichero de texto. Aquí terminan las semejanzas entre C y C# en este aspecto. La función fscanf permite ir leyendo datos separados por espacios, convirtiendo los tipos de la forma deseada. Sin embargo, un objetofilestream sólo permite leer caracteres o bloques de ellos, no es capaz de ir leyendo de separador en separador. StreamReader F = new StreamReader ("C:\\Texto.txt"); for (;;) string s = F.ReadLine (); if (s == null) break; Console.WriteLine ("Linea: " + s); El ejemplo anterior usa un objetostreamreader para leer el fichero de texto, línea a línea.

StreamReader F = new StreamReader ("C:\\Texto.txt"); for (;;) string s = F.ReadLine (); if (s == null) break; Console.WriteLine ("Linea: " + s); string[] Palabras = s.split (' '); for (int i=0 ; i<palabras.length ; i++) Console.WriteLine (" " + Palabras[i]); El ejemplo anterior va leyendo del fichero línea a línea, y utiliza el método Split del objeto string para separar las palabras en un nuevo array de cadenas de caracteres. La salida de este programa muestra línea a línea el fichero, y para cada línea muestra las palabras, separadas unas de otras. A partir de aquí, y con las operaciones del objeto Convert (Convert.ToInt32, Convert.ToDouble, etc), se puede emular el funcionamiento de un fscanf con formato.

14.Acceso a ficheros de texto en modo escritura. #include <stdlib.h> FILE* F; int i = 4; double j = 45.67; char k[] = "Hola"; F = fopen ("C:\\TextoSalida.txt","wt"); fprintf (F,"Esto es una cosa a escribir\n"); fprintf (F,"Esto es otra cosa, que tambien salta de linea\n"); fprintf (F,"Impresion de datos: %d %f %s\n",i,j,k); fclose (F); StreamWriter F = new StreamWriter ("C:\\TextoSalida.txt"); F.Write ("Esto es una cosa a escribir\r\n"); F.WriteLine ("Esto es otra cosa, que tambien salta de linea"); int i = 4; double j = 45.67; string k = "Hola"; F.WriteLine ("Impresion de datos: 0 1 2",i,j,k); StreamWriter es el tipo de datos (objeto) de C# que permite imprimir en un fichero de texto de forma semejante a fprintf en C.