SlideShare une entreprise Scribd logo
1  sur  5
Télécharger pour lire hors ligne
12. Arrays dinámicos.
Ejemplo en C
#include <stdio.h>
#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 - %sn",X->Gente[i].Edad,X->Gente[i].Nombre);
    printf ("n");
}

void main (int argc, char* argv[])
{
    Personas K;
    IniPersonas (&K);

    Persona A;
    A.Edad = 15;
    strcpy (A.Nombre,"Manolo");
    AgregarPersona (&K,&A);

    A.Edad = 25;
    strcpy (A.Nombre,"Filomeno");
    AgregarPersona (&K,&A);

    A.Edad = 48;
    strcpy (A.Nombre,"Martirio");
    AgregarPersona (&K,&A);

    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.

Ejemplo en C#
using System;
using System.Collections;

namespace Simple
{
      class CSimple
      {
        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 ();
           }

           [STAThread]
           static void Main(string[] args)
           {
               ArrayList K = new ArrayList ();

               Persona P = new Persona();
               P.Edad = 15;
               P.Nombre = "Manolo";
               K.Add (P);

               P = new Persona();
               P.Edad = 25;
               P.Nombre = "Filomeno";
               K.Add (P);

               P = new Persona();
               P.Edad = 48;
               P.Nombre = "Martirio";
               K.Add (P);

               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.
Ejemplo en C
#include <stdio.h>
#include <stdlib.h>

void main (int argc, char* argv[])
{
    FILE* F;
    char c;

     F = fopen ("C:Texto.txt","r");
     while (!feof(F))
     {
         fscanf (F,"%c",&c);
         printf ("%c",c);
     }
     fclose (F);
}
Ejemplo en C#
using System;
using System.IO;

namespace Simple
{
      class CSimple
      {
            [STAThread]
            static void Main(string[] args)
            {
            FileStream F = new FileStream ("C:Texto.txt",FileMode.Open,
                                                           FileAccess.Read);
            while (F.Position < F.Length)
            {
                 char c = (char) F.ReadByte ();
                 Console.Write (c);
            }
            F.Close ();
        }
      }
}

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 objeto FileStream sólo permite leer caracteres o
bloques de ellos, no es capaz de ir leyendo de separador en separador.

Ejemplo en C#
         static void Main(string[] args)
         {
              StreamReader F = new StreamReader ("C:Texto.txt");
              for (;;)
              {
                  string s = F.ReadLine ();
                  if (s == null) break;
                  Console.WriteLine ("Linea: " + s);
              }
              F.Close ();
         }

El ejemplo anterior usa un objeto StreamReader para leer el fichero de texto, línea a línea.
Ejemplo en C#
using System;
using System.IO;

namespace Simple
{
      class CSimple
      {
         [STAThread]
         static void Main(string[] args)
         {
            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]);
               }
               F.Close ();
           }
       }
}

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.
Ejemplo en C
#include <stdio.h>
#include <stdlib.h>

void main (int argc, char* argv[])
{
    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 escribirn");
     fprintf (F,"Esto es otra cosa, que tambien salta de linean");
     fprintf (F,"Impresion de datos: %d %f %sn",i,j,k);
     fclose (F);
}
Ejemplo en C#
using System;
using System.IO;

namespace Simple
{
      class CSimple
      {
        [STAThread]
        static void Main(string[] args)
        {
            StreamWriter F = new StreamWriter ("C:TextoSalida.txt");

               F.Write ("Esto es una cosa a escribirrn");
               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);
               F.Close ();
           }
       }
}

StreamWriter es el tipo de datos (objeto) de C# que permite imprimir en un fichero de texto de forma
semejante a fprintf en C.

Contenu connexe

Tendances (19)

Estructura basica para_c_ (1)
Estructura basica para_c_ (1)Estructura basica para_c_ (1)
Estructura basica para_c_ (1)
 
Resumen punteros1
Resumen punteros1Resumen punteros1
Resumen punteros1
 
Tipos de librería en c++
Tipos de librería en c++Tipos de librería en c++
Tipos de librería en c++
 
E J P R A C T I C A S P Y T H O N
E J  P R A C T I C A S  P Y T H O NE J  P R A C T I C A S  P Y T H O N
E J P R A C T I C A S P Y T H O N
 
