GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo:Introducción a la programación:su primer programa

Serie de procedimientos

Esta es la parte 2 de una serie de 5 partes de Introducción a la programación

  1. Introducción a la programación:Primeros pasos
  2. Introducción a la programación:tu primer programa
  3. Introducción a la programación:variables, tipos y manipulación de datos
  4. Introducción a la programación:control de flujo
  5. Introducción a la programación:programación orientada a objetos

¡Has vuelto!

Es genial verte de nuevo y espero que hayas celebrado profundamente después de completar el primer artículo de esta serie en Atlantic.NET en el que creaste tu primer programa y lo ejecutaste mientras aprendes cómo lo que creas pasa de ser un código legible por humanos a una máquina. instrucciones.

No te preocupes, si aún no has leído ese artículo, puedes hacerlo ahora. Esperaré aquí a que regreses.

En esta parte de la serie, exploraremos más ese primer programa y nos centraremos en comprender más conceptos de programación y desarrollo de software. Específicamente, veremos la entrada y la salida, le presentaremos un concepto llamado orientación a objetos y explore cómo y por qué queremos ocultar código complejo usando abstracción .

Pongámonos manos a la obra, ¿de acuerdo?
.

Profundizando en "¡Hola mundo!"

En el artículo anterior, construimos un "¡Hola mundo!" muy básico. programa que consta de dos líneas de código que escribimos nosotros mismos. Había líneas de código adicionales, pero Visual Studio las generó para nosotros y son específicas para el tipo de programa que estamos creando y el lenguaje que estamos usando, así que no dediquemos más tiempo a ellas por ahora.

Sin embargo, las dos líneas que agregamos se enfocan específicamente en la salida y la entrada, así que examinémoslas más de cerca.

Console.WriteLine("Hello World!");
Console.ReadLine();

Ignorando la Console. (léase:"punto de la consola") parte de las líneas por ahora, puede ver que hay una instrucción a la máquina para escribir una línea y luego leer una línea. En un programa o aplicación de consola como el que estamos construyendo ahora, estas son dos de las formas principales de interactuar con el usuario; mostramos algo en la pantalla de la consola con Console.WriteLine y obtener información del usuario con Console.Readline . El resultado se parece a la Figura 1 a continuación.

Figura 1:Salida de la consola

Esta aplicación de consola es solo uno de los muchos tipos de aplicaciones que podemos crear. Diferentes tipos de aplicaciones requieren diferentes enfoques de entrada y salida. Si estamos construyendo una página web simple, por ejemplo, no hay una consola desde y hacia la cual podamos interactuar con el usuario. La página web es solo un texto estático y quizás algunas imágenes. Aunque un programa puede generarlo, todavía no es muy interactivo de la misma manera que construimos la interactividad en una aplicación de consola.

Nota:en los primeros días de la web, había un método llamado CGI (Interfaz de puerta de enlace común) que le permitía colocar aplicaciones de consola como estas directamente en una página web e interactuar con ellas a través de la URL.

.

Un ejemplo de código de página web

Una página web tiene un método completamente diferente de comportamiento interactivo. Mire el siguiente código de página web, por ejemplo, y no se preocupe si esto es completamente extraño para usted:

<html>
<head>
<title>Hello World!</title>
</head>
<body>
<h1>Hello world!</h1>
</body>
</html>

Esta página web simplemente presenta al usuario un titular que dice "¡Hola, mundo!" y no mucho más, como a continuación.

Figura 2:página web Hola Mundo

Por sí sola, esta página web, o incluso cualquier página web, no puede hacer mucho. Para crear interactividad, los navegadores pueden interpretar instrucciones de comando a través de lenguajes como JavaScript para manipular la página web de varias maneras, incluida la manipulación del diseño, el contenido y la estructura de la página web.

Por ejemplo, a continuación en la Figura 3, estoy usando JavaScript en una página HTML para mostrar un cuadro de notificación al usuario. Tenga en cuenta que estoy usando Visual Studio para editar la página HTML y JavaScript también.

Figura 3:alerta de JavaScript en la página Hello World

Una forma en que una página web puede recuperar información de un usuario es a través de formularios de página web. Es posible que estos no se parezcan a los típicos formularios en papel, pero esa es la belleza de la web; no es necesario que sea aburrido y tonto, puede verse deslumbrante y tentador (¡aunque la configuración necesaria para lograr una apariencia deslumbrante y tentadora está más allá de nuestro alcance aquí!).

