You are on page 1of 29

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.
.NET podra considerarse una respuesta de Microsoft al creciente mercado de los
negocios en entornos Web, como competencia a la plataforma Java de Oracle
Corporation y a los diversos framework de desarrollo web basados en PHP. Su propuesta
es ofrecer una manera rpida y econmica, a la vez que segura y robusta, de desarrollar
aplicaciones o como la misma plataforma las denomina, soluciones permitiendo una
integracin ms rpida y gil entre empresas y un acceso ms simple y universal a todo
tipo de informacin desde cualquier tipo de dispositivo.
Consideraciones[editar]
La plataforma .NET de Microsoft es un componente de software que puede ser aadido
al sistema operativo Windows. Provee un extenso conjunto de soluciones predefinidas
para necesidades generales de la programacin de aplicaciones, y administra la ejecucin
de los programas escritos especficamente con la plataforma. Esta solucin es el producto
principal en la oferta de Microsoft, y pretende ser utilizada por la mayora de las
aplicaciones creadas para la plataforma Windows.
.NET Framework se incluye en Windows Server 2008, Windows Vista y Windows 7. De
igual manera, la versin actual de dicho componente puede ser instalada en Windows XP,
y en la familia de sistemas operativos Windows Server 2003. Una versin "reducida" de
.NET Framework est disponible para la plataforma Windows Mobile, incluyendo telfonos
inteligentes.
La norma (incluido en ECMA-335, ISO/IEC 23271) que define el conjunto de funciones que
debe implementar la biblioteca de clases base (BCL por sus siglas en ingls, tal vez el ms
importante de los componentes de la plataforma), define un conjunto funcional mnimo que
debe implementarse para que el marco de trabajo sea soportado por un sistema operativo.
Aunque Microsoft implement esta norma para su sistema operativo Windows, la
publicacin de la norma abre la posibilidad de que sea implementada para cualquier otro
sistema operativo existente o futuro, permitiendo que las aplicaciones corran sobre la
plataforma independientemente del sistema operativo para el cual haya sido
implementada. El Proyecto Mono emprendido por Ximian pretende realizar la
implementacin de la norma para varios sistemas operativos adicionales bajo el marco del
cdigo abierto.
Componentes[editar]
Los principales componentes del marco de trabajo son:
El conjunto de lenguajes de programacin.
La biblioteca de clases base o BCL.
El entorno comn de ejecucin para lenguajes, o CLR por sus siglas en ingls.
Debido a la publicacin de la norma para la infraestructura comn de lenguajes (CLI por
sus siglas en ingls), el desarrollo de lenguajes se facilita, por lo que el marco de trabajo
.NET soporta ya ms de 20 lenguajes de programacin y es posible desarrollar cualquiera
de los tipos de aplicaciones soportados en la plataforma con cualquiera de ellos, lo que
elimina las diferencias que existan entre lo que era posible hacer con uno u otro lenguaje.
Algunos de los lenguajes desarrollados para el marco de trabajo .NET son: C#, Visual
Basic .NET, Delphi (Object Pascal), C++, F#, J#, Perl, Python, Fortran, Prolog (existen al
menos dos implementaciones, el P#
1
y el Prolog.NET
2
), Cobol y PowerBuilder.
Biblioteca de Clases Base de .NET[editar]


Diagrama bsico de la Biblioteca de Clases Base.
La Biblioteca de Clases Base (BCL por sus siglas en ingls) maneja la mayora de las
operaciones bsicas que se encuentran involucradas en el desarrollo de aplicaciones,
incluyendo entre otras:
Interaccin con los dispositivos perifricos
Manejo de datos (ADO.NET)
Administracin de memoria
Cifrado de datos
Transmisin y recepcin de datos por distintos medios (XML, TCP/IP)
Administracin de componentes Web que corren tanto en el servidor como en el
cliente (ASP.NET)
Manejo y administracin de excepciones
Manejo del sistema de ventanas
Herramientas de despliegue de grficos (GDI+)
Herramientas de seguridad e integracin con la seguridad del sistema operativo
Manejo de tipos de datos unificado
Interaccin con otras aplicaciones
Manejo de cadenas de caracteres y expresiones regulares
Operaciones aritmticas
Manipulacin de fechas, zonas horarias y periodos de tiempo
Manejo de arreglos de datos y colecciones
Manipulacin de archivos de imgenes
Aleatoriedad
Generacin de cdigo
Manejo de idiomas
Auto descripcin de cdigo
Interaccin con el API Win32 o Windows API.
Compilacin de cdigo
Esta funcionalidad se encuentra organizada por medio de espacios de nombres
jerrquicos.
La Biblioteca de Clases Base se clasifica, en cuatro grupos clave:
ASP.NET y Servicios Web XML
Windows Forms
ADO.NET
.NET
Common Language Infrastructure