Estructura de Datos (LISTAS, COLAS, PILAS)
Estructura de Datos (LISTAS, COLAS, PILAS)Estructura de Datos (LISTAS, COLAS, PILAS)
Estructura de Datos (LISTAS, COLAS, PILAS)
 
Tópicos de Big Data - Items Similares
Tópicos de Big Data - Items SimilaresTópicos de Big Data - Items Similares
Tópicos de Big Data - Items Similares
 
Lista, pila y cola
Lista, pila y colaLista, pila y cola
Lista, pila y cola
 
Funcionamiento de un pila
Funcionamiento de un pilaFuncionamiento de un pila
Funcionamiento de un pila
 
Listas encadenadas
Listas encadenadasListas encadenadas
Listas encadenadas
 
Análisis léxico
Análisis léxicoAnálisis léxico
Análisis léxico
 
Haskell - Intro
Haskell - IntroHaskell - Intro
Haskell - Intro
 
07. arreglos
07. arreglos07. arreglos
07. arreglos
 
Estructura Básica para C++
Estructura Básica para C++Estructura Básica para C++
Estructura Básica para C++
 
REPORTE RUBI VERONICA J3 ISC A
REPORTE RUBI VERONICA J3 ISC AREPORTE RUBI VERONICA J3 ISC A
REPORTE RUBI VERONICA J3 ISC A
 
Lectura lista encadenadas
Lectura lista encadenadasLectura lista encadenadas
Lectura lista encadenadas
 
Encapsulamiento
EncapsulamientoEncapsulamiento
Encapsulamiento
 
Curso de Python
Curso de PythonCurso de Python
Curso de Python
 
ESTRUCTURAS Y ALGORITMOS II (I Bimestre Abril Agosto 2011)
ESTRUCTURAS Y ALGORITMOS II (I Bimestre Abril Agosto 2011)ESTRUCTURAS Y ALGORITMOS II (I Bimestre Abril Agosto 2011)
ESTRUCTURAS Y ALGORITMOS II (I Bimestre Abril Agosto 2011)
 
Python para principiantes
Python para principiantesPython para principiantes
Python para principiantes
 

En vedette

Instants photos
Instants photosInstants photos
Instants photosminne
 
Crowdsourcing and crowdfeeding (french version)
Crowdsourcing and crowdfeeding (french version)Crowdsourcing and crowdfeeding (french version)
Crowdsourcing and crowdfeeding (french version)Anahi Iacucci
 
Service aux entreprises
Service aux entreprisesService aux entreprises
Service aux entreprisesPlanète Pme
 
Reseaux sociaux
Reseaux sociauxReseaux sociaux
Reseaux sociauxsondess
 
PréSentation Paca Labs RéUnion J3 M
PréSentation Paca Labs RéUnion J3 MPréSentation Paca Labs RéUnion J3 M
PréSentation Paca Labs RéUnion J3 MMedmultimed
 
Anticipation et gestion du risque numérique : Proposition d’un guide de trava...
Anticipation et gestion du risque numérique : Proposition d’un guide de trava...Anticipation et gestion du risque numérique : Proposition d’un guide de trava...
Anticipation et gestion du risque numérique : Proposition d’un guide de trava...Andres Coronado
 
Arrêté Prefectoral du 16 avril 2015 - Embauches à compter du 20 avril 2015
Arrêté Prefectoral  du 16 avril 2015 - Embauches à compter du 20 avril 2015Arrêté Prefectoral  du 16 avril 2015 - Embauches à compter du 20 avril 2015
Arrêté Prefectoral du 16 avril 2015 - Embauches à compter du 20 avril 2015A3C - Expert Comptable à Dunkerque
 
1. Kouanda, kaya hdss
1. Kouanda, kaya hdss1. Kouanda, kaya hdss
1. Kouanda, kaya hdsssantepub
 
Humouraugmentation
HumouraugmentationHumouraugmentation
HumouraugmentationN NASRI
 
Le VE « éternellement émergent » est-il en train d’émerger? Institut de la Mo...
Le VE « éternellement émergent » est-il en train d’émerger? Institut de la Mo...Le VE « éternellement émergent » est-il en train d’émerger? Institut de la Mo...
Le VE « éternellement émergent » est-il en train d’émerger? Institut de la Mo...Abel4com
 
Ponts De Paris
Ponts De ParisPonts De Paris
Ponts De Parisiglesiaeoi
 
