Este é o CS50x

Arrancar

CS50 IDE é um “ambiente de desenvolvimento integrado” baseado na web que permite programar “na nuvem”, sem instalar qualquer software localmente. De fato, o CS50 IDE fornece a você seu próprio “espaço de trabalho” (ou seja, espaço de armazenamento) no qual você pode salvar seus próprios arquivos e pastas (também conhecidos como diretórios).

Logging In

Head to ide.cs50.io e clique em “Sign in with GitHub” para acessar seu CS50 IDE. Uma vez que seu IDE carrega, você deve ver que (por padrão) ele está dividido em três partes. No topo do CS50 IDE está o seu “editor de texto”, onde você irá escrever todos os seus programas. Na parte de baixo está uma “janela terminal” (azul claro, por padrão), uma interface de linha de comando (CLI) que lhe permite explorar os arquivos e diretórios do seu espaço de trabalho, compilar código, executar programas e até mesmo instalar novos softwares. E à esquerda está o seu “navegador de arquivos”, que mostra todos os arquivos e pastas atualmente no seu IDE.

Inicie clicando dentro da janela do seu terminal. Você deve descobrir que seu “prompt” se assemelha ao abaixo.

~/ $

Clique dentro dessa janela de terminal e depois digite

mkdir ~/pset1/

seguido por Enter para fazer um diretório (ou seja, pasta) chamado pset1 em seu diretório home. Tome cuidado para não ignorar o espaço entre mkdir e ~/pset1 ou qualquer outro caractere para esse fim! Tenha em mente que ~ denota o seu diretório home e ~/pset1 denota um diretório chamado pset1 dentro de ~.

Here on out, para executar (ou seja, executar) um comando significa digitá-lo em uma janela de terminal e então pressione Enter. Os comandos são “sensíveis a maiúsculas e minúsculas”, portanto certifique-se de não digitar em maiúsculas quando você quer dizer minúsculas ou vice-versa.

Agora execute

cd ~/pset1/

para se mover para (ou seja, abrir) aquele diretório. Seu prompt deve agora assemelhar-se ao abaixo.

~/pset1/ $

Se não, refaça seus passos e veja se você pode determinar onde você errou.

Agora execute

mkdir ~/pset1/hello

para criar um novo diretório chamado hello dentro do seu diretório pset1. Depois execute

cd ~/pset1/hello

para se mover para esse directório.

Primeiro programa? No menu File, clique em New File, e salve-o (como através da opção Save no menu File) como hello.c dentro do seu directório ~/pset1/hello. Proceda para escrever seu primeiro programa digitando precisamente estas linhas no arquivo:

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

Note como o CS50 IDE adiciona “destaque de sintaxe” (ou seja, cor) conforme você digita, embora a escolha de cores do CS50 IDE possa ser diferente deste conjunto de problemas. Essas cores não são realmente salvas dentro do arquivo em si; elas são apenas adicionadas pelo CS50 IDE para fazer com que certa sintaxe se destaque. Se você não tivesse salvo o arquivo como hello.c desde o início, o CS50 IDE não saberia (pela extensão do nome do arquivo) que você está escrevendo código C, nesse caso essas cores estariam ausentes.

Arquivos de Listagem

Próximo, na janela do seu terminal, imediatamente à direita do prompt (~/pset1/hello/ $), execute

ls

>

Você deve ver apenas hello.c? Isso é porque você acabou de listar os arquivos na sua pasta hello. Em particular, você executou (isto é, executou) um comando chamado ls, que é a abreviação de “list”. (É um comando tão frequentemente utilizado que os seus autores o chamaram apenas ls para guardar os toques no teclado). Faz sentido?

Compilar Programas

Agora, antes de podermos executar o programa hello.c, lembre-se que devemos compilá-lo com um compilador (e.g., clang), traduzindo-o do código fonte para código de máquina (i.e., zeros e uns). Execute o comando abaixo para fazer exatamente isso:

clang hello.c

E então execute este novamente:

ls

Desta vez, você deve ver não só hello.c mas a.out listado também? (Você pode ver o mesmo graficamente se você clicar no ícone da pasta novamente.) Isso porque clang traduziu o código fonte em hello.c para o código da máquina em a.out, que por acaso significa “assembler output”, mas mais sobre isso em outro momento.

Agora execute o programa executando o abaixo.

./a.out

Olá, mundo, de facto!

Naming Programs

Agora, a.out não é o nome mais fácil de usar para um programa. Vamos compilar hello.c novamente, desta vez salvando o código da máquina em um arquivo chamado, mais apropriadamente, hello. Execute o abaixo.

clang -o hello hello.c

Tenham cuidado para não ignorar nenhum desses espaços! Então execute este novamente:

ls

Você deve agora ver não só hello.c (e a.out de antes) mas também hello listado também? Isso porque -o é um argumento de linha de comando, às vezes conhecido como flag ou switch, que diz clang para sair (daí o o) um arquivo chamado hello. Execute o abaixo para experimentar o novo program.

./hello

Olá lá novamente!

Fazer as coisas mais fáceis

Recorde que podemos automatizar o processo de execução clang, deixando make descobrir como fazê-lo para nós, poupando-nos assim alguns toques de tecla. Execute o abaixo para compilar este programa uma última vez.

make hello

Você deve ver que make executa clang com ainda mais argumentos de linha de comando para você? Mais sobre esses também, outra vez!

Agora execute o próprio programa uma última vez executando o abaixo.

./hello

>Phew!

>

Pôr Entrada do Usuário

Suffice para dizer, não importa como você compila ou executa este programa, ele só imprime hello, world. Vamos personalizá-lo um pouco, como fizemos na classe.

Modificar este programa de tal forma que ele primeiro pede o nome do usuário e depois imprime hello, so-and-so, onde so-and-so é o seu nome real.

Como antes, certifique-se de compilar seu programa com:

make hello

E certifique-se de executar seu programa, testando-o algumas vezes com diferentes entradas, com:

./hello

Passar a pé

Dicas

Não se lembra como pedir ao usuário o seu nome?

Recordar que você pode usar get_string da seguinte forma, armazenando seu valor de retorno em uma variável chamada name do tipo string.

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

Não lembrar como formatar uma string?

Não lembrar como juntar (ou seja, concatenar) o nome do usuário com uma saudação? Lembre-se que pode usar printf não só para imprimir mas também para formatar uma string (daí o f em printf), a la abaixo, onde em name é um string.

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

Uso de identificador não declarado?

Vendo o abaixo, talvez sobre outros erros?

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

Recorde que, para usar get_string, você precisa incluir cs50.h (no qual get_string é declarado) sobre um arquivo, como com:

#include <cs50.h>

Como testar seu código

Execute o abaixo para avaliar a correção do seu código usando check50. Mas certifique-se de compilá-lo e testá-lo você mesmo!

check50 cs50/problems/2020/x/hello

>

Execute o abaixo para avaliar o estilo do seu código usando style50.

style50 hello.c

Como submeter

Execute o abaixo, entrando com seu nome de usuário e senha do GitHub quando solicitado. Por segurança, você verá asteriscos (*) ao invés dos caracteres reais na sua senha.

submit50 cs50/problems/2020/x/hello

>

Deixe um comentário