El Common Language Infrastructure ( CLI ) es un abierto especificacin desarrollada
por Microsoft y estandarizado por ISO
[ 1 ]
y ECMA
[ 2 ]
que describe el cdigo ejecutable y
entorno de ejecucin. La especificacin define un entorno que permite a mltiples
lenguajes de alto nivel que se utilizarn en diferentes plataformas de computacin sin ser
reescrito para arquitecturas especficas. El . NET Framework y la libre y de cdigo
abierto Mono y Portable.NET son implementaciones de la CLI.

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 CPU en la que.
Programas NET Framework se compilan. Contiene instrucciones para cargar,
almacenar, inicializar y mtodos en objetos de llamadas.
Combinado con los metadatos y el sistema de tipo comn, MSIL permite una
verdadera integracin entre lenguajes.
Antes de la ejecucin, MSIL se convierte a cdigo mquina. No se
interpreta.
(Souce MSDN)
Al compilar a cdigo administrado, el compilador traduce el cdigo fuente en
lenguaje intermedio de Microsoft (MSIL), que es un conjunto independiente
de la CPU de las instrucciones que se pueden convertir de manera eficiente
en cdigo nativo. (Fuente MSDN)
Common Intermediate Language (CIL, que se pronuncia "sil" o "kil")
(anteriormente llamado Lenguaje intermedio de Microsoft o MSIL) es el lenguaje de
programacin legible nivel ms bajo en el Common Language Infrastructure y en el.
NET Framework. Idiomas que tienen como destino. NET Framework compilan a CIL,
que se monta en bytecode.CIL es un lenguaje ensamblador orientado a objetos, y
se basa apilar-por completo. Se ejecuta por una mquina virtual.

CIL fue originalmente conocido como lenguaje intermedio de Microsoft (MSIL),
durante las versiones beta de los lenguajes. NET. Debido a la estandarizacin de C
# y el Common Language Infrastructure, el bytecode es ahora conocido
oficialmente como CIL. Debido a este legado, CIL todava se conoce con frecuencia
como MSIL, sobre todo por los usuarios de larga data de los lenguajes. NET.
(Fuente Wikipedia)
VERSIONES NET Y DE VS
Visual Basic .NET (VB.NET) es un lenguaje
de programacin orientado a objetos que se
puede considerar una evolucin de Visual
Basic implementada sobre el framework
.NET. Su introduccin result muy
controvertida, ya que debido a cambios
significativos en el lenguaje VB.NET no es
compatible hacia atrs con Visual Basic,
pero el manejo de las instrucciones es
similar a versiones anteriores de Visual
Basic, facilitando asi el desarollo de
aplicaciones mas avanzadas con
herramientas modernas.
La gran mayora de programadores de
VB.NET utilizan el entorno de desarrollo
integrado (IDE) Microsoft Visual Studio en
alguna de sus versiones (Visual Studio .NET,
Visual Studio .NET 2003, Visual Studio
.NET 2005, Visual Studio .NET 2008),
aunque existen otras alternativas, como
SharpDevelop (que adems es libre).
Al igual que con todos los lenguajes de
programacin basados en .NET, los
programas escritos en VB .NET requieren el
Framework .NET para ejecutarse.