La literatura griega. Apolo y Dafne. paula rufo
La literatura griega. Apolo y Dafne. paula rufoLa literatura griega. Apolo y Dafne. paula rufo
La literatura griega. Apolo y Dafne. paula ruforufasanchez
 
Que faire après avoir une idée
Que faire après avoir une idée Que faire après avoir une idée
Que faire après avoir une idée Guillaume Souloumiac
 
Sérialisation des transactions
Sérialisation des transactionsSérialisation des transactions
Sérialisation des transactionsVincent Englebert
 
R E TÓ R I C A P U B L I C I D A D
R E TÓ R I C A P U B L I C I D A DR E TÓ R I C A P U B L I C I D A D
R E TÓ R I C A P U B L I C I D A Dmpg030
 
Distribution resume syllabus ISE
Distribution resume syllabus ISEDistribution resume syllabus ISE
Distribution resume syllabus ISEClaireISE
 

En vedette (20)

Instants photos
Instants photosInstants photos
Instants photos
 
Blogs: Escribir en la red
Blogs: Escribir en la redBlogs: Escribir en la red
Blogs: Escribir en la red
 
Crowdsourcing and crowdfeeding (french version)
Crowdsourcing and crowdfeeding (french version)Crowdsourcing and crowdfeeding (french version)
Crowdsourcing and crowdfeeding (french version)
 
PascuaB5domingo
PascuaB5domingoPascuaB5domingo
PascuaB5domingo
 
Service aux entreprises
Service aux entreprisesService aux entreprises
Service aux entreprises
 
Reseaux sociaux
Reseaux sociauxReseaux sociaux
Reseaux sociaux
 
PréSentation Paca Labs RéUnion J3 M
PréSentation Paca Labs RéUnion J3 MPréSentation Paca Labs RéUnion J3 M
PréSentation Paca Labs RéUnion J3 M
 
Advientoc b
Advientoc bAdvientoc b
Advientoc b
 
Anticipation et gestion du risque numérique : Proposition d’un guide de trava...
Anticipation et gestion du risque numérique : Proposition d’un guide de trava...Anticipation et gestion du risque numérique : Proposition d’un guide de trava...
Anticipation et gestion du risque numérique : Proposition d’un guide de trava...
 
Arrêté Prefectoral du 16 avril 2015 - Embauches à compter du 20 avril 2015
Arrêté Prefectoral  du 16 avril 2015 - Embauches à compter du 20 avril 2015Arrêté Prefectoral  du 16 avril 2015 - Embauches à compter du 20 avril 2015
Arrêté Prefectoral du 16 avril 2015 - Embauches à compter du 20 avril 2015
 
1. Kouanda, kaya hdss
1. Kouanda, kaya hdss1. Kouanda, kaya hdss
1. Kouanda, kaya hdss
 
Humouraugmentation
HumouraugmentationHumouraugmentation
Humouraugmentation
 
Le VE « éternellement émergent » est-il en train d’émerger? Institut de la Mo...
Le VE « éternellement émergent » est-il en train d’émerger? Institut de la Mo...Le VE « éternellement émergent » est-il en train d’émerger? Institut de la Mo...
Le VE « éternellement émergent » est-il en train d’émerger? Institut de la Mo...
 
Ponts De Paris
Ponts De ParisPonts De Paris
Ponts De Paris
 
La literatura griega. Apolo y Dafne. paula rufo
La literatura griega. Apolo y Dafne. paula rufoLa literatura griega. Apolo y Dafne. paula rufo
La literatura griega. Apolo y Dafne. paula rufo
 
Que faire après avoir une idée
Que faire après avoir une idée Que faire après avoir une idée
Que faire après avoir une idée
 
Aao istanbul oct 2014
Aao istanbul oct 2014 Aao istanbul oct 2014
Aao istanbul oct 2014
 
Sérialisation des transactions
Sérialisation des transactionsSérialisation des transactions
Sérialisation des transactions
 
R E TÓ R I C A P U B L I C I D A D
R E TÓ R I C A P U B L I C I D A DR E TÓ R I C A P U B L I C I D A D
R E TÓ R I C A P U B L I C I D A D
 
Distribution resume syllabus ISE
Distribution resume syllabus ISEDistribution resume syllabus ISE
Distribution resume syllabus ISE
 

Similaire à Arrays csharp visto_desde_c

