PROGRAMACIÓN EN C#


ÍNDICE


  1. Programación.
  2. Lenguajes de programación.
  3. Algortimos.
  4. Nociones básicas de la programación
  5. Pseudocódigo.
  6. Variables.
  7. Sentencias condicionales.
  8. Métodos.
  9. Programas para desarrollo de aplicaciones y videojuegos
  10. Ejercicio.

1. Programación


1.1 ¿Qué es la programación? ¿Para qué sirve?



La programación es la acción de crear algoritmos mediante líneas de código en un determinado lenguaje de programación.


La utilidad de la programación es muy amplia. Gracias al conjunto de diversos algoritmos se pueden formar navegadores web, páginas web, redes sociales, herramientas de trabajo digital, servicios online, videojuegos, y un largo etcétera.


2. Lenguajes de Programación


2.1 ¿Qué es un lenguaje de programación?


Un lenguaje de programación es un conjunto de símbolos y códigos que nos permite mandar datos o instrucciones al ordenador en forma de algoritmos. Básicamente es el idioma en que el programador puede comunicarse con la máquina.

Algunos ejemplos de lenguaje de programación pueden ser Java, JavaScript, Python, PHP, Perl, C, C++, Swift, Lua, etc. En está página, hablaremos de C#, aunque la gran mayoría de funciones que se vean se podrán aplicar casi idénticamente a cualquier otro lenguaje, puesto que la mayoría de ellos son muy similares; con conocer bien uno, es relativamente sencillo aprender a usar los demás.



3. Algoritmos


3.1 Algoritmos. Introducción al pensamiento lógico.


Un algoritmo es un conjunto de pasos finito y organizado de forma lógica que permite cumplir un objetivo o acción. Dependiendo de los datos que reciba, dará una u otra respuesta siguiendo esos pasos que tiene asignados.

Normalmente los algoritmos son asociados con las nuevas tecnologías y la informática, debido a que es un campo que los aplica en gran medida; sin embargo, un algoritmo no es necesariamente fruto de esa zona de las ciencias. Los algoritmos han existido desde siempre: el método científico es un algoritmo, los procesos médicos otro y las matemáticas también. Resolver una ecuación es posible gracias a un algoritmo (método) que se sigue para hacerlo.

Algunas personas piensan que los algoritmos son, por lo general, fórmulas muy complejas relacionadas únicamente con carreras muy técnicas de las ramas científicas, pero la realidad no es esa. No es que no existan algoritmos complejos ni que las ciencias no los usen, sino que la gran mayoría son muy simples y se pueden ir complicando. Por ejemplo, los pasos a seguir si una lámpara no funciona son un algoritmo que cualquiera podría pensar:

Para empezar, el algoritmo empieza detectando que la lámpara no funciona. A partir de ahí, se aplican los pasos. Cada paso consiste en una pregunta de la que pueden salir múltiples respuestas. En el caso de este algoritmo, son preguntas de sí o no. Como se puede ver en la imagen, este algoritmo cuenta con dos pasos. El primero es comprobar si la lámpara está enchufada. En caso de que no lo esté, se enchufa y el problema queda solucionado. Si la respuesta es que sí está enchufada, continúa al siguiente paso.

El segundo paso es saber si el foco está quemado. Si está quemado, al remplazar el foco se soluciona el problema. Si no está enchufado, la solución es comprar una lámpara nueva.


Este algoritmo cuenta con pocos pasos y pocas respuestas por cada paso, pero se puede complicar mucho más, añadiendo decenas de pasos con decenas de respuestas cada uno. Es así como se crean complejos sistemas de búsquedas en la web (si le interesa esa información, le puede interesar también el apartado "¿Cómo funciona Google?" de la sección de software en el menú de inicio) y funciones de detección avanzadas en videojuegos y aplicaciones.


3.2 Ejemplo de algoritmo complejo: Sistema Némesis.


Un ejemplo de un algoritmo muy complejo en un videojuego podría ser el Sistema Némesis. Está presente en la entrega "La Tierra Media: Sombras de Guerra", y se trata de una fórmula que otorga un gran realismo al título, haciendo que los enemigos (en concreto, los orcos) se conviertan en inteligencias artificiales completamente desarrolladas y con muchas capacidadades.