Namespaces
Espacio de nombres
Este artculo trata sobre el espacio de nombres en programacin. Para los distintos tipos
de pginas de Wikipedia, vase Ayuda:Espacio de nombres.
En programacin, un espacio de nombres (del ingls namespace), en su acepcin ms
simple, es un conjunto de nombres en el cual todos los nombres son nicos.
Un espacio de nombres es un contenedor abstracto en el que un grupo de uno o ms
identificadores nicos pueden existir. Un identificador definido en un espacio de nombres
est asociado con ese espacio de nombres. El mismo identificador puede
independientemente ser definido en mltiples espacios de nombres, eso es, el sentido
asociado con un identificador definido en un espacio de nombres es independiente del
mismo identificador declarado en otro espacio de nombres. Los lenguajes que manejan
espacio de nombres especifican las reglas que determinan a qu espacio de nombres
pertenece una instancia de un identificador.
Por ejemplo, Pedro trabaja para la compaa X y su nmero de empleado es 123. Mara
trabaja para la compaa Y y su nmero de empleada tambin es 123. La razn por la cual
Pedro y Mara pueden ser identificados con el mismo nmero de empleado es porque
trabajan para compaas diferentes. Diferentes compaas simbolizan en este caso
diferentes espacios de nombres.
En programas grandes o en documentos no es infrecuente tener cientos o miles de
identificadores. Los espacios de nombres (o tcnicas similares como la emulacin de
espacios de nombres) disponen de un mecanismo para ocultar los identificadores locales.
Proporcionan los medios para agrupar lgicamente los identificadores relacionados en sus
correspondientes espacios de nombres, haciendo as el sistema ms modular.
Muchos lenguajes de programacin manejan espacios de nombres. En algunos lenguajes,
como C++, PHP o Python, estos identificadores nombrando espacios de nombres estn
asociados con un espacio de nombres que los agrupa. As pues, en estos lenguajes, los
espacios de nombres se pueden anidar formando un rbol de espacios de nombres. En la
raz de este rbol se encuentra el espacio de nombres annimo global.
CLASES
Utilidad
^
Este mecanismo permite reutilizar el cdigo en forma de bibliotecas, que de otro
modo no podra usarse. Es frecuente que diferentes diseadores de bibliotecas usen
los mismos nombres para cosas diferentes, de modo que resulta imposible integrar
esas bibliotecas en la misma aplicacin.
Por ejemplo un diseador crea una biblioteca matemtica con una clase llamada
"Conjunto" y otro una biblioteca grfica que tambin contenga una clase con ese
nombre. Si nuestra aplicacin incluye 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 variables, funciones o
clases declaradas en su interior, de modo que para acceder a una de esas variables
se tiene que usar el operador de especificador de mbito (::), o activar el espacio con
nombre adecuado.
Por 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 hemos usado tres espacios con nombre diferentes: "uno", "dos" y
"std". El espacio "std" se usa en todas las bibliotecas estndar, de modo que todas
las funciones y clases estndar se declaran y definen en ese espacio.
Hemos activado el espacio "uno", de modo que para acceder a clases estndar
como cout, tenemos que especificar el nombre: std::cout.
Tambin es posible crear un espacio con nombre a lo largo de varios ficheros
diferentes, de hecho eso es lo que se hace con el espacio std, que se define en todos
los ficheros estndar.
Espacios annimos
^
Espacios con nombre sin nombre?
Si nos fijamos en la sintaxis de la definicin de un espacio con nombre, vemos que
el nombre es opcional, es decir, podemos crear espacios con nombre annimos.
Pero, para qu crear un espacio annimo? Su uso es til para crear identificadores
accesibles slo en determinadas zonas del cdigo. Por ejemplo, si creamos una
variable en uno de estos espacios en un fichero fuente concreto, la variable slo ser
accesible desde ese punto hasta el final del fichero.
namespace Nombre {
int f();
char s;
void g(int);
}

namespace {
int x = 10;
}
// x slo se puede desde este punto hasta el final del fichero
// Resulta inaccesible desde cualquier otro punto o fichero