Independientemente de las apariencias, los formularios pueden recuperar información específica del usuario que un navegador puede enviar a alguna parte. Si tenemos, por ejemplo, un programa en algún lugar que puede leer la entrada de una página web, podemos hacer que el navegador envíe el contenido de los formularios a ese programa.
.

Programación impulsada por eventos

Otro enfoque es utilizar los datos del formulario combinados con JavaScript para que la propia página web maneje los datos del usuario. En lugar de que JavaScript siempre muestre Hello World, por ejemplo, podemos hacer que muestre fácilmente la entrada del usuario en un formulario.

Figura 4:alerta de JavaScript dinámico

No se preocupe demasiado por el código aquí, pero tenga en cuenta que, a diferencia de nuestra aplicación de consola, donde el flujo del programa generalmente es línea por línea de principio a fin, en esta página web estamos usando lo que se conoce como event- programación impulsada , haciendo que el código responda a los eventos que suceden. En el ejemplo anterior, el evento onblur sucede cuando la atención se aleja del cuadro de entrada y podemos escribir código para reaccionar ante ese evento y mostrar la alerta.

De todos modos, reconocerá rápidamente un cierto patrón aquí que cruza los límites de las plataformas, los lenguajes y los marcos. El programa comienza presentando al usuario una pieza de información, y luego el usuario de alguna manera envía instrucciones al programa. En una aplicación de consola, este intercambio ocurre a través de comandos como Console.WriteLine y Console.ReadLine . En la web, este intercambio se produce presentando una página HTML y solicitando al usuario que rellene un formulario.

Como programador, aprenderá rápidamente que lo que hace como programador es muy similar en todos los lenguajes, plataformas y herramientas. La sintaxis puede diferir entre idiomas, y usted puede tener diferentes enfoques sobre cómo piensa en términos del flujo del programa, pero detrás de todo, la computadora que controla es la misma. Está sujeto a la misma lógica independientemente del idioma que utilice para manipularlo.

Una vez que te des cuenta de eso, puedes tener tu Matrix momento, donde ves más allá del código y dentro de la máquina y la lógica detrás de ella y de repente entiendes completamente cómo comandar la máquina de la forma que quieras, usando cualquier lenguaje, cualquier plataforma y cualquier herramienta.

Antes de eso, sin embargo, hay mucho que aprender. Volvamos un poco a nuestro programa porque hay algunas cosas adicionales que quiero mostrarles.
.

Clases, objetos y métodos:¡Dios mío!

Comenzaremos con la parte "Console dot" de las dos líneas.

Console.WriteLine("Hello World!");

La Console part es una referencia a una clase estática incluida como parte del espacio de nombres del sistema y….

Oh, espera... Eso no tiene sentido todavía. Primero necesito hablar un poco sobre las clases y los objetos. Probablemente debería hablar mucho sobre clases y objetos , pero por ahora, centrémonos en una comprensión básica de lo que es la orientación a objetos porque prevalece en todos los lenguajes de programación.

La orientación a objetos es una idea de programación en la que debe crear representaciones programáticas de objetos de la vida real y luego interactuar con esos objetos como si fueran reales. Esta definición no es muy precisa, pero nos sirve lo suficientemente bien por ahora.

Principalmente, logramos esta interacción con objetos a través de dos tipos de componentes llamados propiedades y métodos . ¿Las buenas noticias? Ya estás usando uno de ellos:el método. En nuestro programa aquí, el WriteLine y ReadLine los comandos son los métodos. Las propiedades, que en realidad no cubriremos en este artículo, describen qué es un objeto, mientras que los métodos describen lo que puede hacer un objeto.

Los métodos en orientación a objetos se adjuntan a objetos o, en algunos casos, a clases. Aprenderemos mucho más sobre los métodos más adelante en esta serie, pero por ahora, piense en los métodos como acciones que pueden realizar los objetos.

Además, puede pensar en la diferencia entre clases y objetos como la diferencia entre una receta de pastel y un pastel, siendo la receta la clase y el pastel el objeto. La clase define cómo haces un objeto, al igual que una receta define cómo haces un pastel.

