martes, 16 de junio de 2009

unidad 2 extraordinario

SUPONGA QUE CIERTA OFICINA CATASTRAL DE CIERTA CIUDAD, ESTA LLEVANDO A CABO UNA INVESTIGACION SOBRE LAS LICENCIAS QUE ESTE ORGANISMO EXPIDE. CADA USUARIO DEBE LLENAR UN CUESTIONARIO QUE TENGA LA SIGUIENTE FORMA:

ASUNTO CODIGO DE RESPUESTA

TIPO DE LICENCIA 1 CORREDOR
2 VENDEDOR

DIRECCION 20 CIUDADES CODIFICADAS DE 1 A 20

EDAD AÑOS DE EDAD

SEXO 1 MASCULINO
2 FEMENINO

EDUCACION 1 PRIMARIA INCOMPLETA
2 PRIMARIA
3 SECUNDARIA
4 PREPARATORIA
5 UNIVERSIDAD

DESARROLLE UN PROGRAMA QUE FORME UNA CLASE USUARIO Y LO ALMACENE EN UN ARREGLO DE DIMENSION N, DONDE DEBE ANALIZAR LOS CUESTIONARIOS Y CALCULAR LO SIGUIENTE:

A)PORCENTAJE DE CORREDORES Y DE VENDEDORES
TAMBIEN DEBEN CALCULARSE LOS SIGUIENTES DATOS EN FORMA SEPARADA PARA AMBOS TIPOS DE LICENCIA.
A)NUMERO DE CUESTIONARIO POR CIUDAD
B)EDAD PROMEDIO
C)PORCENTAJE DE HOMBRES Y MUJERES.

domingo, 14 de junio de 2009

unidad 1 extraordinario

1.-DADO UN ARREGLO X DE N ELEMENTOS REALES, DONDE N ES IMPAR, DISEÑE UN PROGRAMA PARA CALCULAR LA MEDIANA DE ESTE ARREGLO. LA MEDIANA SE DEFINE COMO EL VALOR MAYOR QUE LA MITAD DE LOS NUMEROS Y MENOR QUE LA OTRA MITAD. POR EJEMPLO EN EL SIGUIENTE ARREGLO:
X1 X2 X3 X4 X5 X6 X7 X8 X9
17 -3 21 2 9 -4 6 8 11
QUE ESTA COMPUESTO DE NUEVE ELEMENTOS, EL PROGRAMA DEBE ENCONTRAR QUE LA SOLUCION ES 8

unidad 4 extraordinario

LOS LIDERES DE DOS ORGANIZACIONES DE ESPIONAJE (LLAMADAS DE CONTROL Y KAOS) HAN DESCUBIERTO QUE ALGUNOS DE SUS EMPLEADOS ESTAN EN LAS NOMINAS DE PAGO DE AMBAS INSTITUCIONES. VA A REALIZARSE UNA REUNION SECRETA DE LOS EMPLEADOS LEALES A CONTROL Y KAOS ( O SEA, SE EXCLUIRA A AQUELLOS QUE SE ENCUENTREN EN AMBAS NOMINAS DE PAGO) PARA DETERMINAR LAS POLITICAS DE ACCION EN CONTRA DE LOS AGENTES DOBLE. DISEÑE UN PROGRAMA QUE REALICE LA SIGUIENTE TAREA. DEBE DE LEER DOS LISTASDE NOMBRES ORDENADAS ALFABETICAMENTE Y ALMACENARLAR EN DOS ARCHIVOS UNO LLAMADO KAOS.DAT Y CONTROL.DAT. DEBE DESPLEGAR LAS DOS LISTAS E IMPRIMIR EN UN TERCER ARCHIVO LOS NOMBRES DE LOS AGENTES QUE SERAN INVITADOS ORDENADOS

unidad 3 extraordinario

1.-Crear una clase base llamada Círculo que tenga un miembro dato llamado radio. Los miembros debe ser un constructor y un método para calcular el área del circulo y una clase derivada llamada Esfera desde la clase base Círculo. Además , sus únicos miembros adicionales deberán ser un constructor y un método llamado Calcval() que devuelva el volumen de la esfera.(volumen = 4/3 PI radio3 ). Haga un programa funcional para probar estas clases.


2.-Crear una clase base, denominada Rectángulo, que contenga los miembros correspondientes a largo y ancho. De esta clase derive la clase Caja que tiene un miembro adicional de datos llamado fondo. Los miembros función de la clase base Rectángulo deben contener un constructor, el método área y el método perímetro. La clase derivada debe tener un constructor, un método volumen y el método área, que devuelve el área de la superficie de la caja .
Incluya la clase construida en un programa funcional. Haga que el programa llame a todas los métodos en cada clase .
volumen = (largo * ancho) *fondo Area = 4(largo * ancho) + 2(fondo*fondo)