namespace Nombre {
int f() {
return x;
}
}
Este mecanismo nos permite restringir el mbito de objetos y funciones a un
fichero determinado dentro de un proyecto con varios ficheros fuente. Si
recordamos el captulo anterior, esto se poda hacer con el
especificador static aplicado a funciones o a objetos globales.
De hecho, la especificacin de C++ aconseja usar espacios con nombre annimos
para esto, en lugar del especificador static, con el fin de evitar la confusin que
puede producir este doble uso del especificador.
Espacio global
^
Cualquier declaracin hecha fuera de un espacio con nombre pertenece al espacio
global.
Precisamente porque las bibliotecas estndar declaran todas sus variables,
funciones, clases y objetos en el espacio std, es necesario usar las nuevas versiones
de los ficheros de cabecera estndar: "iostream", "fstream", etc. Y en lo que respecta
a las procedentes de C, hay que usar las nuevas versiones que comienzan por 'c' y no
tienen extensin: "cstdio", "cstdlib", "cstring", etc...". Todas esas bibliotecas han
sido rescritas en el espacio con nombre std.
Si decidimos usar los ficheros de cabecera de C en nuestros programas C++,
estaremos declarando las variables, estructuras y funciones en el espacio global.
Espacios anidados
^
Los espacios con nombre tambin 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() {

La sentencia Using.
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.
Un modo de ahorrarnos trabajo, al tener que anteponer nombres de namespaces a cada una de las
clases que utilicemos, es colocar en la cabecera de nuestro archivo de cdigo fuente una sentencia using,
escribiendo:
using <espacio de nombres>;
As, el compilador buscara cada clase referenciada en el espacio de nombres global y en los espacios de
nombres especificados por sentencias using.
Por lo tanto, el cdigo de nuestro primer programa ahora podra ser:

using Sytem;

class Clase1

{
static void Main(string[] args)

{

Console.WriteLine("Hola Mundo");

}

}
Console es una clase que no existe en el espacio de nombres global, sino en el espacio de
nombres System.Gracias a que le hemos indicado al compilador que estamos usando dicho espacio de
nombre, l sabr que las clases que utilicemos tambin podran estar all.
WriteLine es un mtodo de la clase Console. Recordemos que para acceder a informacin de referencia
la BCL podemos utilizar la ayuda que provee Visual Studio, donde estn todos los mtodos y propiedades
de la claseConsole.

Ensamblado (Microsoft .NET)
En Microsoft .NET framework, un ensamblado
1
es principalmente
una biblioteca de cdigo compilado para ser utilizado en instalaciones, versionamiento y
seguridad. Existen 2 tipos: Ensamblados de procesos (EXE) y bibliotecas de ensamblados
(DLL).
Un ensamblado de proceso representa un ejecutable que posiblemente
usar clases definidas en ensamblados de bibliotecas, o ejecutar solo cdigo contenido
en si mismo. Los ensamblados de .NET contienen cdigo en lenguaje CIL, el cual es
usualmente generado desde los lenguajes .NET y luego compilados en un motor de
ejecucin CLRCompilacin Justo en Ejecucin, en ingls just - in time compiler.
No se puede catalogar a .NET como un lenguaje de programacin interpretado, algunos
autores tienden a catalogarlo como un lenguaje compilado ya que el CIL es ledo y
compilado por el CLR, con las ventajas del just - in time
Un ensamblado puede consistir en uno o ms archivos. Los archivos de cdigo son
llamados mdulos. Un ensamblado puede contener ms de un mdulo de cdigo y es
posible utilizar diferentes lenguajes en los diferentes mdulos para crear el ensamblado
de .NET. Visual Studio sin embargo no soporta utilizar diferentes lenguajes en un
ensamblado, la compilacin de ensamblados de mltiples lenguajes es necesaria realizarla
desde la consola de comandos.
Por buenas prcticas de desarrollo se acostumbra ubicar una nica clase en cada archivo
del ensamblado, pero cabe recordar que un mdulo; un archivo; puede contener varias
clases dentro de l pero no es recomendable.
Los ensamblados pueden tener diferentes decoradores que definen el entorno de
ejecucin de los mismos COM+, DCOM, Remoting, etc.

Sentencia condicional
Una sentencia condicional es un conjunto de comandos que se ejecutan si la condicin
especificada es verdadera. JavaScript soporta dos sentencias
condicionales: if...else y switch.
if...else
Utilice la sentencia if para ejecutar una sentencia s la condicin lgica es verdadera.
Utilice la clusula opcional else para ejecutar una sentencia s la condicin es falsa. Una
sentencia if se parece a lo que sigue:
if (condicin)
sentencia_1
[else
sentencia_2]
La condicin puede ser cualquier expresin que se evala como verdadera o falsa. S
la condicin se evala como verdadera, la sentencia_1es ejecutada; caso contrario,
la sentencia_2 es ejecutada. La sentencia_1 y la sentencia_2 pueden ser cualquier
sentencia, incluyendo el uso de sentencias if anidadas.
Usted tambin puede componer sentencias utilizando la clusula else if para tener
mltiples condiciones probadas en secuencia, tal como sigue:
if (condicin)
sentencia_1
[else if (condicin_2)
sentencia_2]
...
[else if (condicin_n_1)
sentencia_n_1]
[else
sentencia_n]
Para ejecutar mltiples sentencias, utilice un bloque de sentencias ({ ... }) para
agruparlas. En general, es una buena prctica que siempre utilice los bloques de
sentencias, especialmente en cdigo que involucre sentencias if anidadas:
if (condicin) {
sentencia_1
} else {
sentencia_2
}
Es recomendable no utilizar asignaciones simples en una expresin condicional , debido a
que una asignacin puede ser confundida con la igualdad cuando se da un vistazo al
cdigo. Por ejemplo, no utilice el siguiente cdigo:
if (x = y) {
/* haga las cosas correctas */
}
Si usted necesita utilizar una asignacin en una expresin condicional, una prctica comn
es poner parntesis adicionales alrededor de la asignacin. Por ejemplo:
if ((x = y)) {
/* haga las cosas correctas */
}
No deben confundirse los valores lgicos primitivos true y false con los valores
verdadero y falso de los objetos lgicos o booleanos [Boolean object]. Cualquier valor que
no es: un valor sin definir [undefined], nulo [null], cero 0, "no numrico" [NaN], o una
cadena vaca ("") y cualquier objeto, incluyendo un objeto lgico cuyo valor es falso, se
evala como verdadero cuando es pasado por una sentencia condicional. Por ejemplo:
var b = new Boolean(false); //asigna un objeto lgico con valor igual a
falso a la variable b
if (b) // esta condicin se evala como verdadera
Ejemplo
En el siguiente ejemplo, la funcin checkData retorna verdadero si el nmero de
caracteres en el objeto Text es tres; caso contrario, se despliega una alerta y se retorna
falso.
function checkData() {
if (document.form1.threeChar.value.length == 3) {
return true;
} else {
alert("Ingrese exactamente tres caracteres. " +
document.form1.threeChar.value + " no es vlido.");
return false;
}
}
El ejemplo asume que la caja de texto llamada threeChar pertenece al formulario form1. y
se utliza "==" para verificar el tipo de dato. (N.T.)
switch
Una sentencia switch permite a un programa evaluar una expresin e intenta cotejarla
con el valor de la etiqueta de una expresin por casos. Si la coincidencia es encontrada, el
programa ejecuta la sentencia asociada. Una sentencia switch se parece a lo siguiente:
switch (expresin) {
case etiqueta_1:
sentencias_1
[break;]
case etiqueta_2:
sentencias_2
[break;]
...
default:
sentencias_por_defecto //default
[break;]
}
El programa primero busca por una clusula case con una etiqueta para asociacin con el
valor de la expresin y luego transfiere el control a aquella clusula, ejecutando las
sentencias asociadas. Si no encuentra una coincidencia con una etiqueta, el programa
mira la clusula opcional default y si la encuentra, transfiere el control a dicha clusula,
ejecutando las sentencias asociadas. Si no es encontrada la clusuladefault, el
programa continua la ejecucin de la sentencia encontrando el final del switch. Por
convencin, la clusula default es la ltima clusula, pero no es tampoco necesaria
que est. //
La sentencia opcional break asociada con cada clusula de caso [case] asegura que el
programa salte fuera del switch una vez que la sentencia coincidente es ejecutada y
continua la ejecucin a la siguiente sentencia despus del switch. Si la la
sentencia break es omitida, el programa continua la ejecucin con la siguiente sentencia
dentro del switch.
Ejemplo:
En el siguiente ejemplo, s se evala tipofruta como "Bananas", el programa busca la
coincidencia con el valor del caso "Bananas" y ejecuta la sentencia asociada. Cuando
un break es encontrado, el programa termina la sentencia switch y ejecuta las
siguientes sentencias despus delswitch. Si un break fuese omitido, la sentencia para el
caso "Cerezas" debera tambin ser ejecutada y evaluada su coincidencia.
switch (tipofruta) {
case "Naranjas":
document.write("Las naranjas estn a $0.59 la libra.<br>");
break;
case "Manzanas":
document.write("Las manzanas estn a $0.32 la libra.<br>");
break;
case "Bananas":
document.write("Las bananas estn a $0.48 la libra.<br>");
break;
case "Cerezas":
document.write("Las cererzas estn a $3.00 la libra.<br>");
break;
case "Mangos":
case "Papayas":
document.write("Los mangos y las papayas estn a $2.79 la
libra.<br>");
break;
default:
document.write("Lo siento, no tenemos " + tipofruta + ".<br>");
}
document.write("Existe algo ms que desee?<br>");

SENTENCIAS CONDICIONALES MLTIPLES: switch
Como ya se analiz anteriormente, una sentencia if-else posee slo dos alternativas. Dicha
sentencia permite a un programa seleccionar entre dos acciones posibles (casos falso y
verdadero). Existe muchas veces, sin embargo, la necesidad de incluir en un programa
sentencias que permitan la seleccin de varias (ms de dos) alternativas. Para ello se pueden
utilizar sentencias if-else anidadas o mltiples sentencias if-else en secuencia, como ya se ha
hecho con anterioridad. Una alternativa a esto es el uso de la sentencia switch, sentencia de
C++ que se dise especialmente para representar una seleccin condicional mltiple.
Sentencia switch
La forma ms simple de estudiar la sentencia switch es comenzar con un ejemplo que muestre
su estructura bsica.
#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 correspondiente es ;
switch(dia)
{
case 1:
cout<<Lunes;
break;
case 2:
cout<<Martes;
break;
case 3:
cout<<Miercoles;
break;
case 4:
cout<<Jueves;
break;
case 5:
cout<<Viernes;
break;
case 6:
cout<<Sabado;
break;
case 7:
cout<<Domingo;
break;

default:
cout<<Error en el numero;
}
cout<<\n;
return 0;
system(PAUSE);
}
Este ejemplo se discuti con anterioridad. Lo que el programa realiza es pedir un nmero
entero entre 1 y 7 y, dependiendo de ese valor, mostrar en pantalla el nombre de un da de la
semana.
Lo primero que se escribe en dicha sentencia es el identificador switch. Cuando se ejecuta una
sentencia switch, uno de varias alternativas se ejecuta. Para determinar cual de los casos se
debe ejecutar se utiliza lo que se conoce como la expresin de control de la sentencia, que se
escribe entre parntesis. En el ejemplo la expresin de control es la variable dia. La expresin
de control escrita entre parntesis deber siempre ser un valor booleano (FALSE o TRUE), un
valor entero o un caracter. Durante la ejecucin de la sentencia switch, se analiza la expresin
de control para obtener su valor.
Cada una de las alternativas de la seleccin mltiple se representa por el identificador case
seguido de un valor constante (entero, caracter o booleano) y dos puntos. Lo que se hace a
continuacin es que se compara el valor de la expresin de control con los valores constantes
de los casos de la sentencia. Cuando encuentra el caso cuya constante sea igual al valor de la
expresin de control, se ejecutan las sentencias correspondientes a dicho caso (hasta
encontrar una sentencia break). Si por alguna razn no se encuentra ninguna constante igual a
la expresin de control, entonces se ejecutan las sentencias que corresponden al caso default,
que generalmente se escribe al final de la sentencia switch (si ste caso no existiera, entonces
no se ejecutara ninguna de las alternativas).
Observe que los casos de una sentencia switch se escriben entre llaves. Note que despus de
las sentencias de cada caso se tiene una sentencia break. Si las sentencias break no se
incluyeran, entonces al ejecutarse uno de los casos, la computadora continuara ejecutando las
sentencias de todos los casos colocados por debajo del caso que si debe ejecutarse. La
sentencia break automticamente hace que termine la ejecucin de la sentencia switch.
De acuerdo a la anterior, la sintaxis de la sentencia switch es la siguiente:

switch(expresion_de_control)
{
case constante_1:
sentencias_del_caso_1:
break;
case constante_2:
sentencias_del_caso_2:
break;

case constante_n:
sentencias_del_caso_n:
break;
default:
sentencias_del_caso_default:
}

Este es otro ejemplo de aplicacin de la sentencia switch:

#include <iostream.h>
#include<stdlib.h>
int main()
{
char calificacion;
cout<<Dame la calificacion en escala de caracteres \n;
cin>>calificacion;
cout<<\nLa calificacion numerica equivalente es ;
switch(calificacion)
{
case A:
cout<<100;
break;
case B:
cout<<85;
break;
case C:
cout<<70;
break;

case D:
case F:
cout<<Reprobatoria. Ve a estudiar;
break;
default:
cout<<Error en la calificacion proporcionada;
}
cout<<\n;
return 0;
system(PAUSE);
}

ESTRUCTURA DE CONTROL REPETITIVAS

Las estructuras de control repetitivas son aquellas en las que una sentencia o grupos de
sentencias se repiten muchas veces. Este conjunto de sentencias se denomina bucle (loop). En
este capitulo se introducen las estructuras de control repetitivas disponibles en el lenguaje
turbo pascal; asimismo se describen un conjunto de tecnicas para disear algoritmos y
programas que utilicen bucles.

BUCLE

Una estructura de control que permite la recepcion de una serie determinada de sentencias se
denominan bucle (lazo o ciclo).

El cuerpo del bucle contiene las sentencias que se repiten. Pascal proporciona tres estructuras
o sentencias de control para especificar la repeticion: while, repeat y for.

LA SENTENCIA WHILE
La estructura repetitiva while (mientras) es aquella en la que el nmero 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.



LA SENTENCIA REPEAT
Una variable de la sentencia while es la sentencia repeat. Una de las caractersticas de los
bucles while-do es que la condicin se vala al principio de cada iteracin, si la condicin es
falsa cuando las sentencia comienza, entonces el bucle no se ejecuta nunca.

Esta sentencia tiene una condicional que se repite hasta que dicha condicin se haga
verdadera esta condicin se denomina repeat-until.

LA SENTENCIA FOR

La sentencia for nos sirve ya que con ella se puede ejecutar un bucle que se repita
determinado nmero de veces.

Esta sentencia requiere que conozcamos el numero de veces que se desea ejecutar la
sentencia del interior del bucle. Si no se conoce de antemano el numero de repeticiones es
mejor utilizar la sentencia while o repeat.


1.2 Arreglos Unidimensionales
Un arreglo unidimensional es un tipo de datos estructurado que est formado de una
coleccin finita y ordenada de datos del mismo tipo. Es la estructura natural para modelar
listas de elementos iguales.
El 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 posicin relativa.
Para implementar arreglos unidimensionales se debe reservar espacio en memoria, y se
debe proporcionar la direccin base del arreglo, la cota superior y la inferior.
REPRESENTACION EN MEMORIA
Los arreglos se representan en memoria de la forma siguiente:
x : array[1..5] of integer

Para establecer el rango del arreglo (nmero total de elementos) que componen el arreglo
se utiliza la siguiente formula:
RANGO = Ls - (Li+1)
donde:
ls = Lmite superior del arreglo
li = Lmite inferior del arreglo
Para calcular la direccin de memoria de un elemento dentro de un arreglo se usa la
siguiente formula:
A[i] = base(A) + [(i-li) * w]
donde :
A = Identificador nico del arreglo
i = Indice del elemento
li = Lmite inferior
w = Nmero de bytes tipo componente
Si el arreglo en el cual estamos trabajando tiene un ndice numerativo utilizaremos las
siguientes frmulas:
RANGO = ord (ls) - (ord (li)+1)
A[i] = base (A) + [ord (i) - ord (li) * w]
1.3 Arreglos Bidimensionales
Este tipo de arreglos al igual que los anteriores es un tipo de dato estructurado, finito
ordenado y homogneo. El acceso a ellos tambin es en forma directa por medio de un
par de ndices.
Los arreglos bidimensionales se usan para representar datos que pueden verse como una
tabla con filas y columnas. La primera dimensin del arreglo representa las columnas,
cada elemento contiene un valor y cada dimensin representa una relacin
La representacin en memoria se realiza de dos formas : almacenamiento por columnas o
por renglones.
Para determinar el nmero total de elementos en un arreglo bidimensional usaremos las
siguientes frmulas:
RANGO DE RENGLONES (R1) = Ls1 - (Li1+1)
RANGO DE COLUMNAS (R2) = Ls2 - (Li2+1)
No. TOTAL DE COMPONENTES = R1 * R2
REPRESENTACION EN MEMORIA POR COLUMNAS

x : array [1..5,1..7] of integer
Para calcular la direccin de memoria de un elemento se usan la siguiente formula:
A[i,j] = base (A) + [((j - li2) R1 + (i + li1))*w]
REPRESENTACION EN MEMORIA POR RENGLONES

x : array [1..5,1..7] of integer
Para calcular la direccin de memoria de un elemento se usan la siguiente formula:
A[i,j] = base (A) + [((i - li1) R2 + (j + li2))*w]
donde:
i = Indice del rengln a calcular
j = Indice de la columna a calcular
li1 = Lmite inferior de renglones
li2 = Lmite inferior de columnas
w = Nmero de bytes 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. Pasar una variable de tipo de
valor a un mtodo por valor significa pasar una copia de la variable al mtodo. Cualquier
cambio en el parmetro que tenga lugar dentro del mtodo no tiene ningn efecto en los datos
originales almacenados en la variable de argumento. Si desea que el mtodo denominado para
cambiar el valor del parmetro, debe pasarlo por referencia, mediante la palabra clave
de referencia o de out . Para simplificar, los siguientes ejemplos utilizan ref.
Tipos de referencia y de
valor (Visual C# Express)
A diferencia de algunos lenguajes de programacin con los que puede estar familiarizado, C#
tiene dos variedades de tipos de datos: valor y referencia. Es importante saber la diferencia si el
rendimiento es esencial para la aplicacin o si se est interesado en cmo C# administra los
datos y la memoria.
Cuando se declara una variable utilizando uno de los tipos de datos integrados bsicos o una
estructura definida por el usuario, ste es un tipo de valor. Una excepcin 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. Por ejemplo, en este
caso el valor 42 se almacena en un rea de memoria denominada pila.:
C#
int x = 42;


Cuando la variable x queda fuera de mbito, porque en el mtodo en que se defini ha
finalizado la ejecucin, el valor se descarta de la pila.
Utilizar la pila es eficaz, pero el perodo limitado de duracin de los tipos de valores los hace
menos adecuados para compartir los datos entre las diferentes clases.
Por el contrario, un tipo de referencia, como una instancia de una clase o matriz, se asigna en un
rea diferente de memoria llamada "montn". En el ejemplo siguiente, el espacio requerido para
los diez enteros que constituyen la matriz se asigna en el montn.
C#
int[] numbers = new int[10];


Esta memoria no se devuelve al montn cuando finaliza un mtodo; slo se reclama cuando el
sistema de recoleccin de elementos no utilizados de C# determina que ya no la necesita. Hay
una sobrecarga mayor al declarar los tipos de referencia, pero stos tienen la ventaja de ser
accesibles desde otras clases.

Mtodos con retorno
Un mtodo vuelve al cdigo del que se llam en el momento en el
que alguna de estas circunstancias se de:
- se completan todas las sentencias del mtodo,
- llega a una sentencia retorno o
- lanza una excepcin,
El tipo de retorno de un mtodo se especifica en la declaracin del
mtodo. Dentro del cuerpo del mtodo, se utiliza la
sentencia return para devolver el valor.
Cualquier mtodo que est declarado como void, no devolver ningn
valor.
Si se intenta devolver un valor desde un mtodo declarado void,
aparecer un error de compilacin.
Cualquier mtodo que no sea declarado void, deber contener una
sentencia return con su correspondiente valor de retorno;
return valorRetorno;
El tipo de dato del valor de retorno deber coincidir con el tipo de
retorno de la declaracin del mtodo. No se puede retornar un
valor integer, a un mtodo en el que en su declaracin aparece
como valor de retorno, un boolean.
package com.edu4java.Tutorial11;

import java.util.Scanner;

public class Tutorial11 {
public static void main(String[] args) {
int[] array = new int[5];
Scanner scanner = new Scanner(System.in);

insertarDatosArray(array, scanner);
sumarArray(array);
int max = maxArray(array);
System.out.println("Max= " + max);

double promedio = promedioArray(array);
System.out.println("Promedio= " + promedio);

}

private static void insertarDatosArray(int[] array, Scanner
scanner) {
for (int i = 0; i < array.length; i++) {
System.out.print("insertar array[" + i + "]:");
array[i] = scanner.nextInt();
}

}

private static void sumarArray(int[] array) {
System.out.print("Suma: ");
int acumulador = 0;
for (int i = 0; i < array.length; i++) {
acumulador = acumulador + array[i];
System.out.print("+" + array[i]);
}
System.out.println("= " + acumulador);
}

private static int maxArray(int[] array) {
int max = 0;
for (int i = 0; i < array.length; i++) {
if (array[i] > max) {
max = array[i];
}
}
return max;
}

private static double promedioArray(int[] array) {
double promedio = 0;
for (int i = 0; i < array.length; i++) {
promedio = promedio + array[i];
}
promedio = promedio / array.length;
return promedio;

}
}

Tipos de Recursin
Recursividad simple: Aquella en cuya definicin slo aparece una llamada recursiva. Se puede
cambiar a una funcin con ciclo iterativo.
Recursividad mltiple: Se da cuando hay ms de una llamada a s misma dentro del cuerpo de
la funcin
Recursividad anidada: En algunos de los argumentos de la llamada recursiva hay una nueva
llamada a s misma.
Recursividad cruzada o indirecta: Son algoritmos donde una funcin provoca una llamada a s
misma de forma indirecta, a travs de otras funciones.
Sobrecarga
Sobrecarga es la capacidad de un lenguaje de programacin, que permite nombrar con el
mismo identificador diferentes variables u operaciones.
En programacin orientada a objetos la sobrecarga se refiere a la posibilidad de tener dos
o ms funciones con el mismo nombre pero funcionalidad diferente. Es decir, dos o ms
funciones con el mismo nombre realizan acciones diferentes. El compilador usar una u
otra dependiendo de los parmetros usados. A esto se llama tambin sobrecarga de
funciones.
Tambin existe la sobrecarga de operadores que al igual que con la sobrecarga de
funciones se le da ms de una implementacin a un operador.
El mismo mtodo dentro de una clase permite hacer cosas distintas en funcin de los
parmetros.
Java no permite al programador implementar sus propios operadores sobrecargados, pero
s utilizar los predefinidos como el +. C++, por el contrario si permite hacerlo.
Ejemplo Articulo.java[editar]
public class Articulo {
private float precio;
public void setPrecio() {
precio = 3.50;
}
public void setPrecio(float nuevoPrecio) {
precio = nuevoPrecio;
}
}

You might also like