Este sistema cuenta con muchas características:

  • Jerarquía de tropas: cada vez que un enemigo derrota a un jugador, este asciende en la "clase social" de su especie, pasando de ser un soldado a un capitán de campamento, por ejemplo.
  • Resucitar: si por el contrario, es el jugador el que derrota al enemigo, este resucitará un tiempo después (como en la gran mayoría de juegos), con la diferencia de que conservará datos sobre el jugador que lo derrotó.
  • Rencor: si el jugador y el enemigo se reencuentran, este se acordará de su asesino, le dedicará unas palabras personalizadas (insultos y amenazas) e irá al ataque. En caso de que el jugador hubiese sido el derrotado la primera vez, sus palabras serán de superioridad.
  • Conocimiento adquirido: tanto si el enemigo fue el ganador como si fue el derrotado, al haber luchado contra el jugador anteriormente, este recordará los patrones que siguió el protagonista y será capaz de esquivar y atacar con mayor facilidad (eso significa que volver a vencerlo usando las mismas técnicas puede ser bastante más complicado, incluso no aconsejable).

4. Nociones básicas de la programación


4.1 Elementos de la estructura de un código.


Redactar un programa en un lenguaje de programación no es como redactar un artículo para una revista o un periódico; cada uno conlleva diferentes partes y distribución. A pesar de ello, ambos cuentan con una estructura bien definida (cada cual con la suya).

En esta página se van a mencionar los elementos de C#, pero los elementos que se van a mencionar a continuación son iguales en el resto de lenguajes de programación. Los distintos elementos son:

  • Sangrado: en el código, las líneas siguen una jerarquía que se indica con el sangrado. El sangrado se aplica con el tabulador y es una ampliación del margen izquierdo que sirve para expresar que una línea tiene menos importancia que otra, es decir, que una acción pertenece a una condición o que una condición pertenece a otra condición.
  • ; (Punto y coma): para indicar el fin de una línea de código es necesario colocar un punto y coma al final de esta. Si se trata de una condición, no se usa el punto y coma.
  • { } (Llaves): las sentencias (se mencionarán posteriormente) implican un número determinado de acciones. Para que se puedan relacionar estas acciones con la secuencia, es necesario que al principio y al final de esta haya un corchete que delimite las líneas de código pertinentes.
  • ( ) (Paréntesis): se usan para escribir la condición de una sentencia o darle un valor a un método (todo esto se verá más adelante).
  • // (Doble barra): cuando se quiere hacer un pequeño comentario al lado de una línea de código para explicar su uso sin que afecte al código, se escribe el mensaje detrás de una doble barra.
  • == (Doble igual): un doble igual se usa para realizar una comparación. Por ejemplo, si quieres saber si un valor a es igual a un valor b, se pone una condición que actúe según a == b, es decir, se cumplirá la condición si a y b son el mismo valor.
  • =! (Igual exclamación): este signo es justo el contrario que el anterior. Se usa si una condición requiere saber si a y b son diferentes.
  • = (igual): sirve para darle un valor a una variable.
  • +, -, *, /, ^ : suma, resta, multiplicación, división, exponente.

5. Pseudocódigo


5.1 Pseudocódigo. Paso intermedio entre el esquema y el código.


Para programar, es necesario conocer un lenguaje de programación y sus diferentes estructuras. Sin embargo, cuando uno está empezando en este ámbito es complicado entender cómo funciona todo lo que necesitas que haga un extracto para que un algoritmo funcione. Una opción frecuente es usar esquemas como los vistos en el punto anterior; no obstante, otra forma de representar un algoritmo de una forma más entendible es el pseudocódigo.

El pseudocódigo es una forma de expresar los pasos que conforman un algoritmo o programa de la forma más parecida a un lenguaje de programación. Para ello, se escribe usando las mismas estructuras que cualquier otro código (llaves, puntos y coma, sangrado...), pero cambiando las palabras y los términos por otros que las persona elija.

Poniendo como ejemplo el algoritmo usado en la sección "Algoritmos", podemos observar a la derecha un esquema del algoritmo, y a la izquierda ese mismo algoritmo expresado como pseudocódigo.

El pseudocódigo también es importante para plantear un código antes de empezar a escribirlo para hacerse una idea de cómo se va a estructurar.

6. Variables


6.1 Variables. Tipos y usos.


Las variables son espacios de la memoria que se destinan a guardar un valor.

