Esto es CS50x

Cómo empezar

CS50 IDE es un «entorno de desarrollo integrado» basado en la web que le permite programar «en la nube», sin instalar ningún software localmente. De hecho, CS50 IDE le proporciona su propio «espacio de trabajo» (es decir, espacio de almacenamiento) en el que puede guardar sus propios archivos y carpetas (también conocidos como directorios).

Inicio de sesión

Vaya a ide.cs50.io y haga clic en «Iniciar sesión con GitHub» para acceder a su CS50 IDE. Una vez que tu IDE se cargue, deberías ver que (por defecto) está dividido en tres partes. Hacia la parte superior de CS50 IDE está tu «editor de texto», donde escribirás todos tus programas. Hacia la parte inferior hay una «ventana de terminal» (azul claro, por defecto), una interfaz de línea de comandos (CLI) que le permite explorar los archivos y directorios de su espacio de trabajo, compilar código, ejecutar programas e incluso instalar nuevo software. Y a la izquierda está tu «explorador de archivos», que te muestra todos los archivos y carpetas que hay actualmente en tu IDE.

Comienza haciendo clic dentro de tu ventana de terminal. Usted debe encontrar que su «prompt» se asemeja a la siguiente.

~/ $

Haga clic dentro de esa ventana de terminal y luego escriba

mkdir ~/pset1/

seguido por Enter con el fin de hacer un directorio (es decir, carpeta) llamado pset1 en su directorio de inicio. Tenga cuidado de no pasar por alto el espacio entre mkdir y ~/pset1 o cualquier otro carácter. Tenga en cuenta que ~ denota su directorio principal y ~/pset1 denota un directorio llamado pset1 dentro de ~.

De aquí en adelante, ejecutar (es decir, correr) un comando significa escribirlo en una ventana de terminal y luego presionar Enter. Los comandos distinguen entre mayúsculas y minúsculas, así que asegúrese de no escribir en mayúsculas cuando quiere decir minúsculas o viceversa.

Ahora ejecute

cd ~/pset1/

para entrar (es decir, abrir) ese directorio. Su indicador debería parecerse al siguiente.

~/pset1/ $

Si no es así, vuelva sobre sus pasos y vea si puede determinar dónde se equivocó.

Ahora ejecute

mkdir ~/pset1/hello

para crear un nuevo directorio llamado hello dentro de su directorio pset1. A continuación, ejecute

cd ~/pset1/hello

para trasladarse a ese directorio.

¿Hacemos que escriba su primer programa? Desde el menú Archivo, haga clic en Nuevo Archivo, y guárdelo (como a través de la opción Guardar del menú Archivo) como hello.c dentro de su directorio ~/pset1/hello. Proceda a escribir su primer programa escribiendo precisamente estas líneas en el archivo:

#include <stdio.h>int main(void){ printf("hello, world\n");}

Note cómo CS50 IDE añade «resaltado de sintaxis» (es decir, color) mientras escribe, aunque la elección de colores de CS50 IDE puede diferir de la de este conjunto de problemas. Esos colores no se guardan en realidad dentro del propio archivo; sólo son añadidos por CS50 IDE para hacer que cierta sintaxis se destaque. Si no hubieras guardado el archivo como hello.c desde el principio, el IDE CS50 no sabría (por la extensión del nombre del archivo) que estás escribiendo código C, en cuyo caso esos colores estarían ausentes.

Listando archivos

A continuación, en tu ventana de terminal, inmediatamente a la derecha del prompt (~/pset1/hello/ $), ejecuta

ls

¿Deberías ver sólo hello.c? Eso es porque acabas de listar los archivos de tu carpeta hello. En concreto, has ejecutado (es decir, ejecutado) un comando llamado ls, que es la abreviatura de «lista». (Es un comando tan frecuentemente utilizado que sus autores lo llamaron simplemente ls para ahorrar pulsaciones). ¿Tiene sentido?

Compilación de programas