Sin embargo, es algo inútil tener una receta pero nunca hacer nada con ella. Un pastel, por otro lado, no puede existir sin una receta. Como tal, las clases y los objetos, como las recetas y los pasteles, existen al unísono.

Donde esta analogía se vuelve un poco más compleja es cuando se trata de lo que llamamos clases estáticas . Estas clases, o recetas, son estáticas porque existen como cosas reales. De hecho, ni siquiera puedes crear objetos a partir de ellos; existen solo como recetas y solo tienen métodos estáticos. Para complicar aún más las cosas, ¡podemos tener métodos estáticos en clases regulares! ¿Confundido todavía? Bueno, recuerda a Douglas Adams:

¡No entres en pánico!

.
En nuestra analogía con el pastel, un método estático para una receta puede ser algo que no esté relacionado con el pastel en sí, pero tampoco necesariamente con la receta. Por ejemplo, puede adjuntar a la receta un método estático llamado PointMeToTheKitchen eso, estoy seguro de que puedes adivinarlo, te dará instrucciones para llegar a la cocina. El pastel se puede hornear en cualquier cocina y la receta no depende de que se convierta en un pastel en ninguna cocina en particular.

Para ser justos, una situación mejor, y aún más compleja, sería si tuviera una clase estática llamada Baking que maneja todas las cosas necesarias relacionadas con la cocción con un montón de métodos estáticos, y que el PointMeToTheKitchen El método probablemente encajaría mejor allí. De hecho, tenemos el mismo uso con nuestro programa actual.

Entonces, para reiterar:
* Usas clases para crear objetos de la misma manera que usas recetas para crear pasteles.
* Los objetos tienen métodos y propiedades que definen lo que pueden hacer y lo que son, respectivamente.
* Las clases pueden tener métodos estáticos que existen fuera de cualquier objeto.
* Las clases estáticas existen fuera de todo y existen por sí mismas. No puedes usarlos para crear objetos.

Pasaremos mucho más tiempo con la orientación a objetos hacia el final de la serie. Por ahora, cuando repito que la Console parte de nuestras dos líneas es una clase estática, sabes que es una clase que existe independientemente de cualquier objeto y que también contiene métodos estáticos.
.

Resumir los detalles

Mira nuestras líneas de nuevo:

Console.WriteLine("Hello World!");
Console.ReadLine();

Console es una clase estática. Su propósito principal es darle acceso a lo que necesita para manejar la consola como un Baking La clase se usaría para darle acceso a herramientas para hornear.

Cuando escribimos un punto en C# y muchos lenguajes similares, estamos llamando al método, representado por los siguientes paréntesis, o una propiedad. Efectivamente, decimos:"Oye, clase Consola, déjame ejecutar tu WriteLine método, por favor”.

Nota:algunos idiomas pueden usar una notación diferente para esto. Por ejemplo, en C++, puede usar -> en lugar de un punto en ciertos contextos, y Perl 5 usa -> constantemente.

.
Detrás de escena, la Console La clase luego, usando los parámetros que proporcionamos (una cadena de texto literal "¡Hola mundo!"), llamará a la ventana de la consola actual, hará un vudú secreto y hará que la ventana de la consola imprima el texto que le enviamos, literalmente "¡Hola mundo! ”.

En la siguiente línea, llamamos a la misma clase estática Console de nuevo, y esta vez le pedimos que llame a su ReadLine método. A cambio, el programa le indicará a la consola que espere hasta que presionemos Enter antes de avanzar en el programa. En nuestro caso, esta entrada completará el programa y simplemente saldrá.

Podemos entrar en los intrincados detalles de cómo funciona la consola, pero no es realmente relevante en este momento. Recuerde, no estamos aquí para aprender a programar consolas más de lo que estamos aquí para aprender C#; estamos aprendiendo conceptos de programación. Como tal, lo llamo "vudú secreto", aunque ciertamente no lo es, simplemente porque está lo suficientemente avanzado para nosotros en este contexto que bien podría ser magia.

Sin embargo, lo que debe saber es que, detrás de escena, estos dos comandos simples en realidad realizan una gran cantidad de tareas. Por ejemplo, solo para interpretar los parámetros que pasa a WriteLine método, la computadora necesita asignar una determinada posición de memoria a la cadena, cargar esos caracteres en esa cadena y apuntar la ejecución del programa actual a esa ubicación de memoria en particular.