Existen diferentes tipos de variables. Los principales son 4:

  • Int: variable que permite almacenar un número entero. Por defecto es 0
  • Float: variable que permite almacenar un número decimal (es necesario escribir una "f" al final del número para que el código reconozca que es decimal). Por defecto es 0f.
  • String: variable que permite almacenar una cadena de texto. La cadena debe ir entre comillas. Por defecto es "".
  • Bool: variable que permite almacenar un valor verdadero/falso. Por defecto es false.

Las variables pueden ser públicas (public) o privadas (private). Las públicas se pueden utilizar en otros archivos de código si pertenecen al mismo proyecto, mientras que las privadas no. Por lo general, las variables se suelen crear públicas.

7. Sentencias condicionales


7.1 ¿Qué es una sentencia condicional?


En programación, una sentencia condicional es una instrucción o grupo de instrucciones que se pueden ejecutar o no en función del valor de una condición.


7.2 Tipos de sentencias condicionales.


Hay varios tipos de sentencias. Entre ellas destacan:

  • if: significa "si". Detecta si una condición (que se escribe entre paréntesis) se está cumpliendo o no. Si se cumple, se ejecuta la sentencia. Si no se cumple, el código pasa de la sentencia y se va al siguiente "if", que es "else if", que indica que si la anterior condición no se ha cumplido pero esa sí, que se realice esa. Finalmente, si no se cumplen los varios "else if" que pueden haber en una sentencia "if", está la sentencia "else", que tiene como condición que ninguna sentencia "if" ni "else if" se haya ejecutado.
  • for: significa "para". Sirve para crear bucles mientras se cumpla una condición. En la fotografía inferior está diciendo: para un valor entero i, si i es menor o igual que 10, ejecutar la sentencia y añadirle 1 a i. Repetirá esa secuencia hasta que i sea mayor que 10.
  • while: significa "mientras". Al igual que "for", sirve para hacer bucles. Sin embargo, este es más peligroso. La sentencia "while" funciona de una manera similar a "if": detecta si se cumple una condición, y si es así se realiza la sentencia. Si dentro de la propia sentencia no se añade una línea de código que indique que al valor se le debe añadir o quitar un número, la condición se realizará eternamente, lo que significa coloquialmente que crasheará tu ordenador y será necesario reiniciarlo. ¡Ojo!

8. Métodos


8.1 ¿Qué es un método?


Un método es una función en cuyo interior se encuentra definido un conjunto de instrucciones. Es básicamente como crear una plantilla de un extracto de código para poder aplicarlo en cualquier parte del documento sin tener que copiarlo y pegarlo. Se utiliza principalmente cuando a lo largo del archivo se va a utilizar la misma función muchas veces.


8.2 ¿Cómo se crea un método?


Un método se conforma de una manera muy similar a una sentencia. Se debe escribir el nombre que queramos darle seguido de unos paréntesis en los que podemos o no crear una variable local, es decir, una que solo se aplique dentro de la función, además de unos corchetes, entre los que escribiremos las líneas de código que queramos.

Para utilizarlo, escribiremos el nombre junto a los paréntesis, vacíos o con un valor que se le asignará a la variable y un punto y coma (ya que al aplicarlo actúa como cualquier otra línea)

En esta foto se ven una variable pública entera c y un método "Multiplicador", el cual puede recibir dos valores enteros, a y b. El método convierte el valor c en el producto de a * b y después aplica la línea "return", la cual significa que el valor c es extraído del método y aplicado a la variable.

9. Programas de desarrollo


9.1 ¿Qué son los programas para desarrollo de aplicaciones y videojuego (Game Engines)?



Un programa de desarrollo o "Game Engine" es un motor que permite de manera sencilla la creación de otros programas, ya sean aplicaciones, videjuegos y simuladores de realidad virtual entre otros, aunque por lo general se utilizan para videojuegos, ya que la mayoría de sus funciones son más útiles para estos.

Esto es así ya que proporciona diferentes interfaces y menús que permiten mantener de forma ordenada todo el código, los botones o cualquier otro elemento del que esté conformado nuestro programa.