miércoles, 10 de junio de 2009

Ejemplo BinaryReader

using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
namespace Aplicacion_archivo_binario_2
{
class Program
{
static void Main(string[] args)
{
BinaryReader br = null;
try
{
if (File.Exists("d:\\datos\\empleados.dat"))
{
br = new BinaryReader(new FileStream("d:\\datos\\empleados.dat", FileMode.Open, FileAccess.Read));
string nombre;
int ide;
int ciudad;
Console.WriteLine("Listado de alumnos ");
Console.WriteLine(" No Empleado Nombre Empleado Ciudad ");
do
{
ide = br.ReadInt32();
nombre = br.ReadString();
ciudad = br.ReadInt32();
Console.WriteLine("\t{0}\t{1}\t\t{2}", ide, nombre, ciudad);
}
while (true);
}
else
Console.WriteLine("no existe archivo");
}
catch (EndOfStreamException)
{
Console.WriteLine("fin de archivo ");
}
finally
{
if (br != null) br.Close();
}

Console.ReadKey();
}
}
}

Ejemplo de BinaryWriter

using System;
using System.Collections.Generic;
using System.Text;
using System.IO;


namespace Aplicacion_Consola_Archivos_Binarios
{
class Program
{
static void Main(string[] args)
{
BinaryWriter bw = null;
char resp;
try
{
bw=new BinaryWriter(new FileStream("d:\\datos\\empleados.dat",FileMode.Create,FileAccess.Write));

int ide;
string nombre;
int ciudad;

do
{
Console.Write("Numero de empleado : ");
ide=int.Parse(Console.ReadLine());
Console.Write("Nombre Empleado : ");
nombre=Console.ReadLine();
Console.Write(" Ciudad : ");
ciudad=int.Parse(Console.ReadLine());
bw.Write(ide);
bw.Write(nombre);
bw.Write(ciudad);
Console.Write(" Deseas escribir otro registro (s/n): ");
resp=(char)Console.Read();
Console.ReadLine();
}
while(resp=='s' || resp =='S');
}
finally
{
if(bw !=null) bw.Close();
}


}
}
}

Flujo de datos de tipos primitivos

En la mayoria de las aplicaciones se requiere escribir un archivo de datos para datos:
bool,byte, double, float, long , int, short...etc , no solo cadena de caracteres, en formato binario.
En C# la clase BinaryReader Y BinaryWriter , que permiten leer y escribir, respectivamente, datos de cualquuier tipo en formato binario y cadena de caracteres en formato UTF-8.

BinaryWriter
Un flujo de la clase BinaryWriter permite a una aplicación escribir datos de cualquier tipo primitivo.
El siguiente contructor abre un flujo de salida (escribir) hacia el archivo unido a otro flujo de la clase Stream o de sus derivadas.


BynaryWriter (Stream flujo)

Ejemplo

FileStream fs=new FileStream("d:\\datos\elementos.dat", FileMode.Create, FileAccess.Write);

BinaryWriter bw=new BinaryWriter(fs);

Un programa almacena datos en la unidad d subdirectorio datos y el archivo elementos
escribirá datos en el flujo bw y esta conectado al flujo fs abierto hacia ese archivo.

Metodos para BynaryWriter

Write(byte) Escribe un valor tipo byte.
Write(Bytes[])Escribe una arreglo de bytes.
Write(char) Escribe un valor tipo char
Write(char []) Escribe una arreglo o cadena de caracteres
Write(short) Escribe un valor de tipo short
Write(int )Escribe un valor de tipo int
Write(long) Escribe un valor tipo long
Write(Decimal)Escribe un valor de tipo decimal
Write(float) Escribe un valor de tipo float
Write(double) Escribe un valor de tipo float
Write(string) Escribe una cadena de caracteres en formato UTF-8
BaseStream Obtiene el flujo subyacente
Close Cierra el flujo y libera los recursos adquiridos
Flush Limpia el buffer asociado con el flujo enviando su contenido a éste
Seek Establece el apuntador en el flujo

BinaryReader

Un flujo de la clase BinaryReader , permite a una aplicación leer datos de cualquier tipo primitivo .

El siguiente constructor abre un flujo de entrada(leer) desde el archivo unido a otro flujo de la clase Stream

BinaryReader( Stream Flujo)

Ejemplo:

FileStream fs=new FileStream("d:\\datos\\elementos.dat", FileMode.Open, FileAccess.Read);

BinaryReader br=new BinaryReader(fs);

Métodos más utilizados de la clase BinaryReader

