Sei sulla pagina 1di 119

Lenguaje C# Notas de C# Cortesa de: DYRCE DIAZ FONG Introduccin

Los primeros rumores de que Microsoft estaba desarrollando un nuevo lenguaje de programacin surgieron en 1998, haciendo referencia a un lenguaje que entonces llamaban COOL y que decan era muy similar a Java. En Junio de 2000, Microsoft despejo todas las dudas liberando la especificacin de un nuevo lenguaje llamado C#. A esto le sigui rpidamente la primera versin de prueba del entorno de desarrollo estndar (SDK).Net, que inclua un compilador de C#. El nuevo lenguaje estaba diseado por Anders Hejlsberg(creador de Turbo Pascal y arquitecto de Delphi), Scott Wiltamuth y Peter Golde. Entonces describieron el lenguaje como simple, moderno, orientado a objetos, de tipado seguro y con una fuerte herencia de C/C++. El lenguaje C# se ha construido suponiendo que los modernos sistemas de software se construye usando componentes. Por lo tanto, C# proporciona soporte a nivel de lenguaje para los constructores bsicos de los componentes como puede ser propiedades, mtodos y eventos. Adems del profundo soporte para desarrollo de software basado en componentes, C# es un lenguaje completamente orientado a objetos, que implementa casi todos los conceptos y abstracciones presentes en C++ y Java. Como es de esperar en un lenguaje orientado a objetos, C# implementa conceptos como herencia, encapsulacin, polimorfismo y programacin basada en interfaces, implementa algunas construcciones nuevas, como los delegados. C# Consigue compaginar bien orientacin a objetos y rendimiento. Algunos lenguajes, como Smalltalk, se basan en que todo es un objeto. Esta aproximacin tiene la ventaja de una completa orientacin a objetos, pero tiene la 1 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

desventaja de ser muy ineficiente. Para mejorar el rendimiento, otros lenguajes como Java, separan el sistema de tipos en tipos primitivos y todo el resto, dando lugar a mejor rendimiento en los tipos primitivos, pero en una separacin a veces molesta entre tipos primitivos y tipos definidos por el usuario. En C# se han aunado ambas aproximaciones presentando lo que se llama un sistema unificado de tipos, en el que todos los tipos, incluso los primitivos, derivan de un tipo objeto comn, a la vez que permite el uso de optimizaciones para tipos primitivos y tipos sencillos. Contrariamente a la mayora de lenguajes, C# no incluye una librera especifica, sino que utiliza la librera de clases de la plataforma .NET para todas sus necesidades, desde utilizacin de la consola hasta la programacin multiproceso o el cifrado de seguridad. C# se diseo para la plataforma .NET y es capaz de utilizar todo su potencial. En el diseo y se ha puesto especial hincapi en la simplicidad. Por ejemplo, en C# hay un tipo de clase y siempre se le aplica el recolector de basura.

Microsoft.NET
Microsoft.NET es el conjunto de nuevas tecnologas en las que Microsoft ha estado trabajando durante los ltimos aos con el objetivo de obtener una plataforma sencilla y potente para distribuir el software en forma de servicios que puedan ser suministrados remotamente y que puedan comunicarse y combinarse unos con otros de manera totalmente independiente de la plataforma, lenguaje de programacin y modelo de componentes con los que hayan sido desarrollados. sta es la llamada plataforma .NET, y a los servicios antes comentados se les denomina servicios Web. Para crear aplicaciones para la plataforma .NET, tanto servicios Web como aplicaciones tradicionales (aplicaciones de consola, aplicaciones de ventanas, servicios de Windows NT, etc.), Microsoft ha publicado el denominado kit de desarrollo de software conocido como .NET Framework SDK, que incluye las herramientas necesarias tanto para su desarrollo como para su distribucin y ejecucin y Visual Studio.NET, que permite hacer todo la anterior desde una interfaz visual basada en ventanas. El concepto de Microsoft.NET tambin incluye al conjunto de nuevas aplicaciones que Microsoft y terceros han (o estn) desarrollando para ser utilizadas en la plataforma .NET. Entre ellas podemos destacar aplicaciones desarrolladas por Microsoft tales como Windows.NET, Hailstorm, Visual Studio.NET, MSN.NET, Office.NET, y los nuevos servidores para empresas de Microsoft (SQL Server.NET, Exchange.NET, etc.)

2 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

C#
C# (ledo en ingls "C Sharp" y en espaol "C Almohadilla") es el nuevo lenguaje de propsito general diseado por Microsoft para su plataforma .NET. Aunque es posible escribir cdigo para la plataforma .NET en muchos otros lenguajes, C# es el nico que ha sido diseado especficamente para ser utilizado en ella, por lo que programarla usando C# es mucho ms sencillo e intuitivo que hacerlo con cualquiera de los otros lenguajes ya que C# carece de elementos heredados innecesarios en .NET. Por esta razn, se suele decir que C# es el lenguaje nativo de .NET

Caractersticas del lenguaje C#


Lo primero que hay que resaltar es que C#: Es un lenguaje sensible a las maysculas, por lo que, por ejemplo, Main es diferente a main, por lo que deber prestar atencin a la hora de escribir el cdigo ya que la confusin entre maysculas y minsculas provocar errores de compilacin. Todas las rdenes acaban con el smbolo del punto y coma (;). Los bloques de rdenes (parte iterativa de un ciclo, partes dependientes de una instruccin condicional -parte if y parte else-, cdigo de un mtodo, etc.) se encierran entre llaves { } y no se escribe el ; despus de la llave de cierre (observar en el ejemplo el mtodo Main). Existen comentarios de lnea, cuyo comienzo se especifica con los caracteres // y comentarios de formato libre, delimitados por /* y */. Los comentarios tienen como finalidad ayudar a comprender el cdigo fuente y estn destinados, por lo tanto, a los programadores. No tienen efecto sobre el cdigo ejecutable ya que su contenido es ignorado por el compilador (no se procesa). La sintaxis de los comentarios en C#. C# es un lenguaje orientado a objetos y todo programa debe pertenecer a una clase. .

Clase
Clase: Una clase es la definicin de las caractersticas concretas de un determinado tipo de objetos. Es decir, de cules son los datos y los mtodos de los que van a disponer

3 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

todos los objetos de ese tipo. Por esta razn, se suele decir que el tipo de dato de un objeto es la clase que define las caractersticas del mismo. Una clase es la plantilla que permite crear objetos. Se puede decir que un plano es a las clases como las casas que se construye con los planos a los objetos.

Sintaxis de definicin de clases


La sintaxis bsica para definir una clase es la que a continuacin se muestra: class <nombreClase> { <miembros> } De este modo se definira una clase de nombre <nombreClase> cuyos miembros son los definidos en <miembros> Los miembros de una clase son los datos y mtodos de los que van a disponer todos los objetos de la misma. Un ejemplo de cmo declarar una clase de nombre A que no tenga ningn miembro es la siguiente

Objeto: C# es un lenguaje orientado a objetos puro, lo que significa que todo con lo que
vamos a trabajar en este lenguaje son objetos. Un objeto es un agregado de datos y de mtodos que permiten manipular dichos datos, y un programa en C# no es ms que un conjunto de objetos que interaccionan unos con otros a travs de sus mtodos.

Instanciar: Crear objetos de una clase. Namespace: Del mismo modo que los ficheros se organizan en directorios, los tipos de
datos se organizan en espacios de nombres. Por un lado estos espacios permiten tener ms organizados los tipos de datos, lo que facilita su localizacin. De hecho, esta es la forma en que se encuentra organizada la BCL, de modo que todas las clases ms comnmente usadas en cualquier aplicacin pertenecen al espacio de nombres llamado System, las de acceso a bases de datos en System.Data, las de realizacin de operaciones de entrada/salida en System.IO, etc Por otro lado, los espacios de nombres tambin permiten poder usar en un mismo programa varias clases con igual nombre si pertenecen a espacios diferentes. La idea es

4 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

que cada fabricante defina sus tipos dentro de un espacio de nombres propio para que as no haya conflictos si varios fabricantes definen clases con el mismo nombre y se quieren usar a la vez en un mismo programa. Obviamente para que esto funcione no han de coincidir los nombres los espacios de cada fabricante, y una forma de conseguirlo es dndoles el nombre de la empresa fabricante, o su nombre de dominio en Internet, etc.

Para definir un espacio de nombres se utiliza la siguiente sintaxis: namespace <nombreEspacio> { <tipos> }
Los tipos que se definan en <tipos> pasarn a considerase pertenecientes al espacio de nombres llamado <nombreEspacio>. Aparte de clases esto tipos pueden ser tambin interfaces, estructuras, tipos enumerados y delegados. A continuacin se muestra un ejemplo en el que definimos una clase de nombre ClaseEjemplo perteneciente a un espacio de nombres llamado EspacioEjemplo:

namespace EspacioEjemplo { class ClaseEjemplo { } }

Mtodo: Los mtodos son miembros de las clases y pueden realizar una serie de
acciones, o devolver un valor ya sea que tengan que calcularlo o no. Pueden recibir o no parmetros y pueden devolver o no devolver parmetros.

+ Declaracin: tipoRetorno + NombreDelMtodo + [Parmetros] + { cuerpo } + Ejemplo: int Suma(int numero1, int numero 2) { return numero1 + numero2; } 5 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

+ Uso: [valor de retorno] miMtodo([Parametros]); + Ejemplo: resultado = Suma(numero1,numero2);

Variables
Una variable permite el almacenamiento de datos en la memoria. Es una abstraccin que permite referirnos a una zona de memoria mediante un nombre (su identificador). Todas las variables tienen asociadas un tipo que determina los valores que pueden almacenarse y las operaciones que pueden efectuarse con los datos de ese tipo. Adems, el trmino variable indica que el contenido de esa zona de memoria puede modificarse durante la ejecucin del programa.

Nombres de variables
Los nombres que pueden asignarse a las variables deben regirse por unas normas bsicas: Pueden contener letras, dgitos y el carcter de subrayado (_). No pueden empezar con un nmero: deben comenzar por una letra o con el carcter de subrayado (_). Finalmente, recordar que, como identificador que es, el nombre de una variable es sensible a las maysculas y no pueden coincidir con una palabra reservada a no ser que tenga el prefijo @, aunque no es una prctica recomendada.

Declaracin de variables
Antes de usar una variable se debe declarar. La declaracin de una variable indica al compilador el nombre de la variable y su tipo. Una declaracin permite que se pueda reservar memoria para esa variable y restringir el espacio (cantidad

6 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

de memoria) que requiere, los valores que pueden asignrsele y las operaciones en las que puede intervenir. La sintaxis de una declaracin es sencilla: tan slo hay que especificar el tipo de la variable y el nombre que se le asocia. La declaracin debe concluir con el carcter punto y coma. A cada variable se le debe: Darle un nombre significativo Asociarle un tipo de dato.

Cuando se van a declarar mltiples variables del mismo tipo no es necesario que cada declaracin se haga por separado, pueden agruparse en la misma lnea compartiendo el tipo. No es conveniente abusar de la declaracin mltiple de variables en una lnea. Desde el punto de vista de la legibilidad es preferible, por regla general, que cada variable se declare separadamente y que la declaracin vaya acompaada de un breve comentario.

Se puede declarar e inicializar variables en una sola lnea: Ejemplo int a=1, b=2, c, d=4; No existe ninguna zona predeterminada en el cdigo para la declaracin de variables, la nica restriccin es que la declaracin debe realizarse antes de su uso. No es conveniente abusar de la declaracin mltiple de variables en una lnea. Desde el punto de vista de la legibilidad es preferible, por regla general, que cada variable se declare separadamente y que la declaracin vaya acompaada de un breve comentario 7 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

Una vez declarada una variable debe recibir algn valor (es su misin, despus de todo). Este valor lo puede recibir de algn dispositivo (flujo de entrada) o como resultado de evaluar una expresin. La manera ms simple de proporcionar un valor a una variable es emplear la instruccin de asignacin: Doubl Radio; //Declaracin Radio=10.0; //Inicializacin

Tipos de datos
Los tipos son la base de cualquier programa. Un tipo no es ms que un espacio en el que se almacena una informacin , ya sea nmeros, palabras o la fecha de nacimiento. Los tipos de datos son especialmente importantes en C# porque es un lenguaje con informacin de tipos, esto significa que, en todas las operaciones, el compilador comprueba los tipos para ver su compatibilidad. Las operaciones no validas no se compilan. De esta forma se evitan muchos errores y se consigue una mayor fiabilidad. Los tipos predefinidos de C# son tipos disponibles en la plataforma .NET y que, por comodidad, en C# se emplean usando un alias. En la tabla se presenta detallando su nombre completo, su alias, una breve descripcin, el nmero de bytes que ocupan y el rango de valores. Los tipos de lenguaje C# son divididos en dos grandes categoras: tipos por valor y tipos por referencia. Existe una tercera categora de tipos, disponible solo cuando se usa cdigo no seguro: los punteros.

8 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

Tipos valor La variable contiene un valor El dato se almacena en la pila El dato siempre tiene valor Una asignacin copia el valor
int i = 123; string s = "Hello world";

Tipos referencia La variable contiene una referencia El dato se almacena en el heap El dato puede no tener valor null Una asignacin copia la referencia
// tipo valor // tipo referencia

Tipos Enteros Los tipos que sirven para almacenar nmeros enteros son: byte, sbyte,, short, ushort, int,uint,long y ulong, como se aprecia en la tabla. Probablemente el tipo ms utilizado es el int, pues se utiliza para controlar matrices, indizar arreglos adems de las operaciones normales con enteros. Ejercicio Disear un programa en C# que calcule el numero de segundos en una hora, dia y en un ao.
using System; using System.Collections.Generic;

9 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

