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);
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; }
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; } }