C# Users.pdf

  • Upload
    jvlivs8

  • View
    211

  • Download
    1

Embed Size (px)

Citation preview

  • This book is a full C# learning course. Aimedfor those who want to migrate to thislanguage, as well as for those who want tolearn programming, even if they do not haveprevious knowledge on the subject.

    C# 2010

    Este libro es un completo curso de programacin en C#, actualizado a la ver-

    sin 4.0, incluida en Visual Studio 2010. Es ideal tanto para quienes desean

    migrar a este potente lenguaje, como para quienes quieran aprender a pro-

    gramar, incluso, sin tener conocimientos previos.

    C# es el lenguaje ms utilizado en la actualidad, por ser poderoso, flexible y

    robusto. En esta obra cubriremos desde las bases de la programacin estruc-

    turada hasta los fundamentos de la orientada a objetos, sin dejar de apren-

    der el manejo de estructuras complejas, como los archivos y las clases.

    Nicols Cosio aporta su vasta experiencia y la didctica comprobada de sus obras

    previas, para facilitar al lector la tarea de comprender cmo se logra desarrollar

    cdigo optimizado destinado a obtener aplicaciones poderosas y eficientes.

    Una obra imprescindible para fundar bases slidas en el desarrollo y apren-

    der a programar de la mejor manera.

    Versin completamente mejorada, actualizada y ampliada de la obra "Curso de programacin C#"

    por Nicols Arrioja Landa Cosio

    CONTENIDO

    N I V E L D E U S U A R I O

    PRINCIPIANTE INTERMEDIO AVANZADO EXPERTO

    1 | C# Y .NETProgramacin para Windows / Comprender .NET /Compilador de C# / El ambiente de desarrollo

    2 | LOS ELEMENTOS BSICOS DE UN PROGRAMALenguajes / Errores en los programas / Las variables /Comentarios / Precedencia de operadores / Pedido de datos

    3 | EL PROGRAMA TOMA DECISIONESLa toma de decisiones / Expresiones y operadoresrelacionales / El uso de if y else / If anidados / Escalera de if-else / Expresiones lgicas / El uso de switch

    4 | CREACIN DE CICLOSEl ciclo for / El valor de inicio / Lmite de conteo / Control de incremento / El contador y el acumulador / Incrementos y decrementos / El ciclo while y do while

    5 | FUNCIONES Y MTODOSLas funciones / Tipos de funciones / Optimizar con funciones/ Pasaje de parmetros por copia y paso por referencia

    6 | LOS ARREGLOSDeclaracin de arreglos / Asignacin y uso de valores /Acceso a arreglos / Arreglos de tipo jagged

    7 | LAS COLECCIONESArrayList / Declaracin / Agregar informacin / El cicloforeach / Stack / Queue / Hashtable

    8 | LAS CADENASEl mtodo ToString() / StringBuilder / Justificacin del texto /Intercambio entre maysculas y minsculas

    9 | ESTRUCTURAS Y ENUMERACIONESDefinicin / Crear variables del nuevo tipo / Acceso a laestructura / Creacin de un constructor

    10 | CMO CREAR NUESTRAS PROPIAS CLASESProgramacin orientada a objetos / Clases / Datos / Mtodos/ Proteccin de datos / Mtodos pblicos y privados

    CAPTULO 11: FLUJOS Y ARCHIVOSLos flujos / Streams en memoria / Uso de archivos

    CAPTULO 12: DEPURACINCmo depurar un programa / Errores de compilacin /Errores en tiempo de ejecucin / Manejo de errores / Erroresde lgica / Detener la ejecucin

    C#

    En este sitio encontrar una gran variedad de recursos y software relacionado, quele servirn como complemento al contenido del libro. Adems, tendr la posibili-dad de estar en contacto con los editores, y de participar del foro de lectores, endonde podr intercambiar opiniones y experiencias.

    Si desea ms informacin sobre el libro puede comunicarse connuestro Servicio de Atencin al Lector: [email protected]

    GUA TOTAL DEL PROGRAMADOR

    Tapa C#.qxp 29/07/2010 16:15 Pgina 1

  • >> DESARROLLO / MICROSOFT>> 400 PGINAS>> ISBN 978-987-1347-74-2

    >> DESARROLL>> 400 PGINA>> ISBN 978-98

    >> DESARROLLO / INTERNET>> 400 PGINAS>> ISBN 978-987-1347-70-4

    >> DESARROLL>> 400 PGINA>> ISBN 978-98

    >> DESARROLLO / INTERNET>> 368 PGINAS>> ISBN 978-987-663-039-9

    >> DESARROLL>> 368 PGINA>> ISBN 978-98

    >> DESARROLLO>> 336 PGINAS>> ISBN 978-987-1347-97-1

    >> DESARROLL>> 336 PGINA>> ISBN 978-98

    Bombo - RT - LIBRO C# 2010 - Jul 10 - EDITABLE.indd 1Bombo - RT - LIBRO C# 2010 - Jul 10 - EDITABLE.indd 1 28/07/2010 15:58:3428/07/2010 15:58:34

  • C#GUA TOTALDEL PROGRAMADOR

    por Nicols Arrioja Landa Cosio

    00_C#2010.qxd 8/11/10 9:41 AM Page 1

  • TTULO: C#

    AUTOR: Nicols Arrioja Landa Cosio

    COLECCIN: Manuales USERS

    FORMATO: 17 x 24 cm

    PGINAS: 400

    Copyright MMX. Es una publicacin de Fox Andina en coedicin con Gradi S.A. He-cho el depsito que marca la ley 11723. Todos los derechos reservados. No se permi-te la reproduccin parcial o total, el almacenamiento, el alquiler, la transmisin o latransformacin de este libro, en cualquier forma o por cualquier medio, sea electr-nico o mecnico, mediante fotocopias, digitalizacin u otros mtodos, sin el permisoprevio y escrito del editor. Su infraccin est penada por las leyes 11723 y 25446. Laeditorial no asume responsabilidad alguna por cualquier consecuencia derivada dela fabricacin, funcionamiento y/o utilizacin de los servicios y productos que se des-criben y/o analizan. Todas las marcas mencionadas en este libro son propiedad ex-clusiva de sus respectivos dueos. Impreso en Argentina. Libro de edicin argentina.Primera impresin realizada en Sevagraf, Costa Rica 5226, Grand Bourg, MalvinasArgentinas, Pcia. de Buenos Aires en VIII, MMX.

    IISSBBNN 997788--998877--2266001133--55--55

    Landa Cosio, Nicols ArriojaC#. - 1a ed. - Buenos Aires : Fox Andina; Gradi; Banfield - Lomas de Zamora, 2010.400 p. ; 24x17 cm. - (Manual Users; 195)

    ISBN 978-987-26013-5-5

    1. Informtica. I. TtuloCDD 005.3

    00_C#2010.qxd 8/11/10 9:41 AM Page 2

  • REDISEO BOMBOS LIBROS - PAG 01 - Base Editable - Nov 09.indd 1REDISEO BOMBOS LIBROS - PAG 01 - Base Editable - Nov 09.indd 1 08/03/2010 11:00:2008/03/2010 11:00:20

  • 4PRELIMINARES

    www.redusers.com

    Nicols Arrioja Landa Cosio

    Catedrtico de IUNIVERTECH y de la Universidad Madero, ele-gido el mejor profesor de los ciclos 2006-2007 y 2007-2008, se de-dica a la investigacin, consulta y capacitacin en reas relacionadascon la realidad virtual, la visualizacin cientfica y los videojuegos. En 1997, desarroll el primer videojuego de realidad virtual in-mersiva en Latinoamrica, conocido como VRaptor. Tambindesarroll el primer lenguaje de programacin para realidad vir-tual en Latinoamrica CND-VR, que es usado en el medioacadmico para ensear de forma sencilla los conceptos de pro-

    gramacin de grficas 3D. Ha sido catedrtico en algunas de las universidades msimportantes de Mxico durante ms de diez aos. En esas instituciones ense des-de las bases de programacin en lenguaje C hasta Inteligencia Artificial. Ha otor-gado ms de 25 conferencias relacionadas con el desarrollo de la realidad virtual ylos videojuegos en diversas universidades de Mxico. Tiene una patente referida ainterfaces cinemticas para video juegos. Dise el plan y el programa de estudiospara la Maestra en Realidad Virtual y Video Juegos en IUNlVERTECH. Es au-tor del los libros DirectX, Inteligencia Artificial y Robtica Avanzada de esta mis-ma editorial. Actualmente, realiza una investigacin sobre Inteligencia Artificialno-Algortmica y tiene disposicin a realizar investigacin y dar conferencia en es-tas reas en cualquier parte del mundo.

    Dedicatoria

    A Mara Eugenia Prez Duarte por todo su apoyo y gran amistad.

    Agradecimientos

    A todas aquellas personas que hace 25 aos me introdujeron a la programacin decomputadoras y me ensearon las bases de esta disciplina. De Sistem Club al Ing.Alfonso Fernndez de la Fuente y a Jacky, Annie y David Fox, Herbert Schildt yKris Jamsa. Un agradecimiento especial a mis alumnos y al equipo de la editorial.

    00_C#2010.qxd 8/6/10 8:14 PM Page 4

  • PRLOGO

    La facilidad con que hoy en da se tiene acceso a una computadora ha llevado a las per-sonas a emplearlas en gran cantidad de actividades, usando para ello software que rea-liza tareas especficas. Cuando se requiere que la computadora realice otro tipo de ac-ciones y los programas con los que se cuenta no lo hacen, es necesario decirle en su pro-pio idioma cmo deber actuar, y para esto se recurre a los lenguajes de programacin.Los lenguajes de programacin intentan parecerse a nuestra propia forma de expre-sarnos, para ello cuentan con caractersticas propias de sintaxis y semntica, as co-mo smbolos que permiten decirle a la computadora qu procesos y qu datos de-be manejar, cmo almacenarlos, qu acciones realizar con ellos y cmo presentarlosal usuario. Por esta razn es importante contar con una metodologa que permitaaprender hbitos correctos y efectivos para resolver problemas, los cuales, al ser sub-divididos para su mejor comprensin, facilitarn su resolucin.Una vez que se ha comprendido el problema, se construye una secuencia de los pa-sos a realizar, mejor conocida como algoritmo, el cual permitir probar si la lgicaes correcta y si los resultados que se obtendrn sern los adecuados. El potencial delos actuales lenguajes de programacin es enorme, ya que permiten automatizar muydiversos tipos de actividades, disminuyendo de ese modo el tiempo que se invierteal hacerlo de forma manual y, si se aprende a usarlos correctamente, se podr hacerms sencilla la vida de los usuarios que emplean dichos programas.La experiencia adquirida en el desarrollo de sistemas por parte del Dr. Nicols Arriojalo ha convertido en una autoridad en cuanto a programacin y buenas prcticas, com-partindolas y enseando a alumnos de diferentes instituciones de nivel superior, conresultados excelentes. Es por eso que esta nueva versin del libro podr guiar paso a pa-so al lector en el uso del poderoso lenguaje de programacin C# del Visual Studio 2010,de modo que al finalizar su aprendizaje, est listo para hacer sus propios programas.Aprender a programar es una tarea que requiere prctica y paciencia, pero tam-bin es una actividad fascinante, y si adems se cuenta con un excelente libro yla constancia necesaria, los resultados sern excelentes. Felicidades por este nue-vo reto que est por comenzar!

    Mara Eugenia Prez DuarteMaestra en Administracin de Tecnologas de Informacin

    Coordinadora de Ingenieras en Sistemas Computacionales y Desarrollo de Software

    Universidad Madero de Mjico

    Prlogo

    5www.redusers.com

    00_C#2010.qxd 8/6/10 8:14 PM Page 5

  • PRELIMINARES

    6 www.redusers.com 6

    EL LIBRO DE UN VISTAZOEl desarrollo de aplicaciones con C# se ha visto modificado en los ltimos tiempos,

    y este libro apunta a afianzar los conocimientos indispensables que nos permitirn generar

    aplicaciones profesionales de nivel. Cada captulo est dedicado a una tcnica especfica e

    ilustrado mediante ejemplos prcticos listos para implementar.

    Captulo 1

    C# Y .NET

    Este capitulo nos introduce a la historia del

    desarrollo de los programas para Windows y

    cmo el Framework de .NET ayuda a resolver

    muchos problemas. Aprenderemos cmo

    crear y ejecutar nuestro primer programa.

    Captulo 2

    LOS ELEMENTOS BSICOS DE UN

    PROGRAMA

    Aprender cmo resolver problemas en la

    computadora es an ms importante que

    conocer la sintaxis de un lenguaje. Aqu

    aprenderemos los elementos bsicos de un

    programa, pero tambin la metodologa para

    disear buenos programas desde el inicio.

    Captulo 3

    EL PROGRAMA TOMA DECISIONES

    Los programas de computadora necesitan

    lgicas complejas, por lo que es importante

    conocer las estructuras necesarias que nos

    permitirn decirle a la computadora cmo

    tomar una decisin.

    Captulo 4

    CREACIN DE CICLOS

    Los ciclos nos permiten repetir algo un

    nmero de veces. Los diferentes tipos de

    ciclos, sus partes y aplicaciones sern

    enseados en este captulo.

    Captulo 5

    FUNCIONES Y MTODOS

    Las funciones y los mtodos nos brindan

    flexibilidad y la capacidad de poder volver a

    utilizar cdigo fcilmente, y tambin nos

    ayudan a ordenar nuestros desarrollos, y

    facilitan su mantenimiento.

    Captulo 6

    LOS ARREGLOS

    Los arreglos, muy tiles en todos los casos,

    nos permiten administrar la informacin de

    una manera fcil y prctica, como si

    trabajsemos con una planilla de clculo. En

    este captulo estudiaremos arreglos de una y

    dos dimensiones, y por supuesto no

    dejaremos de lado los arreglos de tipo jagged.

    Captulo 7

    LAS COLECCIONES

    Las colecciones son estructuras de datos

    que nos permiten trabajar con grupos de

    informacin. Veremos aquellas ms

    importantes, como el ArrayList, Stack,

    Queue y Hashtable.

    Captulo 8

    LAS CADENAS

    Las cadenas permiten guardar y manipular

    texto o frases. C# nos provee de stas para

    su manejo. Aprenderemos cmo hacer uso

    de las cadenas y trabajar con ellas.

    00_C#2010.qxd 8/6/10 8:14 PM Page 6

  • www.redusers.com

    El libro de un vistazo

    7

    Captulo 9

    ESTRUCTURAS Y ENUMERACIONES

    En este captulo aprenderemos cmo crear

    nuestros propios tipos por medio de las

    estructuras y enumeraciones. Las

    estructuras tambin nos permiten agrupar la

    informacin de una manera ptima, lo cual

    nos ayuda a manejarla ms fcilmente.

    Captulo 10

    CMO CREAR NUESTRAS PROPIAS CLASES

    En este captulo empezaremos a conocer los

    conceptos de la programacin orientada a

    objetos, lo ms utilizado hoy en da. Podremos

    crear nuestras propias clases y nuestros

    propios objetos, y tambin trabajaremos con

    mtodos definidos en las clases.

    Captulo 11

    FLUJOS Y ARCHIVOS

    Es muy frecuente que necesitemos guardar

    informacin desde un programa al disco. Por

    medio de los flujos y los archivos lo podemos

    hacer. Guardaremos y leeremos cadenas, y

    veremos que la manipulacin de archivos

    tambin es posible.

    Captulo 12

    DEPURACIN

    La depuracin nos permite corregir los

    problemas que tiene un programa.

    Conoceremos los tipos de errores y cmo

    usar el depurador para eliminarlos.

    Tambin aprenderemos cmo administrar

    las excepciones de la mejor manera .

    !A lo largo de este manual encontrar una serie de recuadros que le brindarn informacin com-

    plementaria: curiosidades, trucos, ideas y consejos sobre los temas tratados.

    Cada recuadro est identificado con uno de los siguientes iconos:

    INFORMACIN COMPLEMENTARIA

    CURIOSIDADESE IDEAS

    DATOS TILESY NOVEDADES

    ATENCIN SITIOS WEB

    00_C#2010.qxd 8/6/10 8:14 PM Page 7

  • PRELIMINARES

    8 www.redusers.com

    Sobre el autor 4

    Prlogo 5

    El libro de un vistazo 6

    Introduccin 12

    Captulo 1

    C# Y .NET

    Breve historia de la programacin

    para Windows 14

    Descubrir .NET 15

    Cmo crear una aplicacin .NET 17

    Conseguir un compilador de C# 18

    El ambiente de desarrollo 18

    Crear nuestra primera aplicacin 19

    Resumen 29

    Actividades 30

    Captulo 2

    LOS ELEMENTOS BSICOS

    DE UN PROGRAMA

    Los lenguajes de programacin 32

    Los programas de computadora 32

    Las variables 42

    Operaciones aritmticas 49

    Cmo pedirle datos al usuario 56

    Cmo resolver problemas

    en la computadora 60

    Resolucin de problemas

    en la computadora 64

    Resumen 69

    Actividades 70

    Pedir ancho

    Pedir alto

    Mostrar rea

    Mostrarpermetro

    rea = ancho alto

    Permetro = (ancho + alto) 2

    Inicio

    Fin

    CONTENIDO

    00_C#2010.qxd 8/6/10 8:14 PM Page 8

  • Contenido

    9www.redusers.com

    Captulo 3

    EL PROGRAMA TOMA DECISIONES

    La toma de decisiones 72

    Expresiones relacionales 72

    El uso de if 76

    El uso de else 84

    Cmo usar if anidados 89

    Escalera de if-else 92

    Expresiones lgicas 96

    El uso de switch 105

    Resumen 109

    Actividades 110

    Captulo 4

    CREACIN DE CICLOS

    El ciclo for 112

    El valor de inicio 117

    El lmite de conteo del ciclo 119

    Control del incremento 121

    Ejemplos con el ciclo for 128

    El ciclo do while 134

    El ciclo while 141

    Resumen 145

    Actividades 146

    Pedir dividendo

    Pedir divisor

    Mostrar resultado

    Inicio

    Fin

    Resultado =dividendo/divisor

    Divisor!=0S

    NO

    Captulo 5

    FUNCIONES Y MTODOS

    Las funciones 148

    Funciones que ejecutan cdigo 150

    Funciones que regresan un valor 156

    Funciones que reciben valores 159

    Funciones que reciben parmetros

    y regresan un valor 162

    Optimizar con funciones 171

    Paso por copia y paso por referencia 178

    Resumen 185

    Actividades 186

    R=a+b

    Pedimos b

    Mostramos r

    Pedimos a

    Inicio

    Fin

    Condicin

    S

    NO

    Cdigo

    00_C#2010.qxd 8/6/10 8:14 PM Page 9

  • PRELIMINARES

    10 www.redusers.com

    Captulo 6

    LOS ARREGLOS

    Los arreglos 188

    Declaracin de los arreglos

    de una dimensin 189

    Asignacin y uso de valores 191

    Arreglos de dos dimensiones 196

    Arreglos de tipo jagged 205

    Los arreglos como parmetros

    a funciones 212

    Resumen 215

    Actividades 216

    Captulo 7

    LAS COLECCIONES

    Las colecciones ms importantes 218

    El ArrayList 218

    El Stack 232

    El Queue 241

    El Hashtable 249

    Resumen 253

    Actividades 254

    Inicializacin

    Inicio

    Fin

    Condicin

    S

    NO Cdigo

    Incremento

    Captulo 8

    LAS CADENAS

    El uso de las cadenas 256

    Cmo declarar la cadena 256

    El mtodo ToString() 256

    Cmo convertir y formatear

    fechas a cadenas 257

    Para darles formato a valores

    numricos 259

    Cmo concatenar cadenas 260

    Uso de StringBuilder 261

    Comparacin de cadenas 263

    Para encontrar una subcadena 264

    Para obtener una subcadena 265

    Para determinar si una cadena

    finaliza en una subcadena 266

    Cmo copiar una parte de la cadena 267

    Cmo insertar una cadena 268

    Para encontrar la posicin de una

    subcadena 269

    Justificacin del texto 270

    Para eliminar caracteres de la cadena 271

    Cmo reemplazar una subcadena 271

    Cmo dividir la cadena 272

    Intercambiar maysculas y minsculas 273

    Cmo podar la cadena 275

    Resumen 277

    Actividades 278

    'H' 'o' 'l' 'a'

    'H' 'o' 'l' 'a'

    '' 'm' 'u' 'n'

    'm' 'u' 'n' 'd' 'o'

    'r' 'n''o''e' 'd' 'o''d'

    00_C#2010.qxd 8/6/10 8:14 PM Page 10

  • Contenido

    11www.redusers.com

    Captulo 9

    ESTRUCTURAS Y ENUMERACIONES

    Las estructuras 280

    Cmo definir una estructura 280

    Cmo crear una variable del nuevo tipo 282

    Cmo acceder a los campos

    de la estructura 283

    Cmo mostrar los campos

    de la estructura 283

    Creacin de un constructor

    para la estructura 286

    Estructuras enlazadas 299

    Las enumeraciones 309

    Resumen 315

    Actividades 316

    Captulo 10

    CMO CREAR NUESTRAS PROPIAS CLASES

    La programacin orientada a objetos 318

    Las clases 318

    Cmo declarar la clase y los datos 320

    Cmo crear la instancia

    de nuestra clase 324

    Cmo asignarles valores

    a datos publicos 324

    Cmo invocar mtodos de un objeto 325

    Cmo imprimir un dato pblico 325

    Proteccin de datos

    y creacin de propiedades 329

    Cmo acceder a las propiedades 333

    Mtodos pblicos y privados 333

    Agenda Nombre: String

    Direccin: String

    Telfono: String

    Edad: Int

    Convertir un objeto a cadena 334

    El constructor en las clases 336

    Sobrecarga del constructor 339

    Resumen 347

    Actividades 348

    Captulo 11

    FLUJOS Y ARCHIVOS

    Los flujos 350

    Los stream en la memoria 351

    El uso de archivos 363

    Resumen 371

    Actividades 372

    Captulo 12

    DEPURACIN

    Cmo empezar a depurar un programa 374

    Corregir los errores de compilacin 374

    Cmo corregir los errores

    en tiempo de ejecucin 379

    Cmo manejar los errores 383

    Resumen 391

    Actividades 392

    Tamao

    Capacidad

    P. Actual

    H O L A A T O D O

    Cubo

    + lado: int + rea: int + volumen: int + CalculaArea() : void + CalculaVolumen() : void

    00_C#2010.qxd 8/6/10 8:14 PM Page 11

  • PRELIMINARES

    12 www.redusers.com

    INTRODUCCIN

    La programacin de computadoras es una actividad fascinante, el poder haceruna aplicacin a la medida y de acuerdo a nuestras necesidades es una actividadinteresante y llena de recompensas. Mucha gente llega a pensar que solamentecon aprender la sintaxis de un lenguaje de programacin es suficiente para po-der hacer programas, pero se equivocan. Aun ms importante que la sintaxis dellenguaje es la tcnica de resolucin del problema y el anlisis adecuado. El tenerbuenos hbitos de anlisis y programacin desde el inicio es fundamental paraconvertirnos en buenos programadores.

    Una de los lenguajes que est adquiriendo gran popularidad es C#, un lenguaje sen-cillo, amigable y poderoso. Con C# se pueden crear todo tipo de aplicaciones, des-de programas de consola para Windows y para pginas web en unin con ASP, has-ta video juegos para Xbox 360 con XNA.

    El presente libro introduce a cualquier persona, aun sin conocimientos de progra-macin, al lenguaje C#. Esta obra est actualizada para Visual Studio 2010 y el Fra-mework de .NET 4.0. En un inicio veremos la forma de realizar el anlisis de unproblema e iremos construyendo el conocimiento hasta llegar a las bases de la pro-gramacin orientada a objetos y, por supuesto, la depuracin.

    El convertirse en un buen programador requiere de mucha prctica y experi-mentacin, pero tambin de una gua adecuada que vaya construyendo paso apaso las habilidades necesarias. Esperamos que este libro sea de utilidad a todosaquellos que, aun sin experiencia en programacin, tengan el deseo de aprendercomo hacer sus propios programas.

    Nicols Arrioja Landa Cosio

    00_C#2010.qxd 8/6/10 8:14 PM Page 12

  • C#.NET

    Breve historia de la programacin para Windows 14

    Comprendiendo .NET 15Cmo se crea una aplicacin .NET 16Cmo conseguir un compilador de C# 17El ambiente de desarrollo 18Cmo crear nuestra primera aplicacin 19

    Resumen 29Actividades 30

    Captulo 1

    Este libro est dirigido a todas aquellas

    personas que desean aprender

    el lenguaje de programacin C# y tienen

    conocimientos bsicos de programacin

    o no tienen ninguna experiencia previa

    programando computadoras. El enfoque

    del libro es guiar paso a paso

    en el aprendizaje del lenguaje y aunque

    C# es un lenguaje orientado a objetos,

    en los primeros captulos tomaremos una

    filosofa estructurada con el fin de hacer

    todava ms fcil el aprendizaje para

    todos nosotros.

    C#

    SERVICIO DE ATENCIN AL LECTOR: [email protected]

    01_C#2010_AJUSTADO.qxd 8/11/10 9:44 AM Page 13

  • BREVE HISTORIA DE LA PROGRAMACIN PARA WINDOWS

    Hace algunos aos la nica forma como se poda programar para Windows erahacer uso de un compilador de C o C++ y de un API de Windows. El API esuna gran coleccin de funciones que se relacionan, las que nos permiten comu-nicarnos con el sistema operativo. Por medio del API de Win32 se programabanlas ventanas, botones y dems elementos. El problema de este tipo de programacin es que el API de Win32 es realmente com-plejo y enorme. Con miles de funciones en su interior, por lo que pocos programa-dores podan conocerlo en su totalidad. Pero la complejidad no solamente estaba enla cantidad de funciones, tambin en la sintaxis y la forma como se programa.Para facilitar la programacin de aplicaciones para Windows surgen diferentes op-ciones; la finalidad de estos intentos era poder hacer las aplicaciones sin tener quepasar por la complejidad de Win32. Uno de estos intentos fue conocido comoOWL; sin embargo, obtuvo ms xito MFC, creado por Microsoft. MFC es un conjunto de clases que envuelve a Win32 y facilita su programacin.Con MFC los procesos ms comunes se agrupan en funciones de tal forma que conuna simple llamada a una funcin de MFC se puede hacer una determinada tarea,para la que antes necesitbamos por lo menos 10 llamadas en Win32 y muchos pa-rmetros. Sin embargo Win32 est debajo de MFC; la programacin MFC simpli-fica mucho las cosas, pero muchos programadores que venan del paradigma de pro-gramacin estructurada no se sentan a gusto con l.Otra de las opciones que surgieron es Visual Basic, este lenguaje logr gran popu-laridad, especialmente en Latinoamrica. Visual Basic tambin trabaja por arriba deWin32, pero basa su sintaxis en el antiguo lenguaje Basic. Es muy sencillo de apren-der y una de las caractersticas que le dio gran popularidad fue la facilidad con laque se podan crear interfaces de usuario y conectividad a bases de datos. Pero has-ta antes de la versin .NET, este lenguaje tena ciertos limitantes ya que no se po-da llevar a cabo programacin orientada a objetos con l.Otro lenguaje que surge, pero con su propio Framework, es JAVA; su principalventaja es ser multiplataforma. Una de sus caractersticas es el uso de un runtime,la aplicacin en lugar de correr directamente en el microprocesador, se ejecutaen un programa llamado runtime y este se encarga de ejecutar el cdigo en el mi-croprocesador correspondiente. Si se tiene el runtime para Windows, sin pro-blema se ejecuta el programa de JAVA.Cuando nosotros desebamos tener un programa que se pudiera ejecutar, era necesa-rio compilarlo. Cada uno de los lenguajes tena su propio compilador, por ello no erasencillo poder compartir cdigo de C++ con cdigo de Visual Basic ya que el traducirentre lenguajes era difcil. Para poder compartir cdigo entre los lenguajes surge un mo-

    1. C#.NET

    14 www.redusers.com

    01_C#2010_AJUSTADO.qxd 8/6/10 8:15 PM Page 14

  • delo conocido como COM, ste nos permite crear componentes binarios, esto quieredecir que es posible programar un componente en Visual Basic y un programador deC++ puede tomarlo y hacer uso de l. Esto se debe a que el componente ya es cdigocompilado y no cdigo fuente en el lenguaje de origen; la programacin de COM tam-bin tena sus complejidades y surge ATL para ayudar en su desarrollo.Con todo esto, llega el momento en el cual es necesario ordenar, facilitar y organi-zar el desarrollo de las aplicaciones para Windows, con esta filosofa surge .NET.

    Descubrir .NETEl Framework de .NET es una solucin a toda la problemtica en torno al desa-rrollo de aplicaciones, brinda grandes beneficios no solamente al desarrollador, si-no tambin al proceso de desarrollo. En primer lugar .NET permite trabajar concdigo ya existente, podemos hacer uso de los componentes COM, e incluso, si lonecesitramos usar el API de Windows. Cuando el programa .NET est listo es mu-cho ms fcil de instalar en la computadora de los clientes, que las aplicaciones tra-dicionales ya que se tiene una integracin fuerte entre los lenguajes. Un programador de C# puede entender fcilmente el cdigo de un programador deVisual Basic .NET y ambos pueden programar en el lenguaje con el que se sientenms cmodos. Esto se debe a que todos los lenguajes que hacen uso de .NET com-parten las libreras de .NET, por lo que no importa en qu lenguaje programemos,las reconocemos en cualquiera. A continuacin conoceremos los diferentes compo-nentes de .NET: CLR, assembly y CIL.

    CLREl primer componente de .NET que conoceremos es el Common LanguageRuntime, tambin denominado CLR. Este es un programa de ejecucin comn atodos los lenguajes. Este programa se encarga de leer el cdigo generado por el com-pilador y empieza su ejecucin. Sin importar si el programa fue creado con C#,con Visual Basic .NET o algn otro lenguaje de .NET el CLR lo lee y ejecuta.

    AssemblyCuando tenemos un programa escrito en un lenguaje de .NET y lo compilamos se ge-nera el assembly. El assembly contiene el programa compilado en lo que conocemoscomo CIL y tambin informacin sobre todos los tipos que se utilizan en el programa.

    CILLos programas de .NET no se compilan directamente en cdigo ensamblador delcompilador, en su lugar son compilados a un lenguaje intermedio conocido comoCIL. Este lenguaje es ledo y ejecutado por el runtime. El uso del CIL y el runtimees lo que le da a .NET su gran flexibilidad y su capacidad de ser multiplataforma.

    Breve historia de la programacin para Windows

    15www.redusers.com

    01_C#2010_AJUSTADO.qxd 8/6/10 8:15 PM Page 15

  • El Framework de .NET tiene lo que se conoce como las especificaciones comunes delenguaje o CLS por sus siglas en ingls, estas especificaciones son las guas que cual-quier lenguaje que desee usar .NET debe de cumplir para poder trabajar con el runti-me. Una ventaja de esto es que si nuestro cdigo cumple con las CLS podemos tenerinteroperabilidad con otros lenguajes, por ejemplo, es posible crear una librera en C#y un programador de Visual Basic .NET puede utilizarla sin ningn problema.Uno de los puntos ms importantes de ests guas es el CTS o sistema de tiposcomunes. En los lenguajes de programacin, cuando deseamos guardar informa-cin, sta se coloca en una variable, las variables van a tener un tipo dependiendodel la informacin a guardar, por ejemplo, el tipo puede ser para guardar un n-mero entero, otro para guardar un nmero con decimales y otro para guardar unafrase o palabra. El problema con esto es que cada lenguaje guarda la informacinde manera diferente, algunos lenguajes guardan los enteros con 16 bits de memo-ria y otros con 32 bits; incluso algunos lenguajes como C y C++ no tienen un ti-po para guardar las cadenas o frases. Para solucionar esto el Framework de .NET define por medio del CTS cmo vana funcionar los tipos en su entorno. Cualquier lenguaje que trabaje con .NET de-be de usar los tipos tal y como se sealan en el CTS. Ahora que ya conocemos losconceptos bsicos, podemos ver cmo es que todo esto se une.

    Cmo se crea una aplicacin .NETPodemos crear una aplicacin .NET utilizando un lenguaje de programacin, paraeste efecto ser C#; con el lenguaje de programacin creamos el cdigo fuente delprograma (instrucciones que le dicen al programa qu hacer). Cuando hemos finalizado con nuestro cdigo fuente, entonces utilizamos el com-pilador. El compilador toma el cdigo fuente y crea un assembly para nosotros, es-te assembly tendr el equivalente de nuestro cdigo, pero escrito en CIL; esto noslleva a otra de las ventajas de .NET: nuestro cdigo puede ser optimizado por elcompilador para la plataforma hacia la cual vamos a usar el programa, es decir queel mismo programa puede ser optimizado para un dispositivo mvil, una PC nor-mal o un servidor, sin que nosotros tengamos que hacer cambios en l.

    1. C#.NET

    16 www.redusers.com

    El Framework de .NET se puede ejecutar en muchas plataformas, no solo en Windows. Esto

    significa que podemos programar en una plataforma en particular y si otra plataforma tiene el

    runtime, nuestro programa se ejecutar sin ningn problema. Un programa .NET desarrollado

    en Windows puede ejecutarse en Linux, siempre y cuando se tenga el runtime correspondiente.

    .NET ES MULTIPLATAFORMA

    01_C#2010_AJUSTADO.qxd 8/6/10 8:15 PM Page 16

  • Cuando nosotros deseamos invocar al programa, entonces el runtime entra en ac-cin, lee el assembly y crea para nosotros todo el entorno necesario. El runtimeempieza a leer las instrucciones CIL del assembly y conforme las va leyendo lascompila para el microprocesador de la computadora en la que corre el programa;esto se conoce como JIT o compilacin justo a tiempo. De esta manera confor-me se avanza en la ejecucin del programa se va compilando; todo esto ocurre demanera transparente para el usuario.El Framework de .NET provee, para los programas que se estn ejecutando, losservicios de administracin de memoria y recolector de basura. En lenguajesno administrados como C y C++ el programador es responsable de la adminis-tracin de memoria, en programas grandes esto puede ser una labor complicada,que puede llevar a errores durante la ejecucin del programa. Afortunadamentelenguajes administrados como C# tienen un modelo en el cual nosotros comoprogramadores ya no necesitamos ser responsables por el uso de la memoria. Elrecolector de basura se encarga de eliminar todos los objetos que ya no son ne-cesarios, cuando un objeto deja de ser til el recolector lo toma y lo elimina. Deesta forma se liberan memoria y recursos. El recolector de basura trabaja de forma automtica para nosotros y ayuda a elimi-nar toda la administracin de recursos y memoria que era necesaria en Win32. Enalgunos casos especiales como los archivos, las conexiones a bases de datos o de redse tratan de recursos no administrados, para estos casos debemos de indicar explci-tamente cuando es necesario que sean destruidos.

    Cmo conseguir un compilador de C#Existen varias opciones de compiladores para C#, en este libro utilizaremos la ver-sin de C# que viene con Visual Studio 2010, pero tambin es posible utilizar ver-siones anteriores. Este compilador, al momento de publicacin de este libro, utili-za la versin 4.0 del Framework. La mayora de los ejemplos deben poder compi-larse y ejecutarse sin problema, an utilizando versiones anteriores del Framework,esto es vlido incluso para aquellos programadores que decidan trabajar con el lla-mado Mono, como alternativa libre y gratuita.

    Breve historia de la programacin para Windows

    17www.redusers.com

    Al compilador JIT tambin se le conoce como Jitter. Forma parte del runtime y es muy eficiente,

    si el programa necesita volver a ejecutar un cdigo que ya se ha compilado, el Jitter en lugar de

    volver a compilar, ejecuta lo ya compilado, mejorando de esta forma el desempeo y los tiempos

    de respuesta de cara al usuario.

    EL COMPILADOR JIT

    01_C#2010_AJUSTADO.qxd 8/6/10 8:15 PM Page 17

  • Una mejor opcin, en caso de que no podamos conseguir la versin profesional deVisual Studio 2010, es la versin Express. Esta versin es gratuita y se puede des-cargar directamente de Internet, lo nico que se necesita es llevar a cabo un peque-o registro por medio de cualquier cuenta de Hotmail o passport. Para descargar el compilador de C# Express de forma completamente gratuita, po-demos acceder al sitio web que se encuentra en la direccin www.microsoft.com/express, dentro del portal de Microsoft. Para realizar esta descarga slo sernecesario completar un formulario de registro.Una vez que hemos descargado el compilador, podemos proceder a llevar a cabo lainstalacin; esta tarea es muy similar a la instalacin de cualquier otro programa deWindows, pero no debemos olvidar registrarlo antes de 30 das.

    El ambiente de desarrolloUna vez finalizada la instalacin podemos iniciar el programa seleccionndolo desdeel men Inicio de Windows, veremos una ventana como la que aparece a continua-cin, que muestra la interfaz de uso de la aplicacin.

    Figura 1. Aqu vemos la ventana principal de CC## EExxpprreessss22001100. Esta interfaz aparece cada vez que iniciamos el programa.

    Bsicamente la interfaz est dividida en dos partes, en el centro tenemos la pgina deinicio, aqu encontramos enlaces a nuestros proyectos ms recientes, pero tambin

    1. C#.NET

    18 www.redusers.com

    01_C#2010_AJUSTADO.qxd 8/6/10 8:15 PM Page 18

  • podemos recibir comunicados y noticias sobre el desarrollo de software usando C#. En esta misma parte de la interfaz pero como pginas diferentes, tendremos las zo-nas de edicin. Estas zonas de edicin nos permitirn editar el cdigo del progra-ma, editar la interfaz de usuario, iconos y dems recursos. Editar el cdigo del programa es una actividad muy sencilla que no debe preocu-parnos, si sabemos utilizar cualquier tipo de editor de textos como Microsoft Wordo el Bloc de notas de Windows, entonces podemos editar el cdigo del programa.Los dems editores tambin son bastante amigables para el usuario, pero no los ne-cesitaremos para realizar los ejemplos mostrados en este libro.Del lado derecho tenemos una ventana que se conoce como Explorador de solucio-nes, en esta misma rea aparecern otras ventanas que nos dan informacin sobreel proyecto que estamos desarrollando. Veremos los detalles mostrados por algunasde estas ventanas un poco ms adelante en este libro.En la parte inferior encontramos otra ventana, en esta zona generalmente aparecenlos apartados que utilizar el compilador para comunicarse con nosotros. Por ejem-plo, en esta zona veremos la ventana que nos indica los errores que tiene nuestroprograma, en la parte superior aparecen los mens y las barras de herramientas.

    Cmo crear nuestra primera aplicacinPara familiarizarnos ms con C# Express, lo mejor es crear un primer proyecto ytrabajar sobre l. Generaremos un pequeo programa que nos mande un mensajeen la consola, luego adicionaremos otros elementos para que podamos explorar lasdiferentes ventanas de la interfaz de usuario.Para crear un proyecto tenemos que seleccionar el men Archivo y luego de esto de-bemos hacer clic en la opcin llamada Nuevo Proyecto, de esta forma veremos uncuadro de dilogo que muestra algunas opciones relacionadas.En la parte central del cuadro de dilogo aparecen listados los diferentes tipos deproyectos que podemos crear, para este ejemplo debemos seleccionar el que indicaaplicacin de consola. En la parte inferior escribiremos el nombre de nuestro pro-yecto, que en este caso ser MiProyecto. Cada nuevo proyecto que crearemos tendrsu propio nombre; despus, simplemente oprimimos el botn OK.

    Breve historia de la programacin para Windows

    19www.redusers.com

    Si por algn motivo llegamos a cerrar el editor del cdigo fuente o no aparece en nuestra

    interfaz de usuario, la forma ms sencilla de encontrarlo es por medio del Explorador de

    soluciones. Simplemente debemos dirigirnos al documento que representa nuestro cdigo

    fuente y hacer doble clic en l, la ventana con el editor de cdigo fuente aparecer.

    ENCONTRAR CDIGO FUENTE RPIDAMENTE

    01_C#2010_AJUSTADO.qxd 8/6/10 8:15 PM Page 19

  • Figura 2. ste es el cuadro de dialogo que usamos para crear un nuevo

    proyecto, gracias a sus opciones podemos generar diferentes tipos de proyectos.

    En unos pocos segundos C# Express crea el proyecto para nosotros. Visual Studioy la versin Express hacen uso de soluciones y proyectos, una solucin puede tenervarios proyectos, por ejemplo, Office tiene diferentes productos como Word, Excely PowerPoint. Office es una solucin y cada producto es un proyecto. El proyectopuede ser un programa independiente o una librera, y puede tener uno o varios do-cumentos, estos documentos pueden ser el cdigo fuente y recursos adicionales.Podemos observar que nuestra interfaz de usuario ha cambiado un poco, las venta-nas ya nos muestran informacin y tambin podemos ver que en la zona de edicinse muestra el esqueleto para nuestro programa.

    Figura 3. Esta figura nos muestra el panel derecho denominado Solution Explorer.

    1. C#.NET

    20 www.redusers.com

    01_C#2010_AJUSTADO.qxd 8/6/10 8:15 PM Page 20

  • El Explorador de soluciones nos muestra la informacin de la solucin de formalgica, si observamos es como un pequeo rbol. En la raz encontramos a la so-lucin, cada proyecto que tengamos en esa solucin ser una rama, cada proyecto,a su vez, tendr tambin sus divisiones. En nuestro caso vemos tres elementos, dosde esos elementos son carpetas, en una se guardan las propiedades del proyecto yen la otra las referencias (durante este libro no haremos uso de estas carpetas). Eltercer elemento es un documento llamado Program.cs, ste representa al documentodonde guardamos el cdigo fuente de nuestra aplicacin. Vemos que la extensinde los programas de C# es .CS.En el rea de edicin podemos observar que tenemos un esqueleto para que, apartir de ah, podamos crear nuestro propio programa. Para entender lo que te-nemos ah es necesario conocer un concepto: namespace. El namespace es unaagrupacin lgica, por ejemplo, todo el cdigo que podemos tener relacionadocon matemticas puede quedar agrupado dentro del namespace de Math. Otrouso que tiene el namespace es el de resolver conflictos con los nombres, por ejem-plo, supongamos que tenemos un proyecto muy grande y varios programadorestrabajando en l. Es posible que ambos programadores crearan un mtodo quetuviera el mismo nombre, esto nos genera un conflicto ya que el programa nopodra saber cual versin utilizar. La forma de resolver esto es que cada progra-mador tenga su propio namespace y hacer referencia al namespace correspon-diente segn la versin que deseramos utilizar.El Framework de .NET nos provee de varios namespaces donde tenemos miles declases y mtodos ya creados para nuestro uso. Cuando deseamos utilizar los recur-sos que se encuentran en un namespace programado por nosotros o por otros pro-gramadores, debemos hacer uso de un comando de C# conocido como using.Como podemos ver en la parte superior del cdigo, tenemos varios using haciendoreferencia a los namespace que necesita nuestra aplicacin; si necesitramos adicio-nar ms namespaces, lo haramos en esta seccin.Ms abajo se est definiendo el namespace propio de nuestro proyecto, esto se ha-ce de la siguiente manera:

    namespace MiProyecto{

    }

    El namespace que estamos creando se llama MiProyecto, como podemos ver el na-mespace usa { } como delimitadores, esto se conoce como un bloque de cdigo,todo lo que se coloque entre { } pertenecer al namespace; ah es donde ser nece-sario escribir el cdigo correspondiente a nuestra aplicacin.

    Breve historia de la programacin para Windows

    21www.redusers.com

    01_C#2010_AJUSTADO.qxd 8/6/10 8:15 PM Page 21

  • Dentro del bloque de cdigo encontramos la declaracin de una clase, C# es unlenguaje orientado a objetos y por eso necesita que declaremos una clase para nues-tra aplicacin. La clase tiene su propio bloque de cdigo y en nuestra aplicacin sellamar Program. El concepto de clase se ver en el Captulo 10 de este libro.Todos los programas necesitan de un punto de inicio, un lugar que indique dndeempieza la ejecucin del programa, en C#, al igual que en otros lenguajes, el pun-to de inicio es la funcin Main(); esta funcin tambin tiene su propio bloque decdigo. Dentro de esta funcin generalmente colocaremos el cdigo principal denuestra aplicacin, aunque es posible tener ms funciones o mtodos y clases. Laspartes y caractersticas de las funciones se ven en el Captulo 5 de este libro.Ahora es el momento de crear nuestra primera aplicacin. Vamos a modificar el c-digo de la funcin tal y como se muestra a continuacin. Cuando estemos adicio-nando la sentencia dentro de Main(), debemos fijarnos que sucede inmediatamen-te despus de colocar el punto.

    using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace MiProyecto{

    class Program{

    static void Main(string[] args){

    Console.WriteLine(Hola Mundo!);}

    }}

    Si logramos observar, cuando se escribi la palabra Console y luego el punto, apare-ci un recuadro listando diferentes elementos. Este cuadro se llama autocompletary nos permite trabajar rpidamente y reducir la cantidad de errores de sintaxis. Elcuadro de autocompletar nos muestra sugerencia de la palabra, comando, variable,etc. que se podra usar a continuacin. Si lo deseamos, lo seleccionamos de esa lis-ta, y l lo escribe por nosotros, conforme avancemos y nos familiaricemos con laprogramacin de C# veremos que es de gran ayuda.En nuestro ejemplo hemos colocado una sentencia que escribir el mensaje HolaMundo en la consola. Es un programa muy sencillo, pero nos permitir aprender c-mo llevar a cabo la compilacin de la aplicacin y ver el programa ejecutndose.

    1. C#.NET

    22 www.redusers.com

    01_C#2010_AJUSTADO.qxd 8/6/10 8:15 PM Page 22

  • Para compilar la aplicacinUna vez que terminemos de escribir nuestro programa, podemos llevar a cabo lacompilacin, como aprendimos anteriormente esto va a generar el assembly que lue-go usar el runtime cuando se ejecute.Para poder compilar la aplicacin debemos seleccionar el men de Depuracin o De-bug y luego Construir Solucin o Build Solution. El compilador empezar a trabajar yen la barra de estado veremos que nuestra solucin se ha compilado exitosamente.

    Figura 4. Para compilar nuestra aplicacin, primero debemos

    construirla, seleccionando la opcin adecuada desde el men.

    Para ejecutar la aplicacinUna vez que la compilacin ha sido exitosa, podemos ejecutar nuestro programa yver cmo trabaja. Para esto tenemos dos opciones: ejecutar con depuracin y eje-cutar sin depurador. En la versin Express nicamente aparece la ejecucin condepuracin, pero podemos usar la ejecucin sin depurador con las teclas CTRL+F5 oadicionndola usando el men de herramientas.El depurador es un programa que nos ayuda a corregir errores en tiempo de eje-cucin y tambin errores de lgica. En el Captulo 12 de este libro aprenderemos c-mo utilizarlo. De preferencia debemos utilizar la ejecucin sin depurador y hacer

    Breve historia de la programacin para Windows

    23www.redusers.com

    ste es un libro de inicio a la programacin con C#, por eso todos los programas se ejecutarn

    en la consola. Una vez comprendidos los conceptos principales que se ensean, es posible

    aprender cmo se programan las formas e interfaz grfica en C#. Este tipo de programacin no

    es difcil, pero si requiere tener los conocimientos bsicos de programacin orientada a objetos.

    INTERFAZ GRFICA

    01_C#2010_AJUSTADO.qxd 8/6/10 8:15 PM Page 23

  • uso de la ejecucin con depuracin nicamente cuando realmente la necesitemos.Ahora ejecutaremos nuestra aplicacin, para esto oprimimos las teclas CTRL+F5.

    Figura 5. Con el men Debug/Start WithoutDebbuging nuestro programa se ejecutar.

    Cuando el programa se ejecuta, aparece una ventana, a ella la llamamos consola yse encarga de mostrar la ejecucin del programa. De esta forma podremos leer elmensaje que habamos colocado en nuestro ejemplo.

    Figura 6. Ahora podemos ver nuestra aplicacin ejecutndose en la consola.

    Cmo detectar errores en un programaEn algunas ocasiones puede ocurrir que escribimos errneamente el programa, cuan-do esto sucede, la aplicacin no podr compilarse ni ejecutarse; si esto llegara a ocu-rrir debemos cambiar lo que se encuentra mal.

    1. C#.NET

    24 www.redusers.com

    01_C#2010_AJUSTADO.qxd 8/6/10 8:15 PM Page 24

  • Escribamos a propsito un error para que veamos cmo se comporta el compilador.

    using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace MiProyecto{

    class Program{

    static void Main(string[] args){

    Consola.WriteLine(Hola Mundo!);}

    }}

    En el programa hemos cambiado Console por Consola, esto provocar un error; aho-ra podemos tratar de compilar nuevamente y ver lo que sucede.

    Figura 7. En esta imagen vemos que el programa

    tiene un error y por lo tanto no se puede compilar.

    Breve historia de la programacin para Windows

    25www.redusers.com

    01_C#2010_AJUSTADO.qxd 8/6/10 8:15 PM Page 25

  • Como ya sabemos, la ventana que aparece en la parte inferior de nuestra interfaz deusuario es utilizada por el compilador para comunicarse, vemos que aparece unaventana que nos entrega un listado de errores; en el Captulo 12, dedicado a la depu-racin, aprenderemos a utilizarla, ahora simplemente debemos saber que siempre esnecesario resolver el primer problema de la lista y que podemos ir directamente alerror haciendo doble clic con el mouse sobre l.

    La vista de clasesAhora revisaremos la vista de clases. En esta vista podemos obtener informacinsobre la solucin que estamos creando, pero a diferencia del Explorador de solu-ciones, la informacin se encuentra ordenada en forma lgica.Con esta vista podemos encontrar rpidamente los namespace de nuestra solucin ydentro de ellos las clases que contienen; si lo deseamos, podemos ver los mtodos quese encuentran en cada clase. Esta vista no solamente permite observar la informacinlgica, tambin nos da la posibilidad de navegar rpidamente en nuestro cdigo. En la versin Express no viene la opcin previamente configurada, por lo que es ne-cesario adicionar el comando al men Vista.Para mostrar la vista de clases debemos de ir al men Vista y luego seleccionar Vis-ta de Clases, una ventana aparecer en nuestra interfaz de usuario.

    Figura 8. Para mostrar la vista de clases debemos de usar el men View.

    La ventana de la vista de clases est divida en dos secciones, la seccin superior nosmuestra la relacin lgica y jerrquica de los elementos mientras que en la parte in-ferior vemos los mtodos que componen a alguna clase en particular.

    1. C#.NET

    26 www.redusers.com

    Si deseamos trabajar bajo Linux, es posible utilizar Mono. Solamente debemos recordar que no

    siempre la versin .NET que maneja Mono es la ms reciente de Microsoft. El sitio de este

    proyecto lo encontramos en la direccin web www.mono-project.com/Main_Page, desde ella

    podemos descargarlo en forma completamente gratuita.

    .NET EN LINUX

    01_C#2010_AJUSTADO.qxd 8/6/10 8:15 PM Page 26

  • Figura 9. Aqu podemos observar a la vista de clases en el lado

    derecho. El rbol est abierto para poder ver los elementos que lo componen.

    En la raz del rbol encontramos al proyecto, ste va a contener las referencias ne-cesarias y el namesapace de MiProyecto. Si tuviramos ms namespaces estos apare-ceran ah, al abrir el namespace de Miproyecto encontramos las clases que estn de-claradas dentro de l. En este caso solamente tenemos la clase Program, si la selec-cionamos veremos que en la parte inferior se muestran los elementos que estn de-clarados en su interior. En nuestro ejemplo tenemos el mtodo Main(). Si en este momento damos doble clic en cualquiera de los mtodos, nos dirigiremosautomticamente al cdigo donde se define, como nuestro programa es muy pe-queo, posiblemente no vemos la ventaja de esto, pero en programas con miles delneas de cdigo, el poder navegar rpidamente es una gran ventaja.

    Configurar los mens del compiladorPara poder adicionar las opciones que nos hacen falta en los mens debemos seguiruna serie de pasos muy sencillos. Nos dirigimos primero al men Tools o Herra-mientas y seleccionamos la opcin Customize.

    Breve historia de la programacin para Windows

    27www.redusers.com

    Uno de los sitios ms importantes que tenemos que visitar cuando desarrollamos para .NET

    es el llamado MSDN. En este sitio encontraremos toda la documentacin y variados ejemplos

    para todas las clases y mtodos que componen a .NET. El sitio se encuentra en la direccin

    web www.msdn.com.

    MSDN

    01_C#2010_AJUSTADO.qxd 8/6/10 8:15 PM Page 27

  • Figura 10. Es necesario seleccionar la opcin de Customize en el men Tools.

    Nos aparece un cuadro de dilogo, en el cual debemos seleccionar Commands, enesta seccin podemos elegir el men al cual queremos adicionar un comando,por ejemplo el men View.

    Figura 11. En esta ventana debemos seleccionar el men que deseamos modificar.

    1. C#.NET

    28 www.redusers.com

    01_C#2010_AJUSTADO.qxd 8/6/10 8:15 PM Page 28

  • Aparecen listados los comandos actuales del men, damos clic en la zona donde de-seamos que se inserte el nuevo comando y oprimimos el botn Add Command. Conesto aparece un nuevo cuadro de dialogo que muestra todos los posibles comandosque podemos adicionar clasificados en categoras.En las categoras seleccionamos View y en los comandos Class View, este comandoes el que nos permite tener la vista de clases. El comando de Iniciar Sin Depurar seencuentra en la categora Debug.

    Figura 12. En esta ventana seleccionamos el comando que deseamos insertar.

    Hasta aqu hemos analizado los conceptos bsicos ms importantes necesarios paracomprender el funcionamiento de .NET, a partir del prximo captulo comenzare-mos con nuestro aprendizaje de programacin y del lenguaje C#.

    Breve historia de la programacin para Windows

    29www.redusers.com

    RESUMEN

    Hace algunos aos la programacin para Windows resultaba complicada y requera de un alto

    grado de especializacin. El Framework de .NET soluciona muchos de los problemas

    relacionados con la programacin en Windows y la interoperabilidad, las aplicaciones de

    .NET se compilan a un assembly que contiene el programa escrito en CIL; ste es un lenguaje

    intermedio que lee el runtime cuando se ejecuta la aplicacin. El CLR compila el CIL para el

    microprocesador segn va siendo necesario, el uso de un runtime le da a .NET la flexibilidad

    de ser multiplataforma. Todos los lenguajes .NET deben cumplir con los lineamientos que

    encontramos en el CLS.

    01_C#2010_AJUSTADO.qxd 8/6/10 8:15 PM Page 29

  • 30 www.redusers.com

    TEST DE AUTOEVALUACIN

    1 Cul es la historia del desarrollo

    de las aplicaciones para Windows?

    2 Qu problemas ayuda a resolver .NET?

    3 Qu es un assembly?

    4 Cul es la definicin de CIL y CLR?

    5 Describa qu hace el CLR con el

    assembly.

    6 Cul es el significado de Jitter?

    7 Mencione algunos compiladores de C#

    que podemos utilizar.

    8 Qu es el CTS?

    9 Porqu .NET puede ser multiplataforma?

    10Qu otro lenguaje que use .NET existe?

    11Cul es la ltima versin de .NET?

    12 Qu otro lenguaje que use .NET existe?

    ACTIVIDADES

    EJERCICIOS PRCTICOS

    1 Cree un proyecto nuevo que imprima su

    nombre en la ventana de la consola.

    2 Coloque un error a propsito y vea cmo

    se comporta el compilador.

    3 Explore el proyecto usando la vista de

    clases.

    4 Experimente con el explorador de

    soluciones y vea la informacin que le

    provee.

    5 Agregue ms mensajes a la aplicacin

    que ha creado.

    01_C#2010_AJUSTADO.qxd 8/6/10 8:15 PM Page 30

  • Los elementosbsicos de unprograma

    Los lenguajes de programacin 32Los programas de computadora 32Las variables 42Operaciones aritmticas 49Cmo pedirle datos al usuario 56Cmo resolver problemas en la computadora 60Resolucin de problemasen la computadora 64

    Resumen 69Actividades 70

    Captulo 2

    Lleg el momento de aprender cmo

    desarrollar programas de computadoras.

    Algunas personas piensan que programar

    software es complejo y difcil,

    sin embargo, esto no es cierto,

    o lo fue hace muchsimo tiempo atrs.

    Para ser programadores, slo

    necesitamos conocer un lenguaje

    de programacin y las tcnicas necesarias

    para desarrollar programas. A lo largo

    de estos captulos aprenderemos ambas.

    C#

    SERVICIO DE ATENCIN AL LECTOR: [email protected]

    02_C#2010.qxd 8/11/10 9:45 AM Page 31

  • LOS LENGUAJES DE PROGRAMACINCuando queremos comunicarnos con una persona, hacemos uso de un idioma encomn para entendernos. Nosotros, con este libro, nos comunicamos por mediodel lenguaje espaol, pero si llegara a visitarnos una persona de otro pas donde nose hable espaol, entonces tendramos un problema. La solucin a este problemaes muy sencilla: necesitamos aprender el idioma de esta persona para poder co-municarnos con ella. Lo mismo sucede con la computadora si queremos progra-marla, es necesario comunicarnos con ella, y la forma correcta de hacerlo es ha-blando su idioma. Entonces podemos decir que el idioma de la computadora seconoce como lenguaje de programacin y el lenguaje de programacin que apren-deremos es C#. Este lenguaje es sencillo y poderoso a su vez.Una vez que sepamos el lenguaje de programacin, entonces la computadora en-tender qu es lo que queremos que haga.Los lenguajes de programacin existen desde hace muchos aos y son de diferentestipos. Algunos han evolucionado y han surgido nuevos lenguajes como C#. Otroslenguajes son especializados para determinadas labores y muchos otros se han ex-tinguido o han quedado obsoletos.

    Los programas de computadoraTodos o casi todos sabemos cmo cocinar una torta, y de hecho, ste es un buenejemplo para saber cmo hacer un programa de computadora. Cuando queremoscocinar una torta, lo primero que necesitamos son los ingredientes. Si falta alguno,entonces no tendremos una rica torta. Ya una vez que hemos preparado o recolec-tado nuestros ingredientes, seguimos la receta al pie de la letra. sta nos dice pasoa paso qu es lo que tenemos que hacer.Pero, qu sucedera si no seguimos los pasos de la receta?, qu sucede si ponemos losingredientes primero en el horno y luego los revolvemos?, el resultado es una torta?La respuesta a estas preguntas es evidente: el resultado no es una torta. De esto dedu-cimos que para lograr algo, necesitamos una serie de pasos, pero tambin es necesarioseguirlos en el orden adecuado. A esta serie de pasos la llamamos receta.

    2. LOS ELEMENTOS BSICOS DE UN PROGRAMA

    32 www.redusers.com

    Un error que se puede tener al iniciarnos con la programacin de computadoras con C# es

    olvidar colocar ; al finalizar la sentencia. Si nuestro programa tiene algn error y todo parece

    estar bien, seguramente olvidamos algn punto y coma. Es bueno reconocer estos tipos de

    errores ya que nos permite reducir el tiempo de correccin necesario.

    CMO EVITAR ERRORES

    02_C#2010.qxd 8/6/10 8:16 PM Page 32

  • Cualquier persona puede pensar en una actividad y mencionar la lista de pasosy el orden en el que se deben cumplir. Podemos hacer sin problema la lista depasos para cambiar el neumtico del automvil o para alimentar a los peces delacuario. Con esto vemos que no encontraremos problema alguno para listar lospasos de cualquier actividad que hagamos.Ahora, seguramente nos preguntamos: qu tiene esto que ver con la programacinde computadoras? y la respuesta es simple. Cualquier persona que pueda hacer unalista de pasos puede programar una computadora. El programa de la computadorano es otra cosa que una lista de los pasos que la computadora tiene que seguir parahacer alguna actividad. A esta lista de pasos la llamamos algoritmo. Un algoritmoson los pasos necesarios para llevar a cabo una accin. Una caracterstica importan-te del algoritmo es que tiene un punto de inicio y un punto de fin, lo que indicaque los pasos se llevan a cabo de forma secuencial, uno tras otro. El algoritmo se-ra equivalente a la receta de la torta y los ingredientes necesarios generalmente se-rn los datos o la informacin que usaremos.Hagamos un pequeo programa para ver cmo funcionara esto. Para esto creamosun proyecto, tal y como vimos en el Captulo 1. Nuestro programa mostrar los pa-sos para hacer una torta o un pastel. Colocamos el siguiente cdigo en nuestro pro-grama y veremos cmo se corresponde con lo que hemos aprendido.

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

    namespace AplicacionBase{

    class Program{

    // Esta es la funcion principal del programa// Aqui inicia la aplicacionstatic void Main(string[] args)

    Los lenguajes de programacin

    33www.redusers.com

    Las funciones son secciones del programa en las que podemos tener cdigo especializado. La

    funcin Main() es invocada por el sistema operativo cuando queremos que nuestro programa se

    inicie. Es la nica funcin que deben tener todos los programas que desarrollemos.

    LAS FUNCIONES EN C#

    02_C#2010.qxd 8/6/10 8:16 PM Page 33

  • {Console.WriteLine(1- Precalentar el horno);Console.WriteLine(2- Batir margarina con azucar);Console.WriteLine(3- Agregar huevos);Console.WriteLine(4- Cernir harina);Console.WriteLine(5- Agregar a la mezcla y leche);Console.WriteLine(6- Hornear por 40 minutos);Console.WriteLine(7- Decorar y comer);

    }}

    }

    C# es un lenguaje orientado a objetos y necesita que definamos una clase para po-der crear un programa. En este momento no veremos las clases, pero regresaremos aellas en un captulo posterior. Lo primero que debemos encontrar es una funcinque se llama Main(), que es muy importante, como vimos en el Captulo 1.Ya sabemos que los algoritmos necesitan un inicio y un fin. En nuestro programael punto donde siempre inicia es la funcin Main(). Esta funcin indica el puntode arranque de nuestro programa y aqu colocaremos los pasos que debe seguirnuestro programa en el orden adecuado.Para indicar todos los pasos que pertenecen a Main() necesitamos colocarlos aden-tro de su bloque de cdigo. Un bloque de cdigo se define entre llaves { }. To-do lo que se encuentre en ese bloque de cdigo pertenece a Main(), lo que se en-cuentre afuera de l, no pertenece.Es importante que notemos que la clase tambin tiene un bloque de cdigo y Main()se encuentra adentro de l. De igual forma, el namespace tambin tiene su propiobloque de cdigo y la clase se encuentra adentro, aunque por ahora slo nos con-centraremos en el bloque de cdigo de Main().Un error comn cuando se crean bloques de cdigo es olvidar cerrarlos. Como re-comendacin, una vez que abrimos un bloque de cdigo con {, inmediatamente de-bemos de colocar el cierre con } y luego programar su contenido. De esta forma, no

    2. LOS ELEMENTOS BSICOS DE UN PROGRAMA

    34 www.redusers.com

    Cuando colocamos un valor con decimales en C# automticamente se lo interpreta como de tipo

    double. Sin embargo, si necesitamos colocar ese valor en una variable de tipo float, debemos

    usar el sufijo f. ste le dice a C# que use ese valor como flotante. Ejemplo:

    resultado = a * 3.57f;.

    ASIGNACIN DE VALORES FLOTANTES

    02_C#2010.qxd 8/6/10 8:16 PM Page 34

  • olvidaremos cerrarlo. Dentro de Main() encontramos los pasos de nuestro algorit-mo. En este momento nos pueden parecer extraos, pero aprenderemos qu signi-fican. Tenemos que recordar que debemos aprender el idioma de la computadora ystas son una de sus primeras frases.Lo que encontramos adentro de la funcin Main() es una serie de sentencias. Lassentencias nos permiten colocar instrucciones que nuestro programa pueda eje-cutar, que son utilizadas para mostrar un mensaje en la pantalla. El mensaje quenosotros queremos mostrar en la pantalla se muestra al invocar el mtodo WriteLine(). Los mtodos son similares a las funciones, existen adentro de las cla-ses y nos permiten hacer uso de las funcionalidades internas. Este mtodo perte-nece a la clase Console, y en esa clase encontraremos todo lo necesario para quepodamos trabajar con la consola, ya sea colocando mensajes o leyendo la infor-macin proporcionada por el usuario. Como WriteLine() pertenece a Consolecuando queremos utilizarlo, debemos escribir:

    Console.WriteLine(Hola);

    WriteLine() necesita cierta informacin para poder trabajar. Esta informacin es elmensaje que deseamos mostrar. A los mtodos se les pasa la informacin que nece-sitan para trabajar por medio de sus parmetros. Los parmetros necesarios se co-locan entre parntesis(). WriteLine() necesitar un parmetro de tipo cadena.Una cadena es una coleccin de caracteres, es decir, letras, nmeros y signos. La ca-dena se delimita con comillas dobles . En el ejemplo, el mensaje que queremosque se muestre es: Hola. Por eso pasamos el parmetro de tipo cadena Hola.Las sentencias se finalizan con punto y coma ;. Esto es importante y no debemosolvidarlo ya que este carcter en particular es reconocido por C# para indicar quela sentencia escrita hasta all, ha finalizado.En cada una de las sentencias invocadas hasta aqu por nuestro programa, hemosenviado un mensaje tras otro con cada paso necesario para cocinar nuestro pas-tel o nuestra torta. Por ltimo, slo resta que ejecutemos el programa escrito yveamos el resultado que aparece en la pantalla.

    Los lenguajes de programacin

    35www.redusers.com

    Cuando se invoca un mtodo es necesario no solamente colocar su nombre, sino que tambin

    se deben poner los parntesis. stos se deben poner aun cuando el mtodo no necesite

    parmetros. No hay que olvidar usar el parntesis de cierre ). Si olvidamos colocar los

    parntesis, el compilador nos marcar errores y no podremos ejecutar el programa.

    PROBLEMAS CON LOS MTODOS

    02_C#2010.qxd 8/6/10 8:16 PM Page 35

  • Figura 1. Podemos observar los mensajes

    que enviamos a la pantalla por medio del mtodo WriteLine().

    Podemos observar que la ejecucin ha mostrado los mensajes en el orden en elque los hemos puesto. Ahora podemos hacer un pequeo experimento. Cambia-remos el orden de las sentencias y observaremos qu es lo que sucede. El progra-ma quedar de la siguiente forma:

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

    namespace AplicacionBase{

    class Program{

    // Esta es la funcion principal del programa// Aqui inicia la aplicacionstatic void Main(string[] args){

    Console.WriteLine(1- Precalentar el horno);

    2. LOS ELEMENTOS BSICOS DE UN PROGRAMA

    36 www.redusers.com

    02_C#2010.qxd 8/6/10 8:16 PM Page 36

  • Console.WriteLine(2- Batir margarina con azucar);Console.WriteLine(6- Hornear por 40 minutos);Console.WriteLine(5- Agregar a la mezcla y leche);Console.WriteLine(7- Decorar y comer);Console.WriteLine(3- Agregar huevos);Console.WriteLine(4- Cernir harina);

    }}

    }

    Ejecutmoslo y veamos qu ocurre.

    Figura 2. Aqu vemos que los mensajes se colocan en el orden

    en que se encuentran en la funcin main() y no en el orden en que esperbamos.

    Podemos observar que cuando se ejecuta, las sentencias se ejecutan en el mismoorden como estn en el cdigo del programa, no se ejecutan como nosotros sa-bemos que se deben de ejecutar. Este punto es importante, ya que nos muestraque colocar las sentencias del programa en el orden de ejecucin correcto es res-ponsabilidad del programador. La computadora no puede leernos la mente y sa-ber qu es lo que realmente deseamos, sta slo ejecuta fielmente las sentencias

    Los lenguajes de programacin

    37www.redusers.com

    02_C#2010.qxd 8/6/10 8:16 PM Page 37

  • en el orden en que las colocamos. Si en la vida real primero horneamos y luegobatimos, no podemos esperar obtener un pastel o una torta. Por lo tanto, si enla computadora no ponemos las sentencias del programa en el orden adecuado,no podemos esperar tener un programa funcional.

    Errores en los programasUna parte importante de la programacin es reconocer los errores que podemostener con el fin de corregirlos y permitir que el programa trabaje correctamente.Podemos tener dos tipos de errores: los errores de sintaxis y los errores de lgi-ca. Los errores de sintaxis son fciles de corregir y se deben a que escribimos en elorden incorrecto las sentencias del programa. Estos errores se muestran cuando elprograma se compila, y de esa forma se pueden buscar fcilmente para corregirlos.Los errores de lgica se deben a que hemos creado nuestro algoritmo en forma err-nea y aunque todas las sentencias estn correctas, el programa no lleva a cabo loque deseamos. Estos errores son ms difciles de corregir y la mejor forma de evi-tarlos es por medio de un anlisis previo adecuado del problema a resolver. Msadelante aprenderemos cmo llevar a cabo este anlisis.

    Empecemos a reconocer los errores de sintaxis y los mensajes que da el compila-dor cuando los tenemos. El reconocer estos mensajes y cmo fueron ocasionadosnos permitir resolverlos rpidamente en el futuro. Para esto empezaremos a ha-cer unos experimentos. En el cdigo de nuestro programa, en cualquiera de lassentencias, eliminamos el punto y coma que se encuentra al final, y luego lo com-pilamos para ver qu sucede. Debido a que hemos eliminado el punto y coma, te-nemos un error de sintaxis y el compilador nos dice que el programa no se hacompilado exitosamente.Dentro de nuestro compilador se mostrar la ventana de lista de errores. En estaventana se colocan los errores encontrados por el compilador. Siempre es conve-niente solucionar el problema que se encuentra en la parte superior de la lista y noel ltimo, debido a que muchas veces, solucionando el primero, quedan soluciona-dos otros que arrastraban su problema. El mensaje que vemos nos indica que se es-peraba punto y coma, tal y como se ve en la figura 3.

    2. LOS ELEMENTOS BSICOS DE UN PROGRAMA

    38 www.redusers.com

    Algunas veces sucede que olvidamos colocar la cadena entre comillas o que solamente se ha

    colocado la comilla del inicio. Es importante no olvidar colocar las cadenas siempre entre las

    dos comillas. Si no lo hacemos de esta forma, el compilador no puede encontrar correctamente

    la cadena o dnde finaliza. La sentencia nos marcar un error de compilacin.

    ERROR COMN DE LAS CADENAS

    02_C#2010.qxd 8/6/10 8:16 PM Page 38

  • Figura 3. Podemos ver la ventana con la lista

    de errores y el error de sintaxis encontrado por el compilador.

    La lista de errores nos da una descripcin del error y tambin nos permite ver el n-mero de lnea donde se encuentra el error. Una forma sencilla de llegar a ste es sim-plemente hacer doble clic sobre la descripcin del error, as el entorno C# nos lle-var directamente a dnde se encuentra ste. Coloquemos nuevamente el punto ycoma en el lugar donde estaba en un principio y compilemos. En esta ocasin, elprograma puede compilar y ejecutar sin problemas, en base a la correcin que he-mos realizado con antelacin. El error se encuentra solucionado. La solucin quenos brinda C# para corregir errores es prctica y sencilla de implementar.Ahora experimentemos otro error. A la primera sentencia le borramos el parntesisde cierre y luego compilamos para ver qu ocurre:

    Los lenguajes de programacin

    39www.redusers.com

    Un error comn que los principiantes hacen cuando nombran sus variables es que olvidan cmo

    nombraron a la variable y la escriben a veces con minscula y a veces con mayscula. Esto hace

    que se produzcan errores de lgica o de sintaxis. Para evitarlo, podemos utilizar una tabla que

    contenga la informacin de las variables de nuestro programa.

    ERRORES CON LOS NOMBRES DE VARIABLES

    02_C#2010.qxd 8/6/10 8:16 PM Page 39

  • Figura 4. Aqu vemos el mensaje de error generado por no cerrar el parntesis.

    Figura 5. Ahora nuestra lista de errores muestra tres errores en el programa.

    2. LOS ELEMENTOS BSICOS DE UN PROGRAMA

    40 www.redusers.com

    02_C#2010.qxd 8/6/10 8:16 PM Page 40

  • Corrijamos el error y compilemos de nuevo. Todo debe de estar bien. Pero lo queharemos ahora es borrar las comillas de cierre de la cadena en la primera sentencia.Este error nos presenta un escenario ms interesante y nos conviene entender ques lo que sucede. Compilemos el programa y veamos nuestra lista de errores. staser mucho ms extensa que las anteriores:Aqu ha sucedido algo interesante, a pesar de que solamente hemos creado unerror: en la lista de errores aparecen tres errores. Esto se debe a que un error pue-de ocasionar errores extras en el cdigo siguiente. Al no cerrar la cadena, el com-pilador no sabe dnde termina la sentencia y cree que el parntesis de cierre y elpunto y coma forman parte de la cadena. Por eso tambin nos muestra que fal-tan el parntesis y el punto y coma.Debido a que los errores pueden ser en cadena, como en este ejemplo, siempre ne-cesitamos corregir el error que se encuentra en primer lugar. Si nosotros intentra-mos corregir primero el error del punto y coma, no resultara evidente ver cul esel error en esa lnea, ya que veramos que el punto y coma s est escrito.A veces sucede que nuestro programa muestra muchos errores, pero cuando corre-gimos el primer error, la gran mayora desaparece. Esto se debe a factores similaresa los que acabamos de ver.

    La diferencia entre los mtodos Write() y WriteLine()Hemos visto que el mtodo WriteLine() nos permite mostrar un mensaje en la con-sola, pero existe un mtodo similar que se llama Write(). La diferencia es muy sen-cilla. Despus de escribir el mensaje WriteLine() inserta un salto de lnea, por lo quelo prximo que se escriba aparecer en el rengln siguiente. Por su parte, el mto-do Write() no lleva a cabo ningn salto de lnea y lo siguiente que se escriba ser enla misma lnea. Veamos todo esto en el siguiente ejemplo:

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

    namespace AplicacionBase{

    class Program{

    // Esta es la funcion principal del programa// Aqui inicia la aplicacionstatic void Main(string[] args){

    Console.Write(Mensaje 1 );

    Los lenguajes de programacin

    41www.redusers.com

    02_C#2010.qxd 8/6/10 8:16 PM Page 41

  • Console.Write(Mensaje 2 );Console.WriteLine(Mensaje 3 );Console.WriteLine(Mensaje 4 );Console.Write(Mensaje 5 );

    }}

    }

    Al ejecutarlo, vemos cmo en efecto despus de usar Write() lo siguiente que se es-cribe se coloca en el mismo rengln, pero al usar WriteLine() lo siguiente apareceen el rengln siguiente. Esto es un ejemplo claro de lo explicado anteriormente:

    Figura 6. Podemos observar la diferencia entre los mtodos Write() y WriteLine().

    Las variablesLas computadoras no solamente escriben mensajes en la pantalla, sino que debenhacer cosas tiles y para poder hacerlas necesitan informacin. La informacin de-be almacenarse y manipularse de alguna forma.Cuando queremos guardar algo en la vida cotidiana podemos utilizar cajas, porlo que cualquier cosa que deseamos almacenar puede ser colocada en una caja de

    2. LOS ELEMENTOS BSICOS DE UN PROGRAMA

    42 www.redusers.com

    02_C#2010.qxd 8/6/10 8:16 PM Page 42

  • cartn, por ejemplo. Sin embargo, el tamao de la caja depender de lo que de-seamos almacenar. Unos zapatos pueden caber en una caja pequea, pero enesa caja no podemos colocar un televisor. Si empezamos a almacenar muchas co-sas en cajas, pronto tendremos demasiadas y ser difcil poder encontrar lo quehemos guardado. Entonces, una forma de solucionar esto es por medio de eti-quetas. A cada caja le ponemos una etiqueta con el contenido y de esta forma po-demos encontrar rpidamente lo que buscamos.Las variables en la computadora funcionan de manera similar a nuestras cajas dealmacenaje. Las podemos imaginar como pequeas cajas que existen en la memo-ria de la computadora y su tamao depender de la informacin que deben guar-dar. Esto se conoce como tipo de la variable. Para poder acceder a esa caja o varia-ble le ponemos un nombre que sera la etiqueta con la que la identificamos.Para hacer uso de una variable, lo primero que tenemos que hacer es declararla.La declaracin de stas es algo muy sencillo. Como primer paso tenemos que co-locar el tipo y luego el nombre. Las variables en C# deben nombrarse de acuerdocon unas recomendaciones sencillas:

    Los nombres de las variables deben empezar con letra. Es posible colocar nmeros en los nombres de las variables, pero no empezar el

    nombre con ellos. Los nombres de las variables no pueden llevar signos a excepcin del guin bajo _ . Las variables no pueden llevar acentos en sus nombres.

    Cuando nombramos las variables, hay que tener en cuenta que C# es sensible a lasmaysculas y minsculas, por lo que una variable llamada costo no es la mismaque otra variable llamada COSTO u otra llamada Costo.Es recomendable nombrar a las variables con nombres que hagan referencia a la in-formacin que guardarn. Si nos acostumbramos a hacer esto desde que empeza-mos a programar, evitaremos muchos problemas en el futuro y ser mucho ms sen-cillo corregir nuestros programas cuando tengan errores.Veamos un ejemplo de cmo podemos declarar una variable que guarde valores nu-mricos enteros. El tipo que guarda estos valores se conoce como int.

    Los lenguajes de programacin

    43www.redusers.com

    Es importante conocer los tipos y la informacin que pueden guardar, ya que esto nos permitir

    guardar la informacin necesaria y utilizar la menor cantidad de memoria. Podemos aprender

    los rangos de los tipos o imprimir una tabla y tenerla a mano. Con la prctica podremos utilizar

    los tipos sin tener que verificar los rangos constantemente.

    SELECCIN DEL TIPO

    02_C#2010.qxd 8/6/10 8:16 PM Page 43

  • int costo;

    Vemos que al final de la sentencia hemos colocado el punto y coma. Si necesitamosdeclarar ms variables lo podemos hacer de la siguiente forma:

    int costo;int valor;int impuesto;

    Pero tambin es posible declarar las variables en una sola lnea. Para esto simple-mente separamos los nombres de las variables con comas. No hay que olvidar co-locar el punto y coma al final de la sentencia.

    int costo, valor, impuesto;

    C# nos provee de muchos tipos para poder usar con nuestras variables, que pode-mos conocer en la siguiente tabla:

    TIPO INFORMACIN QUE GUARDA

    bool Es una variable booleana, es decir que solamente puede guardar los valores verdadero o falso

    (true o false) en trminos de C#.

    byte Puede guardar un byte de informacin. Esto equivale a un valor entero positivo entre 0 y 255.

    sbyte Guarda un byte con signo de informacin. Podemos guardar un valor entero con signo

    desde 128 hasta 127.

    char Puede guardar un carcter de tipo Unicode.

    decimal Este tipo puede guardar un valor numrico con decimales. Su rango es desde 1.0 ? 10?28

    hasta 7.9 ? 1028.

    double Tambin nos permite guardar valores numricos que tengan decimales. El rango aproximado

    es desde 5.0 ? 10?324 hasta 1.7 ? 10 308.

    2. LOS ELEMENTOS BSICOS DE UN PROGRAMA

    44 www.redusers.com

    Un punto importante a tener en cuenta es que la asignacin siempre se lleva a cabo de derecha

    a izquierda. Esto quiere decir que el valor que se encuentra a la derecha del signo igual se le

    asigna a la variable que se encuentra a la izquierda del signo igual. Si no lo hacemos de esta

    forma, el valor no podr ser asignado o ser asignado a la variable incorrecta.

    FORMA CORRECTA DE HACER UNA ASIGNACIN

    02_C#2010.qxd 8/6/10 8:16 PM Page 44

  • TIPO INFORMACIN QUE GUARDA

    float Otro tipo muy utilizado para guardar valores numricos con decimales. Para este tipo el rango

    es desde 1.5 ? 10?45 hasta 3.4 ? 1038.

    int Cuando queremos guardar valores numricos enteros con signo, en el rango de -2,147,483,648

    hasta 2,147,483,647.

    uint Para valores numricos enteros positivos, su rango de valores es desde 0 hasta 4,294,967,295.

    long Guarda valores numricos enteros realmente grandes con un rango

    desde 9,223,372,036,854,775,808 hasta 9,223,372,036,854,775,807.

    uling Guarda valores numricos enteros positivos. Su rango de valores vara desde 0

    hasta 18,446,744,073,709,551,615.

    short Guarda valores numricos enteros, pero su rango es menor y vara desde -32,768 hasta 32,767.

    ushort Puede guardar valores numricos enteros positivos con un rango desde 0 hasta 65,535.

    string Este tipo nos permite guardar cadenas.

    Tabla 1. sta es la tabla de los tipos ms utilizados en C#.

    Es til para seleccionar el tipo adecuado para las variables.

    Una vez que hemos declarado la variable, debemos inicializarla. Inicializar una va-riable es asignarle un valor por primera vez. Esto nos permite darle un valor inicialque puede ser til en la ejecucin de nuestro programa (no slo podemos asignarlea una variable un valor fijo, sino tambin puede ser desde un texto ingresado por elusuario o desde el registro de una base de datos).Para asignarle un valor a una variable, ya sea durante la inicializacin o durante eltranscurso del programa, usamos un operador de asignacin, el signo igual. Veamos a continuacin un ejemplo de cmo asignar valores:

    costo = 50;valor = 75;impuesto = 10;

    En este caso, la variable costo almacena el valor de 50, la variable valor almacena el75, y la variable impuesto guarda el valor 10 .

    Los lenguajes de programacin

    45www.redusers.com

    Los comentarios solamente nos sirven a nosotros como seres humanos para facilitarnos a

    comprender el cdigo del programa. El compilador ignora todos los comentarios y no los toma

    en cuenta en el momento de la compilacin. Los comentarios no hacen el programa ni ms lento

    ni ms rpido. Sin embargo, s son muy tiles cuando nosotros vemos el cdigo.

    LOS COMENTARIOS Y EL COMPILADOR

    02_C#2010.qxd 8/6/10 8:16 PM Page 45

  • Una asignacin no vlida sera la siguiente:

    50 = costo;

    En este caso nada queda asignado a la variable costo. Siempre la variable que recibeel valor se coloca a la izquierda del signo igual.Si lo necesitamos, es posible inicializar la variable al momento de declararla. Esto esmuy cmodo y si lo hacemos as evitamos olvidar la inicializacin de la variable. Pa-ra hacerlo colocamos el tipo de la variable seguido del nombre a usar en la variablee inmediatamente con el operador de asignacin colocamos el valor.

    int costo = 50;

    Comentarios en el programaLos programas de computadora pueden ser muy grandes, por lo que es necesariocolocar comentarios de codigo en el programa. Los comentarios sirven para docu-mentar las partes del programa, explicar lo que hace cierta parte del cdigo o sim-plemente colocar un recordatorio. Podemos hacer comentarios de una sola lnea, que se colocan por medio de la do-ble barra // seguido del texto del comentario. El texto que se encuentre a partir dela doble barra // y hasta el fin del rengln es ignorado por el compilador. Algunosejemplos de comentarios pueden ser:

    // Declaro mis variablesint ancho, alto;

    int tarea; // Esta variable guarda el rea calculada.

    // La siguiente sentencia nunca se ejecuta// Console.WriteLine(Hola);

    Si llegramos a necesitar colocar mucha informacin en nuestros comentarios, pue-de ser til explayarla en varios renglones, es decir, hacer un bloque de comenta-rios. Para esto, abrimos nuestro bloque de comentarios con una barra seguida deun asterisco, /*, y finalizamos ste con un asterisco en primer lugar, seguido de unabarra */. Todo lo que se encuentre entre estos delimitadores ser tomado como uncomentario y el compilador lo pasar por alto.Veamos un ejemplo de un comentario de mltiples lneas:

    2. LOS ELEMENTOS BSICOS DE UN PROGRAMA

    46 www.redusers.com

    02_C#2010.qxd 8/6/10 8:16 PM Page 46

  • /* La siguiente seccin calcula el rea y usa las variablesalto para guardar la altura del rectnguloancho para guardar la base del rectngulo*/

    As vemos cmo los comentarios colocados en varios renglones, se toman como unsolo comentario. Esto es algo muy til para recordatorios futuros.

    Mostrar los valores de las variables en la consolaYa que podemos guardar valores, tambin nos gustara poder mostrarlos cuando seanecesario. Afortunadamente, por medio del mtodo WriteLine() o el mtodo Write()podemos hacerlo. En este caso no usaremos la cadena como antes, lo que usaremoses una cadena de formato y una lista de variables. La cadena de formato nos per-mite colocar el mensaje a mostrar e indicar qu variable usaremos para mostrar sucontenido y tambin en qu parte de la cadena queremos que se muestre. En la lis-ta de variables simplemente colocamos las variables que queremos mostrar.La cadena de formato se trata como una cadena normal, pero agregamos {} dondedeseamos que se coloque el valor de una variable. Adentro de {} debemos colocar elndice de la variable en nuestra lista. Los ndices inician en cero. Si queremos quese muestre el valor de la primera variable en la lista colocamos {0}, si es la segundaentonces colocamos {1} y as sucesivamente. La lista de variables simplemente se co-loca despus de la cadena, separando con comas las diferentes variables.

    Por ejemplo, podemos mostrar el valor de una variable de la siguiente forma:

    Console.WriteLine(Se tiene {0} en la variable, costo);

    Como solamente tenemos una variable en nuestra lista de variables entonces colo-camos {0}. Pero tambin podemos mostrar el valor de dos variables o ms, como lomuestra el siguiente ejemplo:

    Console.WriteLine(La primera es {0} y la segunda es {1}, costo, valor);

    Ahora veamos un ejemplo con lo que hemos aprendido.

    using System;using System.Collections.Generic;

    Los lenguajes de programacin

    47www.redusers.com

    02_C#2010.qxd 8/6/10 8:16 PM Page 47

  • using System.Text;

    namespace AplicacionBase{

    class Program{

    // Esta es la funcin principal del programa// Aqu inicia la aplicacinstatic void Main(string[] args){

    // Declaramos variablesint costo;int valor, precio;

    // Inicializamos las variablescosto = 50;valor = 75;precio = 125;

    // Declaramos e inicializamosint impuesto = 10;

    // Mostramos un valorConsole.WriteLine(El valor adentro de costo es {0}, costo);

    // Varias variablesConsole.WriteLine(Valor es {0} y precio es {1}, valor,

    precio);

    // Dos veces la misma variableConsole.WriteLine(Valor es {0} y precio es {1} con valor de

    {0}, valor, precio);

    /* No olvidemosmostrar el valorde la variable impuesto*/

    Console.WriteLine(Y el valor que nos faltaba mostrar {0},impuesto);

    2. LOS ELEMENTOS BSICOS DE UN PROGRAMA

    48 www.redusers.com

    02_C#2010.qxd 8/6/10 8:16 PM Page 48

  • Los lenguajes de programacin

    49

    }}

    }

    Una vez que hemos compilado la aplicacin, obtendremos el resultado que mos-tramos en la figura a continuacin.

    Figura 7. En la consola observamos que los valores guardados

    en las variables fueron desplegados de acuerdo con lo colocado en la cadena de formato.

    Operaciones aritmticasPoder guardar la informacin es muy importante, pero es mucho ms importanteque podamos recuperar y manipular esa informacin para hacer algo til con ella.Para esto, debemos comenzar a realizar las operaciones aritmticas bsicas: suma,resta, multiplicacin y divisin, algo muy comn en cualquier sistema informtico.

    Cuando queremos o necesitamos realizar una operacin aritmtica debemos ha-cer uso de un operador. Cada operacin tiene su propio operador, que es el en-cargado de procesar los nmeros, realizando el determinado clculo, para luegodevolvernos el resultado deseado.

    www.redusers.com

    02_C#2010.qxd 8/6/10 8:16 PM Page 49

  • OPERADOR DESCRIPCIN

    = Asignacin. Este operador ya es conocido por nosotros.

    + Suma. Nos permite sumar los valores de las variables o los nmeros

    - Resta. Para restar los valores de las variables o los nmeros.

    * Multiplicacin. Multiplica los valores de las variables o los nmeros.

    / Divisin. Divide los valores de las variables o los nmeros.

    % Mdulo. Nos da el residuo de la divisin.

    Tabla 2. sta es la tabla de operadores aritmticos en C#.

    Veamos algunos ejemplos de cmo utilizar estos operadores. Imaginemos que ya he-mos declarado e inicializado las variables. Para guardar en la variable resultado la su-ma de dos nmeros, hacemos lo siguiente:

    resultado = 5 + 3;

    Como hemos visto, la expresin a la derecha se le asigna a la variable, por lo queen este caso la expresin 5 + 3 se evala y su resultado que es 8 es almacenado enla variable resultado. Al finalizar esta sentencia, la variable resultado tiene un va-lor de 8, que podr ser utilizado dentro de la misma funcin o en el procedi-miento donde fue declarado.Las operaciones tambin se pueden realizar con las variables y los nmeros. Suponga-mos que la variable a ha sido declarada y se le ha asignado el valor de 7.

    resultado = a 3;

    De nuevo se evala primero la expresin a-3, como el valor adentro de a es 7, en-tonces la evaluacin da el valor de 4, que se le asigna a la variable resultado.Si queremos podemos trabajar nicamente con variables. Ahora supondremos quela variable b ha sido declarada y que le hemos asignado el valor 8.

    resultado = a * b;

    Entonces, se evala la expresin a*b que da el valor 56, que queda asignado a la va-riable resultado al finalizar la expresin.Si lo que deseamos es la divisin, podemos hacerla de la siguiente forma:

    resultado = a / b;

    2. LOS ELEMENTOS BSICOS DE UN PROGRAMA

    50 www.redusers.com

    02_C#2010.qxd 8/6/10 8:16 PM Page 50

  • En este caso, se divide el valor de a por el valor de b. El resultado es 0,875. Como elnmero tiene valores decimales, debemos usar variables de algn tipo que nos per-mita guardarlos como float o double.

    Y por ltimo nos queda el mdulo.

    resultado = a % b;

    En este caso recibimos en resultado e