using System.Text; namespace Segundos { class CSegundos { static void Main(string[] args) { int minuto = 60;//Segundos por int hora = minuto * 60; int dia = hora * 24; long amo = dia * 365; Console.WriteLine("Segundos en Console.WriteLine("Segundos en Console.WriteLine("Segundos en Console.ReadLine(); } } }

minuto

un hora:{0}", dia); un dia:{0}", hora); un Ao:{0}", amo);

Tipos de coma Flotante Los tipos de coma flotante sirven para representar a nmeros con parte fraccionaria. La representacin por su puesto puede no ser exacta, bien por errores de la maquina, bien porque el numero de decimales que se puede alojar es finito. Existen dos clases de tipos de punto flotante, float y doubl. De los dos, el mas usado es doubl, pues es el valor que devuelven la mayora de las funciones matemticas de la librera base. Ejercicio Disear un programa en C# que calcule la raz cuadrada y el logaritmo de dos.
using System; using System.Collections.Generic; using System.Text; namespace DosFunciones

10 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

{ class CDosFunciones { static void Main(string[] args) { int a = 2; double log2 = Math.Log(2); double raiz2 = Math.Sqrt(2); Console.WriteLine("El logaritmo de dos es {0}", log2); Console.WriteLine("La raiz de dos es {0}", raiz2); Console.ReadLine(); } } }

Si se intenta cambiar el tipo de log2 a otro de menos precisin , como float o int, el compilador protestara. Esto se debe,a que el valor devuelto por Math.Log() es de tipo doubl y si se quiere convertir a float, se pierden datos. El tipo decimal El tipo decimal es un tipo nuevo en el sentido que no tiene equivalencia en C/C++. Es muy parecido a los tipos de coma flotante float y doubl. En la aritmtica de los tipos de coma flotante ordinarios, se puede producir leves errores de redondeo. El tipo decimal elimina estos errores y puede representar correctamente hasta 28 lugares decimales. Esta capacidad para representar valores decimales sin errores de redondeo lo hace especialmente eficaz para clculos monetarios.

El tipo bool El tipo bool sirve para representar los valores verdadero/falso, que en C# se muestra En C#, por ejemplo, una instruccin if solo puede estar gobernada por un valor bool, ayudando a la claridad del cdigo.

11 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

El tipo char El tipo char permite almacenar un carcter en formato Unicode de 16 bits, lo que garantiza que los acentos se ven de forma adecuada y adems permite la representacin de otros alfabetos, como el griego etc, . para introducir un carcter se utilizan comillas simples, de forma de declarar un carcter es: char letra = a ; Se puede declarar un arreglo de char. Char [] cadena = {a, b, c}; PERO PARA ALMACENAR ALGUNAS CADENAS DE CARACTERES, COMO LAS PALABRAS, ES MAS INDICADO USAR EL TIPO string.

Tipos de Datos en C#

Tipo SByte

Descripcin Bytes con signo 8

Bits

Rango de valores -128 - 127 12

Alias sbyte

SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

Byte Int16 UInt16 Int32 UInt32 Int64 UInt64 Single

Bytes sin signo Enteros cortos con signo

8 16

0 - 255 [-32.768, 32.767] [0, 65.535] [-2.147.483.648, 2.147.483.647] [0, 4.294.967.295] [-9.223.372.036.854.775.808, 9.223.372.036.854.775.807] [0-18.446.744.073.709.551.615] [1,510-45 - 3,41038]

byte short ushort int uint long ulong float

Enteros cortos sin 16 signo Enteros normales 32 Enteros normales 32 sin signo Enteros largos 64

Enteros largos sin 64 signo Reales con 7 dgitos de precisin 32

Reales de 15-16 Double dgitos de precisin Reales de 28-29 Decima dgitos de l precisin Boolea Valores lgicos n Char String Object Caracteres Unicode Cadenas de caracteres Cualquier objeto

64

[5,010-324 - 1,710308]

double decima l bool char string object

128 32 16 Variabl e Variabl e

[1,010-28 - 7,91028] true, false ['\u0000', '\uFFFF'] El permitido por la memoria Cualquier objeto

13 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

Secuencia de Escape
Una secuencia de escape sencilla representa una codificacion de caracteres Unicode y esta formada por el carcter \ seguido de otro carcter. Las secuencias validas se describe en la siguiente tabla. Secuencia de escape \' \" \\ \0 \a \b \f \n \r \t \v Nombre del carcter Comilla simple Comilla doble Barra invertida Null Alerta Retroceso Avance de pgina Nueva lnea Retorno de carro Tabulacin horizontal Tabulacin vertical Codificacin Unicode 0x0027 0x0022 0x005C 0x0000 0x0007 0x0008 0x000C 0x000A 0x000D 0x0009 0x000B

Instrucciones de Asignacin en C#
La instruccin de asignacin en C# es. Nombre de la variable= Expresin

Otras instrucciones de Asignacin en C#


Existe una notacin abreviada que combina el operador de asignacin (=) y un operador aritmtico y permite modificar el valor de una variable dada: Sumndole Restndole Multiplicndolo

14 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

La forma general es:


Variable Operador = Expresin

La expresin puede ser otra variable una constante, o una expresin aritmtica ms complicada.
Ejemplos

1. cuenta cuenta + 2 cuenta = cuenta + 2; cuenta+ = 2; 2. total total descuento total = total descuento total - = descuento; 3. bono bono x 2 bono bono* 2; bono * = 2; 4. tiempo tiempo/ factor_prisa tiempo = tiempo/factor_prisa; tiempo / = factor_prisa; 5. cambio cambio mod 100 cambio = cambio % 100; cambio % = 100; 6. cantidad cantidad x (cnt1 + cnt2) cantidad = cantidad *(cnt1+ cnt2); cantidad* = (cnt1+cnt2);

Instrucciones condicionales
Las instrucciones condicionales son instrucciones que permiten ejecutar bloques de instrucciones slo si se da una determinada condicin.

Instruccin if 15 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

La instruccin if permite ejecutar ciertas instrucciones slo si se da una determinada condicin. Su sintaxis de uso es la sintaxis:

if (<condicin>) <InstruccionesIf> else <InstruccionesElse> El significado de esta instruccin es el siguiente: se evala la expresin <condicin>, que ha de devolver un valor lgico. Si es cierta (devuelve true) se ejecutan las <instruccionesIf>, y si es falsa (false) se ejecutan las <instruccionesElse> La rama else es opcional, y si se omite y la condicin es falsa se seguira ejecutando a partir de la instruccin siguiente al if. En realidad, tanto <instruccionesIf> como <instruccionesElse> pueden ser una nica instruccin o un bloque de instrucciones. Instruccin switch
La instruccin switch permite ejecutar unos u otros bloques de instrucciones segn el valor de una cierta expresin. Su estructura es:

switch (<expresin>) { case <valor1>: <bloque1> break case <valor2>: <bloque2> break ... default: <bloqueDefault> }
El significado de esta instruccin es el siguiente: se evala <expresin>. Si su valor es <valor1> se ejecuta el <bloque1>, si es <valor2> se ejecuta <bloque2>, y as para el resto de valores especificados. Si no es igual a ninguno de esos valores y se incluye la rama default, se ejecuta el <bloqueDefault>; pero si no se incluye se pasa directamente a ejecutar la instruccin siguiente al switch.

16 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

Los valores indicados en cada rama del switch han de ser expresiones constantes que produzcan valores de algn tipo bsico entero, de tipo char o de tipo string. Adems, no puede haber ms de una rama con el mismo valor. En realidad, aunque todas las ramas de un switch son opcionales siempre se ha de incluir al menos una. Adems, la rama default se usa cuando el valor tomado no corresponde a ninguno de los case. Break salirse de cada una de las ramas cuando finaliza las instrucciones.

Instrucciones iterativas
Las instrucciones iterativas son instrucciones que permiten ejecutar repetidas veces una instruccin o un bloque de instrucciones mientras se cumpla una condicin. Es decir, permiten definir bucles donde ciertas instrucciones se ejecuten varias veces. A continuacin se describen cules son las instrucciones de este tipo incluidas en C#.

Instruccin while
La instruccin while permite ejecutar un bloque de instrucciones mientras se de una cierta instruccin. Su sintaxis de uso es:

while (<condicin>) { <instrucciones> }


Su significado es el siguiente: Se evala la <condicin> indicada, que ha de producir un valor lgico. Si es cierta (valor lgico true) se ejecutan las <instrucciones> y se repite el proceso de evaluacin de <condicin> y ejecucin de <instrucciones> hasta que deje de serlo. Cuando sea falsa (false) se pasar a ejecutar la instruccin siguiente al while. En realidad <instrucciones> puede ser una nica instruccin o un bloque de instrucciones.

Instruccin do...while
La instruccin do...while es una variante del while que se usa as:

Do { <instrucciones> 17 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

}while(<condicin>); La nica diferencia del significado de do...while respecto al de while es que en vez de evaluar primero la condicin y ejecutar <instrucciones> slo si es cierta, do...while primero ejecuta las <instrucciones> y luego mira la <condicin> para ver si se ha de repetir la ejecucin de las mismas. .
do ... while est especialmente destinado para los casos en los que haya que ejecutar las <instrucciones> al menos una vez an cuando la condicin sea falsa desde el principio.

Instruccin for
La instruccin for es una variante de while que permite reducir el cdigo necesario para escribir los tipos de bucles ms comnmente usados en programacin. Su sintaxis es:

for (<inicializacin>; <condicin>; <modificacin>) { <instrucciones> }


El significado de esta instruccin es el siguiente: se ejecutan las instrucciones de <inicializacin>, que suelen usarse para definir e inicializar variables que luego se usarn en <instrucciones>. Luego se evala <condicin>, y si es falsa se contina ejecutando por la instruccin siguiente al for; mientras que si es cierta se ejecutan las <instrucciones> indicadas, luego se ejecutan las instrucciones de <modificacin> -que como su nombre indica suelen usarse para modificar los valores de variables que se usen en <instrucciones>- y luego se reevala <condicin> repitindose el proceso hasta que sta ltima deje de ser cierta.

Operadores y expresiones Un operador est formado por uno o ms caracteres y permite realizar una determinada operacin entre uno o ms datos y produce un resultado. Es una manera simblica de expresar una operacin sobre unos operandos. C# proporciona un conjunto fijo, suficiente y completo de operadores. El significado de cada operador est perfectamente definido para los tipos predefinidos, aunque algunos de ellos pueden sobrecargarse, es decir, cambiar su significado al aplicarlos a un tipo definido por el usuario.

18 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

C# dispone de operadores aritmticos, lgicos, relacionales, de manipulacin de bits, asignacin, para acceso a tablas y objetos, etc. Los operadores pueden presentarse por diferentes criterios, por ejemplo, por su funcionalidad: Categoras Aritmticos Lgicos (booleanos y bit a bit) Concatenacin de cadenas Incremento y decremento Desplazamiento Relacionales Asignacin Acceso a miembros Acceso por ndices Conversin de tipos explcita Conditional Creacin de objetos Informacin de tipos Control de excepciones desbordamiento Direccionamiento indirecto direccin Operadores +-*/% & | ^ ! ~ && || + ++ -<< >> == != < > <= >= = += -= *= /= %= &= |= ^= <<= >>= . [] () ?: New as is sizeof typeof de y checked unchecked * -> [] &

Los operadores aritmticos de C# son los que se emplean comnmente en otros lenguajes: + (suma), - (resta), * (multiplicacin), / (divisin) y % (mdulo o resto de la divisin). Son operadores binarios y se colocan entre los argumentos sobre los que se aplican, proporcionando un resultado numrico (Por ejemplo, 7+3.5, 66 % 4). Los operadores lgicos proporcionan un resultado de tipo lgico (bool) y los operadores a nivel de bit actan sobre la representacin interna de sus operandos (de tipos enteros) y proporcionan resultados de tipo numrico.

19 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

Los operadores binarios son: & (operacin Y lgica entre argumentos lgicos u operacin Y bit a bit entre operandos numricos), | (operacin O, lgica bit a bit, dependiendo del tipo de los argumentos) , ^ (O exclusivo, lgico bit a bit), && (Y lgico, que evala el segundo operando solo cuando es necesario) y || (O lgico, que evala el segundo operando solo cuando es necesario). Los operadores unarios son: ! (negacin o complemento de un argumento lgico) y ~ (complemento bit a bit de un argumento numrico). El operador + para la concatenacin de cadenas es un operador binario. Cuando al menos uno de los operandos es de tipo string este operador acta uniendo las representaciones de tipo string de los operandos. Operadores de incremento y decremento. El operador de incremento (++) incrementa su operando en 1 mientras que el de decremento (--) decrementa su operando en 1. Puede aparecer antes de su operando: ++v (incremento prefijo) o despus: v++ (incremento postfijo). El incremento prefijo hace que el resultado sea el valor del operando despus de haber sido incrementado y el postfijo hace que el resultado sea valor del operando antes de haber sido incrementado. Los tipos numricos y de enumeracin poseen operadores de incremento y decremento predefinidos. Los operadores de desplazamiento son operadores binarios. Producen un desplazamiento a nivel de bits de la representacin interna del primer operando (de un tipo entero), a la izquierda (<<) o a la derecha (>>) el nmero de bits especificado por su segundo operando. Los operadores relacionales proporcionan un resultado lgico, dependiendo de si sus argumentos son iguales (==), diferentes (!=), o del orden relativo entre ellos (<, >, <= y >=). La asignacin simple (=) almacena el valor del operando situado a su derecha en una variable (posicin de memoria) indicada por el operando situado a su izquierda.

20 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

Los operandos deben ser del mismo tipo o el operando de la derecha se debe poder convertir implcitamente al tipo del operando de la izquierda).

E/S bsica
Las operaciones de entrada y salida tienen como objetivo permitir que el usuario pueda introducir informacin al programa operaciones de entrada y que pueda obtener informacin de ste operaciones de salida. En definitiva, tratan de la comunicacin entre el usuario y el programa. La manera ms simple de comunicacin es mediante la consola. La consola ha sido el modo tradicional de comunicacin entre los programas y el usuario por su simplicidad. Las aplicaciones basadas en ventanas resultan mucho ms atractivas y cmodas para el usuario y es ste, sin duda, el tipo de comunicacin que se debe emplear para productos finales. Los programas que no requieran mucha interaccin con el usuario, se construyen y se ponen en explotacin mucho ms rpidamente si se utiliza la consola como medio de comunicacin.

Aplicaciones en modo consola


Estas aplicaciones emplean la consola para representar las secuencias de entrada, salida (y error) estndar. Una aplicacin de consola se crea en Visual Studio .NET seleccionando Archivo, Nuevo y Proyecto. Cuando aparece la ventana Nuevo proyecto se selecciona Proyectos de Visual C# y Aplicacin de consola:

21 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

Entradas y salida por consola


Salidas Console.WriteLine(Segundos en un dia:{0}, Dia); Console.WriteLine(Segundos en un dia: + Dia); El mtodo Cpnsole.WriteLine imprime los resultados por la consola. El identificador {0} dentro de la cadena de texto indica que se sustituye {0} por el primer argumento. Si hubiera ms de un argumento, se seguira con {1}, y as sucesivamente.

22 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

Para entrar datos Console.ReadLine (): Lee el valor de Variable como una lnea de texto.. Convert .ToInt32 () es el mtodo que permite convertir a entero (int) un valor ledo. Convert.ToDouble() Es el mtodo que permite convertir a real un valor leido Funciones Math.Log() : Encuentra el logaritmo Math.Sqrt(): Encuentra la raiz cuadrada % Devuelve el residuo

EJERCICIOS RESUELTOS

23 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

Para cada ejercicio que se plantea hacer anlisis del problema definir variables y construir algoritmo antes de programar en C#.
Ejercicio 1 Disear un programa en C# que muestre el siguiente mensaje en la consola Bienvenidos a C#..
using System; using System.Collections.Generic; using System.Text; namespace Saludo { class CBienVenida { static void Main(string[] args) { Console.WriteLine("Bienvenidos a C#"); Console.ReadLine(); //WriteLine y ReadLine son metodos } } }

La lnea using System declara que se va a usar el espacio de nombres (namespace) llamado System, evita escribir el prefijo System cada vez que se use un elemento de ese espacio de nombres. Por ejemplo, Console es una clase del espacio de nombres System; en lugar de escribir su nombre completo (System.Console) podemos escribir solamente Console al haber declarado que se va a emplear el espacio de nombres System. Cuando este programa se compile y se proceda a su ejecucin, el primera funcin (estrictamente hablando, mtodo) en ejecutarse ser Main. La funcin Main () tiene los siguientes prototipos vlidos: Si la funcin no devuelve ningn valor, puede usarse: static void Main( ) 24 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

static void Main(string [] args) La diferencia est en la posibilidad de suministrar argumentos en la llamada a la ejecucin del programa. Main () procesa los argumentos en la llamada a la ejecucin del programa tomndolos de la lista de cadenas. Si la funcin devuelve un valor al proceso que invoca la ejecucin del programa, el valor debe ser entero (int) y, como en el caso anterior, puede usarse: static int Main( ) static int Main(string [] args) La convencin es que el valor 0 indica que el programa termina correctamente. En cuanto a las instrucciones que efectivamente se ejecutan, el mtodo Main() llama a los mtodos WriteLine() y ReadLine() junto con sus variantes Write y Read de la clase Console. El acceso a la consola lo facilita la clase Console, declarada en el espacio de nombres System. Esa clase proporciona la compatibilidad bsica para aplicaciones que leen y escriben caracteres en la consola. No es necesario realizar ninguna accin para poder obtener datos de la consola a partir de la entrada estndar (teclado) o presentarlos en la salida estndar (consola) ya que estos flujos (junto con el del error estndar) se asocian a la consola de manera automtica Aunque la ltima instruccin pueda parecer innecesaria, de no escribirla se mostrara la cadena Bienvenidos a C! y se cerrara inmediatamente la consola, por lo que no podramos contemplar el resultado de la ejecucin. La ltima instruccin detiene la ejecucin del programa hasta que se introduce una cadena (pulsar ENTER es suficiente) y a continuacin termina la ejecucin del programa y se cierra la consola. Ejercicio 2 Disear un programa en C# que permita entrar su nombre y luego mostrarlo en la consola.

25 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

using System; using System.Collections.Generic; using System.Text; namespace Nombre { class IngresarNombre { static int Main(string[] args) { Console.Write("Introduzca su nombre: "); string nombre = Console.ReadLine();

// 1 // 2

Console.WriteLine("Su nombre es: " + nombre); // 3 Console.ReadLine(); return 0; } } }

La instruccin 1 muestra la cadena Introduzca su nombre: pero no avanza a la siguiente lnea de la consola, por lo que cuando se ejecuta la instruccin 2 lo que escribe el usuario se muestra a continuacin, en la misma lnea. La cadena que escribe el usuario se guarda en la variable nombre y se elimina del buffer de entrada el terminador de lnea. Cuando se valida la entrada (al pulsar ENTER) se avanza a la siguiente lnea. La instruccin 3 muestra una cadena, resultado de concatenar un literal y la cadena introducida por el usuario. Finalmente, la instruccin 4 es necesaria para detener la ejecucin del programa (realmente, la finalizacin del mismo) hasta que el usuario pulse ENTER. Observar que aunque el mtodo Readline devuelva una cadena, ste valor devuelto no es usado. En la siguiente figura mostramos dos ejemplos de ejecucin.

26 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

Ejercicio 3
using System; using System.Collections.Generic; using System.Text; namespace ComparaString { class CComparar { static void Main(string[] args) { string mivariable = "C# es Programacion Orientada a Objetos"; if (mivariable.Equals("C# es Programacion Orientada a Objetos")) { Console.WriteLine("Cadenas Iguales..."); } else { Console.WriteLine("Cadenas diferentes.. "); } Console.ReadLine(); } } }

using System; using System.Collections.Generic;

27 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

using System.Text; namespace ComparaString2 { class CComparar { static void Main(string[] args) { string mivariable = "C# es Programacion Orientada a Objetos"; if (string.Equals(mivariable,"C# es Programacion Orientada a Objetos")) { Console.WriteLine("Cadenas Iguales..."); } else { Console.WriteLine("Cadenas diferentes.. "); } Console.ReadLine(); } } }

Sobre las variables de tipo string se puede trabajar forma muy sencilla. Por ejemplo, se puede aplicar el operador "==" para comparar dos strings, de modo que es equivalente a:
mivariable.Equals("C# es Programacion Orientada a Objetos")) string.Equals(mivariable,"C# es Programacion Orientada a Objetos"))

Ejercicio 4 Disear un programa en C# que lea dos variables de tipo string muestre si son iguales y el valor de las dos variables.
using System; using System.Collections.Generic; using System.Text; namespace DosString { class CComparar

28 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

{ static void Main(string[] args) { string mivariable1,mivariable2; Console.WriteLine("Entrar Cadena1:"); mivariable1=Console.ReadLine(); Console.WriteLine("Entrar Cadena2:"); mivariable2=Console.ReadLine(); if (string.Equals(mivariable1, mivariable2)) { Console.WriteLine("Cadenas Iguales..."); } else { Console.WriteLine("Cadenas diferentes.. "); } Console.ReadLine(); } } }

Ejercicio 5 Disear un programa en C# que permita concatenar tres variables de tipo string que estn inicializadas en los siguientes valores: Mivariable1=C# En: Mivariable2=Modo Consola, Mivariable3=Modo Windows, Mivariable4=EN LA WEB
using System; using System.Collections.Generic; using System.Text; namespace CocatenarString2 { class Program {

29 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

static void Main(string[] args) { string mivariable1=string.Empty, mivariable2=string.Empty; string mivariable3 = string.Empty, mivariable4 = string.Empty; string mivariable5=string.Empty; mivariable1 = "\nC# En:\n"; mivariable2 = "Modo Consola\n"; mivariable3 = "Modo Windows\n"; mivariable4 = "EN LA WEB\n"; mivariable5 = string.Concat(mivariable1,mivariable2,mivariable3,mivariable4); Console.WriteLine("El resultado de las variables concatenadas es:" + mivariable5); Console.ReadLine(); } } }

Es muy sencillo realizar operaciones de concatenacin entre strings, pues no hay ms que aplicar el operador "+". Tambin se puede utilizar el mtodo Concat de la clase String.
mivariable5= string.Concat(mivariable1,mivariable2,mivariable3,mivariable4) observar, se han inicializado las cinco variables string con una cadena vaca string.Empty, =

Ejercicio 6 Disear un programa en C# que permita leer un string y averiguar cuntos caracteres 's' hay en la variable string. Ejercicio 7 Disear un algoritmo que lea el valor de dos nmeros enteros y muestre su suma. Informacin de entrada: a, b 30 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

Informacin de salida: suma


Inicio Enteros a, b,suma int a,b,suma; Muestre Entrar el valor de A: Console.Write (Entrar el valor de A:); Leer a a = Convert.ToInt32 (Console.ReadLine()); Muestre Entrar el valor de B: Console.Writel(Entrar el valor de B:); Leer b b= Convert.ToInt32 (Console.ReadLine()); Suma = a+b suma=a+b; Mustre Resultado de la suma de A+B:, Suma Console.write (resultado de la suma de A+B: +suma); Fin(inicio)

using System; using System.Collections.Generic; using System.Text; namespace SumadosNum { class CSumar { static void Main(string[] args) { int a,b,suma; Console.Write("Entrar el valor de A:"); a = Convert.ToInt32(Console.ReadLine()); Console.Write("Entrar el valor de B:"); b= Convert.ToInt32(Console.ReadLine()); suma=a+b; Console.Write("Resultado de la suma de A+B = "+suma); Console.ReadLine(); } } }

Console.ReadLine (): Lee el valor de la variable a, b como una lnea de texto, se convierte a entero para poderse sumar. Console es la clase y ReadLine() es el mtodo. Convert es la clase y ToInt32 () es el mtodo que permite convertir a entero (int) . . Ejercicio 8 Disear un programa en C# que inicialice la variable TuEdad en 20, la varible TuNombre en Jose. De qu tipo son cada variable?
using System; using System.Collections.Generic;

31 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

using System.Text; namespace EdadNombre { class CEdadNombre { static void Main(string[] args) { int TuEdad = 20; string TuNombre = "Jose"; Console.WriteLine("Tienes {0} aos, {1}.", TuEdad, TuNombre); // Escribe: Tienes 20 aos, Jose. Console.ReadLine(); } } }

Ejercicio 9 Disear un programa C# que calcule y muestra el rea de un crculo de radio 10.

using System; using System.Collections.Generic; using System.Text; namespace CalculoArea { class CCalculoArea { static void Main(string[] args) { float Radio = 10.0F; float Area = Area = 2 * 3.1416F * Radio * Radio; Console.WriteLine(Area); Console.ReadLine(); } } }

32 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

using System; using System.Collections.Generic; using System.Text; namespace CalculoArea2 { class CCalculoArea2 { static void Main(string[] args) { const float PI = 3.1416F; float Radio = 10.0F; float Area = 2 * PI * Radio * Radio; Console.WriteLine(Area); Console.ReadLine(); } } } using System; using System.Collections.Generic; using System.Text; namespace AreaLeer { class CArea { static void Main(string[] args) { double Radio ; double Area ; Console.Write("Entrar Radio:"); Radio = Convert.ToDouble(Console.ReadLine()); Area = 2 * 3.1416F * Radio * Radio; Console.WriteLine(Area); Console.ReadLine();

33 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

} } }

Ejercicio 10 Digitar el siguiente programa y explicar que hace el mtodo ReadKey() de la clase Console.
using System;

class Secuencia { static void Main(string[] args) { Console.Write("\t\t\"LENGUAJE DE PROGRAMACION C#\"\n"); Console.ReadKey(); } } Ejemplo 11.

Disear la salida de la siguiente aplicacion en C#.


using System;

class Secuencia { static void Main(string[] args) { Console.Write("\n\t\t\"LENGUAJE DE PROGRAMACION C#\"\n\n"); Console.Write(" \n CON C# SE APRENDE LA FILOSOFIA DE POO EN:\n"); Console.Write("\t\t APLICACIONES CONSOLA\n"); Console.Write("\t\t APLICACIONES WINDOWS\n"); Console.Write(\t\t OJO TAMBIEN PROYECTOS WEB\n); Console.ReadKey(); } }

Ejercicio 12

34 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

Aplicaciones Windows
Una aplicacin basada en ventanas aplicacin Windows, utiliza ventanas y componentes especficos para interactuar con el usuario. Las peticiones de datos se realizan con componentes de entrada de texto por ejemplo, con un TextBox o mediante la seleccin en una lista de posibilidades por ejemplo, con un ComboBox. Las salidas pueden realizarse de mltiples maneras, empleando componentes Label, ventanas de mensajes MessageBox, etc. Una aplicacin de ventanas se crea fcilmente en Visual Studio .NET seleccionando Archivo, Nuevo y Proyecto. En la ventana Nuevo proyecto se selecciona Proyectos de Visual C# y Aplicacin para Windows. Disear una aplicacin en C# modo Windows de forma que cuando el usuario haga clic sobre el botn Saludo aparezca un ventana con el mensaje Hola, mundo|; Y Hacer clic en el botn terminar para salir de la ejecucin de la aplicacin. Cuando se hace clic sobre el botn titulado Saludo, Basta con ejecutar este cdigo cada vez que se hace clic en dicho botn: MessageBox.Show ("Hola, mundo!", "Un saludo tpico"); (en realidad, System.Windows.Forms.MessageBox.Show (...);)

Una aplicacin de ventanas se crea fcilmente en Visual Studio .NET seleccionando Archivo, Nuevo y Proyecto. En la ventana Nuevo proyecto se selecciona Proyectos de Visual C# y Aplicacin para Windows. Pasos

35 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

Entrar al Visual Studio.Net, seleccionar Archivo, Nuevo Proyecto. Ingresar saludo como nombre de la aplicacin en el campo Nombre. Hacer clic en Aceptar. Se crear un nuevo proyecto de aplicacin para Windows en una nueva carpeta. Tambin se mostrar un formulario en blanco en la ventana Formulario de Windows. A mano izquierda se encuentra la caja de herramientas de donde se arrastra los controles para crear la interfaz de usuario.

Disear la interfaz para la aplicacin agregando botones, al formulario. El tamao del formulario es grande para la aplicacin, as que se necesita hacer ms pequeo. Hacer clic en la esquina inferior derecha del formulario en blanco. El cursor cambiar a una flecha doble. Arrastrar la esquina del formulario para achiquitarlo. El ttulo del formulario simplemente dice Form1, pero se puede cambiar. De hecho, el ttulo es una de las numerosas propiedades que se puede configurar para un formulario. Podemos ver y editar cada propiedad en la ventana de Propiedades. Hacer clic en el formulario para activarlo; luego hacer clic en Ver, Ventana de Propiedades. La ventana de Propiedades se abrir y mostrar todas las

36 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

propiedades asociadas con un formulario. La propiedad Text contiene el texto que se muestra en la barra de ttulo. Cambiar el ttulo del Formulario de Windows de Form1 seleccionando la propiedad Text, cambiar el valor de la columna junto a esta a Saludos. Presionar Enter despus de haber cambiado el texto, y el ttulo del formulario reflejar los cambios que se ha realizado. Darle nombre al formulario, seleccionar la propiedad Name, cambiar el valor de la columna junto a esta a frmSaludos. El Cuadro de Herramientas muestra todos los controles que se pueden agregar a un formulario. Los controles se agrupan en categoras, como Controles Comunes, Mens y Barras de herramientas, y Cuadros de dilogo. Arrastrar dos controles button desde el cuadro de herramientas hasta el formulario y colocarlos como lo muestra la figura. Colocar un titulo sobre el primer botn seleccionando la propiedad Text, y cambiando el valor de la columna junto a esta a Saludo. Presionar Enter despus de haber cambiado el texto, y en el botn se reflejar los cambios que se ha realizado. Cambiar el nombre al botn seleccionando la propiedad Name, y cambiar el valor de la columna junto a esta a btnSaludo. Colocar un titulo sobre el segundo botn seleccionando la propiedad Text, y cambiando el valor de la columna junto a esta a Terminar. Presionar Enter despus de haber cambiado el texto, en el botn se reflejar los cambios que se ha realizado. Cambiar el nombre al botn, seleccionando la propiedad Name, y cambiar el valor de la columna junto a esta a btnTerminar. Si se hace clic sobre el botn se puede arrastrar este sobre el formulario, al sitio que se desee igualmente se puede modificar su tamao y color. Agregar un evento al control Saludo. 1. Haga doble clic sobre el botn. 2. Ya abierto el editor de cdigo, inserte el siguiente cdigo C# dentro del evento . btnSaludo_Click

37 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

private void btnSaludo_Click(object sender, EventArgs e) { MessageBox.Show("Hola, mundo!", "Un saludo tpico"); }

El primer parmetro del mtodo Show es el mensaje que se desea mostrar y el segundo es el ttulo de la ventana. Agregar un evento al control Terminar 1. Haga doble clic sobre el botn Terminar. 2. Ya abierto el editor de cdigo, inserte el siguiente cdigo C# dentro del evento btnTerminar_Click
private void btnTerminar_Click(object sender, EventArgs e) { Close(); }

El controlador de la orden Terminar simplemente invoca al mtodo Close del formulario y lo cierra, finalizando la aplicacin. Probar la aplicacin. En el men Depurar haga clic en iniciar o F5 para correr la aplicacin.

Ejercicio 13 Disear una aplicacin en C# modo Windows de forma que se pueda pedir el nombre del usuario y mostrar el nombre entrado al hacer click en el botn saludo.

38 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

En un componente TextBox se lee el nombre y se muestra empleando un componente Label cuando se hace clic en el botn titulado Saludo Entrar al Visual Studio.Net, seleccionar Archivo, Nuevo Proyecto. Ingresar saludo2 como nombre de la aplicacin en el campo Nombre. Hacer clic en Aceptar. Se crear un nuevo proyecto de aplicacin para Windows en una nueva carpeta. Tambin se mostrar un formulario en blanco en la ventana Formulario de Windows. Disear la interfaz para la aplicacin agregando botones, al formulario. El tamao del formulario es grande para la aplicacin, as que se necesita hacer ms pequeo. Hacer clic en la esquina inferior derecha del formulario en blanco. El cursor cambiar a una flecha doble. Arrastrar la esquina del formulario para achiquitarlo. Cambiar el ttulo del formulario. Hacer clic en el formulario para activarlo; luego hacer clic en Ver, Ventana de Propiedades. Seleccionar la propiedad Text, y cambiando el valor de la columna junto a esta a Saludo. Presionar Enter despus de haber cambiado el texto, y el ttulo del formulario reflejar los cambios que se ha realizado. Darle nombre al formulario, seleccionar la propiedad Name, cambiar el valor de la columna junto a esta a frmSaludos2.

39 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

Arrastrar el control label desde el cuadro de herramientas hasta el formulario y colocarlos como lo muestra la figura. Colocar texto sobre el label seleccionando la propiedad Text, y cambiando el valor de la columna junto a esta a Nombre. Presionar Enter despus de haber cambiado el texto, en el label se reflejar los cambios que se ha realizado. Darle nombre al label, seleccionar la propiedad Name, cambiar el valor de la columna junto a esta a lblNombre. Arrastrar el control TextBox desde el cuadro de herramientas hasta el formulario y colocarlos como lo muestra la figura. Cambiar el nombre al TextBox seleccionando la propiedad Name, y cambiar el valor de la columna junto a esta a txtNombre. Arrastrar dos controles button desde el cuadro de herramientas hasta el formulario y colocarlos como lo muestra la figura. Colocar un titulo sobre el primer botn , seleccionando la propiedad Text, y cambiar el valor de la columna junto a esta a Saludo. Presionar Enter despus de haber cambiado el texto, y en el botn se reflejar los cambios que se ha realizado. Cambiar el nombre al button seleccionando la propiedad Name, y cambiando el valor de la columna junto a esta a btnSaludo. Colocar un titulo sobre el segundo botn seleccionando la propiedad Text, y cambiar el valor de la columna junto a esta a Terminar. Presionar Enter despus de haber cambiado el texto, y en el botn del formulario se reflejar los cambios que se ha realizado. Cambiar el nombre al segundo button seleccionando la propiedad Name, y cambiar el valor de la columna junto a esta a btnTerminar. Arrastrar el control label desde el cuadro de herramientas hasta el formulario y colocarlos como lo muestra la figura. Colocar texto sobre el label seleccionando la propiedad Text, y cambiando el valor de la columna junto a esta a Su nombre es: Presionar Enter despus de haber cambiado el texto, y en el botn del label se reflejar los cambios que se ha realizado. Darle nombre al label, seleccionar la propiedad Name, cambiar el valor de la columna junto a esta a lblMensaje. Arrastrar otro control label desde el cuadro de herramientas hasta el formulario y colocarlos como lo muestra la figura despus del anterior label.

40 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

Borrar el texto sobre el label seleccionando la propiedad Text, y borrar lo que hay en la columna . Presionar Enter despus de haber borrado el texto, y en el botn del label se reflejar los cambios que se ha realizado. Darle nombre al label, seleccionando la propiedad Name, cambiar el valor de la columna junto a esta a lblNombreUsuario. Agregar un evento al control Saludo. 1. Haga doble clic sobre el botn . 2. Ya abierto el editor de cdigo, inserte el siguiente cdigo C# dentro del evento . btnSaludo_Click
private void btnSaludo_Click(object sender, EventArgs e) { lblNombreUsuario.Text = txtNombre.Text; }

En el objeto txtNombre en la propiedad Text queda guardado el nombre del usuario el cual se asigna al objeto label lblNombreUsuario en la propiedad Text y se despliga en el, en la ejecucion de la aplicacin. Agregar un evento al control Terminar 1. Haga doble clic sobre el botn. 2. Ya abierto el editor de cdigo, inserte el siguiente cdigo C# dentro del evento btnTerminar_Click

private void btnTerminar_Click(object sender, EventArgs e) { Close(); }

El controlador de la orden Terminar simplemente invoca al mtodo Close() del formulario y lo cierra, finalizando la aplicacin. Probar la aplicacin. En el men Depurar haga clic en iniciar o F5 para correr la aplicacin. 41 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

Ejercicio 14. Explicar cual es el efecto de la secuencia de escape \t y \n. Quitar esta secuencia de la aplicacin siguiente y ejecutar nuevamenta el programa . Explicar que es lo que hace el metodo Write using System;

class Secuencia { static void Main(string[] args) { Console.Write("\t\t\"LENGUAJE DE PROGRAMACION C#\"\n"); Console.ReadKey(); } } Ejercicio 15. La 5 instrucciones que se realizan con el metodo Write se podria realizar en una sola instruccin? using System;

class Secuencia { static void Main(string[] args) { Console.Write("\n\t\t\"LENGUAJE DE PROGRAMACION C#\"\n\n"); Console.Write(" \n CON C# SE APRENDE LA FILOSOFIA DE POO EN:\n"); Console.Write("\t\t APLICACIONES CONSOLA\n"); Console.Write("\t\t APLICACIONES WINDOWS\n"); Console.Write(\t\t OJO TAMBIEN PROYECTOS WEB\n); Console.ReadKey(); } }

Ejercicio 16 Hacer un algoritmo que, dado dos valores enteros A y B, escriba un mensaje diciendo si A es mayor, A es menor.
Inicio Entero a, b Muestre Entrar el valor de A:

42 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

Leer a Muestre entrar el valor de B; Leer b Si (a>b) Muestre A es mayor que B SiNo Muestre A es menor que B Fin(si)

using System; //programa en C#: dado dos valores enteros A y B, //Escribe un mensaje diciendo si A es mayor, A es menor. class DosMayor { static void Main(string[] args) { int a, b; Console.Write("Entrar el valor de A:"); a = Convert.ToInt32(Console.ReadLine()); Console.Write("Entrar el valor de B:"); b = Convert.ToInt32(Console.ReadLine()); if (a > b) Console.WriteLine("\t\tA es mayor que B"); else onsole.WriteLine("\t\tA es menor que B"); Console.ReadKey(); } }
Ejercicio 17 Hacer un algoritmo que, dados dos valores numricos A y B, escriba un mensaje diciendo si A es mayor, menor o igual a B.

Inicio Entero a, b Muestre Entrar el valor de A: Leer a Muestre entrar el valor de B; Leer b Si (a>b) Muestre A es mayor que B SiNo Si (a=b) Muestre A es igual B SiNo Muestre A es menor que B

43 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

Fin(si) Fin(si) using System; //Programa en C# que, dados dos valores numericos A y B, escribe //un mensaje diciendo si A es mayor, menor o igual a B

class Dosmayor2 { static void Main(string[] args) { int a, b; Console.Write("Entrar el valor de A:"); a = Convert.ToInt32(Console.ReadLine()); Console.Write("Entrar el valor de B:"); b = Convert.ToInt32(Console.ReadLine()); if (a > b) Console.Write("A ES MAYOR QUE B\n"); else { if (a == b) Console.Write("A es igual a B"); else Console.Write("A es menor que B"); } Console.ReadKey(); } }

Ejercicio 18 Escribir las estructuras que calculen y muestren el valor de X, de acuerdo con lo siguiente: X=0 si Y<A y (A<B<C) X=1 si A<=Y<B X=2 si B<=Y<C X=3 si C<=Y X=4 si no se cumple ninguna de las condiciones anteriores Disear el algoritmo. 44 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

Inicio Entero a, b,c,y,x Muestre Entrar el valor de A: Leer a Muestre Entrar el valor de B; Leer b Muestre Entrar el valor de C; Leer c Muestre Entrar el valor de Y; Leer y Si 1(y<a)and ((a<b) and(b<c)) x=0 SiNo Si 2( a<=y) and (y<b) x=1 SiNo Si3 (b<=y )and (y<c) x=2 siNo Si4(c<=y) x=3 SiNo x=4 Fin(Si4) Fin(Si3) Fin(Si2) Fin(Si1) Fin(Inicio)

using System; //Programa en C# que calcula y muestra //el valor de X, de acuerdo con lo siguiente: //X=0 si Y<A y (A<B<C) //X=1 si A<=Y<B //X=2 si B<=Y<C //X=3 si C<=Y //X=4 si no se cumple ninguna de las condiciones anteriores.

class CCondicional {

45 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

static void Main(string[] args) { int a,b,y,c,x; Console.Write("Entrar el valor de Y:"); y=Convert.ToInt32(Console.ReadLine()); Console.Write("Entrar el valor de A:"); a=Convert.ToInt32(Console.ReadLine()); Console.Write("Entrar el valor de B:"); b=Convert.ToInt32(Console.ReadLine()); Console.Write("Entrar el valor de C:"); c=Convert.ToInt32(Console.ReadLine()); if((y<a)&&((a<b)&&(b<c))) x=0; else { if((a<=y)&&(y<b)) x=1; else { if((b<=y)&&(y<c)) x=2; else { if(c<=y) x=3; else x=4; } } } Console.WriteLine("valor de X es:"+x); Console.ReadKey(); } }

Ejercicio 19: Disear un algoritmo que encuentre la suma de los primeros N numeros enteros.
Inicio Entero numero,suma,cont Cont0 Suma0 muestre Entrar N: leer numero

46 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

Mientras (cont<numero) cont cont + 1 suma suma + cont Fin(Mientras) Muestre La suma es: , suma Fin(Inicio) using System; //Programa en C# que encuentra la suma de los primeros //N numeros enteros. class CSumaNnumeros { static void Main(string[] args) { int numero, suma = 0, cont = 0; Console.Write("Entrar N:"); numero = Convert.ToInt32(Console.ReadLine()); while (cont < numero) { cont = cont + 1; suma = suma + cont; } Console.Write("La suma es:" + suma); Console.ReadKey(); } }

Ejercicio 20 Cierta Universidad para liquidar el pago de matriculas de N estudiantes exige los siguientes datos: Identificacion,Patrimonio,estrato Social.La universidad cobra un valor constante para cada estudiante de $50.000. Si el patrimonio es mayor que $2000000 y el estrato superior a 3, se le incrementa un porcentaje del 3% sobre elpatrimonio. Hacer el algoritmo y el programa en C# que muestre: Identificacion,,pago de matricula.

Inicio iden,estrato,N,cont: Entero PagoMatricula, Patrimonio: Real

47 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

cont0 Muestre Ingresar numero de estudiantes: leer N Mientras (cont<N) contcont+1 muestre Ingresar Identificacion:") leer iden Muestre ingresar estrato social: leer estrato Muestre Ingresar patrimonio: leer Patrimonio PagoMatricula = 50000 Si(Patrimonio >2000000) and (estrato>3) PagomatriculaPagoMatricula + 0.03*Patrimonio Fin(Si) Muestre El estudiante con identificacion: , iden, Debe pagar:, PagoMatricula Fin(Mientras) Fin(inicio)

using System; //cierta Universidad para liquidar el pago de matriculas de N //estudiantes exige los siguientes datos: //Identificacion,Patrimonio,estrato Social. //La universidad cobra un valor constante para cada estudiante de //$50.000. Si el patrimonio es mayor que $2000000 y el estrato //superior a 3, se le incrementa un porcentaje del 3% sobre el //patrimonio. Programa en C# que muestra: //Numero de inscripcion,Cedula,pago de matricula Class CLiquidacion { static void Main(string[] args) { int iden, estrato, N, cont; cont = 0; double PagoMatricula, Patrimonio; Console.Write("Ingresar Numero de estudiantes:"); N = Convert.ToInt32(Console.ReadLine()); while (cont < N) { cont = cont + 1; Console.Write("\nIngresar Identificacion:"); iden = Convert.ToInt32(Console.ReadLine()); Console.Write("Ingresar Estrato Social:"); estrato = Convert.ToInt32(Console.ReadLine()); Console.Write("Ingresar patrimonio:"); Patrimonio = Convert.ToDouble(Console.ReadLine()); PagoMatricula = 50000;

48 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

if ((Patrimonio > 2000000) && (estrato > 3)) { PagoMatricula = PagoMatricula + 0.03 * Patrimonio; } Console.Write("\nEl estudiante con Identificacion:" + iden + "\tDebe pagar:" + PagoMatricula); Console.ReadKey(); //Console.Clear(); } } }

Ejercicio 21 Disear un programa en C# que permita leer un numero no conocido de datos y encontrar la suma. Este es un esquema Cualitativo o Cuantitativo explicar la respuesta..?
using System; using System.Collections.Generic; using System.Text; namespace Caracter { class CCaracter { static void Main(string[] args) { string res; int cont = 0, Num, suma = 0; //res = "s"; do { Console.Write("Leer Valor del Numero:"); Num = Convert.ToInt32(Console.ReadLine()); suma = suma + Num; cont = cont + 1; Console.Write("Entrar s para continuar y cualquier otra tecla para terminar: "); res = Console.ReadLine(); } while (res == "s"); Console.WriteLine("Numeros Leidos:+cont+\tSuma de los numeros{1} "+ suma); Console.ReadKey();

49 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

} } }

Ejemplo 22 Ciclo para Una secretaria olvido la clave de dos digitos para entrar al sistema, disear el algoritmo y el programa en C# que le permita ver todas las posibles combinaciones de la clave, para tratar de recordar la clave.

Inicio I,j:Enteros I=0 J=0 Mientras1(i<=o) J=0 Mientras2(j<=9) Muestre Combinaciones:,i,j Jj+1 Fin(Mientras2) ii+1 Fin(Mientras1) Fin(Inicio)

Inicio I,j:Enteros para1 i0,9,1 para2 j0,9,1 Muestre Combinaciones:,i,j Fin(para2) Fin(para1) Fin(inicio)

using System; class CSecretaria { static void Main(string[] args) { int i=0, j=0;

50 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

while( i <= 9) { j = 0; while (j <= 9) { Console.WriteLine("Combinaciones:" + i + j); Console.ReadKey(); j += 1;//j=j+1; } i += 1;//i=i+1; } } }

using System; class CSecretaria { static void Main(string[] args) { int i, j; for (i = 0; i <= 9; i++) { for (j = 0; j <= 9; j++) { Console.WriteLine("Combinaciones:" + i + j); Console.ReadKey(); } } } }

Ejercicio 23 Ciclo para con decremento Se tiene 100 cervezas en una mesa, si se toma de a una cerveza. Mostrar el numero de cervezas que va quedando en la mesa.
using System; class Cervezas { static void Main(string[] args) { for (int i = 100; i > 0; i -= 1)

51 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

{ Console.WriteLine("Cervezas en la mesa:" + i); Console.ReadKey(); } } }

Ejercicio 24 Disear un algoritmo y el programa en C# que permita leer y sumar una cantidad no determinada de nmeros enteros. Comparar la instruccin para mostrar el resultado del programa del ejercicio 21 con este.
using System; using System.Collections.Generic; using System.Text; namespace Caracter { class CCaracter { static void Main(string[] args) { string res; int cont = 0, Num, suma = 0; //res = "s"; do { Console.Write("Leer Valor del Numero:"); Num = Convert.ToInt32(Console.ReadLine()); suma = suma + Num; cont = cont + 1; Console.Write("Entrar s para continuar y cualquier otra tecla para terminar: "); res = Console.ReadLine(); } while (res == "s"); Console.WriteLine("Numeros Leidos:{0}\tSuma de los numeros{1} ", cont, suma); Console.ReadKey(); } }

52 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

Ejercicio 25 Disear un algoritmo y el programa en C# que permita al usuario entrar valores entre 1 y 3. Si el valor ingresado es 1 se debe visualizar en la consola:
Voy a Cine.... Y comere crispeta...

Si el valor ingresado es 2 se debe visualizar en la consola:


Estudio Algoritmo... Y programo en C#...

Si el valor ingresado es 3 se debe visualizar en la consola:


Voy a futbol... Y disfruto....

using System; class Casos { static void Main(string[] args) { int Opcion; Console.Write("Entrar Opcion:"); Opcion = Convert.ToInt32(Console.ReadLine()); switch (Opcion) { case 1: Console.WriteLine("Voy a Cine...."); Console.WriteLine("Y comere crispeta..."); break; case 2: Console.WriteLine("Estudio Algoritmo..."); Console.WriteLine("Y programo en C#..."); break; case 3: Console.WriteLine("Voy a futbol..."); Console.WriteLine("Y disfruto...."); break; default: Console.WriteLine("Opcion no permitida"); break; } Console.ReadKey(); } }

53 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

Ejercicio 26 Disear el algoritmo y el programa en C# que determine si tres lados conforman un triangulo y si el triangulo es equilatero, isosceles o escaleno. Resolver el algoritmo Para N posibles valores de triangulos.
Tres lados conforma un triangulo si:

L1<L2+L3 y L2<L1+L3 y L3<L1+L2 Un triangulo es equiltero: L1=L2=L3 Un triangulo es Issceles: L1=L2 o L1=L3 o L2=L3
Un triangulo es escaleno: L1<>L2<>L3 using System; class Triangulo { static void Main(string[] args) { int L1,L2,L3,N,I; Console.Write("\tIngresar Numero de posibles triangulos:"); N=Convert.ToInt32(Console.ReadLine()); for(I=1;I<=N;I++) { Console.Write("\tIngresar Lado 1:"); L1=Convert.ToInt32(Console.ReadLine()); Console.Write("\tIngresar Lado 2:"); L2=Convert.ToInt32(Console.ReadLine()); Console.Write("\tIngresar Lado 3:"); L3=Convert.ToInt32(Console.ReadLine()); if((L1<=L2+L3)&&(L2<=L1+L3)&&(L3<=L2+L1)) { if((L1==L2)&&(L2==L3)) { Console.Write("\nTriangulo equilatero..\n"); } else { if((L1==L2)||(L1==L3)||(L2==L3)) { Console.Write("\nTriangulo Isoceles...\n");

54 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

} else { Console.Write("\n Triangulo Escaleno...\n"); } } } else Console.WriteLine("Los tres lados no conforman triangulos...\n"); } Console.ReadKey(); } }

Ejercicio 27 : En un programa deportivo se ha concluido que la duracion de la sesion de practica depende del peso de las persona y de las condiciones que presenta en la revision medica. La revision medica califica a las personas como de condicion 3,4,5 o 6. El tiempo de cada persona es igual al peso por una rata que se basa en su condicion ; esta es respectivamente: 0.15,021,0.22 y 0.26.
using System; class Tiempo { static void Main(string[] args) { int Categoria; double TiempoSesion, Peso; Console.Write("\nEntrar peso del Atleta:"); Peso = Convert.ToDouble(Console.ReadLine()); Console.Write("\nEntrar categoria"); Categoria = Convert.ToInt32(Console.ReadLine()); switch (Categoria) { case 3: TiempoSesion = Peso * 0.15; break; case 4: TiempoSesion = Peso * 0.21; break; case 5: TiempoSesion = Peso * 0.22;

55 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

break; case 6: TiempoSesion = Peso * 0.26; break; default: Console.WriteLine("Opcion no permitida..."); Console.ReadKey(); return; } Console.WriteLine("Tiempo de sesion para el atleta es:" + TiempoSesion); Console.ReadKey(); } }

Ejercicio 28 Disear un programa en aleatorios entre 1 y 9.

C#

que

permita

generar

nmeros

using System; class Aleatorios { static void Main(string[] args) { int n = 0,i; for (i = 1; i <= 10; i++) { Random tiro = new Random(); n = tiro.Next(1, 10); Console.WriteLine("El numero lanzado por el PC fue: "+ n); Console.ReadLine(); } } }

Ejercicio 29 Disear un algoritmo que permita leer un numero entero y muestre si ese numero es par o impar para ambos casos mostrar el valor del numero.
using System;

56 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

class CParImpar { static void Main(string[] args) { int Numero, Residuo; Console.Write("Ingresar Numero:"); Numero = Convert.ToInt32(Console.ReadLine()); Residuo = Numero % 2; if (Residuo == 0) { Console.WriteLine("Numero Par...."); System.Console.WriteLine("valor:" + Numero); } else { System.Console.WriteLine("Numero Impar"); System.Console.WriteLine("Valor:" + Numero); } Console.ReadKey(); } }

Ejercicio 30 Suponga que una tienda en particular vende todas sus mercancias a un precio de $1000 o menos. Suponga, ademas, que todos los compradores pagan con una moneda de $1000 todas sus compras. Disee un algoritmo para leer los precios de los articulos vendidos y para calcular el numero de monedas que debe dar a cambio, de tal manera, que devuelva un minimo de moneda fraccionaria.Solo se permite monedas de 1000, 500,200,100,50. Por ejemplo, si el precio de la venta es de $450, el cambio debe ser una moneda de $500 y una moneda de $50.

El objetivo es no utilizar if anidados, para ello se pide utilizar la funcion modular, o el concepto de division entera.
Informacion de entrada ValorCompra: Valor invertido en la compra (Entera) Pago: Valor de las monedas con la que se va a pagar.(Para el problema por lo especificado en clase se pudo asumir como un valor constante de 1000) (Entera) devuelta: variable utilizada para guardar la devuelta de la compra.(Entera) Inicio
ValorCompra, Pago, devuelta: Entero Muestre Ingrese el valor de la compra: " leer ValorCompra Muestre Ingrese el valor del pago: " leer Pago devuelta = Pago - ValorCompra Muestre "Su devuelta es: " , devuelta , " pesos Si(devuelta Mod 100 = 50)

57 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

Muestre "Moneda de 50 pesos" devuelta = devuelta - 50; Fin(si) Si(devuelta >= 500) Muestre "Moneda de 500 pesos" devuelta = devuelta - 500 Fin(Si) Casos(devuelta) 400: Muestre"Moneda de 200 pesos" Muestre "Moneda de 200 pesos" 300: Muestre "Moneda de 200 pesos" Muestre "Moneda de 100 pesos" 200: Muestre "Moneda de 200 pesos" 100: muestre Moneda de 100 pesos" Fin(Casos) Fin(Inicio)

using System; //utiliza el espacio de nombres System namespace DevueltaMonedas { class CDevuelta { //punto de entrada y salida del programa static void Main(string[] args) { int ValorCompra, Pago, devuelta; Console.Write("\n\tIngrese el valor de la compra: "); ValorCompra = Convert.ToInt32(Console.ReadLine()); Console.Write("\n\tIngrese el valor del pago: "); Pago = Convert.ToInt32(Console.ReadLine()); devuelta = Pago - ValorCompra; Console.Write("\n\n\n\n\tSu devuelta es: " + devuelta + " pesos\n); if (devuelta % 100 == 50) { Console.WriteLine("\n\tMoneda de 50 pesos"); devuelta = devuelta - 50; } if (devuelta >= 500) { Console.WriteLine("\n\tMoneda de 500 pesos"); devuelta = devuelta - 500; } switch (devuelta) { case 400: Console.WriteLine("\n\tMoneda de 200 pesos");

58 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

Console.WriteLine("\n\tMoneda de 200 pesos"); break; case 300: Console.WriteLine("\n\tMoneda de 200 pesos"); Console.WriteLine("\n\tMoneda de 100 pesos"); break; case 200: Console.WriteLine("\n\tMoneda de 200 pesos"); break; case 100: Console.WriteLine("\n\tMoneda de 100 pesos"); break; } Console.WriteLine(" "); Console.ReadKey(); } } }

Ejercicio 31 Mostrar los digitos de los que esta compuesto un numero entero cualquiera. Informacion de entrada Numero: Valor al que se le va a separar cada unos de sus digitos.(Entero) Otra varibale d: Guarda cada uno de los digitos del numero. (Entera)
Inicio Numero,d: Entero Muestre "Ingrese numero entero: Leer Numero Mientras(Numero<> 0) d = Numero % 10; Muestre "Los digitos son:", d Numero = Numero / 10 Fin(Mientras) Fin(Inicio)

"

using System; namespace digitos { class Program { static void Main(string[] args) { String cNumero; int Numero, d; Console.Write("\n\tIngrese numero entero:

");

59 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

cNumero = Console.ReadLine(); Numero = Convert.ToInt32(cNumero); while (Numero != 0) { d = Numero % 10; Console.WriteLine("\nLos digitos son:" + d); Console.ReadKey(); Numero = Numero / 10; } } } }

Mtodos (Funciones Y Procedimientos)


Los mtodos son miembros de las clases y pueden realizar una serie de acciones, o devolver un valor ya sea que tengan que calcularlo o no. Pueden recibir o no Parmetros y pueden devolver o no devolver parmetros. + Declaracin: tipoRetorno + NombreDelMtodo + [Parmetros] + { cuerpo } Ejercicio 32 Disear en C# un mtodo que reciba como parmetro el valor de dos nmeros enteros y retorne la suma, invocarlo desde el mtodo Main.
using System; using System.Collections.Generic; using System.Text; namespace MSumaDosNumeros { class CCSumaDosNumeros { static int Suma(int numero1, int numero2) { return numero1 + numero2; } static void Main(string[] args) { int num1,num2,resultado; Console.Write("Entrar el numero1: ");

60 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

num1=Convert.ToInt32(Console.ReadLine()); Console.Write("Entrar el numero2: "); num2=Convert.ToInt32(Console.ReadLine()); resultado=Suma(num1,num2); Console.WriteLine("El resultado de la suma es:"+resultado); Console.ReadLine(); } } }

Los mtodos pueden recibir diversos valores desde el exterior, de hecho pueden recibir tantos valores como sea necesario, los valores que se le pasan a un mtodo pueden ser por valor o por referencia, los valores que un mtodo recibe por valor, los recibe como una copia del dato que puede modificar a su gusto sin que se vean afectadas las dems copias de dicho dato, en cambio los valores que un mtodo recibe por referencia son las direcciones a donde se encuentra el dato, al cambiar el dato que hay donde una de estas referencias apuntan cambia el valor para todos aquellos que lo estn utilizando, un ejemplo muy sencillo de esto es, en el mundo real un paso de valor por referencia se da si tenemos apuntada la direccin de un amigo, dicha direccin es una referencia al lugar donde vive, es por eso que si vamos al lugar donde apunta la referencia nos encontraremos en la casa de nuestro amigo, una vez all, si rompemos un vidrio cualquier persona que llegue a ese lugar encontrara la ventana rota, en cambio con los pasos de parmetro por valor se tiene una copia del objeto en si, es decir, en el ejemplo anterior en vez de haber tenido una direccin, habra tenido una casa exactamente igual a la de mi amigo, por lo que si hubiera roto un vidrio, solo mi casa se habra visto afectada. En C# si pasamos un valor a un mtodo se pasa por valor a menos que se le indique lo contrario. No hay lmite al nmero de parmetros que puede recibir o devolver un mtodo pero si no se va a recibir o a devolver ningn valor se puede usar la palabra void para indicarlo. En C# los mtodos son sumamente flexibles, es por esto que se puede devolver mltiples valores y nos permite sobrecargarlos, las palabras claves ref y out son las que permiten que un mtodo retorne ms de un valor al mtodo que lo invoco. La sobrecarga de mtodos permite que un mtodo se comporte de manera diferente en funcin al tipo de parmetros que recibe y/o del nmero de Argumentos que le acompaan. Ejercicio 33

61 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

Se tiene las siguientes variables enteras: i1=2,i2=3,resultado1


Y reales: f1=2.14,f2=5.25,resultado2;

Se pide disear un programa en C# que encuentre la suma de las dos variables reales,encontrar la suma de la variable entera i1 y la real f1.

using System; using System.Collections.Generic; using System.Text; namespace EjemSobrecarga { class CCSobrecarga { static int suma( int n1, int n2 ) //Mtodo 1 { return n1+n2; } static float suma( float n1, float n2 ) //Mtodo 2 { return n1+n2; } static float suma( int n1, float n2 ) //Mtodo 3 { return n1+n2; } static void Main(string[] args) { int i1=2,i2=3,resultado1; float f1=2.14F,f2=5.25F,resultado2; resultado1 = suma(i1,i2); //Llamada 1 resultado2 = suma(f1,f2); //Llamada 2

62 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

resultado2 = suma(i1,f1); //Llamada 3 Console.WriteLine("Suma de dos numeros Enteros:{0}", resultado1); Console.WriteLine("Suma de dos numeros Reales:{0}", resultado2); Console.WriteLine("Suma de un numero Entero y uno real:{0}", resultado2); Console.ReadKey(); } } }

En este ejemplo en ninguno de los casos hay perdida de precisin debido a que el mtodo haciendo uso de la sobrecarga se adapta a los parmetros que recibe y acta en consecuencia a ello, es decir si el mtodo suma recibe dos enteros como en la llamada 1 devuelve un nmero entero empleando para ello el mtodo 1, si recibe dos flotantes devuelve un flotante utilizando para ello el mtodo 2 y si recibe primero un e ntero y luego un flotante responde utilizando el mtodo 3.

ref (Referencia de C#)


La palabra clave ref produce argumentos que se van a pasar por referencia. El efecto es que cualquier cambio que se realice en el parmetro dentro del mtodo se reflejar en esa variable cuando se devuelva el control al mtodo que realiz la llamada. Para utilizar un parmetro ref, la definicin de mtodo y el mtodo de llamada deben

utilizar explcitamente la palabra clave ref.


Ejercicio 34 Disear un mtodo llamado Mtodo que entregue por referencia el valor de la variable i=44 al programa principal.
using System; class CReferencia { static void Metodo(ref int i) { i = 44; } static void Main() { int val = 0; Metodo(ref val); Console.WriteLine("El valor de Val Ahora es:" + val); Console.ReadKey();

63 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

} }

Ejercicio 35
Disear un procedimiento que encuentre la suma y el promedio de un conjunto de N nmeros enteros ledos, disear tambin el programa que lo invoque, pasarlo a C#. Parmetro de recibo N: Cantidad de nmeros Tipo: Entero Parmetro de envi Suma: Acumula la suma de los N nmeros Tipo: Entero Promedio: Promedio de los N nmeros Tipo: Real

SumaProm( N,Suma, Promedio) i, valor:Entero Suma = 0; Promedio = 0; Para i1,N,1 Muestre"Entrar Valor:" leer valor Suma=Suma+valor Fin(para) Promedio = Suma / N; Fin(SumaProm)

Programa que lo Invoca Inicio argSuma=0, CN,i: Entero argPromedio=0:Real Muestre"Entrar Numeros a Sumar:" leer CN SumaProm(CN, argSuma, argPromedio)

64 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

Muestre "La Suma es:",argSuma,El promedio es:" , argPromedio Fin(Inicio)

using System; class CSumapromedio { static void Main(string[] args) { int argSuma=0, CN; double argPromedio=0; Console.Write("Entrar Numeros a Sumar:"); CN = Convert.ToInt32(Console.ReadLine()); SumaProm(CN, ref argSuma, ref argPromedio); Console.Write("La Suma es:"+argSuma+"\nEl promedio es:" + argPromedio); Console.ReadKey(); }

static void SumaProm(int N,ref int Suma, ref double Promedio) { int i, valor; Suma = 0; Promedio = 0; for(i=1;i<=N;i++) { Console.Write("Entrar Valor:"); valor=Convert.ToInt32(Console.ReadLine()); Suma=Suma+valor; } Promedio = Suma / N; } }

Ejercicio 37 Disear un programa en C# que encuentre la suma de dos nmeros enteros. Con programacin orientada a objetos. PENSANDO EN OBJETOS

65 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

Clase: Una clase es la definicin de las caractersticas concretas de un determinado tipo de objetos. Es una plantilla que permite crear objetos. Est compuesta de datos y mtodos. Objetos: Un objeto es un agregado de datos y de mtodos que permite manejar dichos datos. Mtodo: Acciones que realizan los objetos o acciones que se pueden realizar sobre los objetos, es la forma de comunicarse los objetos. Los objetos se comunican mediante mensajes. Encapsulacin: Es el mecanismo que agrupa los mtodos y los datos que maneja y los mantiene protegidos frente a cualquier interferencia y mal uso. Cuando el cdigo y los datos estn enlazados de esta manera, se ha creado un objeto. Se puede decir que un objeto es un dispositivo que soporta encapsulacin. Normalmente, las partes pblicas de un objeto se utilizan para proporcionar una interface controlando las partes privadas del objeto. Constructor: Un constructor es un mtodo que debe tener el mismo nombre que la clase, no debe retornar ningn valor, ni siquiera void. Permite crear e inicializar un objeto. Un constructor es invocado automticamente cuando se crea la instancia, o sea que no hay que llamarlo explcitamente desde el programa principal. Existen tres tipos de constructores: Constructor por defecto , constructor comn y constructor de copia. Constructor comn: Es aquel que recibe parmetros para asignarlos como valores inciales a los datos miembros. Sintaxis Para la creacin de objeto:

Nombre de la clase Nombre del Objeto = new Nombre de la clase(Parametros);

66 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

Para invocar los mtodos: Nombre del Objeto.Nombre del mtodo.


using System; using System.Collections.Generic; using System.Text; namespace ClaseSuma { class CSuma { private int num1; private int num2; private int resultado; public CSuma(int N1, int N2) { num1 = N1; num2 = N2; } public int MostarNumero1() { return num1; } public int MostrarNumero2() { return num2; } public int Calcular() { resultado = num1 + num2; return resultado; } } //Se termino la clase Csuma class Prueba { static void Main(string[] args) { int numero1, numero2; Console.Write("Entrar numero 1:"); numero1 = Convert.ToInt32(Console.ReadLine()); Console.Write("Entrar numero 2:"); numero2 = Convert.ToInt32(Console.ReadLine()); CSuma obj1 = new CSuma(numero1, numero2);//Crea un objeto //Console.WriteLine("Numero1 es:" + obj1.num1);

67 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

Console.WriteLine("\n\nNUMEROS LEIDOS\n\n"); Console.WriteLine("Numero1 es:" + obj1.MostarNumero1()); Console.WriteLine("Numero2 es:" +obj1.MostrarNumero2()); Console.WriteLine("Resultado es:" + obj1.Calcular()); Console.ReadLine(); } } }

TAREA DIGUITAR EL PROGRAMA DEL EJERCICIO 36, DESACTIVAR LA INSTRUCCIN //Console.WriteLine("Numero1 es:" + obj1.num1);DEL METODO PRINCIPAL Y EXPLICAR EL ERROR QUE MUESTRA
Ejercicio 37 Elaborar una funcin entero mayor o igual Parmetros de recibo N: Guarda el numero Parmetro s de Envi facto: El factorial
Factorial( N) facto=1,i: Enteros para i1,N,1 facto=facto*i; fin(para) retorne facto Fin(Factorial)

que encuentre el factorial de un numero a cero. al que se le calcula el factorial. del numero.

Inicio Num, resufacto:Entero Muestre "Entrar Numero para encontrar el factorial:" leer Num resufacto = Factorial(Num); Muestre El factorial de:" , Num , "Es:" , resufacto Fin(Inicio) using System; class FactorialNumero { static int Factorial(int N)

68 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

{ int facto=1,i; for(i=1;i<=N;i++) { facto=facto*i; } return facto; }

static void Main(string[] args) { int Num, resufacto; Console.Write("Entrar Numero para encontrar el factorial:"); Num = Convert.ToInt32(Console.ReadLine()); resufacto = Factorial(Num); Console.Write("\nEl factorial de:" + Num + "\tEs:" + resufacto); Console.ReadKey(); } }

Ejercicio 38 Disear un programa en C# que encuentre el factorial de un numero entero mayor o igual a cero, con programacin orientada o objetos.
using System; using System.Collections.Generic; using System.Text; namespace Factorial { class CFactorial { private int Facto; private int Numero; public CFactorial(int Num, int Fa) { Numero = Num; Facto = Fa; } public int CalculoFacto() { int i; for (i = 1; i <= Numero; i++) { Facto = Facto * i;

69 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

} return Facto; } public int MostrarNumero() { return Numero; } static void Main(string[] args) { int num; Console.Write("Entrar Numero:"); num=Convert.ToInt32(Console.ReadLine()); CFactorial obj1=new CFactorial(num,1); Console.WriteLine("El factorial de: " + obj1.MostrarNumero() + " Es: " + obj1.CalculoFacto()); Console.ReadLine(); } } }

DISEAR LA CLASE PRUEBA PARA LA CLASE CFACTORIAL.


Ejercicio 39 Usando la funcin Factorial del ejercicio 36, elaborar un algoritmo que encuentre el factorial de los primeros N nmeros enteros.
using System; //Usando la funcin Factorial, elaborar un algoritmo //que encuentre el factorial de los primeros //N nmeros enteros. class FactorialNumero { static int Factorial(int N) { int facto = 1, i; for (i = 1; i <= N; i++) { facto = facto * i; } return facto; }

static void Main(string[] args)

70 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

{ int Num, resufacto, j; Console.Write("Entrar Numero para encontrar el factorial:"); Num = Convert.ToInt32(Console.ReadLine()); for (j = 1; j <= Num; j++) { resufacto = Factorial(j); Console.Write("\nEl factorial de:" + j + "\tEs:" + resufacto); Console.ReadKey(); } } }

Ejercicio 40 Elaborar una Mtodo que determine si un nmero es primo o no. Y pasarlo a C#. Parmetros de recibo N: Numero a evaluar Tipo: Entero Parmetros de envi Respuesta: Dice si el numero es primo o no Tipo Booleano Respuesta almacena true si el numero es primo, false si no lo es. NOTA: Un numero es primo si solo es divisible por la unidad y por si mismo. Se debe chequear si el numero N tiene o no divisores, fuera de 1 y N; esos posibles divisores estarn entre 2 y N/2, por eso no se chequeara si N es divisible por un nmero mayor a N/2. Para saber si N es divisible por un numero cualquiera k, se puede usar el operador modulo. Este operador devuelve el residuo de una divisin entera. Por ejemplo 7 modulo 2=3, 4 modulo 2=0. Quiere decir entonces, que si un numero cualquiera N es divisible por k, entonces al dividir N por k el residuo es cero. Si se encuentra que N si es divisible por cualquier numero entre 2 y la mitad de N, quiere decir que N no es primo, por lo tanto se romper el ciclo.
Primo( N) Respuesta=false:Booleana Mitad=N/2,I:Entera I=2; Mientra((I<=Mitad)and(N Mod I<>0)) I=I+1 Fin(Mientras)

71 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

Si(I>Mitad) Respuesta=true SiNo Respuesta=false retorne Respuesta; Fin(Primo)

Inicio Numero: Entero Muestre "Entrar numero:" Leer Numero Si(Primo(Numero)=true) Muestre El numero:",Numero, "Es Primo" SiNo Muestre El numero:" ,Numero, No Es Primo" Fin(Inicio) using System; class CNumeroPrimo { static void Main(string[] args) { int Numero; Console.Write("\nEntrar numero:"); Numero=Convert.ToInt32(Console.ReadLine()); if(Primo(Numero)==true) Console.Write("\nEl numero:"+Numero+"\tEs Primo"); else Console.Write("\nEl numero:"+Numero+"\tNo Es Primo"); Console.ReadKey(); } static bool Primo(int N) { bool Respuesta=false; int Mitad=N/2,I; I=2; while((I<=Mitad)&&(N%I!=0)) { I=I+1; } if(I>Mitad) Respuesta=true; else Respuesta=false; return Respuesta;

72 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

} } Ejercicio 41 Elaborar un procedimiento que muestre cual es el capital generado en cada uno de los N periodos, para un capital inicial, que se invierte a un interes dado, sin retirar los intereses. Parametros de recibo N: Numero de periodos Tipo:Entero capIni:Capital Inicial tipo:Double Inte: tasa de Interes Tipo:Double Parametro de Envio: No tiene

InteresAcumulado( N, capIni, Inte) capitalPeriodo:Real capitalPeriodo = capIni; i:Entera para i = 1, N,1 capitalPeriodo = capitalPeriodo + capIni * Inte Muestre "Capital del periodo:" , capitalPeriodo capIni = capitalPeriodo Fin(para) Fin(InteresAcumulado) Inicio capitalIni, interes:Real NP:Entero Muestre"Entrar periodos:" leer NP Muestre "Entrar Capital:" leer capitalIni Muestre "Entrar tasa de Interes:" leer interes InteresAcumulado( NP, capitalIni, interes) Fin(Inicio)

using System; class CapitalInteres {

73 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

static void Main(string[] args) { double capitalIni, interes; int NP; Console.Write("Entrar periodos:"); NP = Convert.ToInt32(Console.ReadLine()); Console.Write("Entrar Capital:"); capitalIni = Convert.ToDouble(Console.ReadLine()); Console.Write("Entrar tasa de Interes:"); interes = Convert.ToDouble(Console.ReadLine()); InteresAcumulado(NP, capitalIni, interes); } static void InteresAcumulado(int N, double capIni,double Inte) { double capitalPeriodo; capitalPeriodo = capIni; int i; for (i = 1; i <= N; i++) { capitalPeriodo = capitalPeriodo + capIni * Inte; Console.WriteLine("Capital del periodo:" + capitalPeriodo); capIni = capitalPeriodo; Console.ReadKey(); } } }

Ejercicio 42 Elaborar un algoritmo que muestre los enteros desde 1 hasta N y sus cuadrados, calculados solamente con sumas y utilizando el mtodo propuesto: Numero Cuadrado Mtodo 1 1 1 2 4 1+3 3 9 1+3+5 4 16 1+3+5+7 5 25 1+3+5+7+9 . N. Programar en C#
Cuadrados( N) suma=1,i,inc=1 :Enteros

74 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

Muestre "Numero Cuadrado" para i = 1, N, 1 Muestre i , suma inc = inc + 2; suma = suma + inc; fin(para) fin(Cuadrados)

Inicio
NCuadrados: Enteros Muestre "Entrar N: leer NCuadrados Cuadrados(NCuadrados); Fin(Inicio) using System; class CuadradosNumeros { static void Main(string[] args) { int NCuadrados; Console.Write("Entrar N:"); NCuadrados = Convert.ToInt32(Console.ReadLine()); Cuadrados( NCuadrados); }

static void Cuadrados( int N) { int suma=1,i,inc=1; Console.WriteLine("Numero\tCuadrado"); for (i = 1; i <= N; i++) { Console.Write(+i + "\t" + suma+"\n"); Console.ReadKey(); inc = inc + 2; suma = suma + inc; } } }

Ejercicio 43 75 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

Disear un programa en C# que permita calcular el rea y el permetro de una superficie rectangular con las siguientes hiptesis: los valores de la longitud y anchuras se leern en el programa principal , el clculo del rea y el permetro mediante un procedimiento , y la visualizacin de los resultados en el programa principal.
using System; class CAreaPeri { static void AreaPerimetro(double Longitud, double Anchura, ref double Area, ref double Perimetro) { Area=Longitud*Anchura; Perimetro=2*(Longitud*Anchura); } static void Main(string[] args) { double argAnchura, argLongitud,argArea=0,argPerimetro=0; Console.WriteLine("Entrar anchura:"); argAnchura = Convert.ToDouble(Console.ReadLine()); Console.WriteLine("Entrar Longitud:"); argLongitud = Convert.ToDouble(Console.ReadLine()); AreaPerimetro(argLongitud, argAnchura, ref argArea, ref argPerimetro); Console.WriteLine("Area del Rectangulo:" + argArea); Console.WriteLine("Perimetro del Rectangulo" + argPerimetro); Console.ReadLine(); } }

Ejercicio 44 Dar una prueba de escritorio al siguiente programa en C# y decir que hace.

using System; class CSerie { static double Sumaserie(int N, double X) { int I; double suma = 0;

76 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

for (I = 1;I <= N; I++) { suma = suma + I * Math.Pow(X, I) / (I + 1); } return suma; } static void Main(String[] args) { int NT=0; double resu, VX; Console.Write("Entrar numero de terminos a generar: "); NT = Convert.ToInt32(Console.ReadLine()); Console.Write("Entrar valor de X:"); VX = Convert.ToDouble(Console.ReadLine()); resu = Sumaserie(NT, VX); Console.WriteLine("La Suma es:" + resu); Console.ReadKey(); } }

Ejercicio 45 Disear un programa en C# que genere las primera N tablas de multiplicar.


using System; class Tablas { static void TablasM(int N) { int I, J, mult; for (I = 1; I <= N; I++) { Console.WriteLine(); for (J = 1; J <= 10; J++) { mult = I * J; Console.WriteLine(I + "X" + J + "=" + mult); Console.ReadKey(); } } } static void Main(String[] args) { int NT; Console.WriteLine("Entrar Numero de tablas a generar:"); NT = Convert.ToInt32(Console.ReadLine()); TablasM(NT); }

77 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

Ejercicio 46 Disear una funcion matematica Signo(X) definida de la siguiente forma: Signo(X) que retorna: 1 si X>0 0 si X=0 -1 si X<0
using System; class Signos { static int Signo(int X) { int VSigno; if (X > 0) { VSigno = 1; return VSigno; } else { if (X < 0) { VSigno = -1; return VSigno; } else { VSigno = 0; return VSigno; } } } static void Main(String[] args) { int SG; Console.WriteLine("Entrar Valor de X:"); SG = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("El signo de X es:" + Signo(SG)); Console.ReadKey(); } } using System;

78 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

class Signos { static int Signo(int X) { int VSigno; if (X > 0) { VSigno = 1; } else { if (X < 0) { VSigno = -1; } else { VSigno = 0; } } return VSigno; } static void Main(String[] args) { int SG; Console.WriteLine("Entrar Valor de X:"); SG = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("El signo de X es:" + Signo(SG)); Console.ReadKey(); } }

Explicar el siguiente ejercicio.


using System; class Signos { static void Signo(int X,ref int VSigno) { if (X > 0) { VSigno = 1;

79 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

} else if (X < 0) { VSigno = -1; } else { VSigno = 0; } } static void Main(String[] args) { int SG,argValorS=0; Console.WriteLine("Entrar Valor de X:"); SG = Convert.ToInt32(Console.ReadLine()); Signo(SG, ref argValorS); Console.WriteLine("El signo de X es:" + argValorS); Console.ReadKey(); } }

Ejercicio 47 Disear un programa en C# que encuentre la suma de los primeros N trminos de la sucesin de FIBONACCI. Esta se genera empezando por los nmeros 0 y 1 y calculando cada nuevo miembro como la suma de los dos miembros precedentes de la sucesin, as: 0 1 1 2 3 5 8 13
using System; class Fibonacci { static int SerieFib(int N) { int ter1 = 0, ter2 = 1, terN, suma = 1,i; Console.WriteLine(ter1); Console.WriteLine(ter2); for (i = 3; i <= N; i++) {

80 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

terN = ter1 + ter2; suma = suma + terN; Console.WriteLine(terN); Console.ReadKey(); ter1 = ter2; ter2 = terN; } return suma; } static void Main(String[] args) { int NT, resul; Console.WriteLine("Entrar Numero de terminos:"); NT = Convert.ToInt32(Console.ReadLine()); resul = SerieFib(NT); Console.WriteLine("El valor de la suma es:" + resul); Console.ReadKey(); } }

Ejercicio 48 Dar prueba de escritorio programa en C#.

decir

que

hace

el

siguiente

using System; class Horario { static void Horarios() { int I, J; for (I = 11; I <= 11; I++) { for (J = 0; J <= 59; J++) { Console.WriteLine("HORA:" + I + "MINUTOS:" + J); Console.ReadKey(); } } Console.WriteLine("HORA:12 MINUTOS:00"); Console.ReadKey(); } static void Main(String[] args) {

81 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

Horarios(); } }

Ejercicio 49 Disear un procedimiento en C# para intercambiar los valores de dos variables.


using System; class Intercambio { static void Cambiar( ref int a,ref int b) { int aux; aux=a; a=b; b=aux; } static void Main(string[] args) { int argA,argB; Console.WriteLine("Entrar valor de A:"); argA=Convert.ToInt32(Console.ReadLine()); Console.WriteLine("Entrar valor de B:"); argB=Convert.ToInt32(Console.ReadLine()); Console.WriteLine("Valor de A es :"+argA); Console.WriteLine("Valor de B es :" + argB); Cambiar(ref argA,ref argB); Console.WriteLine("Cambio de A:" + argA); Console.WriteLine("cambio de B:" + argB); Console.ReadKey(); } }

Vectores y Matrices
Arreglo o Vector: Un Arreglo es una estructura de datos que almacena bajo el mismo nombre (variable) a una coleccin de datos del mismo tipo. Los arreglos se caracterizan porque almacenan los elementos en posiciones contiguas de memoria, Tienen un mismo nombre de variable que representa a todos los elementos. Para hacer referencia a esos elementos es necesario utilizar un ndice que especifica el lugar que ocupa cada elemento dentro del archivo. Tipos de Arreglos: Unidimensionales (Vectores), Bidimensionales (Matrices) y Tridimensionales (Cubos) Para hacer referencia a un elemento del vector se usa el nombre del mismo, seguido del ndice (entre corchetes), el cual indica una posicin en particular del vector. Por ejemplo: Vec[x] Donde: Vec: Nombre del arreglo. x: Numero de datos que constituyen el arreglo 82 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

Representacin grfica de un vector

Arreglos de dos dimensiones o matrices


Las matrices son estructuras de datos que organizan su informacin en forma de tablas; es decir los elementos que la conforman estn dispuestos bajo dos conceptos de clasificacin (filas, columnas). Para poder indicar el lugar donde se encuentra un determinado elemento, es necesario utilizar dos ndices: uno para indicar el lugar el rengln o fila y otro para indicar la columna. Puede mirarse una matriz como un vector de vectores; por lo tanto, es un conjunto de componentes en el que se necesita dos subndices para identificar un elemento que pertenezca al arreglo. Un arreglo bidimensional N*M tiene N Filas y M Columnas; por lo tanto, tiene N*M elementos dispuestos interiormente en memoria en forma sucesiva. Matriz cuadrada: Cuando el numero de filas es igual al numero de columnas. Por lo tanto, los elementos ubicados en la diagonal principal cumplen que la fila es igual a la columna. Matriz Identidad (I): Es una matriz cuadrada donde los elementos que estn ubicados en la diagonal principal son 1 y el resto de elementos tienen el valor de cero. Matriz Simtrica: La matriz simtrica debe cumplir la condicin de que el elemento X[ i, k ] = X[ k, i ]. Para una matriz de N * M donde; 1<=I <=N y 1<=k<=M Matriz Transpuesta: la matriz transpuesta de la matriz A de cualquier orden es aquella en la cual las filas de una matriz son las columnas de la otra.

Vectores y Matrices en C#
Los Vectores y las matrices al igual que las variables hay que: declarar, crear e inicializar. vector Declarar un vector: 83 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

tipo[] nombre; Tipo : Indica el tipo de los elementos del vector, que pueden ser de cualquier tipo ; y nombre es un identificador que nombra al vector. Los corchetes modifican la definicin normal del identificador para que sea interpretado por el compilador como un vector. int[] m; double [] temperatura; La primera lnea declara un vector de elementos de tipo int; la segunda un vector de elementos de tipo double. Note que las declaraciones no especifican el tamao del vector. El tamao ser especificado cuando se cree el vector, operacin que se har durante la ejecucin del programa. Crear un Vector: Despus de haber declarado un vector, el siguiente paso es crearlo o construirlo. Crear un vector significa reservar la cantidad de memoria necesaria para contener todos sus elementos y asignar al nombre del vector una referencia a este bloque. Esto puede expresarse genricamente as: Nombre=new tipo[tamao]; Donde nombre es el nombre del vector previamente declarado; tipo es el tipo de los elementos del vector; y tamao es una expresin entera positiva, que especifica el nmero de elementos. El hecho de utilizar el operador new significa que C# implementa los vectores y las matrices como objetos, por lo tanto sern tratados como cualquier otro objeto. Las siguientes lneas de cdigo crean los vectores declarados en el ejemplo anterior: m=new int[10]; temperatura=new double[31]; La primera lnea crea un vector identificada por m con 10 elementos de tipo int; es decir, puede almacenar 10 valores enteros; el primer elemento es m[0] (se lee: m sub cero), el segundo m[1],.,y el ultimo m[9]. La segunda crea un vector de 31 elementos de tipo double.

84 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

Es bastante comn declarar y crear el vector utilizando una sola sentencia. Esto puede hacerse as: tipo[] nombre=new tipo[tamao]; Las siguientes lneas de cdigo declaran y crean los vectores expuestos en los ejemplos anteriores: Int[] m=new int[10]; double[] temperatura=new double[31]; CUANDO SE CREA UNA MATRIZ Y UN VECTOR, EL TAMAO DE LA MISMA PUEDE SER TAMBIEN ESPECIFICADO DURANTE LA EJECUCION A TRAVES DE UNA VARIABLE A LA QUE SE ASIGNARA COMO VALOR EL NUMERO DE LOS ELEMENTOS REQUERIDOS. Ejercicio 50 Disear un programa en C# con tres Mtodos 2 procedimientos y una funcin. Procedimiento que se encargue de llenar un vector. Procedimiento que se encargue de mostrar el vector. Una funcin que se encargue de encontrar el promedio de sus datos. Disear el programa que los invoque.

using System; class Vector { static void LlenarVector(int[] Vector) { int i; for (i = 0; i < Vector.Length; i++) { Console.Write("V[" + i + "]="); Vector[i] = Convert.ToInt32(Console.ReadLine()); } } static void Mostrar(int[] Vector) { int i;

85 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

Console.WriteLine("\n\nEl Vector contiene los siguientes valores:"); for (i = 0; i < Vector.Length; i++) { Console.WriteLine("V[" + i + "]=" + Vector[i]); Console.ReadKey(); } }

static void Main(string[] args) { int Tn; Console.Write("Entrar tamao del vector:"); Tn = Convert.ToInt32(Console.ReadLine()); int[] V1 = new int[Tn]; LlenarVector(V1); Mostrar(V1); Console.ReadKey(); } }

Ejercicio 51 Disear un programa en C# para encontrar la Suma de los elementos del vector ubicados en las posiciones impares.
using System; class CSumaImpar { static int SumaImpar1(int[] Vector) { int i, suma = 0; for (i = 1; i < Vector.Length; i = i + 2) { suma = suma + Vector[i]; } return suma; } static void LlenarVector(int[] Vector) { int i; for (i = 0; i < Vector.Length; i++) { Console.Write("V[" + i + "]="); Vector[i] = Convert.ToInt32(Console.ReadLine()); } }

86 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

static void Mostrar(int[] Vector) { int i; Console.WriteLine("\n\nEl Vector contiene los siguientes valores:"); for (i = 0; i < Vector.Length; i++) { Console.WriteLine("V[" + i + "]=" + Vector[i]); Console.ReadKey(); } }

static void Main(string[] args) { int N, resuImpar; Console.WriteLine("Tamao del Vector:"); N = Convert.ToInt32(Console.ReadLine()); int[] V1 = new int[N]; LlenarVector(V1); resuImpar = SumaImpar1(V1);

Console.WriteLine("Suma de las posiciones Impares:" +


resuImpar); Console.ReadKey(); } }

Ejercicio 52
Disear un programa en C# que permita mostrar el numero de apostadoresque ganaron una poya del partido de futbol de Medellin y Nacional.El numero maximo de apostadores es de 10. Disear un procedimiento que permita leer las apuestas de posibles goles hecho por Nacional,Medellin. Pasar por parametro dos vectores que guardan los goles de Medellin y Nacional y su tamao. Disear una funcion que lea los goles con los que termino el partido y retorne el numero de apostadores que ganaron la apuesta. se pasa como parametro los dos vectores y tamao.Los apostadores se enumeran de acuerdo al orden que se acercan ha hacer sus apuestas. Se utiliza dos vectores en paralelo para guardar las apuestas de cada jugador por el Medellin y el Nacional. using System; class MedellinNacional {

87 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

static void LlenarApuestas(int[] Medellin, int[] Nacional, int N) { int i; for (i = 1; i <= N; i++) { Console.WriteLine("Apuestas del Jugador:" + i); Console.Write("Entrar goles de Medellin:"); Medellin[i] = Convert.ToInt32(Console.ReadLine()); Console.Write("Entrar goles de Nacional:"); Nacional[i] = Convert.ToInt32(Console.ReadLine()); } }

static int NumeroGanadores(int[] Medellin, int[] Nacional, int N) { int j, ganadores = 0, golHechosNacional, golHechosMedellin; Console.Write("Entrar goles hechos del Medellin:"); golHechosMedellin = Convert.ToInt32(Console.ReadLine()); Console.Write("Entrar goles hechos del Nacional:"); golHechosNacional = Convert.ToInt32(Console.ReadLine()); for (j = 1; j <=N; j++) { if ((Medellin[j] == golHechosMedellin) && (Nacional[j] == golHechosNacional)) { ganadores = ganadores + 1; } } return ganadores; }

static void Main(string[] args) { int Njugadores, resu; int[] argMedellin = new int[15]; int[] argNacional = new int[15]; Console.WriteLine("Entrar el numero de jugadores"); Njugadores = Convert.ToInt32(Console.ReadLine()); LlenarApuestas(argMedellin, argNacional, Njugadores); resu = NumeroGanadores(argMedellin, argNacional, Njugadores); Console.WriteLine("Apuestas ganadas:" + resu); Console.ReadKey(); }

88 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

} Ejercicio 53 En una matriz de 12 x 4 almacenar las calificaciones de 4 materias de un grupo de 12 estudiantes. Elaborar un programa en C# que permita mostrar lo siguiente: La nota promedio de cada estudiante. El numero de estudiantes que aprobaron cada materia. El numero de estudiantes que reprobaron cada materia. La nota promedio de cada materia. Disear procedimientos pasando como parametros la matriz para realizar cada uno de los calculos pedidos.

using System; using System.Collections.Generic; using System.Text; /*En una matriz de 12 x 4 almacenar las calificaciones de 4 materias de un grupo de 12 estudiantes. Elaborar un programa en C# que permita mostrar lo siguiente: La nota promedio de cada estudiante. El numero de estudiantes que aprobaron cada materia. El numero de estudiantes que reprobaron cada materia. La nota promedio de cada materia. Disear procedimientos pasando como parametros la matriz para realizar cada uno de los calculos pedidos.*/ namespace punto2Examen { class CPromedio { //NOTA PROMEDIO DE CADA ESTUDIANTE SE RECORRE POR FILAS static void promedioEstudiante(double[,] Notas, int NF, int NC) { double NotaPromedio=0,Prom=0; int i, j; for (i = 1; i <= NF; i++) { for (j = 1; j <= NC; j++) { NotaPromedio = NotaPromedio + Notas[i,j]; }

89 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

Prom= NotaPromedio/4; Console.WriteLine("Estudinate:"+i+"\tNota Promedio:"+Prom); NotaPromedio=0; } } //ESTUDIANTES QUE GANARON CADA MATERIA SE RECORRE cada COLUMNA static void GanadoresMateria(double[,]Notas,int NF,int NC) { int i,j,Ganador=0; for (i=1;i<= NC;i++) { for (j=1;j<= NF; j++) { if(Notas[j,i]>=3.0) Ganador=Ganador+1; } Console.WriteLine("Materia:"+i+ "\tGanadores:"+Ganador); Ganador=0; } }

//ESTUDIANTES QUE REPROBARON CADA MATERIA static void PerdedoresMateria(double[,]Notas,int NF,int NC) { int Perdedor=0,i,j; for (i = 1; i <= NC; i++) { for (j = 1; j <= NF; j++) { if(Notas[j,i]<3.0) Perdedor=Perdedor+1; } Console.WriteLine("Materia:"+i+"\tNumero Estudiante:"+Perdedor); Perdedor=0; } } //NOTA PROMEDIO DE CADA MATERIA SE RECORRE LA MATRIZ POR COLUMNA static void promedioMateria(double[,]Notas,int NF,int NC) {

90 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

double SumaProm=0,Prom; int i, j; for (i = 1; i <= NC; i++) { for (j = 1; j <= NF; j++) { SumaProm = SumaProm + Notas[j, i]; } Prom=SumaProm/NC; Console.WriteLine("Materia:"+i+"\tNota Promedio es : "+Prom); SumaProm=0; } } //LLENANDO LA MATRIZ POR FILA static void LlenarMatriz(double[,] Notas, int NF, int NC) { int i, j; for(i=1;i<=NF;i++) { for(j=1;j<=NC;j++) { Console.Write("Matriz[" + i+","+j + "]="); Notas[i,j]=Convert.ToDouble(Console.ReadLine()); } } } static void MostrarMatriz(double[,] Notas, int NF, int NC) { int i,j; Console.WriteLine("La Matriz contiene los siguientes valores:"); for(i=1;i<=NF;i++) { for(j=1;j<=NC;j++) { Console.WriteLine("Matriz[" + i+","+j + "]="+Notas[i,j]); Console.ReadKey(); } } }

static void Main(string[] args) {

91 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

double[,] M1 = new double[20, 20]; int NumF, NumC; Console.Write("Entrar Numero de Estudiantes:"); NumF = Convert.ToInt32(Console.ReadLine()); Console.Write("Entrar Numero de Materias:"); NumC = Convert.ToInt32(Console.ReadLine()); LlenarMatriz(M1, NumF, NumC); MostrarMatriz(M1, NumF, NumC); Console.WriteLine("La nota promedio de cada estudiante es:"); promedioEstudiante(M1,NumF,NumC); Console.WriteLine("Numero de estudiantes que ganaron cada materia:"); GanadoresMateria(M1,NumF,NumC); Console.WriteLine("Numero de estudiantes que perdieron cada materia:"); PerdedoresMateria(M1, NumF, NumC); Console.WriteLine("Nota promedio de cada materia:"); promedioMateria(M1, NumF, NumC); Console.ReadKey(); } }

Ejercicio 54 Disear un programa en C# con procedimientos que permita llenar un vector y una matriz entra y mostrar los datos leidos para el vector y la matriz. Pasar por parametros el vector y la matriz como su tamao.
using System; class VectorMatriz { static void LlenarVector(int[] Vector, int N) { int i; for (i = 1; i <= N; i++) { Console.Write("V[" + i + "]="); Vector[i] = Convert.ToInt32(Console.ReadLine()); } }

92 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

static void Mostrar(int[] Vector, int N) { int i; Console.WriteLine("\n\nEl Vector contiene los siguientes valores:"); for (i = 1; i <= N; i++) { Console.WriteLine("V[" + i + "]=" + Vector[i]); Console.ReadKey(); } } static void LlenarMatriz(int[,] Matriz, int NF, int NC) { int i, j; for(i=1;i<=NF;i++) { for(j=1;j<=NC;j++) { Console.Write("Matriz[" + i+","+j + "]="); Matriz[i,j]=Convert.ToInt32(Console.ReadLine()); } } } static void MostrarMatriz(int[,] Matriz, int NF, int NC) { int i,j; Console.WriteLine("La Matriz contiene los siguientes valores:"); for(i=1;i<=NF;i++) { for(j=1;j<=NC;j++) { Console.WriteLine("Matriz[" + i+","+j + "]="+Matriz[i,j]); Console.ReadKey(); } } }

static void Main(string[] args) { int[] V1 = new int[10]; int[,] M1 = new int[10, 10]; int TA, NumF, NumC; Console.Write("Entrar tamao del Vector:"); TA = Convert.ToInt32(Console.ReadLine()); LlenarVector(V1, TA); Mostrar(V1, TA); Console.Write("Entrar Numero de filas:"); NumF = Convert.ToInt32(Console.ReadLine()); Console.Write("Entrar Numero de Columnas:");

93 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

NumC = Convert.ToInt32(Console.ReadLine()); LlenarMatriz(M1, NumF, NumC); MostrarMatriz(M1, NumF, NumC); } }

Ejercicio 55 Disear un programa en C# que permita pasar una matriz a un vector.


using System; class CPasaMatrizVec { static void LlenarMatriz(int[,] Matriz, int NF, int NC) { int i, j; for(i=1;i<=NF;i++) { for(j=1;j<=NC;j++) { Console.Write("Matriz[" + i+","+j + "]="); Matriz[i,j]=Convert.ToInt32(Console.ReadLine()); } } } static void MostrarV(int[] Vector, int N) { int i; Console.WriteLine("\n\nEl Vector contiene los siguientes valores:"); for (i = 1; i <= N; i++) { Console.WriteLine("V[" + i + "]=" + Vector[i]); Console.ReadKey(); } }

static void MostrarMatriz(int[,] Matriz, int NF, int NC) { int i,j; Console.WriteLine("La Matriz contiene los siguientes valores:"); for(i=1;i<=NF;i++) { for(j=1;j<=NC;j++) { Console.WriteLine("Matriz[" + i+","+j + "]="+Matriz[i,j]); Console.ReadKey();

94 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

} } }

static void MatrizVector(int [,]Matriz,int [] Vector,int NF,int NC,ref int cont) { int i, j; cont = 0; for(i=1;i<=NF;i++) { for(j=1;j<=NC;j++) { cont=cont+1; Vector[cont]=Matriz[i,j]; } } } static void Main(string [] args) { int [,] M1=new int[10,10]; int [ ] V1=new int[100]; int argCont=0,NumF,NumC; Console.Write("Entrar Numero de filas:"); NumF = Convert.ToInt32(Console.ReadLine()); Console.Write("Entrar Numero de Columnas:"); NumC = Convert.ToInt32(Console.ReadLine()); LlenarMatriz(M1,NumF,NumC); MostrarMatriz(M1,NumF,NumC); MatrizVector(M1,V1,NumF,NumC,ref argCont); MostrarV(V1,argCont); } }

Ejercicio 56 Disear un programa en C# que permita encontrar el elemento mayor de una matriz y la posicion donde se encuentra.
using System; class Mayores { static void LlenarMatriz(int[,] Matriz, int NF, int NC) {

95 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

int i, j; for (i = 1; i <= NF; i++) { for (j = 1; j <= NC; j++) { Console.Write("Matriz[" + i + "," + j + "]="); Matriz[i, j] = Convert.ToInt32(Console.ReadLine()); } } } static void MayorMatriz(int[,] Matriz, int NF, int NC, ref int ValorMayor, ref int PosFila, ref int PosC) { int i, j; ValorMayor = Matriz[1,1]; for (i = 1; i <= NF; i++) { for (j = 1; j <= NC; j++) { if (Matriz[i, j]>ValorMayor) { ValorMayor = Matriz[i, j]; PosFila = i; PosC = j; } } } }

static void MostrarMatriz(int[,] Matriz, int NF, int NC) { int i, j; Console.WriteLine("La Matriz contiene los siguientes valores:"); for (i = 1; i <= NF; i++) { for (j = 1; j <= NC; j++) { Console.WriteLine("Matriz[" + i + "," + j + "]=" + Matriz[i, j]); Console.ReadKey(); } } } static void Main(string[] args)

96 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

{ int[,] M1 = new int[10, 10]; int NumF, NumC,PosF=0,PosC=0,ValM=0; Console.Write("Entrar Numero de filas:"); NumF = Convert.ToInt32(Console.ReadLine()); Console.Write("Entrar Numero de Columnas:"); NumC = Convert.ToInt32(Console.ReadLine()); LlenarMatriz(M1, NumF, NumC); MostrarMatriz(M1, NumF, NumC); MayorMatriz(M1, NumF, NumC,ref ValM,ref PosF,ref PosC); Console.Write("Valor mayor de la matriz es:"+ValM+"Fila ES:"+NumF+"Columna es:"+PosC); Console.ReadKey(); } }

Ejercicio 57 Disear un programa en C# que permita: Econtrar la suma de los elementos ubicados en la diagonal principal mediante una funcion. Encontrar la transpuesta de la matriz leida
using System; class CdiagonalTranspuesta { static void Transpuesta(int [,]Matriz,int[,] Tran,int N) { int i,j; for(i=1;i<=N;i++) { for(j=1;j<=N;j++) { Tran[j,i]=Matriz[i,j]; } } } static int SumaDiagonal(int[,]Matriz, int N) {

97 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

int i, for (i { sumaD } return }

sumaD = 0; = 1; i <= N; i++) = sumaD+Matriz[i,i]; sumaD;

static void LlenarMatriz(int[,]Matriz, int N) { int i, j; for (i = 1; i <= N; i++) { for (j = 1; j <= N; j++) { Console.Write("Matriz[" + i + "," + j + "]="); Matriz[i, j] = Convert.ToInt32(Console.ReadLine()); } } }

static void MostrarMatriz(int[,] Matriz, int N) { int i, j; Console.WriteLine("La Matriz contiene los siguientes valores:"); for (i = 1; i <= N; i++) { for (j = 1; j <= N; j++) { Console.WriteLine("Matriz[" + i + "," + j + "]=" + Matriz[i, j]); Console.ReadKey(); } } }

static void MostrarMatrizC(int[,] Matriz, int N) { int i, j; Console.WriteLine("La Matriz transpuesta es:"); for (i = 1; i <= N; i++)

98 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

{ for (j = 1; j <= N; j++) { Console.WriteLine("Matriz[" + j + "," + i + "]=" + Matriz[j, i]); Console.ReadKey(); } } }

static void Main(string[] args) { int [,] M1= new int[10,10]; int[,] M2 = new int[10, 10]; int NT,resu; Console.WriteLine("Entrar tamao de la matriz:"); NT=Convert.ToInt32(Console.ReadLine()); LlenarMatriz(M1,NT); MostrarMatriz(M1,NT); resu = SumaDiagonal(M1, NT); Console.WriteLine("El valor de la suma de la diagonal Principal es:"+resu); Console.WriteLine("La matriz transpuesta es:"); Transpuesta(M1,M2,NT); MostrarMatrizC(M2,NT); Console.ReadKey(); } }

Ejercicio 58 Disear un programa en C# que borre un elemento de un vector.


using System; using System.Collections.Generic; using System.Text; namespace BorrarVector { class Borrar { static void LlenarVector(int[] A, int N) { int i; for (i = 1; i <= N; i++) { Console.Write("V[" + i + "]="); A[i] = Convert.ToInt32(Console.ReadLine());

99 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

} } static void Mostrar(int[] A , int N) { int i; Console.WriteLine("\n\nEl Vector contiene los siguientes valores:"); for (i = 1; i <= N; i++) { Console.WriteLine("V[" + i + "]=" + A[i]); Console.ReadKey(); } }

static void BorrarValor(ref int TV, int[] A, int ValorB) { int I=1,K; Console.WriteLine("Entro a buscar elemento para borrar..."); while ((I <= TV) && (ValorB != A[I])) { I = I + 1; } if (I <= TV) { for (K = I;K<=(TV - 1); K++) { A[K] = A[K + 1]; } TV = TV - 1; } else { Console.Write("Valor no esta en el arreglo.."); Console.ReadKey(); } } static void Main(string[] args) { int [] V1=new int[20]; int TA,vb; Console.WriteLine("Entrar Tamao del Vector:"); TA=Convert.ToInt32(Console.ReadLine()); LlenarVector(V1,TA); Mostrar(V1,TA); Console.WriteLine("Entrar valor a Borrar..");

100 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

vb = Convert.ToInt32(Console.ReadLine()); BorrarValor(ref TA, V1, vb); Mostrar(V1, TA);

} } }

Ejercicio 59 Disear un programa en C# con el siguiente menu: 1. Llenar Matriz\n; 2. Mostrar Matriz; 3.Sumar Diagonal Principal 4.Hallar Transpuesta 5.Salir ENTRAR OPCION---> using System;
class Menu { static void Transpuesta(int [,]Matriz,int[,] Tran,int N) { int i,j; for(i=1;i<=N;i++) { for(j=1;j<=N;j++) { Tran[j,i]=Matriz[i,j]; } } } static int SumaDiagonal(int[,]Matriz, int N) { int i, sumaD = 0; for (i = 1; i <= N; i++) { sumaD = sumaD+Matriz[i,i]; } return sumaD; } static void LlenarMatriz(int[,]Matriz, int N) { int i, j; for (i = 1; i <= N; i++) {

101 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

for (j = 1; j <= N; j++) { Console.Write("Matriz[" + i + "," + j + "]="); Matriz[i, j] = Convert.ToInt32(Console.ReadLine()); } } }

static void MostrarMatriz(int[,] Matriz, int N) { int i, j; Console.WriteLine("\n\nLa Matriz contiene los siguientes valores:"); for (i = 1; i <= N; i++) { for (j = 1; j <= N; j++) { Console.WriteLine("Matriz[" + i + "," + j + "]=" + Matriz[i, j]); Console.ReadKey(); } } } static void MostrarMatrizC(int[,] Matriz, int N) { int i, j; Console.WriteLine("\n\nLa Matriz transpuesta es:"); for (i = 1; i <= N; i++) { for (j = 1; j <= N; j++) { Console.WriteLine("Matriz[" + j + "," + i + "]=" + Matriz[j, i]); Console.ReadKey(); } } } static void Main(string[] args) { int [,] M1= new int[10,10]; int[,] M2 = new int[10, 10]; int NT=0,resu; char opc; string cad; do { Console.Clear(); Console.WriteLine("\n\n\t\t\t\tMENU\n"); Console.WriteLine("\t 1. Llenar Matriz\n");

102 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

Console.WriteLine("\t 2. Mostrar Matriz\n"); Console.WriteLine("\t 3.Sumar Diagonal Principal\n"); Console.WriteLine("\t 4.Hallar Transpuesta\n"); Console.WriteLine("\t 5.Salir\n"); Console.Write("\t ENTRAR OPCION--->"); cad = Console.ReadLine(); opc = Convert.ToChar(cad); switch (opc) { case '1': Console.Write("\n\n\t\tEntrar tamao de la matriz:"); NT = Convert.ToInt32(Console.ReadLine()); LlenarMatriz(M1, NT); break; case '2': MostrarMatriz(M1, NT); break; case '3': resu = SumaDiagonal(M1, NT); Console.WriteLine("\n\n\tEl valor de la suma de la diagonal Principal es:" + resu); Console.ReadKey(); break; case '4': Transpuesta(M1, M2, NT); MostrarMatrizC(M2, NT); break; case '5': Console.Clear(); Console.WriteLine("\n\n\nHASTA PRONTO..."); Console.ReadKey(); return; default: Console.WriteLine("\n\t Opcion no valida.."); Console.ReadKey(); break; } } while (opc != 5);

} }

Ejercicio 60 Disear un programa en C# :

103 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

con un procedimiento LLenarMatriz que se le pasa por parametro la matriz y el orden N(Numero de filas igual al numero de columna)la cual se se debe llenar con numeros aleatorios entre 1 y 5 por filas. Con Un procedimiento que muestre los elementos ubicados por debajo de la diagonal principal. Mostrar los elementos por filas

using System; class CMatrizAleatoria { //Disear el procedimiento LLenarMatriz que se le pasa por parametro la matriz y el orden N(Numero de filas igual al numero de columna)la cual se llena con numerosaleatorios entre 1 y 5 y por filas.// static void LlenarMatriz(int[,] Matriz, int N) { int i, j, aleat = 0; Random rnd = new Random(); for (i = 1; i <= N; i++) { for (j = 1; j <= N; j++) { aleat = rnd.Next(1, 5); Console.WriteLine("Matriz[" + i + "," + j + "]="+aleat); Matriz[i, j] = aleat; } } } // //2. Disear un procedimiento que muestre los elementos ubicados //por debajo de la diagonal principal. Mostrar los elementos por filas. static void MostrarMatriz(int[,] Matriz, int N) { int i, j; Console.WriteLine("\n\nLa Matriz contiene los siguientes valores:"); for (i = 2; i <= N; i++) { for (j = 1; j <= (i-1); j++) { Console.WriteLine("Matriz[" + i + "," + j + "]=" + Matriz[i, j]); Console.ReadKey();

104 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

} } }

static void Main(string[] args) { int [,] M1=new int[10,10]; int Nu; Console.Write("Entrar orden de la Matrz:"); Nu=Convert.ToInt32(Console.ReadLine()); LlenarMatriz(M1, Nu); MostrarMatriz(M1,Nu); } }

Ejercicio 61 Disear un programa en C# : con un procedimiento LLenarMatriz que se le pasa por parametro la matriz y el orden N(Numero de filas igual al numero de columna)la cual se se debe llenar con numeros aleatorios entre 1 y 5 por filas. Con Un procedimiento que muestre los elementos ubicados por encima de la diagonal principal. Mostrar los elementos por filas
using System; class MatrizAleatorio { //1. Disear el procedimiento LLenarMatriz que se le pasa por parametro la matriz y el //orden N(Numero de filas igual al numero de columna)la cual se llena con numeros //aleatorios entre 1 y 5. Llenar la matriz por filas. static void LlenarMatriz(int[,] Matriz, int N) { int i, j, aleat = 0; Random rnd = new Random(); for (i = 1; i <= N; i++) { for (j = 1; j <= N; j++) { aleat = rnd.Next(1, 6); Console.WriteLine("Matriz[" + i + "," + j + "]="+aleat);

105 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

Matriz[i, j] = aleat; } } } // //2. Disear un procedimiento que muestre los elementos ubicados //por encima de la diagonal principal. Mostrar los elementos por filas. static void MostrarMatriz(int[,] Matriz, int N) { int i, j; Console.WriteLine("\n\nLa Matriz contiene los siguientes valores:"); for (i = 1; i <= N; i++) { for (j = i+1; j <=N ; j++) { Console.WriteLine("Matriz[" + i + "," + j + "]=" + Matriz[i, j]); Console.ReadKey(); } } }

static void Main(string[] args) { int [,] M1=new int[10,10]; int Nu; Console.Write("Entrar orden de la Matrz:"); Nu=Convert.ToInt32(Console.ReadLine()); LlenarMatriz(M1, Nu); MostrarMatriz(M1,Nu); } }

