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