Ahora, antes de que podamos ejecutar el programa hello.c, recuerde que debemos compilarlo con un compilador (por ejemplo, clang), traduciéndolo de código fuente a código máquina (es decir, ceros y unos). Ejecuta el siguiente comando para hacer eso:

clang hello.c

Y luego ejecuta éste de nuevo:

ls

Esta vez, deberías ver no sólo hello.c sino también a.out en la lista? (Puedes ver lo mismo gráficamente si haces clic en el icono de la carpeta de nuevo.) Eso es porque clang ha traducido el código fuente en hello.c a código máquina en a.out, que resulta que significa «salida de ensamblador», pero más sobre eso en otro momento.

Ahora ejecute el programa ejecutando lo siguiente.

./a.out

¡Hola, mundo, de verdad!

Nombrando programas

Ahora, a.out no es el nombre más amigable para un programa. Vamos a compilar hello.c de nuevo, esta vez guardando el código máquina en un archivo llamado, más apropiadamente, hello. Ejecute lo siguiente:

clang -o hello hello.c

¡Tenga cuidado de no pasar por alto ninguno de esos espacios que hay! A continuación, ejecute este de nuevo:

ls

Ahora debería ver no sólo hello.c (y a.out de antes) sino también hello en la lista? Eso es porque -o es un argumento de línea de comandos, a veces conocido como una bandera o un interruptor, que le dice a clang para la salida (de ahí el o) un archivo llamado hello. Ejecute lo siguiente para probar el programa recién nombrado.

./hello

¡Hola de nuevo!

Haciendo las cosas más fáciles

Recuerde que podemos automatizar el proceso de ejecución de clang, dejando que make se encargue de hacerlo por nosotros, ahorrando así algunas pulsaciones. Ejecuta lo siguiente para compilar este programa una última vez.

make hello

Deberías ver que make ejecuta clang con aún más argumentos de línea de comandos para ti?

Ahora ejecuta el programa por última vez ejecutando lo siguiente.

./hello

¡Phew!

Obteniendo la entrada del usuario

Basta decir que, no importa cómo compiles o ejecutes este programa, sólo imprime hello, world. Vamos a personalizarlo un poco, tal y como hicimos en clase.

Modifica este programa de forma que primero pregunte al usuario su nombre y luego imprima hello, so-and-so, donde so-and-so es su nombre real.

Como antes, asegúrese de compilar su programa con:

make hello

Y asegúrese de ejecutar su programa, probándolo unas cuantas veces con diferentes entradas, con:

./hello

Paseo

Pistas

¿No recuerdas cómo pedir el nombre al usuario?

Recuerda que puedes utilizar get_string de la siguiente manera, almacenando su valor de retorno en una variable llamada name de tipo string.

string name = get_string("What is your name?\n");

¿No recuerdas cómo formatear una cadena?

No recuerdas cómo unir (es decir, concatenar) el nombre del usuario con un saludo? Recuerda que puedes usar printf no sólo para imprimir sino para formatear una cadena (de ahí el f en printf), a la manera de lo que se muestra a continuación, donde name es un string.

printf("hello, %s\n", name);

¿Uso de un identificador no declarado?

Viendo lo que se muestra a continuación, ¿tal vez por encima de otros errores?

error: use of undeclared identifier 'string'; did you mean 'stdin'?

Recuerda que, para usar get_string, necesitas incluir cs50.h (en el que se declara get_string) encima de un fichero, como con:

#include <cs50.h>

Cómo probar tu código

Ejecuta lo siguiente para evaluar la corrección de tu código usando check50. Pero asegúrate de compilarlo y probarlo tú mismo

check50 cs50/problems/2020/x/hello

Ejecuta lo siguiente para evaluar el estilo de tu código usando style50.

style50 hello.c

Cómo enviar

Ejecuta lo siguiente, iniciando sesión con tu nombre de usuario y contraseña de GitHub cuando se te pida. Por seguridad, verás asteriscos (*) en lugar de los caracteres reales de tu contraseña.

submit50 cs50/problems/2020/x/hello

Deja un comentario