Manejo de Excepciones
C# proporciona soporte integrado para el manejo de excepciones o de una forma ms formal situaciones anmalas de funcionamiento, las cuales pueden ocurrir en cualquier

106 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

momento durante la ejecucin del programa y son manejadas por el cdigo que se encuentra fuera del flujo normal de control. Todo esto gracias a las palabras clave try, throw, catch y finally. C# proporciona una solucin estructurada tanto a nivel del sistema como de aplicacin. Cada excepcin esta representada por una instancia de un tipo de clase derivado de System.Exception. try { Se hace esto. si i = 0 throw una excepcin } catch { si fallo se hace esto... } finally { haya fallado o no, se hace esto... } Como se puede apreciar el manejo de excepciones es bastante sencillo y fcil de entender aunque no se tenga mucha experiencia programando, todo aquello que se puso entre las {} del try es un segmento de cdigo en el que puede o no generarse un error en tiempo de ejecucin(excepcin), en caso de que haya habido un funcionamiento anmalo en el programa(excepcin) la ejecucin del cdigo entra en el segmento de cdigo catch y ejecuta el bloque de instrucciones que hemos definido para manejar ese error, finalmente el flujo del programa haya o no habido excepcin entra en finally aqu podemos poner rutinas para marcar los objetos que ya no se utilizarn de manera que el recolector de basura pueda liberar la memoria que dichos objetos ocupaban, rutinas que guarden un log de la aplicacin para llevar un control de cuntas veces ha fallado?, porqu fallo?, etc., todo bloque try puede tener uno o ms catch para tratar cada una de las posibles excepciones, pero la flexibilidad de C# va ms alla de eso, ya que nos permite lanzar nuestras propias excepciones, por ejemplo si un mtodo no recibe un valor que debe recibir o recibe un valor que no puede procesar podemos lanzar nuestra propia excepcin. Ejemplo: using System; public class ManejoExcepciones {

