Está en la página 1de 28

NET es un framework de Microsoft que hace un nfasis en la transparencia de redes, con

independencia de plataforma dehardware y que permita un rpido desarrollo


de aplicaciones. Basado en ella, la empresa intenta desarrollar una estrategia horizontal
que integre todos sus productos, desde el sistema operativo hasta las herramientas de
mercado.
.N! podr"a considerarse una respuesta de Microsoft al creciente mercado de los
negocios en entornos #e$, como competencia a la plataforma %ava de &racle
'orporation y a los diversos framework de desarrollo we$ $asados en ()(. *u propuesta
es ofrecer una manera rpida y econ+mica, a la vez que segura y ro$usta, de desarrollar
aplicaciones ,o como la misma plataforma las denomina, soluciones, permitiendo una
integraci+n ms rpida y gil entre empresas y un acceso ms simple y universal a todo
tipo de informaci+n desde cualquier tipo de dispositivo.
Consideraciones-editar.
/a plataforma .N! de Microsoft es un componente de software que puede ser a0adido
al sistema operativo #indows. (rovee un e1tenso con2unto de soluciones predefinidas
para necesidades generales de la programaci+n de aplicaciones, y administra la e2ecuci+n
de los programas escritos espec"ficamente con la plataforma. sta soluci+n es el producto
principal en la oferta de Microsoft, y pretende ser utilizada por la mayor"a de las
aplicaciones creadas para la plataforma #indows.
.N! 3ramework se incluye en #indows *erver 4556, #indows 7ista y #indows 8. 9e
igual manera, la versi+n actual de dicho componente puede ser instalada en #indows :(,
y en la familia de sistemas operativos #indows *erver 455;. <na versi+n =reducida= de
.N! 3ramework est disponi$le para la plataforma #indows Mo$ile, incluyendo telfonos
inteligentes.
/a norma >incluido en 'M?@;;A, B*&CB' 4;48DE que define el con2unto de funciones que
de$e implementar la $i$lioteca de clases $ase >B'/ por sus siglas en ingls, tal vez el ms
importante de los componentes de la plataformaE, define un con2unto funcional m"nimo que
de$e implementarse para que el marco de tra$a2o sea soportado por un sistema operativo.
?unque Microsoft implement+ esta norma para su sistema operativo #indows, la
pu$licaci+n de la norma a$re la posi$ilidad de que sea implementada para cualquier otro
sistema operativo e1istente o futuro, permitiendo que las aplicaciones corran so$re la
plataforma independientemente del sistema operativo para el cual haya sido
implementada. l (royecto Mono emprendido por :imian pretende realizar la
implementaci+n de la norma para varios sistemas operativos adicionales $a2o el marco del
c+digo a$ierto.
Componentes-editar.
/os principales componentes del marco de tra$a2o sonF
l con2unto de lengua2es de programaci+n.
/a biblioteca de clases base o BCL.
l entorno comn de ejecucin para lenguajes, o CLR por sus siglas en ingls.
9e$ido a la pu$licaci+n de la norma para la infraestructura comn de lenguajes >CLI por
sus siglas en inglsE, el desarrollo de lengua2es se facilita, por lo que el marco de
tra$a2o .N! soporta ya ms de 45 lengua2es de programaci+n y es posi$le desarrollar
cualquiera de los tipos de aplicaciones soportados en la plataforma con cualquiera de
ellos, lo que elimina las diferencias que e1ist"an entre lo que era posi$le hacer con uno u
otro lengua2e.
?lgunos de los lengua2es desarrollados para el marco de tra$a2o .N! sonF 'G, 7isual
Basic .N!, 9elphi >&$2ect (ascalE, 'HH, 3G, %G, (erl, (ython, 3ortran, (rolog >e1isten al
menos dos implementaciones, el (G
D
y el (rolog.N!
4
E, 'o$ol y (owerBuilder.
Biblioteca de Clases Base de .NET-editar.
9iagrama $sico de la Bi$lioteca de 'lases Base.
/a Bi$lioteca de 'lases Base >B'/ por sus siglas en inglsE mane2a la mayor"a de las
operaciones $sicas que se encuentran involucradas en el desarrollo de aplicaciones,
incluyendo entre otrasF
Bnteracci+n con los dispositivos perifricos
Mane2o de datos >?9&.N!E
?dministraci+n de memoria
'ifrado de datos
!ransmisi+n y recepci+n de datos por distintos medios >:M/, !'(CB(E
?dministraci+n de componentes #e$ que corren tanto en el servidor como en el
cliente >?*(.N!E
Mane2o y administraci+n de e1cepciones
Mane2o del sistema de ventanas
)erramientas de despliegue de grficos >I9BHE
)erramientas de seguridad e integraci+n con la seguridad del sistema operativo
Mane2o de tipos de datos unificado
Bnteracci+n con otras aplicaciones
Mane2o de cadenas de caracteres y e1presiones regulares
&peraciones aritmticas
Manipulaci+n de fechas, zonas horarias y periodos de tiempo
Mane2o de arreglos de datos y colecciones
Manipulaci+n de archivos de imgenes
?leatoriedad
Ieneraci+n de c+digo
Mane2o de idiomas
?uto descripci+n de c+digo
Bnteracci+n con el ?(B #in;4 o #indows ?(B.
'ompilaci+n de c+digo
sta funcionalidad se encuentra organizada por medio de espacios de nom$res
2errquicos.
/a Bi$lioteca de 'lases Base se clasifica, en cuatro grupos claveF
?*(.N! y *ervicios #e$ :M/
#indows 3orms
?9&.N!
.N!
Common Language Infrastructure
l Common Language Infrastructure > CLI E es un a$ierto especificaci+n desarrollada
por Microsoft y estandarizado por B*&
- D .
y 'M?
- 4 .
que descri$e el c+digo e2ecuta$le y
entorno de e2ecuci+n. /a especificaci+n define un entorno que permite a mJltiples
lengua2es de alto nivel que se utilizarn en diferentes plataformas de computaci+n sin ser
reescrito para arquitecturas espec"ficas. l . N! 3ramework y la li$re y de c+digo
a$ierto Mono y (orta$le.N! son implementaciones de la '/B.
BCL

El marco NET. Proporciona un conjunto de bibliotecas de clases base
que proporcionan las funciones y caractersticas que se pueden
utilizar con cualquier lenguaje de programacin que implementa.
NET, como Visual Basic, C # (o curso), Visual C + +, etc

La biblioteca de clases base contiene caractersticas de programacin
estndar como las colecciones, XML, definiciones de tipo de datos, IO
(para la lectura y escritura a los archivos), la reflexin y la
globalizacin para nombrar unos pocos. Todas ellas estn incluidas
en el espacio de nombres System. Adems, se contienen algunas
caractersticas no estndar tales como LINQ, ADO.NET (por
interacciones de bases de datos), dibujo capacidades, formas y
soporte web.

La siguiente tabla proporciona toda clase de la biblioteca de clases
base y una breve descripcin de lo que ofrecen una lista.
Base Class Library Espacio de nombres Breve Descripcin
Sistema
Contiene los fundamentos
de la programacin, como el
tipo de datos, consola, juego
y matrices, etc
System.CodeDom
Apoya la creacin de cdigo
en tiempo de ejecucin y la
capacidad para ejecutarlo.
System.Collections
Contiene Listas, pilas,
tablas hash y diccionarios
System.ComponentModel
Proporciona licencias,
controles y capacidades de
conversin de tipo
System.Configuration
Se utiliza para los datos de
configuracin del programa
de lectura y escritura
System.Data
Es el espacio de nombres
para ADO.NET
System.Deployment
Actualizacin de las
capacidades a travs de
ClickOnce
System.Diagnostics
Proporciona rastreo, registro
de contadores de
rendimiento, funcionalidad,
etc
System.DirectoryServices
Es el espacio de nombres
utilizado para acceder al
Directorio Activo
System.Drawing
Contiene la funcionalidad de
GDI + para soporte de
grficos
System.EnterpriseServices
Se utiliza cuando se trabaja
con COM + de. NET
System.Globalization
Apoya la localizacin de
programas personalizados
System.IO
Proporciona conexin al
sistema y de la lectura y la
escritura a los flujos de
datos, como archivos de
presentar
System.Linq
Interfaz con proveedores
LINQ y la ejecucin de
consultas LINQ
System.Linq.Expressions
Espacio de nombres que
contiene los delegados y las
expresiones lambda
System.Management
Proporciona acceso a la
informacin del sistema,
como el uso de CPU, espacio
de almacenamiento, etc
System.Media
Contiene mtodos para
reproducir sonidos
System.Messaging
Se utiliza cuando se
requieren las colas de
mensajes dentro de una
aplicacin, reemplazado por
WCF
System.Net
Proporciona acceso a los
protocolos de red, tales como
SSL, HTTP, SMTP y FTP
System.Reflection
Capacidad para leer, crear e
invocar la informacin de
clase.
System.Resources
Se utiliza cuando la
localizacin de un programa
en relacin con el soporte de
idiomas en los controles de
formulario Web Forms o
System.Runtime
Contiene la funcionalidad
que permite que el manejo
del comportamiento en
tiempo de ejecucin.
System.Security
Proporciona hash y la
posibilidad de crear
sistemas de seguridad
personalizados mediante
polticas y permisos.
System.ServiceProcess Se utiliza cuando se
requiere un servicio de
Windows
System.Text
Proporciona la clase
StringBuilder, adems de
capacidades de expresin
regular
System.Threading
Contiene mtodos para
gestionar la creacin,
sincronizacin y puesta en
comn de temas del
programa
System.Timers
Ofrece la posibilidad de
provocar eventos o realizar
una accin en un plazo
determinado temporizador.
System.Transactions
Contiene mtodos para la
gestin de transacciones
System.Web
Espacio de nombres para las
capacidades de ASP.NET,
como los Servicios Web y la
comunicacin navegador.
System.Windows.Forms
Espacio de nombres que
contiene el interfaz en el
API de Windows para la
creacin de programas de
Windows Forms.
System.Xml
Proporciona los mtodos
para la lectura, la escritura,
la bsqueda y el cambio de
los documentos y las
entidades XML.
MSIL o IL (Lenguaje intermedio de Microsoft)
MSIL: (lenguaje intermedio de Microsoft) o IL (Lenguaje intermedio) es cdigo
mquina independiente generado por marco NET despus de la compilacin de un
programa escrito en cualquier idioma por ti!!
MSIL o IL es ahora conocido como CIL (Common Intermediate Language).
Vamos a ver algunas otras definiciones:
MSIL es el conjunto de instrucciones independiente de la "#$ en la que!
#rogramas NET %rame&or' se compilan! "ontiene instrucciones para cargar(
almacenar( iniciali)ar * mtodos en o+jetos de llamadas!
"om+inado con los metadatos * el sistema de tipo com,n( MSIL permite una
-erdadera integracin entre lenguajes!
.ntes de la ejecucin( MSIL se con-ierte a cdigo mquina! No se
interpreta!
(Souce MS/N)
.l compilar a cdigo administrado( el compilador traduce el cdigo fuente en
lenguaje intermedio de Microsoft (MSIL)( que es un conjunto independiente
de la "#$ de las instrucciones que se pueden con-ertir de manera eficiente
en cdigo nati-o! (%uente MS/N)
"ommon Intermediate Language ("IL( que se pronuncia 0sil0 o 0'il0) (anteriormente
llamado Lenguaje intermedio de Microsoft o MSIL) es el lenguaje de programacin
legi+le ni-el ms +ajo en el "ommon Language Infrastructure * en el! NET
%rame&or'! Idiomas que tienen como destino! NET %rame&or' compilan a "IL( que
se monta en +*tecode!"IL es un lenguaje ensam+lador orientado a o+jetos( * se
+asa apilar1por completo! Se ejecuta por una mquina -irtual!
"IL fue originalmente conocido como lenguaje intermedio de Microsoft (MSIL)(
durante las -ersiones +eta de los lenguajes! NET! /e+ido a la estandari)acin de "
2 * el "ommon Language Infrastructure( el +*tecode es a3ora conocido
oficialmente como "IL! /e+ido a este legado( "IL toda-4a se conoce con frecuencia
como MSIL( so+re todo por los usuarios de larga data de los lenguajes! NET!
(%uente 5i'ipedia)
VERSI!ES !E" # $E VS
Visual Basic .NET (VB.NET) es un lenguaje
de programacin orientado a objetos ue se
puede considerar una e!olucin de Visual
Basic implementada sobre el frame"or#
.NET. $u introduccin result mu%
contro!ertida& %a ue debido a cambios
significati!os en el lenguaje VB.NET no es
compatible 'acia atr(s con Visual Basic&
pero el manejo de las instrucciones es
similar a !ersiones anteriores de Visual
Basic& facilitando asi el desarollo de
aplicaciones mas a!an)adas con
'erramientas modernas.
La gran ma%or*a de programadores de
VB.NET utili)an el entorno de desarrollo
integrado (I+E) ,icrosoft Visual $tudio en
alguna de sus !ersiones (Visual $tudio .NET&
Visual $tudio .NET -../& Visual $tudio
.NET -..0& Visual $tudio .NET -..1)&
aunue e2isten otras alternati!as& como
$'arp+e!elop (ue adem(s es libre).
3l igual ue con todos los lenguajes de
programacin basados en .NET& los
programas escritos en VB .NET reuieren el
4rame"or# .NET para ejecutarse.
Namespaces
Espacio de nombres
Este artculo trata sobre el espacio de nombres en programacin. Para los distintos tipos
de pginas de Wiipedia! "#ase $%uda&Espacio de nombres.
n programaci+n, un espacio de nombres >del ingls namespaceE, en su acepci+n ms
simple, es un con2unto de nom$res en el cual todos los nom$res son Jnicos.
<n espacio de nom$res es un contenedor a$stracto en el que un grupo de uno o ms
identificadores Jnicos pueden e1istir. <n identificador definido en un espacio de nom$res
est asociado con ese espacio de nom$res. l mismo identificador puede
independientemente ser definido en mJltiples espacios de nom$res, eso es, el sentido
asociado con un identificador definido en un espacio de nom$res es independiente del
mismo identificador declarado en otro espacio de nom$res. /os lengua2es que mane2an
espacio de nom$res especifican las reglas que determinan a qu espacio de nom$res
pertenece una instancia de un identificador.
(or e2emplo, (edro tra$a2a para la compa0"a : y su nJmero de empleado es D4;. Mar"a
tra$a2a para la compa0"a K y su nJmero de empleada tam$in es D4;. /a raz+n por la cual
(edro y Mar"a pueden ser identificados con el mismo nJmero de empleado es porque
tra$a2an para compa0"as diferentes. 9iferentes compa0"as sim$olizan en este caso
diferentes espacios de nom$res.
n programas grandes o en documentos no es infrecuente tener cientos o miles de
identificadores. /os espacios de nom$res >o tcnicas similares como la emulaci+n de
espacios de nom$resE disponen de un mecanismo para ocultar los identificadores locales.
(roporcionan los medios para agrupar l+gicamente los identificadores relacionados en sus
correspondientes espacios de nom$res, haciendo as" el sistema ms modular.
Muchos lengua2es de programaci+n mane2an espacios de nom$res. n algunos lengua2es,
como 'HH, ()( o (ython, estos identificadores nom$rando espacios de nom$res estn
asociados con un espacio de nom$res que los agrupa. ?s" pues, en estos lengua2es, los
espacios de nom$res se pueden anidar formando un r$ol de espacios de nom$res. n la
ra"z de este r$ol se encuentra el espacio de nom$res an+nimo glo$al.
CLASES
Utilidad
5
Este mecanismo permite reutili)ar el cdigo en forma de bibliotecas& ue de otro
modo no podr*a usarse. Es frecuente ue diferentes dise6adores de bibliotecas usen
los mismos nombres para cosas diferentes& de modo ue resulta imposible integrar
esas bibliotecas en la misma aplicacin.
7or ejemplo un dise6ador crea una biblioteca matem(tica con una clase llamada
8Conjunto8 % otro una biblioteca gr(fica ue tambi9n contenga una clase con ese
nombre. $i nuestra aplicacin inclu%e las dos bibliotecas& obtendremos un error al
intentar declarar dos clases con el mismo nombre.
El nombre del espacio funciona como un prefijo para las !ariables& funciones o
clases declaradas en su interior& de modo ue para acceder a una de esas !ariables
se tiene ue usar el operador de especificador de (mbito (::)& o acti!ar el espacio con
nombre adecuado.
7or ejemplo:
#include <iostream>
namespace uno {
int x;
}
namespace dos {
int x;
}
using namespace uno;
int main() {
x = 10;
dos::x = 30;

std::cout << x << ", " << dos::x << std::endl;
std::cin.get();
return 0;
}
En este ejemplo 'emos usado tres espacios con nombre diferentes: 8uno8& 8dos8 %
8std8. El espacio 8std8 se usa en todas las bibliotecas est(ndar& de modo ue todas
las funciones % clases est(ndar se declaran % definen en ese espacio.
;emos acti!ado el espacio 8uno8& de modo ue para acceder a clases est(ndar
como cout& tenemos ue especificar el nombre: std::cout.
Tambi9n es posible crear un espacio con nombre a lo largo de !arios fic'eros
diferentes& de 'ec'o eso es lo ue se 'ace con el espacio std& ue se define en todos
los fic'eros est(ndar.
Espacios annimos
5
<Espacios con nombre sin nombre=
$i nos fijamos en la sinta2is de la definicin de un espacio con nombre& !emos ue
el nombre es opcional& es decir& podemos crear espacios con nombre annimos.
7ero& <para u9 crear un espacio annimo= $u uso es >til para crear identificadores
accesibles slo en determinadas )onas del cdigo. 7or ejemplo& si creamos una
!ariable en uno de estos espacios en un fic'ero fuente concreto& la !ariable slo ser(
accesible desde ese punto 'asta el final del fic'ero.
namespace Nomre {
int !();
char s;
void g(int);
}
namespace {
int x = 10;
}
"" x s#$o se %uede desde este %unto &asta e$ !ina$ de$ !ic&ero
"" 'esu$ta inaccesi$e desde cua$(uier otro %unto o !ic&ero
namespace Nomre {
int !() {
return x;
}
}
Este mecanismo nos permite restringir el (mbito de objetos % funciones a un
fic'ero determinado dentro de un pro%ecto con !arios fic'eros fuente. $i
recordamos el cap*tulo anterior& esto se pod*a 'acer con el
especificador static aplicado a funciones o a objetos globales.
+e 'ec'o& la especificacin de C?? aconseja usar espacios con nombre annimos
para esto& en lugar del especificador static& con el fin de e!itar la confusin ue
puede producir este doble uso del especificador.
Espacio global
5
Cualuier declaracin 'ec'a fuera de un espacio con nombre pertenece al espacio
global.
7recisamente porue las bibliotecas est(ndar declaran todas sus !ariables&
funciones& clases % objetos en el espacio std& es necesario usar las nue!as !ersiones
de los fic'eros de cabecera est(ndar: 8iostream8& 8fstream8& etc. @ en lo ue respecta
a las procedentes de C& 'a% ue usar las nue!as !ersiones ue comien)an por AcA % no
tienen e2tensin: 8cstdio8& 8cstdlib8& 8cstring8& etc...8. Todas esas bibliotecas 'an
sido rescritas en el espacio con nombre std.
$i decidimos usar los fic'eros de cabecera de C en nuestros programas C??&
estaremos declarando las !ariables& estructuras % funciones en el espacio global.
Espacios anidados
5
Los espacios con nombre tambi9n se pueden anidar:
#include <iostream>
namespace uno {
int x;
namespace dos {
int x;
namespace tres {
int x;
}
}
}
using std::cout;
using std::endl;
using uno::x;
int main() {
/a sentencia <sing.
La directiva using seguido de espacio de nombres sirve para asociar el
presente nivel de anidamiento con un cierto espacio de nombres para que los
objetos y las funciones de ese espacio de nombres pueden ser accesible
directamente como si se definieron en el mbito global.
<n modo de ahorrarnos tra$a2o, al tener que anteponer nom$res de namespaces a cada una de las
clases que utilicemos, es colocar en la ca$ecera de nuestro archivo de c+digo fuente una sentencia using,
escri$iendoF
using Lespacio de nom$resMN
?s", el compilador $uscara cada clase referenciada en el espacio de nom$res glo$al y en los espacios de
nom$res especificados por sentencias using.
(or lo tanto, el c+digo de nuestro primer programa ahora podr"a serF

using )*tem;
c$ass +$ase1
{
static ,oid -ain(string./ args)
{
+onso$e.0rite1ine("2o$a -undo");
}
}
'onsole es una clase que no e1iste en el espacio de nom$res glo$al, sino en el espacio de
nom$res *ystem.Iracias a que le hemos indicado al compilador que estamos usando dicho espacio de
nom$re, l sa$r que las clases que utilicemos tam$in podr"an estar all".
#rite/ine es un mtodo de la clase 'onsole. Oecordemos que para acceder a informaci+n de referencia
la B'/ podemos utilizar la ayuda que provee 7isual *tudio, donde estn todos los mtodos y propiedades
de la clase'onsole.
Ensamblado (Microsoft .NET)
n Microsoft .N! framework, un ensamblado
D
es principalmente
una $i$lioteca de c+digo compilado para ser utilizado en instalaciones, versionamiento y
seguridad. 1isten 4 tiposF nsam$lados de procesos >:E y $i$liotecas de ensam$lados
>9//E.
<n ensam$lado de proceso representa un e2ecuta$le que posi$lemente
usar clases definidas en ensam$lados de $i$liotecas, o e2ecutar solo c+digo contenido
en si mismo. /os ensam$lados de .N! contienen c+digo en lengua2e 'B/, el cual es
usualmente generado desde los lengua2es .N! y luego compilados en un motor de
e2ecuci+n '/O'ompilaci+n %usto en 2ecuci+n, en ingls just ' in time compiler.
No se puede catalogar a .N! como un lengua2e de programaci+n interpretado, algunos
autores tienden a catalogarlo como un lengua2e compilado ya que el 'B/ es le"do y
compilado por el '/O, con las venta2as del just ' in time
<n ensam$lado puede consistir en uno o ms archivos. /os archivos de c+digo son
llamados m+dulos. <n ensam$lado puede contener ms de un m+dulo de c+digo y es
posi$le utilizar diferentes lengua2es en los diferentes m+dulos para crear el ensam$lado
de .N!. 7isual *tudio sin em$argo no soporta utilizar diferentes lengua2es en un
ensam$lado, la compilaci+n de ensam$lados de mJltiples lengua2es es necesaria realizarla
desde la consola de comandos.
(or $uenas prcticas de desarrollo se acostum$ra u$icar una Jnica clase en cada archivo
del ensam$lado, pero ca$e recordar que un m+duloN un archivoN puede contener varias
clases dentro de l pero no es recomenda$le.
/os ensam$lados pueden tener diferentes decoradores que definen el entorno de
e2ecuci+n de los mismos '&MH, 9'&M, Oemoting, etc.
*entencia condicional
<na sentencia condicional es un con2unto de comandos que se e2ecutan si la condici+n
especificada es verdadera. %ava*cript soporta dos sentencias
condicionalesF i!...e$se y s3itc&.
i(...else
<tilice la sentencia i! para e2ecutar una sentencia s" la condici+n l+gica es verdadera.
<tilice la clusula opcional e$se para e2ecutar una sentencia s" la condici+n es falsa. <na
sentencia i! se parece a lo que sigueF
if (condicin)
sentencia_1
[else
sentencia_2]
/a condici#n puede ser cualquier e1presi+n que se evalJa como verdadera o falsa. *"
la condici#n se evalJa como verdadera, la sentencia41es e2ecutadaN caso contrario,
la sentencia45 es e2ecutada. /a sentencia41 y la sentencia45 pueden ser cualquier
sentencia, incluyendo el uso de sentencias i! anidadas.
<sted tam$in puede componer sentencias utilizando la clusula e$se i! para tener
mJltiples condiciones pro$adas en secuencia, tal como sigueF
if (condicin)
sentencia_1
[else if (condicin_2)
sentencia_2]
...
[else if (condicin_n_1)
sentencia_n_1]
[else
sentencia_n]
(ara e2ecutar mJltiples sentencias, utilice un $loque de sentencias >{ ... }E para
agruparlas. n general, es una $uena prctica que siempre utilice los $loques de
sentencias, especialmente en c+digo que involucre sentencias i! anidadasF
if (condicin) {
sentencia_1
} else {
sentencia_2
}
s recomenda$le no utilizar asignaciones simples en una e1presi+n condicional , de$ido a
que una asignaci+n puede ser confundida con la igualdad cuando se da un vistazo al
c+digo. (or e2emplo, no utilice el siguiente c+digoF
if (x = y) {
/* haga las cosas correctas */
}
*i usted necesita utilizar una asignaci+n en una e1presi+n condicional, una prctica comJn
es poner parntesis adicionales alrededor de la asignaci+n. (or e2emploF
if ((x = y)) {
/* haga las cosas correctas */
}
No de$en confundirse los valores l+gicos primitivos true y !a$se con los valores
verdadero y falso de los o$2etos l+gicos o $ooleanos -Boolean o$2ect.. 'ualquier valor que
no esF un valor sin definir -unde!ined., nulo -nu$$., cero 0, =no numrico= -NaN., o una
cadena vac"a >""E y cualquier o$2eto, incluyendo un o$2eto l+gico cuyo valor es falso, se
evalJa como verdadero cuando es pasado por una sentencia condicional. (or e2emploF
ar ! = ne" #oolean(false)$ //asigna %n o!&eto lgico con alor
ig%al a falso a la aria!le !
if (!) // esta condicin se eal'a co(o erdadera
2emplo
n el siguiente e2emplo, la funci+n c&ec67ata retorna verdadero si el nJmero de
caracteres en el o$2eto 8ext es tresN caso contrario, se despliega una alerta y se retorna
falso.
f%nction chec)*ata() {
if (doc%(ent.for(1.three+har.al%e.length == ,) {
ret%rn tr%e$
} else {
alert(-.ngrese exacta(ente tres caracteres. - /
doc%(ent.for(1.three+har.al%e / - no es 0lido.-)$
ret%rn false$
}
}
l e2emplo asume que la ca2a de te1to llamada three'har pertenece al formulario formD. y
se utliza =PP= para verificar el tipo de dato. >N.!.E
s)itc*
<na sentencia s3itc& permite a un programa evaluar una e1presi+n e intenta cote2arla
con el valor de la etiqueta de una e1presi+n por casos. *i la coincidencia es encontrada, el
programa e2ecuta la sentencia asociada. <na sentencia s3itc& se parece a lo siguienteF
s"itch (ex1resin) {
case eti2%eta_13
sentencias_1
[!rea)$]
case eti2%eta_23
sentencias_2
[!rea)$]
...
defa%lt3
sentencias_1or_defecto //defa%lt
[!rea)$]
}
l programa primero $usca por una clusula case con una etiqueta para asociaci+n con el
valor de la e1presi+n y luego transfiere el control a aquella clusula, e2ecutando las
sentencias asociadas. *i no encuentra una coincidencia con una etiqueta, el programa
mira la clusula opcional de!au$t y si la encuentra, transfiere el control a dicha clusula,
e2ecutando las sentencias asociadas. *i no es encontrada la clusulade!au$t, el
programa continua la e2ecuci+n de la sentencia encontrando el final del s3itc&. (or
convenci+n, la clusula de!au$t es la Jltima clusula, pero no es tampoco necesaria que
est. CC
/a sentencia opcional rea6 asociada con cada clusula de caso -case. asegura que el
programa salte fuera del s3itc& una vez que la sentencia coincidente es e2ecutada y
continua la e2ecuci+n a la siguiente sentencia despus del switch. *i la la
sentencia rea6 es omitida, el programa continua la e2ecuci+n con la siguiente sentencia
dentro del s3itc&.
2emploF
n el siguiente e2emplo, s" se evalJa ti%o!ruta como =Bananas=, el programa $usca la
coincidencia con el valor del caso =Bananas= y e2ecuta la sentencia asociada. 'uando
un rea6 es encontrado, el programa termina la sentencia s3itc& y e2ecuta las
siguientes sentencias despus dels3itc&. *i un rea6 fuese omitido, la sentencia para el
caso ='erezas= de$er"a tam$in ser e2ecutada y evaluada su coincidencia.
s"itch (ti1ofr%ta) {
case -4aran&as-3
doc%(ent."rite(-5as naran&as est0n a 67.89 la
li!ra.:!r;-)$
!rea)$
case -<an=anas-3
doc%(ent."rite(-5as (an=anas est0n a 67.,2 la
li!ra.:!r;-)$
!rea)$
case -#ananas-3
doc%(ent."rite(-5as !ananas est0n a 67.>? la li!ra.:!r;-)$
!rea)$
case -+ere=as-3
doc%(ent."rite(-5as cerer=as est0n a 6,.77 la
li!ra.:!r;-)$
!rea)$
case -<angos-3
case -@a1ayas-3
doc%(ent."rite(-5os (angos y las 1a1ayas est0n a 62.A9 la
li!ra.:!r;-)$
!rea)$
defa%lt3
doc%(ent."rite(-5o sientoB no tene(os - / ti1ofr%ta /
-.:!r;-)$
}
doc%(ent."rite(-Cxiste algo (0s 2%e deseeD:!r;-)$
*N!N'B?* '&N9B'B&N?/* MQ/!B(/*F switch
Como ya se analiz anteriormente, una sentencia if-else posee slo dos alternativas.
ic!a sentencia permite a un pro"rama seleccionar entre dos acciones posibles
(casos falso y verdadero). E#iste muc!as veces, sin embar"o, la necesidad de incluir
en un pro"rama sentencias $ue permitan la seleccin de varias (m%s de dos)
alternativas. &ara ello se pueden utilizar sentencias if-else anidadas o m'ltiples
sentencias if-else en secuencia, como ya se !a !ec!o con anterioridad. (na
alternativa a esto es el uso de la sentencia switch, sentencia de C)) $ue se dise*
especialmente para representar una seleccin condicional m'ltiple.
Sentencia switch
+a forma m%s simple de estudiar la sentencia s,itc! es comenzar con un e-emplo $ue
muestre su estructura b%sica.
#include <iostream.h>
#include<stdlib.h>
int main()
{
int dia;
cout<<Dame un numero entero entre 1 y 7 \n;
cin>>dia;
cout<<\nEl dia corresondiente es !;
s"itch(dia)
{
case 1#
cout<<$unes;
brea%;
case &#
cout<<'artes;
brea%;
case (#
cout<<'iercoles;
brea%;
case )#
cout<<*ue+es;
brea%;
case ,#
cout<<-iernes;
brea%;
case .#
cout<</abado;
brea%;
case 7#
cout<<Domin0o;
brea%;
de1ault#
cout<<Error en el numero;
2
cout<<\n;
return 3;
system(!456/E);
2
Este e-emplo se discuti con anterioridad. +o $ue el pro"rama realiza es pedir un
n'mero entero entre . y / y, dependiendo de ese valor, mostrar% en pantalla el nombre
de un d0a de la semana.
+o primero $ue se escribe en dic!a sentencia es el identificador switch. Cuando se
e-ecuta una sentencia s"itch, uno de varias alternativas se e-ecuta. &ara determinar
cual de los casos se debe e-ecutar se utiliza lo $ue se conoce como la expresin de
control de la sentencia, $ue se escribe entre parntesis. En el e-emplo la e#presin
de control es la variable dia. +a e#presin de control escrita entre par1ntesis deber%
siempre ser un valor booleano (23+4E o T5(E), un valor entero o un caracter.
urante la e-ecucin de la sentencia s"itch, se analiza la e#presin de control para
obtener su valor.
Cada una de las alternativas de la seleccin m'ltiple se representa por el identificador
case se"uido de un valor constante (entero, caracter o booleano) y dos puntos. +o
$ue se !ace a continuacin es $ue se compara el valor de la e#presin de control con
los valores constantes de los casos de la sentencia. Cuando encuentra el caso cuya
constante sea i"ual al valor de la e#presin de control, se e-ecutan las sentencias
correspondientes a dic!o caso (!asta encontrar una sentencia brea6). 4i por al"una
razn no se encuentra nin"una constante i"ual a la e#presin de control, entonces se
e-ecutan las sentencias $ue corresponden al caso default, $ue "eneralmente se
escribe al final de la sentencia s,itc! (si 1ste caso no e#istiera, entonces no se
e-ecutar0a nin"una de las alternativas).
7bserve $ue los casos de una sentencia s,itc! se escriben entre llaves. Note $ue
despu1s de las sentencias de cada caso se tiene una sentencia break. 4i las
sentencias brea6 no se incluyeran, entonces al e-ecutarse uno de los casos, la
computadora continuar0a e-ecutando las sentencias de todos los casos colocados por
deba-o del caso $ue si debe e-ecutarse. +a sentencia brea6 autom%ticamente !ace
$ue termine la e-ecucin de la sentencia s,itc!.
e acuerdo a la anterior, la sinta#is de la sentencia s,itc! es la si"uiente8
switch(e#presion9de9control)
{
case constante9.:
sentencias9del9caso9.8
break;
case constante9:8
sentencias9del9caso9:8
brea6;

case constante9n8
sentencias9del9caso9n8
brea6;
default8
sentencias9del9caso9default8
}
Este es otro e-emplo de aplicacin de la sentencia s,itc!8
#include <iostream.h>
#include<stdlib.h>
int main()
{
char cali1icacion;
cout<<Dame la cali1icacion en escala de caracteres \n;
cin>>cali1icacion;
cout<<\n$a cali1icacion numerica e7ui+alente es !;
s"itch(cali1icacion)
{
case 859#
cout<<133;
brea%;
case 8:9#
cout<<;,;
brea%;
case 8<9#
cout<<73;
brea%;
case 8D9#
case 8=9#
cout<<>erobatoria. -e a estudiar;
brea%;
de1ault#
cout<<Error en la cali1icacion roorcionada;
2
cout<<\n;
return 3;
system(!456/E);
2
ESTRUCTURA DE CNTRL RE!ETITI"AS
+as estructuras de control repetitivas son a$uellas en las $ue una sentencia o "rupos
de sentencias se repiten muc!as veces. Este con-unto de sentencias se denomina
bucle (loop). En este capitulo se introducen las estructuras de control repetitivas
disponibles en el len"ua-e turbo pascal; asimismo se describen un con-unto de
tecnicas para dise*ar al"oritmos y pro"ramas $ue utilicen bucles.
<(C+E
(na estructura de control $ue permite la recepcion de una serie determinada de
sentencias se denominan bucle (lazo o ciclo).
El cuerpo del bucle contiene las sentencias $ue se repiten. &ascal proporciona tres
estructuras o sentencias de control para especificar la repeticion8 ,!ile, repeat y for.
+3 4ENTENC=3 >?=+E
+a estructura repetitiva ,!ile (mientras) es a$uella en la $ue el n'mero de
interacciones no se conoce por anticipado y el cuerpo del bucle se repite mientras se
cumple una determinada condicin. por esta razn, a estos bucles se les denomina
bucles condicionales.
+3 4ENTENC=3 5E&E3T
(na variable de la sentencia ,!ile es la sentencia repeat. (na de las caracter0sticas
de los bucles ,!ile-do es $ue la condicin se val'a al principio de cada iteracin, si la
condicin es falsa cuando las sentencia comienza, entonces el bucle no se e-ecuta
nunca.
Esta sentencia tiene una condicional $ue se repite !asta $ue dic!a condicin se !a"a
verdadera esta condicin se denomina repeat-until.
+3 4ENTENC=3 275
+a sentencia for nos sirve ya $ue con ella se puede e-ecutar un bucle $ue se repita
determinado n'mero de veces.
Esta sentencia re$uiere $ue conozcamos el numero de veces $ue se desea e-ecutar
la sentencia del interior del bucle. 4i no se conoce de antemano el numero de
repeticiones es me-or utilizar la sentencia ,!ile o repeat.
#$% Arreglos Unidimensionales
<n arreglo unidimensional es un tipo de datos estructurado que est formado de una
colecci+n finita y ordenada de datos del mismo tipo. s la estructura natural para modelar
listas de elementos iguales.
l tipo de acceso a los arreglos unidimensionales es el acceso directo, es decir, podemos
acceder a cualquier elemento del arreglo sin tener que consultar a elementos anteriores o
posteriores, esto mediante el uso de un "ndice para cada elemento del arreglo que nos da
su posici+n relativa.
(ara implementar arreglos unidimensionales se de$e reservar espacio en memoria, y se
de$e proporcionar la direcci+n $ase del arreglo, la cota superior y la inferior.
RE!RESENTACIN EN &E&RIA
/os arreglos se representan en memoria de la forma siguienteF
' ( arra)*#$$+, of integer
(ara esta$lecer el rango del arreglo >nJmero total de elementosE que componen el arreglo
se utiliza la siguiente formulaF
RAN- . Ls / 0Li1#2
dondeF
ls P /"mite superior del arreglo
li P /"mite inferior del arreglo
(ara calcular la direcci+n de memoria de un elemento dentro de un arreglo se usa la
siguiente formulaF
A*i, . base0A2 1 *0i/li2 3 4,
donde F
? P Bdentificador Jnico del arreglo
i P Bndice del elemento
li P /"mite inferior
w P NJmero de $ytes tipo componente
*i el arreglo en el cual estamos tra$a2ando tiene un "ndice numerativo utilizaremos las
siguientes f+rmulasF
RAN- . ord 0ls2 / 0ord 0li21#2
A*i, . base 0A2 1 *ord 0i2 / ord 0li2 3 4,
#$5 Arreglos 6idimensionales
ste tipo de arreglos al igual que los anteriores es un tipo de dato estructurado, finito
ordenado y homogneo. l acceso a ellos tam$in es en forma directa por medio de un
par de "ndices.
/os arreglos $idimensionales se usan para representar datos que pueden verse como una
ta$la con filas y columnas. /a primera dimensi+n del arreglo representa las columnas,
cada elemento contiene un valor y cada dimensi+n representa una relaci+n
/a representaci+n en memoria se realiza de dos formas F almacenamiento por columnas o
por renglones.
(ara determinar el nJmero total de elementos en un arreglo $idimensional usaremos las
siguientes f+rmulasF
RAN- DE REN-LNES 0R#2 . Ls# / 0Li#1#2
RAN- DE CLU&NAS 0R%2 . Ls% / 0Li%1#2
No$ TTAL DE C&!NENTES . R# 3 R%
RE!RESENTACIN EN &E&RIA !R CLU&NAS
' ( arra) *#$$+7#$$8, of integer
(ara calcular la direcci+n de memoria de un elemento se usan la siguiente formulaF
A*i7j, . base 0A2 1 *00j / li%2 R# 1 0i 1 li#2234,
RE!RESENTACIN EN &E&RIA !R REN-LNES
' ( arra) *#$$+7#$$8, of integer
(ara calcular la direcci+n de memoria de un elemento se usan la siguiente formulaF
A*i7j, . base 0A2 1 *00i / li#2 R% 1 0j 1 li%2234,
dondeF
i P Bndice del rengl+n a calcular
2 P Bndice de la columna a calcular
liD P /"mite inferior de renglones
li4 P /"mite inferior de columnas
w P NJmero de $ytes tipo componente
parmetros de tipo de valor
(Gua de programacin de C#)
Una variable de tipo de valor contiene directamente los datos, a diferencia de una variable de tipo de
referencia, que contiene una referencia a los datos. asar una variable de tipo de valor a un m!todo por
valor significa pasar una copia de la variable al m!todo. Cualquier cambio en el parmetro que tenga
lugar dentro del m!todo no tiene ning"n efecto en los datos originales almacenados en la variable de
argumento. #i desea que el m!todo denominado para cambiar el valor del parmetro, debe pasarlo por
referencia, mediante la palabra clave de referencia o de out . ara simplificar, los siguientes e$emplos
utili%an ref.
&ipos de referencia ' de valor
((isual C# )*press)
+ diferencia de algunos lengua$es de programacin con los que puede estar familiari%ado, C# tiene dos
variedades de tipos de datos, valor ' referencia. )s importante saber la diferencia si el rendimiento es
esencial para la aplicacin o si se est interesado en cmo C# administra los datos ' la memoria.
Cuando se declara una variable utili%ando uno de los tipos de datos integrados bsicos o una estructura
definida por el usuario, !ste es un tipo de valor. Una e*cepcin es el tipo de datos string, que es un tipo
de referencia.
Un tipo de valor almacena su contenido en la memoria asignada en la pila. or e$emplo, en este caso el
valor -. se almacena en un rea de memoria denominada pila.,
C#
int x = 95;
Cuando la variable x queda fuera de mbito, porque en el m!todo en que se defini /a finali%ado la
e$ecucin, el valor se descarta de la pila.
Utili%ar la pila es efica%, pero el perodo limitado de duracin de los tipos de valores los /ace menos
adecuados para compartir los datos entre las diferentes clases.
or el contrario, un tipo de referencia, como una instancia de una clase o matri%, se asigna en un rea
diferente de memoria llamada 0montn0. )n el e$emplo siguiente, el espacio requerido para los die%
enteros que constitu'en la matri% se asigna en el montn.
C#
int./ numers = ne3 int.10/;
)sta memoria no se devuelve al montn cuando finali%a un m!todo1 slo se reclama cuando el sistema de
recoleccin de elementos no utili%ados de C# determina que 'a no la necesita. 2a' una sobrecarga ma'or
al declarar los tipos de referencia, pero !stos tienen la venta$a de ser accesibles desde otras clases.
M%todos con retorno
$n mtodo -uel-e al cdigo del que se llam en el momento en el
que alguna de estas circunstancias se de:
1 se completan todas las sentencias del mtodo(
1 llega a una sentencia retorno o
1 lan)a una e6cepcin(
El tipo de retorno de un mtodo se especifica en la declaracin del
mtodo! /entro del cuerpo del mtodo( se utili)a la
sentencia return para de-ol-er el -alor!
"ualquier mtodo que est declarado como -oid( no de-ol-er ning,n
-alor!
Si se intenta de-ol-er un -alor desde un mtodo declarado -oid(
aparecer un error de compilacin!
"ualquier mtodo que no sea declarado -oid( de+er contener una
sentencia return con su correspondiente -alor de retorno7
return ,a$or'etorno;
El tipo de dato del -alor de retorno de+er coincidir con el tipo de
retorno de la declaracin del mtodo! No se puede retornar un
-alor integer( a un mtodo en el que en su declaracin aparece como
-alor de retorno( un +oolean!
%ac6age com.edu9:a,a.8utoria$11;
im%ort :a,a.uti$.)canner;
%u$ic c$ass 8utoria$11 {
%u$ic static ,oid main()tring./ args) {
int./ arra* = ne3 int.;/;
)canner scanner = ne3 )canner()*stem.in);
insertar7atos<rra*(arra*, scanner);
sumar<rra*(arra*);
int max = max<rra*(arra*);
)*stem.out.%rint$n("-ax= " = max);
dou$e %romedio = %romedio<rra*(arra*);
)*stem.out.%rint$n(">romedio= " = %romedio);
}
%ri,ate static ,oid insertar7atos<rra*(int./ arra*, )canner
scanner) {
!or (int i = 0; i < arra*.$engt&; i==) {
)*stem.out.%rint("insertar arra*." = i = "/:");
arra*.i/ = scanner.next?nt();
}
}
%ri,ate static ,oid sumar<rra*(int./ arra*) {
)*stem.out.%rint(")uma: ");
int acumu$ador = 0;
!or (int i = 0; i < arra*.$engt&; i==) {
acumu$ador = acumu$ador = arra*.i/;
)*stem.out.%rint("=" = arra*.i/);
}
)*stem.out.%rint$n("= " = acumu$ador);
}
%ri,ate static int max<rra*(int./ arra*) {
int max = 0;
!or (int i = 0; i < arra*.$engt&; i==) {
i! (arra*.i/ > max) {
max = arra*.i/;
}
}
return max;
}
%ri,ate static dou$e %romedio<rra*(int./ arra*) {
dou$e %romedio = 0;
!or (int i = 0; i < arra*.$engt&; i==) {
%romedio = %romedio = arra*.i/;
}
%romedio = %romedio " arra*.$engt&;
return %romedio;
}
}
Tipos de 5ecursin
5ecursividad simple8 3$uella en cuya definicin slo aparece una llamada recursiva.
4e puede cambiar a una funcin con ciclo iterativo.
5ecursividad m'ltiple8 4e da cuando !ay m%s de una llamada a s0 misma dentro del
cuerpo de la funcin
5ecursividad anidada8 En al"unos de los ar"umentos de la llamada recursiva !ay una
nueva llamada a s0 misma.
5ecursividad cruzada o indirecta8 4on al"oritmos donde una funcin provoca una
llamada a s0 misma de forma indirecta, a trav1s de otras funciones.
$obrecarga
Sobrecarga es la capacidad de un lengua2e de programaci+n, que permite nom$rar con el
mismo identificador diferentes varia$les u operaciones.
n programaci+n orientada a o$2etos la so$recarga se refiere a la posi$ilidad de tener dos
o ms funciones con el mismo nom$re pero funcionalidad diferente. s decir, dos o ms
funciones con el mismo nom$re realizan acciones diferentes. l compilador usar una u
otra dependiendo de los parmetros usados. ? esto se llama tam$in so$recarga de
funciones.
!am$in e1iste la so$recarga de operadores que al igual que con la so$recarga de
funciones se le da ms de una implementaci+n a un operador.
l mismo mtodo dentro de una clase permite hacer cosas distintas en funci+n de los
parmetros.
%ava no permite al programador implementar sus propios operadores so$recargados, pero
s" utilizar los predefinidos como el H. R 'HH, por el contrario si permite hacerlo.
Ejemplo <rticu$o.:a,a-editar.
public class <rticu$o {
private float %recio;
public void set>recio() {
%recio = 3.;0;
}
public void set>recio(float nue,o>recio) {
%recio = nue,o>recio;
}
}

También podría gustarte