ReadByte Devuelve un valor de tipo byte
ReadBytes Devuelve un valor de tipo byte[]
ReadChar Devuelve un valor de tipo char
ReadChars Devuelve un valor de tipo char[]
ReadInt16 Devuelve un valor de tipo short
ReadInt32 Devuelve un valr de tipo int
ReadInt64 Devuelve un valor de tipo long
ReadDecimal Devuelve un valor tipo Decimal
ReadSingle Devuelve un valor de tipo float
ReadDouble Devuelve un valor de tipo double
ReadString Devuelve una cadena de caracteres en formato UTF-8

BaseStream Obtiene el flujo subyacente
Close Cierra el flujo y libera los recursos adquiridos
PeekChar Obtiene el siguiente carácter sin extraerlo

Pasos para escribir datos en un archivo
1)Definir un flujo hacia el archivo donde se desea almacenar los datos
2)Lectura de datos del dispositivo de entrada y escribimos en el archivo.Este proceso se hace mientrar existan datos a almacenar
3)cerrar el flujo


Pasos para leer datos de un archivo existente

1)Abrir un flujo desde el archivo del cual se desea leer los datos
2)Leer los datos del archivo y almacenarlos en variables de nuestros programa con el objetivo de trabajar con ellos. Este proceso se hace mientras existan datos a leer.
3)Cerrar flujo

lunes, 8 de junio de 2009

Ejemplo de lectura de archivo texto

using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
namespace Aplicacion_consola_archivo_texto_leer
{
class Program
{
static void Main(string[] args)
{
StreamReader Fr = null;
string cadena;
try
{
Fr = new StreamReader("d:\\datos\\archivo1.txt");
cadena = Fr.ReadLine();
while (cadena != null)
{
Console.WriteLine(cadena);
cadena = Fr.ReadLine();
}
}
catch (IOException e)
{
Console.WriteLine("Error: {0}", e.Message);
}
finally
{
if (Fr != null) Fr.Close();
}


Console.ReadKey();


}
}
}

Ejemplo Escribir un archivo texto

using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
namespace Aplicacion_consola_archivo_texto
{
class Program
{
static void Main(string[] args)
{
StreamWriter fw = null;
string cadena;
try
{
fw=new StreamWriter("d:\\datos\\archivo1.txt");
Console.WriteLine("Escriba las lineas de texto a almacenar en el archivo");
Console.WriteLine("Para finalizar cada linea presione enter");
Console.WriteLine("Para terminar solo presione enter en la nueva linea");
cadena=Console.ReadLine();
while(cadena.Length != 0)
{fw.WriteLine(cadena);
cadena=Console.ReadLine();
}
}
catch(IOException e)
{
Console.WriteLine("Error : {0}",e.Message);
}
finally{
if(fw !=null)
{
fw.Close();
}
}
Console.ReadKey();
}
}
}

Clase FileStream

La clase FileStream puede leer o escribir datos de un archivo byte a byte.
Esta clase hereda los métodos de la clase Stream

FileStream(string nombre, FileMode modo)

Este constructor abre un flujo de entrada y salida(leer y escribir) vinculado con el archivo especificado por nombre.

FileStream(string nombre, FileMode modo, FileAccess acceso)

Es similar al primer constructor , pero permite especificar el tipo de acceso(leer, escribir, o leer y escribir)

El nombre es una cadena de caracteres que especifica la ruta donde esta almacenado o se almacenará el archivo.

Esta cadena puede escribirse de dos formas
1) "C:\\datos\\Historial.txt"
2) @""C:\\datos\\Historial.txt"

el parametro modo, del tipo enumerado FileMode, puede tomar uno de los valores siguientes:

CreateNew Crear un nuevo archivo. Si el archivo existe se lanzará una excepción del tipo IOException.

Truncate Abrir un archivo existente. Una vez abierto, sera truncado a cero bytes.

Create Crear un nuevo archivo. Si el archivo existe será sobreescrito.

Open Abrir un archivo existente. Si el archivo no existe se lanzara una excepción del tipo FileNotFoundException.

OpenOrCreate Abrir un archivo si existe, si no , se crea un nuevo archivo.

Append abrir un archivo para añadir datos al final del mismo si existe, o crear un nuevo archivo si no existe.

El parámetro acceso, del tipo enumerado FileAccess puede tomar uno de estos valores:

Read Permite accesar el archivo para realizar la operación de lectura.

Write Permite accesar el archivo para realizar la operación de escritura.

ReadWrite Permite accesar al archivo para realizar la operación de lectura y escritura.


Ejemplo

FileStream F1=new FileStream("D:\\datos\\Listado.Txt",FileMode.Create, FileAccess.Write);

Ejemplo uno de archivos

using System;
using System.Collections.Generic;
using System.Text;
using System.IO;

