Você está na página 1de 18

Tema 1- Introduccin a tecnologa NET con Mono y fundamentos de C# Qu es C# y NET?

C# es un lenguaje de programacin orientado a objetos desarrollado y estandari ado por Microsoft como parte de su plataforma !NET! "u sinta#is b$sica deri%a de C&C'' y utili a el modelo de objetos similar al de (a%a) aun*ue incluye mejoras deri%adas de otros lenguajes! !NET es un frame+or, de Microsoft *ue incluye programas) bibliotecas y lenguajes) entre otras -erramientas) para as ayudar a desarrollar y unir los diferentes componentes de un proyecto! .os principales componentes de la plataforma !NET son/ El conjunto de lenguajes de programacin! El que destaca es C#! .a biblioteca de clases base o 0C.! El entorno comn de ejecucin para lenguajes, o C ! por sus siglas en ingl1s! El C ! es el %erdadero n2cleo de !NET) entorno de ejecucin en el *ue se cargan las aplicaciones desarrolladas! 3ermite integrar proyectos en distintos lenguajes como C'') 4isual 0asic) C#) entre otros! Esto lo -ace compilando el cdigo fuente de cual*uiera de los lenguajes soportados en un cdigo intermedio) el CI. 5Common Intermediate .anguage6! 3ara ejecutarse el C.7 usa un compilador (IT 5(ust-In-Time6 es el *ue genera el cdigo m$*uina *ue se ejecuta en la plataforma del cliente! a "i#lioteca de Clases "ase 50C. por sus siglas en ingl1s6 maneja la mayora de las operaciones b$sicas *ue se encuentran in%olucradas en el desarrollo de aplicaciones!
8iagrama b$sico de la 0iblioteca de Clases 0ase!

9un*ue C# forma parte de la plataforma !NET) C# es un lenguaje de programacin independiente dise:ado para generar programas sobre dic-a plataforma! E#iste un compilador implementado *ue pro%ee el marco $ono) el cual genera programas para distintas plataformas!

Tema 1- Introduccin a tecnologa NET con Mono y fundamentos de C# Qu es $ono? Mono es el nombre de un proyecto de cdigo abierto para crear -erramientas libres) basadas en ;N<&.inu# y compatibles con !NET! Mono posee importantes componentes 2tiles para desarrollar soft+are/ <na m$*uina %irtual de infraestructura de lenguaje com2n 5C.I6 *ue contiene un cargador de clases) un compilador en tiempo de ejecucin 5(IT6) y unas rutinas de recoleccin de memoria! <na biblioteca de clases! <n compilador para el lenguaje C#! Es un proyecto independiente de la plataforma! 9ctualmente Mono funciona en ;N<&.inu#) =pen0"8) >ree0"8) <NI?) Mac =" ?) "olaris y plataformas @indo+s!

%nstalacin del entorno $ono y el %&E $ono&e'elop 9 partir de la %ersin 1A!BC de <buntu Mono %iene instalado por defecto! "i se usa una %ersin anterior -ay *ue seguir las instrucciones de instalacin! Instalacin en <buntu 1B!BC 8esde el centro de soft+are buscar el pa*uete mono-complete! Esto instalar$ todos los pa*uetes dependencias *ue necesita el entorno Mono!

Instalar el I8E Mono8e%elop tambi1n desde el centro de soft+are! Tambi1n se puede instalar el plugin o complemento para trabajar con 0ases de datos!