107 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

public static void Main() { try hacemos saber que puede ocurrir un error { string s=null; //Declaramos un string y lo dejamos vacio if (s == null) string esta vacio

//Le

//Si el

throw(new ExcepcionCadenaVacia()); //Lanzamos un error personalizado Console.WriteLine("Esto nunca se imprime"); //Si ahi error el cdigo sale de la ejecucin normal //es por eso que esta parte nunca se ejecuta } catch( ExcepcionCadenaVacia e ) nuestro error { Console.WriteLine("La cadena esta vacia"); error } finally { Console.WriteLine("Esto siempre se imprime"); siempre se ejecutar } } } //Esto //Manejamos el //Atrapamos

108 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

EJERCICIOS 1.Elaborar un algoritmo que encuentre e imprima el rea de un tringulo. Se proporcionan los valores de la base y la altura 2. Elaborar un algoritmo que determine el rea de un trapecio. Se leern la altura, la base mayor y la base menor. Se debe imprimir : el rea, la altura ,la base mayor y la base menor (bm + bina) * altura /2 3. Elaborar un algoritmo que determine cual es la divisin de 2 #s que sern ledos 4. Elaborar un algoritmo que imprima "El futuro se labra da a da" 5. Elaborar un algoritmo que lea 2 nombres con sus respectivas edades, se debe imprimir el nombre de la persona mayor 6. Elaborar un algoritmo para averiguar si el cuadrado de un nmero es superior a cierta cantidad. 7. Cierta universidad para liquidar el pago de matricula de un estudiante le exige los siguientes datos : Nmero de inscripcin Nombre Patrimonio Estrato social La universidad cobra un valor constante ( valor del salario mnimo actual )para cada estudiante. Si el patrimonio en mayor a 54.000 000 y el estrato superior a 3 se le incrementa un porcentaje del 5% sobre el patrimonio. Hacer un algoritmo que muestre : Nmero de inscripcin Nombres 109 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

Pago por matrcula Documente las variables 8. Escribir un algoritmo que acepte 3 valores enteros diferentes y muestre el mayor de ellos 9. Determinar la cantidad de dinero recibida por un trabajador por concepto de las horas trabajadas en una empresa, sabiendo que cuando las horas de trabajo exceden de 40, el resto se considera horas extras y que stas se pagan al doble de una hora normal cuando no exceden de 6, s las horas extras exceden de 6, se pagan las primeras 6 al doble de lo que se paga una hora normal y el resto el triple. Del trabajador se conocen los siguientes datos: Nombre Numero de horas trabajadas en la semana Valor recibido por una hora normal de trabajo. 10. En un almacn de descuentos se efecta una promocin en la cual se hace un descuento sobre el valor de la compra total segn el color de la bolita que el cliente saque al pagar en la caja. Si la bolita es blanca no se le har descuento alguno, si es verde se le har un 10% de descuento, s es amarilla un 25%, si es azul un 50% y si es roja un 100%. Hacer un algoritmo para determinar la cantidad final que un cliente deber pagar por su compra. Se sabe que slo hay bolitas de los colores mencionados. 11. Se tienen cuatro esferas ( A, B, C, D) de las cuales se sabe que tres son de igual peso y una diferente. Elaborar un algoritmo que determine cual es la esfera diferente y si es de mayor o de menor peso. 12. Una empresa con tres departamentos tiene establecido un plan de incentivos para sus vendedores. Al final del periodo a cada departamento se le pide el importe global de las ventas. A los departamentos que excedan el 33% de las ventas totales se les adiciona al salario de los vendedores un porcentaje equivalente al 20% del salado mensual. Si se tienen los siguientes datos: Ventas totales del departamento 1 Ventas totales del departamento 2 Ventas totales del departamento 3 Salario de los vendedores de cada departamento. Hacer un algoritmo que determine cunto recibirn los vendedores de cada departamento al finalizar el periodo 13. Desarrolle un algoritmo que lea tres nmero nicos, y que imprima el nmero medio. El nmero medio es aquel! que no es el menor ni el mayor. 14. Leer una sola vez 5 valores A, B, C, D, E, imprimir el mayor 110 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

15. Hacer un algoritmo que me lea tres valores en una sola lectura, cada valor es la medida del lado de un tringulo. Imprimir si forman un tringulo, y si este es Equiltero, Issceles Escaleno. NOTA : Tres segmentos forman un tringulo si cada uno de los lados es inferior a la suma de los dos restantes 16. Elaborar un algoritmo que determine cual es el # mayor entre 3#s dados 17. Elaborar un algoritmo que lea el nombre, peso, y estatura de una persona. Se debe imprimir el nombre si la persona pesa mas de 80 Kgs o su estatura es mayor de 1.70 mts. En caso contrario se debe imprimir "la persona no cumple los requisitos" 18. Elabore al algoritmo que calcule el valor de S en funcin de A as: Si A < 3 Entonces S= 5A+ (A+1)2 Si A > 9 Entonces S = A3 + 7 A Si 3 <= A <=9 Entonces S= A+ 5 - (A + 2)/4 Ejercicios 1. Se desea conocer cuantos meses han transcurrido entre enero de 1951 y enero de 1994. 2. Se desea conocer cuantos meses han transcurrido entre los inicios de dos aos cualesquiera dados 3. Hacer un algoritmo que dados los dos lados diferentes de un rectngulo, encuentre el permetro y el rea del mismo. 4. A la mam de Juan le preguntan su edad, y contesta: Tengo 3 hijos, pregntele a Juan su edad. Alberto tiene 2/3 de la edad de Juan y Ana tiene 4/3 de la edad de Juan y mi edad es la suma de las tres. Hacer un algoritmo que muestre la edad de los cuatro. 5. Hacer un seguimiento (prueba de escritorio) al siguiente grupo de instrucciones. Suma = 0 x=20 Suma = Suma + x Y = 40 x=x+Y*Y Suma = Suma +x/Y ESCRIBA: EL VALOR DE LA SUMA ES: SUMA

111 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

6. Un empleado trabaja 48 horas en la semana a razn de $8000 hora. La retencin en la frente es del 12. 5% del salario bruto. Se desea saber cual es el salario bruto, la retencin en la frente y el salario neto del trabajador. 7. Escribir un algoritmo que dados dos valores A y B encuentre : A-B A+B A*B A/B 8. Elaborar un algoritmo que lea un numero y obtenga se cuadrado y su cubo. 9. Elaborar un algoritmo que lea un numero negativo e imprima el numero y el positivo del mismo 10. Dado el radio de un crculo. Elaborar un algoritmo que obtenga el rea del circulo y la longitud de circunferencia. 11. Se tiene la siguiente informacin de un empleado: cdigo del empleado, nombre, nmero de horas trabajadas al mes, valor hora trabajada, retencin en la frente. Haga un algoritmo que muestre: cdigo, nombre, salario neto y salario bruto. 12. Dado el valor del lado en un tringulo equiltero. Haga un algoritmo que obtenga el permetro, el valor de la altura y el rea del tringulo. 13. Hacer un algoritmo que determine la ecuacin de la recta que pasa por los puntos (X1, Y1) y (X2, Y2). La ecuacin de la recta es: AX + BY + C = o , En consecuencia se deben determinar los valores A, B y C. 14. Elabore un algoritmo que averige los 10 primeros trminos de la secuencia de fibonacici 0 1 1 2 3 5 8 13 21 penul = 0 ultimo = 1 suma = ultimo + penul 15. Se tienen N tarjetas, en cada una viene Nombre del trabajador, nmero de horas trabajadas, Salario bsico por hora y deducciones ( no hay horas extras ni nocturnas). Elabore un algoritmo que imprima el nombre de los trabajadores cuyo salado neto sea superior o igual a 290000 y cuantos ganan menos de 290000 16. Elabore un algoritmo que cuente las personas que devengan $80000 diarios, las que devengan $60000 diarios y las que devengan ms de $80000. Se conoce

112 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

el nmero de personas. En cada registro viene el nombre de la persona y su salario por da 17.Elabore un algoritmo que seleccione para un grupo de M estudiantes, los mayores de 21 pero menores de 30 aos. En cada registro viene nombre y edad del estudiante 18. Elabore un algoritmo que imprima el porcentaje de los alumnos que perdieron el examen, el nombre de los que ganaron. La nota es de 1 a 5, se gana con 3 o ms. En cada registro viene el nombre y la nota del examen. No se sabe cuntos registros vienen 19. Elabore un algoritmo que determine cual es el nmero mayor entre varios nmeros dados. Se sabe cuntos nmeros hay. 20. Elabore un algoritmo que determine si un nmero dado es par 21. Elabore un algoritmo que imprima la suma, la multiplicacin, la diferencia y la divisin de 2 nmeros que sern ledos 22. Elabore un algoritmo que encuentre el permetro y rea de un cuadrado. Se lee el lado 23. Elabore un algoritmo que imprima cuntos profesores ensean Matemticas, cuntos Sociales, cuntos Espaol. Se asume que un profesor slo da alguna de las tres materias. Se conoce el nmero de profesores en el colegio. En cada registro viene nombre del profesor y materia que dicta. 24. Elabore un algoritmo que imprima el nombre de los profesores de ctedra. Se conoce el nmero de profesores. En cada registro viene nombre del profesor y tipo de vinculacin. 25. Elabore un algoritmo que imprima el promedio de los alumnos que vienen de colegio oficial y los que vienen de colegio privado. No se conoce el nmero de alumnos. En cada registro viene nombre del alumno y tipo de colegio de donde procede. 26.Elabore un algoritmo que imprima el promedio de los alumnos cuyos padres se encuentran separados. No se conoce el nmero de alumnos. En cada registro viene nombre del alumno, edad, sexo y estado de los padres. 27. Elabore un algoritmo que imprima los mltiplos de 3 que hayan antes del 1 al 20. Ejercicios para ciclos 1. Elaborar un algoritmo que descomponga un dato de tipo entero en sus dgitos individuales 2. Elaborar un algoritmo que determine cual es el # mayor entre varios dados 3. Se tiene un nmero desconocido de registros, en cada registro viene un nmero positivo, elabore un algoritmo que imprima el promedio de stos nmeros. 113 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

4. Elabore un algoritmo que imprima el porcentaje de los alumnos que perdieron el examen, el nombre de los que ganaron. La nota es de 1 a 5, se gana con 3 o ms. En cada registro viene el nombre y la nota del examen. No se sabe cuntos registros vienen 5. Elaborar un algoritmo que resuelva un par de ecuaciones lineales de dos incgnitas Anlisis : las ecuaciones las podemos expresar como : y = a + bx y = m + nx donde x , y, son las incgnitas cuyos valores necesitamos como respuesta. a,b,m,n, son aquellos valores que definen claramente las 2 ecuaciones. Algrebaicamente se puede expresar cada incgnita en funcin de los valores que definen las ecuaciones as : 1 - 2 ecuacin o = a - m + ( b - n ) x X= m- a b-n Se deben obtener los valores a,b,m,n Vectores
1. Llenar un vector de 100 posiciones con los cien primeros nmeros naturales. 2. Llenar un vector de 1000 posiciones con los nmeros del 1000 al 1. 3. Se tiene un vector de 50 posiciones. Llevar a las posiciones pares 1 y a las posiciones impares 0. 4. Llenar un vector de 10 posiciones con los nmeros pares del 2 al 20 5. Desarrolle un algoritmo que permita almacenar las notas de 150 estudiantes, adems que calcule cuntas notas son mayores a 4.5, cuntas estn entre 3.5 y 4.5 , la suma de las notas entre 2.5 y 2.1 Y el promedio de las notas entre 0 y 2.0 6. Calcular el promedio de 50 valores almacenados en un vector. Determinar adems cuantos son mayores que el promedio, imprimir el promedio, el nmero de datos mayores que el promedio y una lista de valores mayores que el promedio. 7. Almacenar los primeros 15 mltiplos de 7 en un vector. 8. Llenar dos vectores A y B de 45 elementos cada uno, sumar el elemento uno del vector A con el elemento uno del vector B y as sucesivamente hasta 45, almacenar el resultado en un vector C, e imprimir el vector resultante.

114 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

9. Llenar un vector de 20 elementos, imprimir la posicin y el valor del elemento mayor almacenado en el vector. Suponga que todos los elementos del vector son diferentes. 10. Almacenar 500 nmeros en un vector, elevar al cuadrado cada valor almacenado en el vector, almacenar el resultado en otro vector. Imprimir el vector original y el vector resultante. 11. Almacenar 300 nmeros en un vector, imprimir cuantos son ceros, cuantos son negativos, cuantos positivos. Imprimir adems la suma de los negativos y la suma de los positivos. 12. Se tiene un vector de N posiciones en el cual se ha almacenado la cdula de las personas que pueden votar en la mesa #12 para elegir alcalde. Desarrolle algoritmo que lea una cdula e imprima un mensaje si esa persona si puede o no votar en esa mesa. 13. Almacenar en dos vectores el nombre y la edad de N personas. Imprimir el nombre de persona ms joven de ese grupo de personas. Adems decir su edad. 14. Almacenar 150 nmeros en un vector, almacenarlos en otro vector en orden inverso al vector original e imprimir el vector resultante. 15. Se tienen almacenados en la memoria dos vectores M y N de cien elementos cada uno. Hacer un algoritmo que escriba la palabra "Iguales" si ambos vectores son iguales y "Diferentes" si no lo son. Sern iguales cuando en la misma posicin de ambos vectores se tenga el mismo valor para todos los elementos. 16. Se tiene el vector A con 100 elementos almacenados. Disee un algoritmo que escriba "SI" si el vector esta ordenado ascendentemente o "NO" si el vector no esta ordenado. 17. Disee un algoritmo que lea un nmero cualquiera y lo busque en el vector X, el cual tiene almacenados 80 elementos. Escribir la posicin donde se encuentra almacenado el nmero en el vector o el mensaje "NO" si no lo encuentra. Bsqueda secuencial. 18. Disee un algoritmo que lea dos vectores A y B de 20 elementos cada uno y multiplique el primer elemento de A con el ultimo elemento de B y luego el

115 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

segundo elemento de A por el diecinueveavo elemento de B y as sucesivamente hasta llegar al veinteavo elemento de A por el primer elemento de B. El resultado de la multiplicacin almacenarlo en un vector C Se tienen almacenados en tres vectores CIA 1, CIA2 Y CIA3 las ventas realizadas durante un mes de diciembre. Desarrolle un algoritmo que imprima cual de las tres compaas vendi ms. 19. Llenar un vector de 200 posiciones con los primeros 200 trminos de la secuencia FIBONACCI 20. Imprimir los datos de las posiciones pares de un vector 21. Sumar los datos de las posiciones impares de un vector 22. Imprimir los datos pares de un vector 23. Imprimir todos los datos de un vector, menos el primero, ultimo y el de la mitad 24. Ordenar un vector ascendentemente 25. Dados dos vectores formar un tercero con los datos repetidos que hay en cada uno de los vectores 26. Dados dos vectores formar un tercero teniendo en cuenta que no pueden quedar datos repetidos 27. Buscar un dato en un vector. 28. Eliminar un dato en un vector. 29. Insertar un dato en la posicin p de un vector 30. Insertar un dato en un vector ordenado 31. Intercambiar los datos de un vector. El primero pasa a ser el ultimo y el ultimo pasa a ser el primero. As con el segundo, el tercero y los dems. 32. Hallar la moda en un vector (el dato que ms veces se repite). Suponer que solo hay una que se repite 33. Hallar la moda en un vector (el dato que ms veces se repite). Suponer que hay varias 34. Eliminar los datos repetidos de un vector de manera que solo quede uno de los repetidos 35. Eliminar los datos repetidos de un vector de manera que no quede ninguno de los repetidos

116 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

36. Leer una Matriz por filas e imprimirla por columnas. 37. Leer, hallar el promedio de sus datos e imprimir una matriz. El programa debe llamar los subprogramas lee, prome, impre. 38. Imprimir todos los datos de una matriz MAT de orden mxn, menos los primeros k de la fila P y los ultimas r de la columna S. 39. Imprimir las dos primeras filas de una matriz de orden 10 x 5. 40. Dadas dos matrices de igual orden formar una tercera. La primera columna de la segunda matriz ira despus de la ltima de la primera matriz. 41. Dada una matriz agregarle una fila con los datos menores de cada columna 42. Ordenar una matriz en orden ascendente por filas 43. Intercambiar todos los datos de una matriz. La primera fila pasa a ser la ultima y la ultima pasa a ser la primera. El. Proceso se repite con las dems filas. 44. Con los datos de un vector de 80 posiciones formar una matriz de orden 2 x 40. 45. Sumar los datos de la diagonal principal de una matriz 46. Sumar los datos de las diagonales principal y secundaria de una matriz 47. Devolver un uno si una matriz no es simtrica. 48. Devolver un uno si una matriz es triangular inferior.

Ejercicios Funciones Realizar una funcin que reciba un dato N , calcule y regrese la sumatoria de 1 hasta N.
Utilizando la funcin anterior realizar un programa que muestre la sumatoria de los N nmeros que ingrese el usuario, y diga cual de los datos tiene la mayor sumatoria

Realizar una funcin factorial que reciba un numero N y calcule y regrese el factorial de N Utilizando la funcin anterior mostrar los nmeros entre 500 y 1000 que tienen un factorial mayor a 2000. Utilizando la funcin anterior mostrar el factorial de los nmeros impares que hay entre 50 y 100. Realizar una funcin llamada pago nomina que reciba el nombre, nmero de horas trabajadas y la cantidad de horas trabajadas y calcule y devuelva el pago del trabajador, teniendo en cuenta que las horas extras tienen un recargo del 50% sobre la hora normal. 117 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

Utilizando la funcin anterior realizar un programa que lea los datos de 1000 empleados, calcule y muestre el pago de cada uno de ellos, adems muestre el total a pagar y el sueldo mayor.

Hacer una funcin que reciba el lado de un cuadrado calcule y devuelva el permetro .
Utilizando la funcin anterior realizar un programa que lea el lado de 100 cuadrados, y muestre el permetro de cada uno de ellos y diga cuantos tienen permetro entre 40 y 50 .

Hacer una funcin que reciba el radio de un circulo calcule y devuelva el rea.
Utilizando la funcin anterior realizar un programa que lea el radio de 100 crculos, y muestre el rea de cada uno de ellos y diga cual es el rea menor y la mayor.

Hacer una funcin llamada potencia para el clculo de N elevado a A (por multiplicaciones sucesivas) y utilizarla en un programa para calcular la potencia de las 100 parejas de datos entradas por el usuario, adems muestre la sumatoria de las potencias de todas las parejas. Realizar una funcin que reciba un numero N y regrese la sumatoria de sus dgitos.

Utilizando la funcin anterior realizar un programa que muestre los nmeros entre 500 y 1500 y la suma de dgitos de cada uno, adems muestre los nmeros que tienen la mayor suma de dgitos.

Utilizando la funcin anterior realizar un programa que muestre la suma de dgitos de los nmeros pares mayores que 100 y menores que 1000. Adems diga cuantos nmeros tienen como suma de dgitos 13.
Utilizando la funcin anterior realizar un programa que lea N datos dados por el usuario y muestre y cuente los nmeros cuya suma de dgitos es 10 y terminan en 5. Utilizando la funcin anterior realizar un programa que lea 1000 nmeros dados por el usuario y muestre los numero cuya suma de dgitos es menor a 10.

Realizar una funcin que reciba un dato N, determine y devuelva el digito mayor. Utilizando la funcin anterior realizar un programa que muestre los dgitos mayores de los nmeros entre 2000 y 3000 Utilizando la funcin anterior realizar un algoritmo que lea 100 datos dados por el usuario y muestre los datos que tengan como mayor digito el 8 el 4. Utilizando la funcin anterior realizar un programa que muestre el digito mayor de los nmeros pares que hay entre 500 y 1000, adems muestra la sumatoria de dichos dgitos. Realizar una funcin que reciba un numero N y determine y devuelva la cantidad de dgitos pares que tiene. 118 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

Utilizando la funcin anterior realizar un programa que lea 500 datos dados por el usuario y muestre el nmero y la cantidad de dgitos pares de cada nmero. Utilizando la funcin anterior realizar un programa que muestre los nmero entre 500 y 100 que tengan 2 dgitos, adems muestre el mayor de dichos nmeros. Utilizando las funciones anteriores: Hacer un programa que muestre el factorial de los datos entre 100 y 500 que tienen como suma de dgitos 6 Hacer un programa que lea N datos dados por el usuario y muestre la sumatoria de los datos que tienen como suma de dgitos 2 y su mayor dgito es 8. Hacer un programa que lea N datos dados por el usuario y muestre la sumatoria de cada uno de los datos que terminan en 4, tienen como suma de dgitos 5 y su mayor dgito es 9. Bibliografa Lgica de Programacin ,Efran M. Oviedo Regino. Notas de Programacin I ,Marta Cuartas. Tutorial de C# l Microsoft C# Lenguaje y aplicaciones, Fco. Javier Ceballos. C#, Christoph Wille http://msdn.microsoft.com/XML/understanding/default.aspx?pull=/library/enus/dnx ml/html/understxml.asp

119 SISTEMAS Y ENSEANZA Tel. 422 39 94 NIT. 900109314-2 MEDELLIN COLOMBIA www.sisyen.com

PDF created with pdfFactory Pro trial version www.pdffactory.com

Potrebbero piacerti anche