GuíA De PráCtica 2
GuíA De PráCtica 2GuíA De PráCtica 2
GuíA De PráCtica 2louis
 
introducción a la programación utilizando C++.pptx
introducción a la programación utilizando C++.pptxintroducción a la programación utilizando C++.pptx
introducción a la programación utilizando C++.pptxErisbeymarin
 
08 strings o cadenas
08 strings o cadenas08 strings o cadenas
08 strings o cadenashorusblom
 
Estructura de un programa
Estructura de un programaEstructura de un programa
Estructura de un programaMerary Arias
 
Estructura de Datos
Estructura de DatosEstructura de Datos
Estructura de Datosluna_72
 
Tema 9 www.fresymetal.com
Tema 9 www.fresymetal.comTema 9 www.fresymetal.com
Tema 9 www.fresymetal.comFresyMetal
 
Scala en proyectos de vinculación Ancap-UR - 2013-03
Scala en proyectos de vinculación Ancap-UR - 2013-03Scala en proyectos de vinculación Ancap-UR - 2013-03
Scala en proyectos de vinculación Ancap-UR - 2013-03Germán Ferrari
 
Presentacion sobre Listas Enlazadas en C++.ppt
Presentacion sobre Listas Enlazadas en C++.pptPresentacion sobre Listas Enlazadas en C++.ppt
Presentacion sobre Listas Enlazadas en C++.pptLucasTula1
 
UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)
UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)
UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)Videoconferencias UTPL
 
Ejercicios en Netbeans
Ejercicios en NetbeansEjercicios en Netbeans
Ejercicios en Netbeansedgar muñoz
 
Ejerciciosdeprogramacionconcurrente 111021172712-phpapp01
Ejerciciosdeprogramacionconcurrente 111021172712-phpapp01Ejerciciosdeprogramacionconcurrente 111021172712-phpapp01
Ejerciciosdeprogramacionconcurrente 111021172712-phpapp01cursobeta
 
Presentacion java
Presentacion javaPresentacion java
Presentacion javaJose Cortez
 
ESTRUCTURAS DE CONTROL: BUCLES EN C++
ESTRUCTURAS DE CONTROL: BUCLES EN C++ESTRUCTURAS DE CONTROL: BUCLES EN C++
ESTRUCTURAS DE CONTROL: BUCLES EN C++die_dex
 

Similaire à Arrays csharp visto_desde_c (20)

GuíA De PráCtica 2
GuíA De PráCtica 2GuíA De PráCtica 2
GuíA De PráCtica 2
 
Cplus
CplusCplus
Cplus
 
C++
C++C++
C++
 
Programación en c++
Programación en c++Programación en c++
Programación en c++
 
Ficheros C++
Ficheros C++Ficheros C++
Ficheros C++
 
!Prograc8
!Prograc8!Prograc8
!Prograc8
 
introducción a la programación utilizando C++.pptx
introducción a la programación utilizando C++.pptxintroducción a la programación utilizando C++.pptx
introducción a la programación utilizando C++.pptx
 
08 strings o cadenas
08 strings o cadenas08 strings o cadenas
08 strings o cadenas
 
Estructura de un programa
Estructura de un programaEstructura de un programa
Estructura de un programa
 
Estructura de Datos
Estructura de DatosEstructura de Datos
Estructura de Datos
 
Tema 9 www.fresymetal.com
Tema 9 www.fresymetal.comTema 9 www.fresymetal.com
Tema 9 www.fresymetal.com
 
Scala en proyectos de vinculación Ancap-UR - 2013-03
Scala en proyectos de vinculación Ancap-UR - 2013-03Scala en proyectos de vinculación Ancap-UR - 2013-03
Scala en proyectos de vinculación Ancap-UR - 2013-03
 
Presentacion sobre Listas Enlazadas en C++.ppt
Presentacion sobre Listas Enlazadas en C++.pptPresentacion sobre Listas Enlazadas en C++.ppt
Presentacion sobre Listas Enlazadas en C++.ppt
 
Tema1oficial
Tema1oficialTema1oficial
Tema1oficial
 
UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)
UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)
UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)
 
Ejercicios en Netbeans
Ejercicios en NetbeansEjercicios en Netbeans
Ejercicios en Netbeans
 