(rimera toma de contacto con el entorno de desarrollo $ono&e'elop 3ara empe ar se %a crear un programa de consola b$sico llamado DEello @orldF) para ello/ 9brir Mono8e%elop "eleccionar desde men2 arc-i%o DIniciar nue%a solucinF Elegir D3royecto de consolaF e indicar el ttulo/ DEolaMundoF Continuar) dejando en blanco las opciones de empa*uetado y dem$s *ue propone!

9utom$ticamente se obtiene por defecto el cdigo *ue imprime un saludo por consola!

Tema 1- Introduccin a tecnologa NET con Mono y fundamentos de C#

En el arc-i%o Main!cs se encuentra la clase principal!


using System; namespace HolaMundo { class MainClass { public static void Main (string[] args) { Console.Write ine (!Hello World"!); # # #

E#plicacin using "ystem/ "e usa el namespace "ystem para -acer uso de Clases y m1todos del sistema! namespace EolaMundo/ "e define un namespace propio! .a palabra cla%e namespace se utili a para declarar un $mbito! Este $mbito permite organi ar el cdigo y proporciona una forma de crear tipos globalmente 2nicos y organi ar sus m2ltiples clases! class MainClass/ 8efinicin de clase! public static %oid Main5stringGH args6 8efinicin del m1todo Main) este m1todo puede recibir una serie de argumentos! Console!@rite.ine5DIEola MundoJF6K En la clase Console -ay un m1todo @rite.ine al *ue se le pasa una cadena y escribe en la consola dic-a cadena) FIEola MundoJF! .a clase Console pertenece al namespace "ystem! Compilar y ejecutar 3ara compilar tan solo -ay *ue usar >L o desde menu Construir-M Construir Todo! 3ara ejecutar el ejecutable con >N o desde men2 Ejecutar! 9l compilar se genera un ejecutable de tipo !e#e *ue se puede encontrar en el directorio bin del proyecto!

Tema 1- Introduccin a tecnologa NET con Mono y fundamentos de C# El m1todo Main no de%uel%e nada 5de a- la palabra cla%e %oid6 pero puede recibir argumentos! "e pueden aceptar otras construcciones del m1todo Main56/
public public public public static static static static void Main () void Main (string[] args) int Main () int Main (string[] args)

public static void Main (string[] args)

Esta %ariante toma un array5matri 6 de cadenas) cada cadena del array se corresponde a un argumento de la lnea de comandos suministrado al ejecutar el programa! 3ara mostrar por la salida aparte del saludo las cadenas entregadas como argumentos -abra *ue modificar el m1todo Main/
class MainClass{ public static void Main (string[] args){ $oreac% (string cadena in args){ Console.Write ine(cadena); # Console.Write ine (!Hello World"!); # #

Con la estructura iterati%a )oreac* se recorre el array args y cada cadena5string6 del array se imprime por la salida! 9 la -ora de ejecutar -ay *ue seleccionar Ejecutar con par$metros personali ados e introducir los argumentos!

Todas las %ariantes del m1todo Main56 re*uieren la palabra cla%e static! Espacios de nom#res N+$E,(+CE 9s como los directorios permiten organi ar arc-i%os de modo *ue fic-eros del mismo nombre con%i%an en directorios distinto) los espacios de nombres reali an una tarea similar) pero de manera lgica) para tipos de datos e#tendidos como clases y estructuras! 8e este modo) dos clases distintas con el mismo nombre podran ser utili adas en el mismo proyecto sin *ue ocurra ning2n error! .os namespace se pueden anidar) por lo *ue puede -aber unos dentro de otros! .os espacios de nombres tienen las propiedades siguientes/ =rgani an proyectos de cdigo de gran tama:o! El operador ! delimita los espacios de nombres!

Tema 1- Introduccin a tecnologa NET con Mono y fundamentos de C# Namespace m$s populares de la librera 0C.5clases base6/ namespace "ystem "ystem!Collections &escripcin Clase 0ase de la librera Equi'alente -a'a ja%a!lang

Clases e interfaces *ue ja%a!util definen colecciones de objetos como listas) colas y diccionarios! 9cceso a datos 9cceso a funcionalidades gr$ficas de ;8I' Manejo de entrada y salida a arc-i%os y flujos! Manejo de comunicacin %a red pudiendo usar una gran %ariedad de protocolos! ja%a!s*l ja%a!a+t ja%a!io ja%a!net

"ystem!8ata "ystem!8ra+ing "ystem!I= "ystem!Net

"ystem!7eflection

9cceso a informacin de clases ja%a!lang!reflect cargada) se pueden crear e in%ocar tipos de modo din$mico! =frece recursos para manipulacin de te#to en distintas codificaciones! 7ecursos para programacin de aplicaciones multi-ilo! 3ro%ee acceso a funcionalidades de encriptacin y configuracin de seguridad del C.7! Manejo de %entanas y controles gr$ficos Manejo de datos en formato ?M. ja%a!te#t

"ystem!Te#t

"ystem!T-reading "ystem!"ecurity

ja%a!util!concurrent ja%a!security!ja%a#!crypto

"ystem!@indo+s!>orms "ystem!?ml

ja%a!s+ing ja%a!#ml

Con la sentencia using se a-orra el anteponer namespaces a cada una de las clases *ue se utilicen! Esta sentencia se usa en la cabecera del arc-i%o/
using &namespace';

El compilador buscar$ cada clase referenciada en el namespace global y en los especificados por la sentencia using!

Tema 1- Introduccin a tecnologa NET con Mono y fundamentos de C# Controlar el .m#ito con namespace .a capacidad de crear $mbitos dentro del proyecto permite organi ar el cdigo y proporciona una manera de crear tipos 2nicos globales! En el ejemplo siguiente) una clase titulada "ampleClass se define en dos namespace diferentes) uno anidado dentro de otro! El =perador punto se utili a para diferenciar a *u1 m1todo se llama!
using System; namespace (adre { class SampleClass{ public void SampleMet%od(){ Console.Write ine(!SampleMet%od dentro de (adre!); # # namespace Hi)o { ** clase con el mismo nombre pero en namespace di$erente class SampleClass{ public void SampleMet%od(){ Console.Write ine(!SampleMet%od dentro de Hi)o!); # # # class (rogram{ static void Main(string[] args){ ** muestra !SampleMet%od dentro de (adre! SampleClass outer + ne, SampleClass(); outer.SampleMet%od();

** muestra !SampleMet%od dentro de (adre! (adre.SampleClass outer- + ne, (adre.SampleClass(); outer-.SampleMet%od(); ** muestra !SampleMet%od dentro de Hi)o! Hi)o.SampleClass inner + ne, Hi)o.SampleClass(); inner.SampleMet%od();
# # #

En el siguiente ejemplo) se muestran clases y espacios de nombres anidados! El nombre completo se indica como un comentario *ue sigue a cada entidad!
namespace ./ ** ./ { class C/{ ** ./.C/ class C-{ ** ./.C/.C# # namespace .- ** ./..{ class C-{ ** ./..-.C# # #

Tema 1- Introduccin a tecnologa NET con Mono y fundamentos de C# "e puede agregar un nue%o miembro de clase) CO) al espacio de nombres N1!NA de la siguiente forma/
namespace ./..{ class C0 { ** ./..-.C0 # #

"e puede crear un alias para un espacio de nombres! 3or ejemplo) si utili a un espacio de nombres escrito con anterioridad *ue contiene espacios de nombres anidados) puede declarar un alias para proporcionar una forma r$pida de -acer referencia a uno en particular) de la siguiente manera/
using (roduct + Company.1ep.(ro;

** de$ine alias 2ue representa a un namespace

El operador // se utili a para -acer referencia a un alias de namespace y glo#al// para -acer referencia al namespace global y el punto para calificar tipos o miembros! No es correcto utili ar // con un alias *ue -ace referencia a un tipo en lugar de a un namespace! 3or ejemplo/
using 3lias + System.Console; class 4estClass{ static void Main(){ ** 5rror **3lias66Write ine(!Hi!);

** 78 3lias.Write ine(!Hi!);
# #

"e -ace un alias de una clase de un namespace) por eso el alias -ace referencia a un tipo y -ay *ue usar el punto!
using 3lias + System.Console;

Comentarios En C# -ay dos formas de escribir comentarios! .a primera consiste en encerrar todo el te#to *ue se desee comentar entre caracteres &Q y Q& siguiendo la siguiente sinta#is/
*9 &comentario' 9*

Estos comentarios pueden abarcar tantas lneas como sea necesario! 3ara los comentarios de una sola lnea sera de la siguiente manera/
** &comentario linea'

Tema 1- Introduccin a tecnologa NET con Mono y fundamentos de C# &ocumentacin estructurada y generacin en 0$ "e pueden escribir comentarios estructurados en eti*uetas y *ue 1stos apare can como ayudas al escribir el nombre o par$metros de la clase) objeto) %ariable) etc! 9dem$s tambi1n se puede generar la propia documentacin del programa basada e#clusi%amente en estos comentarios! Ejemplo de documentacin con tags descripti%os!
using System; namespace e)emplo:;{ ***&summary' ***1escripcion corta de la clase C3pp***&*summary' ***&remar<s' ***a=adir in$ormacion e>tra ***&*remar<s' ***&e>ample' ***e)emplo de uso de la clase C3pp***&code' ***codigo de e)emplo de uso ***&*code' ***&*e>ample' class C3pp- { ***&summary' ***1escripcion corta de la propiedad ***&*summary' int var + /; ***&summary' ***1escripcion corta del metodo ***&*summary' ***&returns' ***1escribe lo 2ue retorna el metodo ***&*returns' ***&param name+!arc%ivo!' ***1escripcion del parametro arc%ivo ***&*param' ***&permission cre$+! eeCon$ig()!' ***4ipo de permisos de acceso ***&*permission' public bool eeCon$ig(string arc%ivo) { bool c + $alse; return c; # # ***&summary' ***1escripcion corta de la clase Main ***&*summary' ***&remar<s' ***a=adir in$ormacion e>tra ***&*remar<s' class MainClass{ public static void Main (string[] args){ Console.Write ine (!Hello World"!); # # #

Tema 1- Introduccin a tecnologa NET con Mono y fundamentos de C# 3ara generar la documentacin en formato ?M. en el terminal -ay *ue posicionarse en el directorio donde se encuentran los sources del proyecto y usar el siguiente comando para generar la documentacin! mcs -doc:Documentacion.xml Programa.cs El ?M. generado para el ejemplo anterior tendra la siguiente estructura
&?>ml version+!/.;!?' &doc' &assembly' &name'Main&*name' &*assembly' &members' &member name+!46e)emplo:;-.C3pp-!' &summary' 1escripcion corta de la clase C3pp&*summary' &remar<s' a=adir in$ormacion e>tra &*remar<s' &e>ample' e)emplo de uso de la clase C3pp&code' codigo de e)emplo de uso &*code'&*e>ample' &*member' &member name+!@6e)emplo:;-.C3pp-.var!' &summary' 1escripcion corta de la propiedad &*summary' &*member' &member name+!M6e)emplo:;-.C3pp-. eeCon$ig(System.String)!' &summary' 1escripcion corta del metodo &*summary' &returns' 1escribe lo 2ue retorna el metodo &*returns' &param name+!arc%ivo!' 1escripcion del parametro arc%ivo &*param' &permission cre$+! eeCon$ig()!' 4ipo de permisos de acceso &*permission' &*member' &member name+!46e)emplo:;-.MainClass!' &summary' 1escripcion corta de la clase Main &*summary' &remar<s' a=adir in$ormacion e>tra &*remar<s' &*member' &*members' &*doc'

Con una -oja de estilo se podra mostrar el documento ?M. en una +eb y proporcionar a los dem$s usuarios documentacin actuali ada del cdigo!

Tema 1- Introduccin a tecnologa NET con Mono y fundamentos de C# El tag principal del ?M. es el elemento TmembersM! Este elemento contiene una eti*ueta TmemberM para cada objeto documentado en el source! Esta eti*ueta contiene un atributo llamado name *ue designa al elemento documentado! El %alor de name empie a con un prefijo *ue describe el tipo de informacin/ (re)ijo E > M N 3 T J 8ocumentacin de un e%ento! 8ocumentacin de un campo5%ariable de clase6 8ocumentacin de un m1todo! 8ocumentacin de un namespace! 8ocumentacin de una propiedad! 8ocumentacin de un tipo definido por el usuario5clase) interfa ) estructura) enumeracin6 Error determinando prefijo correcto de ese miembroQ! ,igni)icado

Q.as clases y estructuras tienen miembros *ue representan sus datos y comportamiento! El %alor del atributo name tiene esta estructura/ prefijo/namespace!clase!miembro Tra#ajar con 'aria#les 3ara declarar una %ariable se re*uiere especificar su tipo y un identificador/ tipo identificadorK
int var;

.os identificadores deben comen ar por una letra) pueden contener guiones bajos) y no deben coincidir con una palabra reser%ada! El nombre de las %ariables es case-sensiti%e con lo cual -ay diferencia entre min2sculas y may2sculas pero no es aconsejable esta practica! 3ara nombres compuestos de dos o mas palabras lo ideal es usar letras en may2sculas al principio de cada palabra!
int unaAariable5ntera;

Tipos de datos )undamentales El tipo de dato es una manera de comunicarle al compilador cu$nto espacio en memoria ocupar$ la %ariable y *u1 sem$ntica tendr$ el dato almacenado! El compilador distingue entre los tipos de datos por %alor y los tipos de datos por referencia! .os tipos de datos por %alor ser$n almacenados en el stac,5pila6) mientras *ue los tipos por referencia ser$n almacenados en el -eap5en el stac, *uedar$ una referencia de la ubicacin en dic-a ona de memoria6!

1B

Tema 1- Introduccin a tecnologa NET con Mono y fundamentos de C# Nmeros enteros Eay tres tipos de n2meros enteros 5s-ort) int) long6! .a diferencia es la cantidad de memoria *ue reser%an cada tipo! s-ort5Abytes6 con un rango 5-OARPR) OARPR6 int5Cbytes6 con un rango muc-o mas grande 5-A1CRCLOPCR) A1CRCLOPCR6 .os tipos enteros pueden tener signo o no) para declarar un entero sin signo se antepone una DuF al tipo! <n ejemplo/ us-ort5Abytes6 rango 5B) PNNON6 C# permite el uso de punteros pero su uso queda relegado a necesidades especificas, como interactuar con recursos no gestionados, adems de tener que modificar parmetros de compilacin. El tipo de datos #yte sir%e para almacenar el %alor de un byte) su rango es 5B) ANN6! Nmeros no enteros Eay tres tipos float) double y decimal! .a diferencia es la precisin) esto tiene *ue %er con el Dcoma flotanteF y el numero de decimales! Tipo float (recisin 3recisin simple! 8eben contener el agregado ) en la parte decimal para *ue el compilador pueda tomarlas como float 5123)6 3recisin doble 5C!B6 3recisin m$#ima! 8eben contener el agregado $ en la parte decimal para *ue el compilador pueda tomarlas como decimal 5123$6

double decimal

"ooleanos 9lbergan dos %alores/ true o false!


bool a;

Caracteres 3ara almacenar un car$cter su tipo es/


c%ar a;

3uede albergar caracteres de tipo <nicode!

11

Tema 1- Introduccin a tecnologa NET con Mono y fundamentos de C# E#isten caracteres DespecialesF *ue son interpretados por el compilador dentro de una cadena de te#to) son conocidos como caracteres de escape/ Nom#re .nea nue%a Tab -ori ontal 0ac,space 7etorno de carro 0arra in%ertida Comilla doble Ut Ub Ur UU UF Escape Un

3ara asignar un %alor a una %ariable podemos -acerlo de %arias formas/


int var + /; int var; var + /;

Constantes E#isten tres constantes/ iterales/ Especificadas por medio de un %alor escrito en el cdigo!
int var + /; string nombre + B(acoC;

,im#licas/ son muy similares a las %ariables) con la diferencia de *ue a estas slo se les podr$ dar un %alor en el momento de su declaracin! .uego) cual*uier intento de modificacin ser$ tomado como un error! "e debe anteponer la sentencia const antes del tipo!
const int unaConstante + /;

Enumeradores/ sir%en para especificar un grupo de constantes entrec-amente relacionadas!


enum Mes{ 5neroD @ebreroD MarEo #

.uego podramos declarar una %ariable del tipo Mes/


Mes a; a + Mes.5nero; ** a solo podrF adoptar valores constantes en el enumerador

1A

Tema 1- Introduccin a tecnologa NET con Mono y fundamentos de C# Con'ersiones de tipo de datos C# es un lenguaje muy estricto en cuanto a con%ersiones de tipo! E#isten dos tipos de con%ersiones/ %mpl4citas/ son las *ue reali a el compilador sin re*uerir de ninguna sentencia adicional! Es una con%ersin en la nunca se pierde informacin ni precisin!
int var/ + Gnt0-.Ma>Aalue; long var- + var/;

E5plicitas/ cuando podra ocurrir p1rdida de informacin o precisin el compilador e#ige utili ar la e#presin de casting! Esto significa especificar el tipo de dato al cual deseamos lle%ar la e#presin) ubicado entre par1ntesis y antes de la e#presin en cuestin/
long var0 + GntHI.Ma>Aalue; int varI + (int) var0;

En este caso no se producira ning2n error de compilacin pero en la con%ersin de tipo -abra una perdida de informacin importante! "i se diese salida a los %alores obtendramos/ SAAOORABOPLNCRRNLBR -1 3ara %igilar con estas perdidas se puede usar el blo*ue c-ec,er para lan ar la e#cepcin System.OverflowException !um"er overflow en el caso *ue -aya perdidas en la con%ersin!
long var0 + GntHI.Ma>Aalue; c%ec<ed{ int varI + (int) var0; #

Tambi1n e#iste el blo*ue unc-ec,ed para *ue el cdigo sea compilado aun*ue -aya un error de con%ersin e#plicita! a Clase Con'ert Esta clase dentro del namespace "ystem ofrece m1todos est$ticos para reali ar con%ersiones/
bool varJ + /; ** error de compilador bool varH + Convert.4oKoolean(/); ** Conversion a 4rue

6peradores .os operadores matem$ticos son/ ' - Q & V! W se pueden combinar n2meros y %ariables en las operaciones/
int var/ + 0 9 I; **almacena resultado en var/ int var- + var/ * 0; **almacena resultado de var/ dividido entre 0

Con decimales/
$loat var0 + 0.I$ * -;**la $ indica de tipo $loat

1O

Tema 1- Introduccin a tecnologa NET con Mono y fundamentos de C#


** combinacion de tipos de datos en operaciones int varI + J; $loat varJ + I.0$; $loat result + varI 9 varJ;

Cuando operamos el tipo de dato resultante estar$ en funcin de la operacin reali ada! En la di%isin de dos n2meros enteros dar$ como resultado un n2mero entero aun*ue el tipo de dato del resultado sea de tipo float!
$loat varH + J * -; ** el resultado obtenido sera -

3ara solucionar este problema -ay *ue con%ertir al menos uno de los operandos en flotante!
$loat varL + J.;$ * -; ** el resultado obtenido sera -.J

<sar constantes en lugar de n2meros literales es una buena practica para facilitar la comprensin del cdigo!
const $loat pi + 0./I/J$; $loat radio + -.J$; $loat super$icie + pi 9 (radio 9 radio);

C6NT!6 &E 7 8-6 &E E-EC8C%9N Condicionales .as e#presiones a e%aluar dentro de una sentencia i) usualmente es una comparacin utili ando los operadores/ 6perador XX JX T M TX MX Igual a 8istinto a Menor a Mayor a Menor o igual a Mayor o igual a ,igni)icado

En este ejemplo se obtiene el formato 9"CII de la tecla de teclado) para ello se usa el m1todo 3ee, para tomar un car$cter desde la consola! Este car$cter introducido se recoge en formato 9"CII por eso %ar1 es de tipo int! En la sentencia condicional se comprueba si el cdigo del car$cter coincide con el car$cter!
int var/ + Console.Gn.(ee<(); i$(var/ ++ M>M){ Console.Write ine(var/); #

1C

Tema 1- Introduccin a tecnologa NET con Mono y fundamentos de C# 3ara probar el ejemplo despu1s de compilar la solucin desde la terminal ejecutar el !e#e como se indica/ &3rojects&ejemplos&ejemplos&bin&8ebugY mono ejemplos!e#e 3odemos usar el else para ejecutar sentencias si la e#presin es e%aluada en falso/
int var/ + /-;; i$(var/ ++ M>M){ Console.Write ine(!correcto!); #else{ Console.Write ine(!no es correcto!); #

Tambi1n se puede -acer uso de else i) para diferentes casos de e%aluacin!


i$(mes ++ /){ Console.Write #else i$(mes ++ -){ Console.Write #else i$(mes ++ 0){ Console.Write #else{ Console.Write # ine(!5nero!); ine(!@ebrero!); ine(!MarEo!); ine(!.ada!);

6peradores lgicos "e pueden crear e#presiones m$s complejas combinando operadores lgicos/ 6peradores ZZ [[ J &escripcin W lgico 5conjuncin6 = lgico 5disyuncin6 Negacin lgica

i$(edad '+ /N OO edad &+ I;){ Console.Write ine(!adulto!); # i$(mes ++ - PP edad '+ /N){ Console.Write ine(!descuento!); #

,entencia s:itc* En algunos casos es preferible reempla ar el uso de sentencias if anidadas por uso de la sentencia s+itc-! 0rea, se usa para salir de la sentencia s+itc- y default es la opcin *ue se toma si no -ay ning2n case *ue coincida con el %alor!

1N

Tema 1- Introduccin a tecnologa NET con Mono y fundamentos de C#

s,itc%(mes){ case /6 Console.Write ine(!5nero!); brea<; case -6 Console.Write ine(!@ebrero!); brea<; de$ault6 Console.Write ine(!.ingun mes!); brea<; #

3ara saltar de un case a otro se usa la sentencia goto


case /6 Console.Write ine(!5nero!); goto case -;

En el caso de *ue el tratamiento de una opcin sea igual al de otra/


case ;6 case /6 Console.Write ine(!5nero!); brea<;

No se pueden usar e5presiones de e'aluacin en los case de sentencias s:itc* ,entencia #ucle :*ile En este caso mientras la e#presin asociada sea %erdadera las sentencias se repetir$n! 3or ejemplo un programa *ue) mientras el usuario no ingrese una palabra determinada no termine/
string palabraClave + !!; ,%ile(palabraClave "+ !salir!){ Console.Write ine(!Gngrese la palabra clave!); palabraClave + Console.Gn.Qead ine(); # Console.Write ine(!Correcto!);

,entencia do .a sentencia do es muy similar a +-ile) solo *ue la e%aluacin de la e#presin es al final y no al principio!
do{ Console.Write ine(!Gngrese la palabra clave!); palabraClave + Console.Gn.Qead ine(); #,%ile(palabraClave "+ !salir!); Console.Write ine(!Correcto!);

,entencia )or for5TsentenciaMK Te#presion booleanaMKTsentenciaM6Tsentencias a repetirM .a primera sentencia solo se ejecuta una %e ! .uego) la e#presin se e%al2a antes de ingresar en cada bucle) y la segunda sentencia se ejecuta al finali ar cada bucle! 1P

Tema 1- Introduccin a tecnologa NET con Mono y fundamentos de C#


$or(int i+;; i&J; iRR){ Console.Write ine(i); #

El %alor de i se incrementa en una unidad despu1s de cada ciclo! El e*ui%alente usando una sentencia +-ile sera/
int a+;; ,%ile(a&J){ Console.Write ine(a); aRR; #

a sentencia )oreac* Esta sentencia es muy 2til para recorrer colecciones y arrays! 3ara recorrer un array por ejemplo sera/
int[] enteros + {J;;D /;;D -;;# ; $oreac%(int num in enteros){ Console.Write ine(!nSmero {;#!D num); #

3ara cada iteracin la %ariable num tendr$ el %alor de un elemento del array! "u e*ui%alente con una sentencia for sera/
$or(int i+;; i&enteros. engt%; iRR){ Console.Write ine(!nSmero {;#!D enteros[i]); #

.engt- sir%e para saber la cantidad de elementos *ue posee el array! as sentencias #rea; y continue #rea; se utili a para salir del bucle en el cual nos encontramos) independientemente de la e#presin *ue se e%al2a!
$or(int i+;; i&/;; iRR){ Console.Write ine(!nSmero {;#!D i); i$(i'J) brea<; #

.a sentencia continue permite saltar lo *ue resta de una iteracin dentro el bucle para seguir con la pr#ima5sin salir del bucle6!
$or(int i+;; i&/;; iRR){ Console.Write ine(!punto a!); i$(i'0) continue; Console.Write ine(!punto b!); #

1R

Tema 1- Introduccin a tecnologa NET con Mono y fundamentos de C# +CT%<%&+&E,/ 1!- \8onde se encuentran los errores]! Indicarlo! a6
int n/ + /;; double n- + n/; $loat n0 + n-;

b6
int valor; i$(valor ++ ;) Console.Write ine(!el valor es cero!);

c6
$or(int i+;; i&JD iRR) Console.Write ine(!TT!);

d6
int num + ;; i$(num ++ ;) Console.Write ine(!5s valor!); Console.Write ine(!es cero"!); else Console.Write ine(!valor distinto de cero!);

A!-\3ara *u1 se utili an los namespace] O!-\Cmo se puede con%ertir un string *ue posea un n2mero a una %ariable num1rica]

1L

Você também pode gostar