Mostrando entradas con la etiqueta Programación paso a paso de C# - Autor : Nacho Cabanes. Mostrar todas las entradas
Mostrando entradas con la etiqueta Programación paso a paso de C# - Autor : Nacho Cabanes. Mostrar todas las entradas

domingo, 28 de diciembre de 2014

if - else en C#



Podemos indicar lo que queremos que ocurra en caso de que no se cumpla la condición, usando la orden "else" (en caso contrario), así:


Podríamos intentar evitar el uso de "else" si utilizamos un "if" a continuación de otro, así:


Pero el comportamiento no es el mismo: en el primer caso (ejemplo 8) se mira si el valor es positivo; si no lo es, se pasa a la segunda orden, pero si lo es, el programa ya ha terminado. En el segundo caso (ejemplo 9), aunque el número sea positivo, se vuelve a realizar la segunda comprobación para ver si es negativo o cero, por lo que el programa es algo más lento. 

Podemos enlazar varios "if" usando "else", para decir "si no se cumple esta condición, mira a ver si se cumple esta otra":



Ejercicio propuesto: 

  • Mejorar la solución al ejercicio 2.1.3.1, usando "else". 
  • Mejorar la solución al ejercicio 2.1.3.2, usando "else".

Saludos compañeros, aprovechen la información.









Operadores relacionales en C# : <, <=, >, >=, ==, !=



Hemos visto que el símbolo ">" es el que se usa para comprobar si un número es mayor que otro. El símbolo de "menor que" también es sencillo, pero los demás son un poco menos evidentes, así que vamos a verlos:


Así, un ejemplo, que diga si un número NO ES cero sería:



Ejercicios propuestos:

  • Crear un programa que multiplique dos números enteros de la siguiente forma: pedirá al usuario un primer número entero. Si el número que se que teclee es 0, escribirá en pantalla "El producto de 0 por cualquier número es 0". Si se ha tecleado un número distinto de cero, se pedirá al usuario un segundo número y se mostrará el producto de ambos.
  • Crear un programa que pida al usuario dos números enteros. Si el segundo no es cero, mostrará el resultado de dividir entre el primero y el segundo. Por el contrario, si el segundo número es cero, escribirá "Error: No se puede dividir entre cero".

Saludos compañeros, aprovechen la información.








if y sentencias compuestas en C#



Habíamos dicho que el formato básico de "if" es if (condición) sentencia; Esa "sentencia" que se ejecuta si se cumple la condición puede ser una sentencia simple o una compuesta. Las sentencias compuestas se forman agrupando varias sentencias simples entre llaves ( { y } ), como en este ejemplo:


En este caso, si el número es positivo, se hacen dos cosas: escribir un texto y luego... ¡escribir otro! (Claramente, en este ejemplo, esos dos "WriteLine" podrían ser uno solo, en el que los dos textos estuvieran separados por un "\n"; más adelante iremos encontrando casos en lo que necesitemos hacer cosas "más serias" dentro de una sentencia compuesta).

Como se ve en este ejemplo, cada nuevo "bloque" se suele escribir un poco más a la derecha que los anteriores, para que sea fácil ver dónde comienza y termina cada sección de un programa. Por ejemplo, el contenido de "Ejemplo06" está un poco más a la derecha que la cabecera "public class Ejemplo06", y el contenido de "Main" algo más a la derecha, y la sentencia compuesta que se debe realizar si se cumple la condición del "if" está algo más a la derecha que la orden "if". Este "sangrado" del texto se suele llamar "escritura indentada". 
Un tamaño habitual para el sangrado es de 4 espacios, aunque en este texto muchas veces usaremos sólo dos espacios, para no llegar al margen derecho del papel con demasiada facilidad.


Ejercicios propuestos:

  • Crear un programa que pida al usuario un número entero. Si es múltiplo de 10, se lo avisará al usuario y pedirá un segundo número, para decir a continuación si este segundo número también es múltiplo de 10.


Saludos compañeros, aprovechen la información.








sábado, 27 de diciembre de 2014

Datos por el usuario: ReadLine en C#