Ejerciciosdeprogramacionconcurrente 111021172712-phpapp01
Ejerciciosdeprogramacionconcurrente 111021172712-phpapp01Ejerciciosdeprogramacionconcurrente 111021172712-phpapp01
Ejerciciosdeprogramacionconcurrente 111021172712-phpapp01
 
Presentacion java
Presentacion javaPresentacion java
Presentacion java
 
ESTRUCTURAS DE CONTROL: BUCLES EN C++
ESTRUCTURAS DE CONTROL: BUCLES EN C++ESTRUCTURAS DE CONTROL: BUCLES EN C++
ESTRUCTURAS DE CONTROL: BUCLES EN C++
 
Cadenas
CadenasCadenas
Cadenas
 

Dernier

International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxLolaBunny11
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudianteAndreaHuertas24
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
Herramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptxHerramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptxRogerPrieto3
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 

Dernier (15)

International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
Herramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptxHerramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptx
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 

Arrays csharp visto_desde_c

  • 1. 12. Arrays dinámicos. Ejemplo en C #include <stdio.h> #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 - %sn",X->Gente[i].Edad,X->Gente[i].Nombre); printf ("n"); } void main (int argc, char* argv[]) { Personas K; IniPersonas (&K); Persona A; A.Edad = 15; strcpy (A.Nombre,"Manolo"); AgregarPersona (&K,&A); A.Edad = 25; strcpy (A.Nombre,"Filomeno"); AgregarPersona (&K,&A); A.Edad = 48; strcpy (A.Nombre,"Martirio"); AgregarPersona (&K,&A); ImprimirPersonas (&K); EliminarPersona (&K,1); ImprimirPersonas (&K); FinPersonas (&K); } El ejemplo anterior muestra el uso frecuente de un array dinámico de estructuras.
  • 2. 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. Ejemplo en C# using System; using System.Collections; namespace Simple { class CSimple { 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 (); } [STAThread] static void Main(string[] args) { ArrayList K = new ArrayList (); Persona P = new Persona(); P.Edad = 15; P.Nombre = "Manolo"; K.Add (P); P = new Persona(); P.Edad = 25; P.Nombre = "Filomeno"; K.Add (P); P = new Persona(); P.Edad = 48; P.Nombre = "Martirio"; K.Add (P); 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.
  • 3. 13. Acceso a ficheros de texto en modo lectura. Ejemplo en C #include <stdio.h> #include <stdlib.h> void main (int argc, char* argv[]) { FILE* F; char c; F = fopen ("C:Texto.txt","r"); while (!feof(F)) { fscanf (F,"%c",&c); printf ("%c",c); } fclose (F); } Ejemplo en C# using System; using System.IO; namespace Simple { class CSimple { [STAThread] static void Main(string[] args) { FileStream F = new FileStream ("C:Texto.txt",FileMode.Open, FileAccess.Read); while (F.Position < F.Length) { char c = (char) F.ReadByte (); Console.Write (c); } F.Close (); } } } 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 objeto FileStream sólo permite leer caracteres o bloques de ellos, no es capaz de ir leyendo de separador en separador. Ejemplo en C# static void Main(string[] args) { StreamReader F = new StreamReader ("C:Texto.txt"); for (;;) { string s = F.ReadLine (); if (s == null) break; Console.WriteLine ("Linea: " + s); } F.Close (); } El ejemplo anterior usa un objeto StreamReader para leer el fichero de texto, línea a línea.
  • 4. Ejemplo en C# using System; using System.IO; namespace Simple { class CSimple { [STAThread] static void Main(string[] args) { 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]); } F.Close (); } } } 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.
  • 5. 14. Acceso a ficheros de texto en modo escritura. Ejemplo en C #include <stdio.h> #include <stdlib.h> void main (int argc, char* argv[]) { 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 escribirn"); fprintf (F,"Esto es otra cosa, que tambien salta de linean"); fprintf (F,"Impresion de datos: %d %f %sn",i,j,k); fclose (F); } Ejemplo en C# using System; using System.IO; namespace Simple { class CSimple { [STAThread] static void Main(string[] args) { StreamWriter F = new StreamWriter ("C:TextoSalida.txt"); F.Write ("Esto es una cosa a escribirrn"); 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); F.Close (); } } } StreamWriter es el tipo de datos (objeto) de C# que permite imprimir en un fichero de texto de forma semejante a fprintf en C.