Aprendiendo a programar con Haiku - Lección 1

Escrito por DarkWyrm
Fuente original: https://github.com/pulkomandy/programming-with-haiku


La programación implica comunicar sus ideas a la computadora. El único problema es que las computadoras son estúpidas. Harán exactamente lo que les digas y NO lo que quieres decir a menos que lo que quieras decir sea, de hecho, lo que les has dicho. Si no lo entiendes completamente, créeme, pronto lo harás.

El problema con la comunicación con la computadora es que no habla ningún idioma humano. Todo lo que sabe es qué hacer cuando se le da una instrucción numérica particular. Para las personas hacer esto es muy difícil, por lo que escribimos en un idioma accesible para las personas y la computadora lo convierte en algo que puede entender. La traducción se puede hacer correctamente cuando se ejecuta el programa, se denomina lenguaje interpretado o de antemano, como se hace en los idiomas compilados. C y C ++ son lenguajes compilados, por lo que al escribir programas en C ++, usted escribe el lenguaje humano (código fuente) y el compilador lo convierte en instrucciones de computadora (código de máquina).

En C ++, todas las instrucciones de la computadora se agrupan en bloques llamados funciones. Aquí hay un ejemplo:

void myFunction (void)
{
}

Las funciones pueden o no requerir datos para hacer su trabajo, y pueden o no devolver un resultado cuando hayan terminado. Este, llamado myFunction, no requiere datos y no devuelve ninguno. Tampoco hace nada, pero eso está bien. Aquí está el formato para definir una función:

<outdata> <nombre_de_función> (indata)
{
<instrucciones para hacer la función>
}

Los datos de entrada siempre están dentro de un par de paréntesis y todas las instrucciones de la función irán dentro del par de llaves. Para futuras referencias, todos los paréntesis y llaves deben aparecer en pares.

De todos modos, al compilador no le importa la cantidad de espacio entre todas estas cosas, por lo que hay mucho espacio para hacer que su código sea tan (des) legible como desee. Podríamos aplastar todo esto juntos así:

void myFunction (void) {}

Y todavía tendría el mismo resultado. Debido a que el espacio en blanco, como se llama, no importa, cada instrucción (que no debe confundirse con una función) en C ++ tiene un punto y coma después.

Para lo que valga, usaremos un estilo de escritura de código que es bastante similar al que usan los desarrolladores de Haiku con algunos ajustes. Por ejemplo, el código colocado entre un conjunto de llaves está siempre sangrado un nivel usando la tecla de tabulación.

Aquí está nuestra primera función que realmente hace algo:

int TwoPlusTwo (void)
{
         return 2 + 2;
}

Esta función, llamada TwoPlusTwo, no necesita datos de entrada, pero devuelve un resultado. El resultado de esta función es siempre un número entero, cualquier número sin un punto decimal. Mientras que un número es un número para las personas, C ++ es muy particular para hacer un seguimiento de los tipos de datos que se transmiten.


Cada programa tiene una función que necesita ser definida: principal. Se puede definir (como decirle a la computadora qué hacer para la función main ()) de varias maneras, pero usaremos la más simple:

int main (void)
{
      return 1;
}

Este programa, cuando se compila y ejecuta, no imprime nada, pero sí devuelve uno al sistema operativo cuando termina.


Vamos a hacer este programa. Guarde el código anterior en un archivo de código fuente llamado ReturnOne.cpp. Abra el terminal y navegue hasta la carpeta que lo contiene y escriba esto:

gcc -o ReturnOne ReturnOne.cpp

Esto le dice a gcc (GNU Compiler Collection) que vas a hacer un programa llamado ReturnOne (especificado por -o ReturnOne) y vas a usar ReturnOne.cpp para hacerlo.

Las funciones también pueden llamar a otras funciones, pero solo si la computadora las conoce. Esto generará un error cuando se compila:

int main (void)
{
        PushTheRedButton ();
         return 1;
}

Guarda esto como RedButton.cpp y compílalo con este comando:

gcc -o RedButton RedButton.cpp

La computadora no reconoce la función PushTheRedButton (), por lo que no sabe qué hacer cuando la ve y se queja. Si le decimos a la computadora lo que hace, compilará el programa correctamente. Cambie RedButton.cpp para verse así y compilar:

void PushTheRedButton (void)
{
}

int main (void)
{
PushTheRedButton ();
devuelve 1;
}

PushTheRedButton no hace nada, pero a la computadora no le importa. La otra forma de llamar a otras funciones es usar bibliotecas integradas en el sistema. Hacemos esto vinculando una biblioteca con nuestro programa y diciéndole al compilador qué funciones hay en la biblioteca. Ahora haremos algo casi útil. Guarde el siguiente código en HelloWorld.cpp y compile con gcc -o HelloWorld HelloWorld.cpp

#include <stdio.h>

int main (void)
{
printf ("¡Hola mundo! \ n");
return 1;
}

Hay dos partes que no son familiares aquí. La línea que comienza con #include le dice a una parte del compilador llamada preprocesador que busque definiciones de funciones en el encabezado del sistema stdio.h. stdio.h es el nombre de un archivo que define muchas funciones estándar de entrada y salida, como printf (). Los corchetes angulares (<y>) indican al preprocesador que estos son encabezados del sistema. Podemos hacer el nuestro, pero lo haremos en otro momento.

La otra parte desconocida aquí es la parte dentro de los paréntesis para printf (). Todo lo que se encuentra en las comillas se imprimirá en la pantalla si ejecuta este programa desde la Terminal. Este tipo de datos se denomina cadena (como en la cadena de caracteres).

Pregunta:
¿Qué sucede si eliminas la barra diagonal inversa y la letra n del final de la cadena para que se vea así: "¡Hola mundo!"

Asignación:
Escriba un programa que imprima un cuadro en la Terminal usando menos y símbolos de tubería como este:

 ----------
|             |
|             |
|             |
|             |
 ----------
Pregunta para reflexionar:
¿Cómo podrías escribir un programa que dibuje dos cuadros sin tener que hacer una tonelada de escritura?
Hora de Libertad

Post a Comment

Previous Post Next Post