Luego, la CPU necesita leer todos esos bits de memoria, averiguar en qué contexto se está ejecutando, llamar al sistema operativo (que, a su vez, deberá llamar al hardware específico que tiene) para encender o apagar las señales. que convierten cada píxel en su pantalla a su valor de color respectivo. Y esta pequeña excursión ni siquiera es una representación totalmente precisa o completa de todo lo que sucede.

Todas estas cosas suceden porque escribió algunos caracteres en Visual Studio y presionó un botón. Este vistazo detrás de la cortina ilustra otro principio muy importante en la programación llamado abstracción . En resumen, queremos ocultar los detalles intrincados de una operación e interactuar con ella a través de un método fácil de usar. Para enviar contenido a la consola, ocultamos todos los detalles esenciales en un método llamado WriteLine .

Dos beneficios principales de la abstracción son que podemos escribir mucho menos código y que, al no tener que repetir el mismo código cada vez para lograr los mismos resultados, también escribimos mejor código. Detrás de escena, los resultados que logramos con nuestro simple WriteLine y ReadLine el código puede tomar cientos de líneas de código. Tener que escribir todo ese código aumenta enormemente las posibilidades de cometer errores.

Para ser exactos, en nuestro ejemplo aquí, es el equipo .NET de Microsoft el que nos oculta los detalles. A cambio, nos brindan una interfaz muy simplificada con la que podemos programar nuestras aplicaciones. Mezcla un poco las palabras de esa oración e incluso podrías llamarlo interfaz de programación de aplicaciones o API.

Otros marcos también tienen API. Por ejemplo, jQuery es una API que abstrae una gran cantidad de detalles esenciales de cómo JavaScript interactúa con el contenido de una página web, como animaciones, validaciones de formularios, manipulación de contenido, etc. OpenGL es una API que abstrae la interacción con el hardware de gráficos.

Hay literalmente miles de API que le brindan una forma de realizar actividades complicadas. Atlantic.NET también tiene una API para administrar sus servidores en la nube, de modo que una vez que se familiarice con la programación, puede crear programas que inicien, enumeren, creen o finalicen las instancias en su cuenta de Atlantic.NET.

Nota:Las API de Atlantic.NET requieren trabajar con algo llamado interfaz RESTful, que está un poco más allá del alcance de estos artículos introductorios.

.

Resumen de su primer programa

Has tenido mucho que aprender en este artículo, pero ahora es el momento de tomar un descanso. Hemos discutido en profundidad cómo funcionan la entrada y la salida y le hemos dado una introducción a la programación orientada a objetos. También ha aprendido sobre la importancia de la abstracción y cómo nos ayuda a evitar errores y a simplificar la escritura de nuestro código. Ha visto cómo las páginas web y las aplicaciones de consola usan enfoques diferentes pero similares para la entrada y la salida y ha tenido al menos un vistazo superficial a un enfoque de programación completamente diferente llamado programación basada en eventos.

En el próximo artículo, ampliaremos nuestro programa introduciendo variables y tipos de datos, y comenzará a crear un juego de adivinanzas muy simple utilizando estos conceptos junto con lo que ya ha aprendido.

Serie de procedimientos

Esta es la parte 2 de una serie de 5 partes de Introducción a la programación

  1. Introducción a la programación:Primeros pasos
  2. Introducción a la programación:tu primer programa
  3. Introducción a la programación:variables, tipos y manipulación de datos
  4. Introducción a la programación:control de flujo
  5. Introducción a la programación:programación orientada a objetos

.


Linux
  1. Lenguaje de programación C - Introducción

  2. Cómo implementar su primer pod en un clúster de Kubernetes

  3. Debian:¿cómo rizar el contenido completo de la página web?

  4. Cómo acceder a su página de inicio de sesión de Plesk

  5. ¿Cómo obtener la dirección MAC de su máquina usando un programa C?

Cómo instalar Firefox Quantum y acelerar tu navegación web

Cómo conectarse a su servidor web a través de SSH

Cómo configurar tu sistema operativo Raspberry Pi para usarlo por primera vez

Cómo:Introducción a la programación:su primer programa

Cómo:Introducción a la programación - Control de flujo

Cómo configurar su primer sitio web de WordPress