Si queremos que sea el usuario de nuestro programa quien teclee los valores, necesitamos una nueva orden, que nos permita leer desde teclado. Pues bien, al igual que tenemos System.Console.WriteLine ("escribir línea), también existe System.Console.ReadLine ("leer línea"). Para leer textos, haríamos

texto  =  System.Console.ReadLine();

pero eso ocurrirá en el próximo tema, cuando veamos cómo manejar textos. De momento, nosotros sólo sabemos manipular números enteros, así que deberemos convertir ese dato a un número entero, usando Convert.ToInt32:

primerNumero = System.Convert.ToInt32( System.Console.ReadLine() );

Un ejemplo de programa que sume dos números tecleados por el usuario sería:



Ejercicios propuestos:

Crea un programa que calcule el producto de dos números introducidos por el usuario.
Crea un programa que calcule la división de dos números introducidos por el usuario, así como el resto de esa división.


Saludos compañeros, aprovechen la información.







Comentarios en C#



Podemos escribir comentarios, que el compilador ignora, pero que pueden servir para aclararnos cosas a nosotros. Se escriben entre /* y */:

Es conveniente escribir comentarios que aclaren la misión de las partes de nuestros programas que puedan resultar menos claras a simple vista. Incluso suele ser aconsejable que el programa comience con un comentario, que nos recuerde qué hace el programa sin que necesitemos mirarlo de arriba a abajo. Un ejemplo casi exagerado:


Un comentario puede empezar en una línea y terminar en otra distinta, así:


También es posible declarar otro tipo de comentarios, que comienzan con doble barra y terminan cuando se acaba la línea (estos comentarios, claramente, no podrán ocupar más de una línea). Son los "comentarios al estilo de C++":


Saludos compañeros, aprovechen la información.








Identificadores en C#



Estos nombres de variable (lo que se conoce como "identificadores") pueden estar formados por letras, números o el símbolo de subrayado (_) y deben comenzar por letra o subrayado. No deben tener espacios entre medias, y hay que recordar que las vocales acentuadas y la eñe son problemáticas, porque no son letras "estándar" en todos los idiomas.


Tampoco podremos usar como identificadores las palabras reservadas de C#. Por ejemplo, la palabra "int" se refiere a que cierta variable guardará un número entero, así que esa palabra "int" no la podremos usar tampoco como nombre de variable (pero no vamos a incluir ahora una lista de palabras reservadas de C#, ya nos iremos encontrando con ellas).

De momento, intentaremos usar nombres de variables que a nosotros nos resulten claros, y que no parezca que puedan ser alguna orden de C#.

Hay que recordar que en C# las mayúsculas y minúsculas se consideran diferentes, de modo que si intentamos hacer

        PrimerNumero = 0;
        primernumero = 0;

o cualquier variación similar, el compilador protestará y nos dirá que no conoce esa variable, porque la habíamos declarado como

        int primerNumero;


Saludos compañeros, aprovechen la información.








Introducción a las variables: int en C#



Las variables son algo que no contiene un valor predeterminado, un espacio de memoria al que nosotros asignamos un nombre y en el que podremos almacenar datos.

El primer ejemplo nos permitía escribir "Hola". El segundo nos permitía sumar dos números que habíamos prefijado en nuestro programa. Pero esto tampoco es "lo habitual", sino que esos números dependerán de valores que haya tecleado el usuario o de cálculos anteriores.

Por eso necesitaremos usar variables, zonas de memoria en las que guardemos los datos con los que vamos a trabajar y también los resultados temporales. Como primer ejemplo, vamos a ver lo que haríamos para sumar dos números enteros que fijásemos en el programa.


1.5.1. Definición de variables: números enteros

Para usar una cierta variable primero hay que declararla: indicar su nombre y el tipo de datos que querremos guardar.

El primer tipo de datos que usaremos serán números enteros (sin decimales), que se indican con "int" (abreviatura del inglés "integer"). Después de esta palabra se indica el nombre que tendrá la variable:

int primerNumero;

Esa orden reserva espacio para almacenar un número entero, que podrá tomar distintos valores, y al que nos referiremos con el nombre "primerNumero". 


1.5.2. Asignación de valores 

Podemos darle un valor a esa variable durante el programa haciendo

                                    primerNumero = 234;

O también podemos darles un valor inicial ("inicializarlas") antes de que empiece el programa, en el mismo momento en que las definimos:

                                                      int primerNumero = 234;

O incluso podemos definir e inicializar más de una variable a la vez

int primerNumero = 234,   segundoNumero = 567;

(esta línea reserva espacio para dos variables, que usaremos para almacenar números enteros; una de ellas se llama primerNumero y tiene como valor inicial 234 y la otra se llama segundoNumero y tiene como valor inicial 567).

Después ya podemos hacer operaciones con las variables, igual que las hacíamos con los números:

suma = primerNumero + segundoNumero;


1.5.3. Mostrar el valor de una variable en pantalla

Una vez que sabemos cómo mostrar un número en pantalla, es sencillo mostrar el valor de una variable. Para un número hacíamos cosas como

            System.Console.WriteLine(3+4);

pero si se trata de una variable es idéntico:

           System.Console.WriteLine(suma);

O bien, si queremos mostrar un texto además del valor de la variable, podemos indicar el texto entre comillas, detallando con {0} en qué parte del texto queremos que aparezca el valor de la variable, de la siguiente forma:

              System.Console.WriteLine("La suma es {0}", suma);

Si se trata de más de una variable, indicaremos todas ellas tras el texto, y detallaremos dónde debe aparecer cada una de ellas, usando {0}, {1} y así sucesivamente:

                   System.Console.WriteLine("La suma de {0} y {1} es {2}",
                   primerNumero, segundoNumero, suma);

Ya sabemos todo lo suficiente para crear nuestro programa que sume dos números usando variables:



Repasemos lo que hace:

>(Nos saltamos todavía los detalles de qué quieren decir "public", "class", "static" y "void").
>Main() indica donde comienza el cuerpo del programa, que se delimita entre llaves { y }
>int primerNumero; reserva espacio para guardar un número entero, al que llamaremos primerNumero.
>int segundoNumero; reserva espacio para guardar otro número entero, al que llamaremos segundoNumero.
>int suma; reserva espacio para guardar un tercer número entero, al que llamaremos suma.
>primerNumero = 234; da el valor del primer número que queremos sumar
>segundoNumero = 567; da el valor del segundo número que queremos sumar
>suma = primerNumero + segundoNumero; halla la suma de esos dos números y la guarda en otra variable, en vez de mostrarla directamente en pantalla.
>System.Console.WriteLine("La suma de {0} y {1} es {2}", primerNumero, segundoNumero, suma); muestra en pantalla el texto y los valores de las tres variables (los dos números iniciales y su suma).


Ejercicio propuesto:

Crea un programa que calcule el producto de los números 121 y 132, usando variables.
Crea un programa que calcule la suma de 285 y 1396, usando variables.
Crea un programa que calcule el resto de dividir 3784 entre 16, usando variables.


Saludos compañeros, aprovechen la información.








Operaciones aritméticas básicas en C#



Está claro que el símbolo de la suma será un +, y podemos esperar cual será el de la resta, pero alguna de las operaciones matemáticas habituales tiene símbolos menos intuitivos. 
Veamos cuales son los más importantes:


Ejercicios propuestos:

• Hacer un programa que calcule el producto de los números 12 y 13.
• Hacer un programa que calcule la diferencia (resta) entre 321 y 213.
• Hacer un programa que calcule el resultado de dividir 301 entre 3.
• Hacer un programa que calcule el resto de la división de 301 entre 3.


1.4.1. Orden de prioridad de los operadores

Sencillo:

En primer lugar se realizarán las operaciones indicadas entre paréntesis.
Luego la negación.
Después las multiplicaciones, divisiones y el resto de la división.
Finalmente, las sumas y las restas.
En caso de tener igual prioridad, se analizan de izquierda a derecha.

Ejercicio propuesto: Calcular (a mano y después comprobar desde C#) el resultado de estas operaciones:

-2 + 3 * 5
(20+5) % 6
15 + -5*6 / 10
2 + 10 / 5 * 2 - 7 % 1


1.4.2. Introducción a los problemas de desbordamiento

El espacio del que disponemos para almacenar los números es limitado. Si el resultado de una operación es un número "demasiado grande", obtendremos un mensaje de error o un resultado erróneo. Por eso en los primeros ejemplos usaremos números pequeños. Más adelante veremos a qué se debe realmente este problema y cómo evitarlo. Como anticipo, el siguiente programa ni siquiera compila, porque el compilador sabe que el resultado va a ser "demasiado grande":



1.4.3. Introducción a los problemas de desbordamiento

El espacio del que disponemos para almacenar los números es limitado. Si el resultado de una operación es un número "demasiado grande", obtendremos un mensaje de error o un resultado erróneo. Por eso en los primeros ejemplos usaremos números pequeños. Más adelante veremos a qué se debe realmente este problema y cómo evitarlo. Como anticipo, el siguiente programa ni siquiera compila, porque el compilador sabe que el resultado va a ser "demasiado grande":



Saludos compañeros, aprovechen la información.








Mostrar números enteros en pantalla en C#



Cuando queremos escribir un texto "tal cual", como en el ejemplo anterior, lo encerramos entre comillas. Pero no siempre querremos escribir textos prefijados. En muchos casos, se tratará de algo que habrá que calcular.

El ejemplo más sencillo es el de una operación matemática. La forma de realizarla es sencilla: no usar comillas en WriteLine. Entonces, C# intentará analizar el contenido para ver qué quiere decir. Por ejemplo, para sumar 3 y 4 bastaría hacer:



Ejercicios propuestos:

crea un programa que diga el resultado de sumar 118 y 56.
Crea un programa que diga el resultado de sumar 12345 y 67890


Saludos compañeros, aprovechen la información.









viernes, 26 de diciembre de 2014

If en C#



Vamos a ver cómo podemos comprobar si se cumplen condiciones. La primera construcción que usaremos será "si ... entonces ...". El formato es

if (condición) sentencia;

Vamos a verlo con un ejemplo:


Este programa pide un número al usuario. Si es positivo (mayor que 0), escribe en pantalla "El número es positivo."; si es negativo o cero, no hace nada.

Como se ve en el ejemplo, para comprobar si un valor numérico es mayor que otro, usamos el símbolo ">". Para ver si dos valores son iguales, usaremos dos símbolos de "igual": if (numero==0). Las demás posibilidades las veremos algo más adelante. En todos los casos, la condición que queremos comprobar deberá indicarse entre paréntesis.

Este programa comienza por un comentario que nos recuerda de qué se trata. Como nuestros fuentes irán siendo cada vez más complejos, a partir de ahora incluiremos comentarios que nos permitan recordar de un vistazo qué pretendíamos hacer.

Si la orden "if" es larga, se puede partir en dos líneas para que resulte más legible:



Ejercicios propuestos:

  • Crear un programa que pida al usuario un número entero y diga si es par (pista: habrá que comprobar si el resto que se obtiene al dividir entre dos es cero: if (x % 2 == 0) …).
  • Crear un programa que pida al usuario dos números enteros y diga cuál es el mayor de ellos.
  • Crear un programa que pida al usuario dos números enteros y diga si el primero es múltiplo del segundo (pista: igual que antes, habrá que ver si el resto de la división es cero: a % b == 0).

Saludos compañeros, aprovechen la información.








martes, 23 de diciembre de 2014

Plataforma Mono para C#



Como ya hemos comentado, usaremos Mono como plataforma de desarrollo para nuestros primeros programas. Por eso, vamos a comenzar por ver dónde encontrar esta herramienta, cómo instalarla y cómo utilizarla.

Podemos descargar Mono desde su página oficial:



En la parte superior derecha aparece el enlace para descargar ("download now"), que nos lleva a una nueva página en la que debemo s elegir la plataforma para la que queremos nuestro Mono. Nosotros descargaremos la versión más reciente para Windows (la 2.6.7 en el momento de escribir este texto).

Se trata de un fichero de algo más de 70 Mb. Cuando termina la descarga, hacemos doble clic en el fichero recibido y comienza la instalación, en la que primero se nos muestra el mensaje de bienvenida:


El siguiente paso será aceptar el acuerdo de licencia:


Después se nos muestra una ventana de información, en la que se nos avisa de que se va a instalar Mono 1.9.1, junto con las librerías Gtk# para creación de interfaces de usuario y XSP (eXtensible Server Pages, un servidor web).


A continuación se nos pregunta en qué carpeta queremos instalar. Como es habitual, se nos propone que sea dentro de "Archivos de programa":


Yo no soy partidario de instalar todo en "Archivos de Programa". Mis herramientas de programación suelen estar en otra unidad de disco (D:), así que prefiero cambiar esa opción por defecto:


El siguiente paso es elegir qué componentes queremos instalar (Mono, Gtk#, XSP):


Nuevamente, soy partidario de no instalar todo. Mono es imprescindible. La creación de interfaces de usuario con Gtk# queda fuera del alcance que se pretende con este texto, pero aun así puede ser interesante para quien quiera profundizar. El servidor web XSP es algo claramente innecesario por ahora, y que además instalaría un "listener" que ralentizaría ligeramente el ordenador, así que puede ser razonable no instalarlo por ahora: 


El siguiente paso es indicar en qué carpeta del menú de Inicio queremos que quede accesible:


A continuación se nos muestra el resumen de lo que se va a instalar. Si confirmamos que todo nos parece correcto, comienza la copia de ficheros:




Si todo es correcto, al cabo de un instante tendremos el mensaje de confirmación de que la instalación se ha completado:


Mono está listo para usar. En nuestro menú de Inicio deberíamos tener una nueva carpeta llamada "Mono 1.9.1 for Windows", y dentro de ella un acceso a "Mono-1.9.1 Command Prompt":


Si hacemos clic en esa opción, accedemos al símbolo de sistema ("command prompt"), la pantalla negra del sistema operativo, pero con el "path" (la ruta de búsqueda) preparada para que podamos acceder al compilador desde ella:


Primero debemos teclear nuestro fuente. Para ello podemos usar cualquier editor de texto. En este primer fuente, usaremos simplemente el "Bloc de notas" de Windows. Para ello tecleamos: 

notepad ejemplo01.cs

Aparecerá la pantalla del "Bloc de notas", junto con un aviso que nos indica que no existe ese fichero, y que nos pregunta si deseamos crearlo. Respondemos que sí y podemos empezar a teclear el ejemplo que habíamos visto anteriormente:


Guardamos los cambios, salimos del "Bloc de notas" y nos volvemos a encontrar en la pantalla negra del símbolo del sistema. Nuestro fuente ya está escrito. El siguiente paso es compilarlo. Para eso, tecleamos

mcs ejemplo01.cs

Si no se nos responde nada, quiere decir que no ha habido errores. Si todo va bien, se acaba de crear un fichero "ejemplo01.exe". En ese caso, podríamos lanzar el programa tecleando

mono ejemplo01.exe

y el mensaje "Hola" debería aparecer en pantalla.

Si en nuestro ordenador está instalado el "Dot Net Framework" (algo que debería ser cierto en las últimas versiones de Windows), no debería hacer falta decir que queremos que sea Mono quien lance nuestro programa, y podremos ejecutarlo directamente con su nombre: 

ejemplo01


Nota: Si quieres un editor más potente que el Bloc de notas de Windows, puedes probar Notepad++, que es gratuito (realmente más que eso: es de "código abierto") y podrás localizar fácilmente en Internet. Y si prefieres un entorno desde el que puedas teclear, compilar y probar tus programas, incluso los de gran tamaño que estén formados por varios ficheros, en el apartado 6.13 hablaremos de SharpDevelop. Si quieres saber cosas sobre el entorno "oficial", llamado Visual Studio, los tienes en el Apéndice 4.


Otros editores más avanzados

Si quieres un editor más potente que el Bloc de notas de Windows, puedes probar Notepad++, que es gratuito (realmente más que eso: es de "código abierto") y podrás localizar fácilmente en Internet. Geany también es un alternativa muy interesante, disponible para muchos sistemas operativos.
Si prefieres un entorno desde el que puedas teclear, compilar y probar tus programas, incluso los de gran tamaño que estén formados por varios ficheros, en el apartado 6.13 hablaremos de SharpDevelop (para Windows), y de MonoDevelop (para Windows, Linux y Mac). Si quieres saber cosas sobre el entorno "oficial" de desarrollo, llamado Visual Studio, lo tienes en el Apartado 6.8.
Hay un posible problema que se debe tener en cuenta: algunos de estos entornos de desarrollo muestran el resultado de nuestro programa y luego regresan al editor tan rápido que no da tiempo a ver los resultados. Una solución provisional puede ser añadir "System.Console.ReadLine()" al final del programa, de modo que se quede parado hasta que pulsemos Intro:



Saludos compañeros, aprovechen la información.









Escribir un texto en C#



C# es un lenguaje de programación de ordenadores. Se trata de un lenguaje moderno, evolucionado a partir de C y C++, y con una sintaxis muy similar a la de Java. Los programas creados con C# no suelen ser tan rápidos como los creados con C, pero a cambio la productividad del programador es mucho mayor.

Se trata de un lenguaje creado por Microsoft para crear programas para su plataforma .NET, pero estandarizado posteriormente por ECMA y por ISO, y del que existe una implementación alternativa de "código abierto", el "proyecto Mono", que está disponible para Windows, Linux, Mac OS X y otros sistemas operativos.

Nosotros comenzaremos por usar Mono como plataforma de desarrollo durante los primeros temas. Cuando los conceptos básicos estén asentados, pasaremos a emplear Visual C#, de Microsoft, que requiere un ordenador más potente pero a cambio incluye un entorno de desarrollo muy avanzado, y está disponible también en una versión gratuita (Visual Studio Express Edition).

Los pasos que seguiremos para crear un programa en C# serán:

1. Escribir el programa en lenguaje C# (fichero fuente), con cualquier editor de textos.
2. Compilarlo con nuestro compilador. Esto creará un "fichero ejecutable".
3. Lanzar el fichero ejecutable.

La mayoría de los compiladores actuales permiten dar todos estos pasos desde un único entorno, en el que escribimos nuestros programas, los compilamos, y los depuramos en caso de que exista algún fallo.

En el siguiente apartado veremos un ejemplo de uno de estos entornos, dónde localizarlo y cómo instalarlo.

Vamos con un primer ejemplo de programa en C#, posiblemente el más sencillo de los que "hacen algo útil". Se trata de escribir un texto en pantalla. La apariencia de este programa la vimos en el tema anterior. Vamos a verlo ahora con más detalle:


Esto escribe "Hola"en la pantalla. Pero hay mucho alrededor de ese "Hola", y vamos a comentarlo antes de proseguir, aunque muchos de los detalles se irán aclarando más adelante. 
En este primer análisis, iremos de dentro hacia fuera:

WriteLine("Hola"); - "Hola" es el texto que queremos escribir, y WriteLine es la orden encargada de escribir (Write) una línea (Line) de texto en pantalla.

Console.WriteLine("Hola"); porque WriteLine es una orden de manejo de la "consola" (la pantalla "negra" en modo texto del sistema operativo).

System.Console.WriteLine("Hola"); porque las órdenes relacionadas con el manejo de consola (Console) pertenecen a la categoría de sistema (System).

Las llaves { y } se usan para delimitar un bloque de programa. En nuestro caso, se trata del bloque principal del programa.

public static void Main() - Main indica cual es "el cuerpo del programa", la parte principal (un programa puede estar dividido en varios fragmentos, como veremos más adelante). Todos los programas tienen que tener un bloque "Main". Los detalles de por qué hay que poner delante "public static void" y de por qué se pone después un paréntesis vacío los iremos aclarando más tarde. De momento, deberemos memorizar que ésa será la forma correcta de escribir "Main".

public class Ejemplo01 - de momento pensaremos que "Ejemplo01" es el nombre de nuestro programa. Una línea como esa deberá existir también siempre en nuestros programas, y eso de "public class" será obligatorio. Nuevamente, aplazamos para más tarde los detalles sobre qué quiere decir "class" y por qué debe ser "public".

Como se puede ver, mucha parte de este programa todavía es casi un "acto de fe" para nosotros. Debemos creernos que "se debe hacer así". Poco a poco iremos detallando el por qué de "public", de "static", de "void", de "class"... Por ahora nos limitaremos a "rellenar" el cuerpo del programa para entender los conceptos básicos de programación.

Ejercicio propuesto: Crea un programa en C# que te salude por tu nombre (ej: "Hola, Nacho").

Sólo un par de cosas más antes de seguir adelante:

>Cada orden de C# debe terminar con un punto y coma (;)

>C# es un lenguaje de formato libre, de modo que puede haber varias órdenes en una misma línea, u órdenes separadas por varias líneas o espacios entre medias. Lo que realmente indica dónde termina una orden y donde empieza la siguiente son los puntos y coma. Por ese motivo, el programa anterior se podría haber escrito también así (aunque no es aconsejable, porque puede resultar menos legible):


>De hecho, hay dos formas especialmente frecuentes de colocar la llave de comienzo, y yo usaré ambas indistintamente. Una es como hemos hecho en el primer ejemplo: situar la llave de apertura en una línea, sola, y justo encima de la llave de cierre correspondiente. Esto es lo que muchos autores llaman el "estilo C". La segunda forma habitual es situándola a continuación del nombre del bloque que comienza (el "estilo Java"), así:



(esta es la forma que yo emplearé preferentemente en este texto cuando estemos trabajando con fuentes de mayor tamaño, para que ocupe un poco menos de espacio).

> La gran mayoría de las órdenes que encontraremos en el lenguaje C# son palabras en inglés o abreviaturas de éstas. Pero hay que tener en cuenta que C# distingue entre mayúsculas y minúsculas, por lo que "WriteLine" es una palabra reconocida, pero "writeLine", "WRITELINE" o "Writeline" no lo son.


Saludos compañeros, aprovechen la información.








Pseudocódigo



A pesar de que los lenguajes de alto nivel se acercan al lenguaje natural, que nosotros empleamos, es habitual no usar ningún lenguaje de programación concreto cuando queremos plantear los pasos necesarios para resolver un problema, sino emplear un lenguaje de programación ficticio, no tan estricto, muchas veces escrito incluso en español. Este lenguaje recibe el nombre de pseudocódigo.

Esa secuencia de pasos para resolver un problema es lo que se conoce como algoritmo (realmente hay alguna condición más, por ejemplo, debe ser un número finito de pasos). Por tanto, un programa de ordenador es un algoritmo expresado en un lenguaje de programación.

Por ejemplo, un algoritmo que controlase los pagos que se realizan en una tienda con tarjeta de crédito, escrito en pseudocódigo, podría ser:


Leer banda magnética de la tarjeta
Conectar con central de cobros
Si hay conexión y la tarjeta es correcta:
    Pedir código PIN
Si el PIN es correcto
     Comprobar saldo_existente
     Si saldo_existente >= importe_compra
        Aceptar la venta
       Descontar importe del saldo.
       Fin Si
    Fin Si
Fin Si



Saludos compañeros, aprovechen la información.








Ensambladores, compiladores e intérpretes



Está claro entonces que las órdenes que nosotros hemos escrito (lo que se conoce como "programa fuente") deben convertirse a lo que el ordenador comprende (obteniendo el "programa ejecutable").

Si elegimos un lenguaje de bajo nivel, como el ensamblador (en inglés Assembly, abreviado como Asm), la traducción es sencilla, y de hacer esa traducción se encargan unas herramientas llamadas ensambladores (en inglés Assembler).

Cuando el lenguaje que hemos empleado es de alto nivel, la traducción es más complicada, y a veces implicará también recopilar varios fuentes distintos o incluir posibilidades que se encuentran en otras bibliotecas que no hemos preparado nosotros. Las herramientas encargadas de realizar todo esto son los compiladores.

El programa ejecutable obtenido con el compilador o el ensamblador se podría hacer funcionar en otro ordenador similar al que habíamos utilizado para crearlo, sin necesidad de que ese otro ordenador tenga instalado el compilador o el ensamblador.

Por ejemplo, en el caso de Windows (y de MsDos), y del programa que nos saluda en lenguaje Pascal, tendríamos un fichero fuente llamado SALUDO.PAS. Este fichero no serviría de nada en un ordenador que no tuviera un compilador de Pascal. En cambio, después de compilarlo obtendríamos un fichero SALUDO.EXE, capaz de funcionar en cualquier otro ordenador que tuviera el mismo sistema operativo, aunque no tenga un compilador de Pascal instalado.

Un intérprete es una herramienta parecida a un compilador, con la diferencia de que en los intérpretes no se crea ningún "programa ejecutable" capaz de funcionar "por sí solo", de modo que si queremos distribuir nuestro programa a alguien, deberemos entregarle el programa fuente y también el intérprete que es capaz de entenderlo, o no le servirá de nada. Cuando ponemos el programa en funcionamiento, el intérprete se encarga de convertir el programa en lenguaje de alto nivel a código máquina, orden por orden, justo en el momento en que hay que procesar cada una de las órdenes.

Hoy en día existe algo que parece intermedio entre un compilador y un intérprete. Existen lenguajes que no se compilan a un ejecutable para un ordenador concreto, sino a un ejecutable "genérico", que es capaz de funcionar en distintos tipos de ordenadores, a condición de que en ese ordenador exista una "máquina virtual" capaz de entender esos ejecutables genéricos. 
Esta es la idea que se aplica en Java: los fuentes son ficheros de texto, con extensión ".java", que se compilan a ficheros ".class". Estos ficheros ".class" se podrían llevar a cualquier ordenador que tenga instalada una "máquina virtual Java" (las hay para la mayoría de sistemas operativos). Esta misma idea se sigue en el lenguaje C#, que se apoya en una máquina virtual llamada "Dot Net Framework" (algo así como "armazón punto net").



Saludos compañeros, aprovechen la información.








Lenguajes de alto nivel y de bajo nivel



Un programa es un conjunto de órdenes para un ordenador.

Estas órdenes se le deben dar en un cierto lenguaje, que el ordenador sea capaz de comprender.
El problema es que los lenguajes que realmente entienden los ordenadores resultan difíciles para nosotros, porque son muy distintos de los que nosotros empleamos habitualmente para hablar. Escribir programas en el lenguaje que utiliza internamente el ordenador (llamado "lenguaje máquina" o "código máquina") es un trabajo duro, tanto a la hora de crear el programa como (especialmente) en el momento de corregir algún fallo o mejorar lo que se hizo.

Por ejemplo, un programa que simplemente guardara un valor "2" en la posición de memoria 1 de un ordenador sencillo, con una arquitectura propia de los años 80, basada en el procesador Z80 de 8 bits, sería así en código máquina:
0011 1110 0000 0010 0011 1010 0001 0000

Prácticamente ilegible. Por eso, en la práctica se emplean lenguajes más parecidos al lenguaje humano, llamados "lenguajes de alto nivel". Normalmente, estos son muy parecidos al idioma inglés, aunque siguen unas reglas mucho más estrictas.


0.1. Lenguajes de alto nivel y de bajo nivel.

Vamos a ver en primer lugar algún ejemplo de lenguaje de alto nivel, para después comparar con lenguajes de bajo nivel, que son los más cercanos al ordenador.

Uno de los lenguajes de alto nivel más sencillos es el lenguaje BASIC. En este lenguaje, escribir el texto Hola en pantalla, sería tan sencillo como usar la orden.

PRINT "Hola"

Otros lenguajes, como Pascal, nos obligan a ser algo más estrictos, pero a cambio hacen más fácil descubrir errores (ya veremos por qué):

program Saludo;

begin
     write('Hola');
end.

El equivalente en lenguaje C resulta algo más difícil de leer:



Por el contrario, los lenguajes de bajo nivel son más cercanos al ordenador que a los lenguajes humanos. Eso hace que sean más difíciles de aprender y también que los fallos sean más difíciles de descubrir y corregir, a cambio de que podemos optimizar al máximo la velocidad (si sabemos cómo), e incluso llegar a un nivel de control del ordenador que a veces no se puede alcanzar con otros lenguajes. Por ejemplo, escribir Hola en lenguaje ensamblador de un ordenador equipado con el sistema operativo MsDos y con un procesador de la familia Intel x86 sería algo como:




















Resulta bastante más difícil de seguir. Pero eso todavía no es lo que el ordenador entiende, aunque tiene una equivalencia casi directa. Lo que el ordenador realmente es capaz de comprender son secuencias de ceros y unos. Por ejemplo, las órdenes "mov ds, ax" y "mov ah, 9" (en cuyo significado no vamos a entrar) se convertirían a lo siguiente:

1000 0011 1101 1000 1011 0100 0000 1001

(Nota: los colores de los ejemplos anteriores son una ayuda que nos dan algunos entornos de programación, para que nos sea más fácil descubrir errores).


Saludos compañeros, aprovechen la información.









       
free counters

Páginas vistas en total según Google