Además, la idea de estos es ahorrar tiempo de desarrollo al programador, trayendo por defecto herramientas como:

  • Motor de renderizado: calcula los polígonos, la iluminación, el difuminado, las texturas o cualquier otro componente de la imagen que se muestra en pantalla. Es realmente útil cuando una escena cuenta con diversas fuentes de luz y ciertos materiales que la reflectan, ya que recalcula todos sus efectos al mover la posición de la cámara de forma automática.
  • Físicas y detección de colisiones: al igual que con la imagen, el programa calcula caídas, colisiones, aceleraciones, gravedad, lanzamientos, etc. Da la opción de añadir a cada entidad su propio peso, volumen, estado físico, posición en el espacio, rotación y muchos más aspectos para poder trabajar con ellos. Además, los datos extraídos, como la colisión entre dos objetos, pueden ser utilizados como condición para que se realicen unas acciones u otras. Gracias a todo eso, los programadores ahorran horas o incluso días de creación, ya que no tienen que emplear el tiempo en inventar sistemas propios de físicas.
  • Motor de sonidos: se encarga de reproducir los diferentes sonidos, detener su reproducción, cargarlos según en qué sección se encuentra el usuario, modificar sus velocidades, etc.
  • Inteligencia artificial: el motor por defecto tiene varias funciones de IA, como calcular las rutas más cortas de una zona, detectar movimiento o sonidos y algunas más. Si bien es cierto que para desarrollar una IA compleja es necesaria programación externa, las funciones que trae de base sirven para la gran mayoría de IAs básicas.
  • Administrador de memoria: detecta cuando hay o no elementos en pantalla para poder cargarlos o descargarlos y ahorrar recursos del procesador. Puede no parecer muy útil, pero cuando un programa tiene que cargar miles de polígonos, esta función es indispensable. Sin duda es de las más importantes para elegir un Game Engine.
  • Scripting: un motor de desarrollo, aun traer muchas funciones, no trae un algoritmo para cualquier situación que se pueda dar en un programa, ya que estas pueden ser muy concretas. Por ello, nos permite crear scripts (documentos programables para crear algoritmos o almacenar datos), los cuales dan la oportunidad de añadir las funciones que necesitemos al motor.

9.2 Ejemplos de Game Engines.


Algunos de los Game Engines más conocidos son:

  • Unity: es un Engine para proyectos 2D y 3D, tanto para PC y consolas como para dispositivos móviles. A día de hoy es uno de los estándares de la industria. Utiliza el lenguaje C#, que es un lenguaje de programación orientado a objetos. El programa divide las diferentes partes del proyecto en escenas. Cada escena cuenta con diferentes objetos, los cuales se pueden modificar al gusto del programador. Es gratis utilizarlo mientras los ingresos generados no sean superiores a 100.000 dólares al año. A partir de ahí se pueden elegir 2 licencias: una de 400 dólares y otra de 1.800 dólares. La primera amplia el límite de ingresos que puedes ganar. La segunda lo hace ilimitado.
  • Unreal Engine: es la competencia principal de Unity, por lo que sus características son similares. En el pasado tenía una capacidad de renderización muy superior a la de Unity, aunque eso hacía que no fuera capaz de realizar programas optimizados para dispositivos móviles. Sin embargo, a día de hoy Unity iguala su nivel de render y mejora el de la administración de la memoria. Su lenguaje principal es C++. También permite programar con Blueprints (mediante nodos) de una forma más visual. Es gratis utilizarlo, aunque cobra el 5% de las ganancias obtenidas a partir de los 3.000 dólares de beneficios.
  • Game Maker Studio 2: este motor de videjuegos bidimesionales cada vez se usa menos debido a las alternativas que tiene y al ser de pago (85 euros la licencia). Eso sí, una vez pagado ese dinero, GMS2 no cobra ni un céntimo de los beneficios. Al estar especializado en los programas 2D, aún es utilizado por aquellos que buscan herramientas específicas para estos.
  • Scratch: es una plataforma web para desarrollo de programas 2D. Sirve mucho como introducción a la programación, al ser extremadamente sencillo de utilizar; no obstante, carece de demasiadas funciones como para ser una herramienta profesional, como que sea necesario usar la página web para probar los programas hechos en ella. A pesar de todos estos incovenientes, es muy recomendable para niños interesados en el tema. Su sistema de programación consiste en la unión de bloques, que vendrían a ser las líneas de código, pero también acepta código para los usuarios más avanzados.

10. Ejercicio


10.1 Ejercicio de creación de pseudocódigo.


¿Eres capaz de resolverlo? Esperamos tu respuesta.

¡Crea tu página web gratis! Esta página web fue creada con Webnode. Crea tu propia web gratis hoy mismo! Comenzar