namespace AplicacionArchivo1
{
class Program
{
static void Main(string[] args)
{
string nameFile;
Console.WriteLine("Introduce el nombre del archivo y su trayectoria");
nameFile = Console.ReadLine();

if (File.Exists(nameFile))
{

Console.WriteLine(" Si existe archivo ");
Console.WriteLine("Su creacion fue : {0}", File.GetCreationTime(nameFile));
Console.WriteLine("Su ultimo Modificación fue :{0}", File.GetLastWriteTime(nameFile));
try
{
StreamReader F1 = new StreamReader(nameFile);
Console.WriteLine(F1.ReadToEnd());
}
catch (IOException)
{
Console.WriteLine("error al leer el archivo ");
}
}
else{
if(Directory.Exists(nameFile))
{
string[] listaDirectorios;
listaDirectorios = Directory.GetDirectories(nameFile);
Console.WriteLine("Informacion directorio ");
for (int I = 0; I < listaDirectorios.Length; I++)
{
Console.WriteLine(listaDirectorios[I] + "\r\t");
}
}
else
Console.WriteLine("no existe "+nameFile);
}
Console.ReadLine();

}


}
}

Flujos

Un archivo es un conjunto de datos que se almacenan bajo un nombre y se almacenan en dispositivos secundarios(disco duro, disco flexible, cinta magnetica, etc..)

La comunicación entre un programa y los datos se realiza mediante un flujo de datos (stream) este es un objeto intermediario entre el programa y los datos.

El flujo de datos es una ruta en un sentido para comunicar los datos que estan almacenados en un dispositivo secundaria y el programa.

Cuando el programa necesita datos de entrada almacenados en un unidad de disco, recibe el nombre de flujo de entrada.

Cuando el programa necesita almacenar datos en un dispositivo secunadario , recibe el nombre de flujo de salida.

Para poder realizar la flujo de entrada(el programa lee datos de un archivo y los lleva a la memoria primaria) se realiza el siguiente procedimiento:
1)abrir un flujo desde un archivo
2)mientras exista información, leer datos
3)Cerrar el flujo

Para poder realizar el flujo de salida(el programa escribe datos en el archivo)
a)abrir un flujo hacia un archivo
b)Mientras exista datos , para almacenar , escribir la información
c)Cerrar el flujo.

En C# el espacio de nombres System.IO contiene un conjunto de clases que sirven para leer y escribir datos en el archivo.
La clase FileStream subclase de Stream permite leer o escribir datos a un archivo byte a byte.
La clase StreamReader y StreamWriter subclases de TextReader y TextWriter permite leer y escribir texto a un archivo y las clases BinaryReader y BinaryWriter permite leer y escribir datos de cualquier tipo primitivo en binario y cadena de caracteres

La información que se almacena en archivos, y que se organizan en directorios pueden utilizar la clase File y Directory permiten a los programas manejan archivos y directorios en el disco.

La clase File puede verificar información de los archivos y puede hacer las operaciones de lectura y escritura de archivos.

Metodos static de la clase File

AppendText Devuelve u objeto StreamWriter que agrega texto a un archivo que ya existe, o lo crea sino existe.

Copy Copia un archivo a un archivo nuevo.

Create Crea un archivo y devuelve su objeto FileStream asociado.

CreateText Crea un archivo texto y devuelve su objeto StreamWritee asociado

Delete Elimina un archivo especifico

Exist Devuelve true si el archivo especificado existe y false en caso contrario

GetCreationTime Devuelve un objeto DateTime que representa la fecha y hora en la que se creó el archivo.

GetLastAccessTime Devuelve un objeto DateTime que representa la fecha y hora del último acceso al archivo.

GetLastWriteTime Devuelve un objeto DateTime que representa la fecha y hora de la última modificación del archivo.

Move Mueve el archivo especificado a una ubicación especifica

Open Devuelve un objeto FileStream asociado con el archivo especificado y equipado con los permisos de lectura y escritura especificados.

OpenRead Devuelve un objeto FileStream de solo lectura, asociado con el archivo especificado.

OpenText Devuelve un objeto StreamReader asociado con el archivo especificado.

OpenWrite Devuelve un objeto FileStream de lectura y escritura, asociado con el archivo especificado.




Clase Directory y sus métodos static

CreateDirectory Crea un directorio y devuelve su objeto DirectoryInfo asociado.

Delete Elimina el directorio especificado.

Exists Devuelve true si existe el directorio especificado y false en caso contrario

GetDirectories Devuelve un arreglo string que contiene los nombres de los archivos en el directorio especificado.

GetFiles Devuelve un arreglo string que contiene los nombres de los archivos en el directorio especifico.

GetCreationTime Devuelve un objeto DateTime que representa la fecha y hora de creación del directorio.

GetLastAccessTime Devuelve un objeto DateTime que representa la fecha y hora del último acceso al directorio.

GetLastWriteTime Devuelve un objeto DateTime que representa la fecha y hora en que se escribieron los últimos elementos en el directorio.

Move Mueve el directorio especificado a una ubicación especifica