cs50-cc50-harvard

Voltar ao README

Índice

1 - CONFIGURANDO O AMBIENTE

Criando uma conta no GitHub

Criando o Codespace

Fazendo backup dos arquivos da IDE CS50 e Restaurando no codespace

2 - FERRAMENTAS DE LINHA DE COMANDO

check50

cli50

compare50

debug50

help50

render50

style50

submit50

3 - LINGUAGEM C

Linguagem C - Style Guide

Tipos de dados

Operadores, limitações, truncamento

Nome de caracteres especiais

4 - LINHAS BÁSICAS DE COMANDO

include - Incluir

Funções da biblioteca stdio.h

Funções da Biblioteca cs50.h

make - Compilar

clang - Compilar

mkdir - Criar pasta

Exemplo: mkdir pasta

code - Criar arquivo

Exemplo: code arquivo

cd - Mudar de pasta

Exemplo: cd pasta

O caractere (.) é um atalho que representa o diretório atual.
Exemplo: cd .

O caractere (..) é um atalho que representa o diretório acima do diretório atual.
Exemplo: cd ..

O caractere (../../) é um atalho que representa dois níveis acima do diretório atual.
Exemplo: cd ../../

ls - Lista arquivos ou pastas que estão dentro do diretório

Limpar a tela

Aperte as teclas Ctrl+L

./ - Executar o arquivo compilado

Exemplo: ./hello

rm - Remove um arquivo, pedindo confirmação

Exemplo: rm hello.txt
*Mensagem de confirmação: Você realmente deseja remover o arquivo ‘hello.txt’? sua resposta deve ser: y ou yes

rm -f - Remove um arquivo, SEM confirmação

Exemplo: rm -f hello.txt

rm -r - Remove um diretório inteiro, pedindo confirmação

Exemplo: rm -r pset2
*Mensagem de confirmação: Você realmente deseja remover o diretório ‘pset2’? y

rm -rf - Remove um diretório inteiro, SEM confirmação

Exemplo: rm -rf pset2

mv - Mover e Renomear um arquivo de um local para outro, da origem para o destino:

Exemplo: mv greedy.c greddy.c

cp - Copiar e Renomear um arquivo

Exemplo: cp hello.txt hi.txt
cp <nome do arquivo de origem> <nome do arquivo destino>

cp -r - Copiar um diretório com seu conteúdo

Exemplo: cp -r pset0 pset3
cp <nome do diretório de origem> <nome do diretório destino>

pwd - Mostra o caminho do diretório de trabalho atual

Voltar ao Índice

chmod

rmdir

sudo

ln

man

clear

touch

diff

telnet

Voltar ao Índice


1 - CONFIGURANDO O AMBIENTE

Criando uma conta no GitHub

CC50: Como criar sua Conta no GitHub?

Voltar ao Índice


Criando o Codespace

A versão mais recentede do Curso de Ciência da Computação de Harvard(2022) mudou o ambiente de desenvolvimento, também conhecido como IDE CS50 para o VS CODE CS50 (codespace). Se você tem familiaridade com o VS CODE ou gostaria de migrar para o novo IDE do CS50, siga as instruções desse vídeo, nele iremos apresentar o VS CODE CS50 e como ativá-lo, também testamos aquele exercício do "hello world" e "hello [nome]".

[CC50] Do CS50 IDE para VS CODE CS50

Dica de ouro: após os passos acima, dê uma olhadinha na sua caixa de entrada e verifique se há algum e-mail do bot do CS50 pedindo alguma autorização!!!

Voltar ao Índice


Fazendo backup dos arquivos da IDE CS50:

🙋 🙋‍♂️ Eu tenho uma dúvida: se migrarmos do CS50 IDE para o VS CODE CS50 iremos perder todos os arquivos criados? A resposta é não, você não irá perder seus arquivos. Entretanto, para não perder seus arquivos é necessário fazer os passos abaixo:

[CC50] Migrando os arquivos do CS50 IDE para VS CODE CS50

Voltar ao Índice


2 - FERRAMENTAS DE LINHA DE COMANDO

check50

check50 - Irá verificar a exatidão do nosso código com alguns testes automatizados.
Obs: Tem que executar o comando dentro da pasta onde está o arquivo.
Exemplo: check50 cs50/problems/2022/x/mario/more

image

Voltar ao Índice

cli50

Com o cli50 você pode montar um diretório dentro de um container executando cs50/cli, uma imagem do Docker baseada no Ubuntu 20.04, uma distribuição popular do Linux.

Voltar ao Índice

compare50

compare50 é uma ferramenta para detectar similaridade no código que suporta bem mais de 300 linguagens de programação e modelagem. A ferramenta em si é de código aberto e, por design, extensível em seus métodos de comparação. Não há necessidade de fazer upload de código para um host externo, compare50 é executado localmente a partir da linha de comando. Como uma ferramenta local, compare50 apresenta suas descobertas em arquivos HTML estáticos e interativos que permitem o compartilhamento fácil. E faz isso incrivelmente rápido, comparando facilmente milhares de arquivos de origem em segundos.

Voltar ao Índice

debug50

Depuração

debug50 - Debug significa executar o código passo a passo em uma ferramenta de depuração, para localizar o ponto exato em que você cometeu um erro de programação.

Exemplo de execução do debug50:
debug50 ./buggy

Caso ocorra erro:

Can't debug this program! Are you sure you're running debug50 on an executable, a Python script, or a Java program? Unsupported File: nomedoarquivo

Solução AQUI

Voltar ao Índice

help50

Ajuda

help50 - É um comando que podemos executar para explicar problemas em nosso código de uma forma mais amigável.
Podemos executá-lo adicionando help50 à frente de um comando que estamos tentando.
Exemplo: help50 make hello

quando está correto:

image


quando tem erro:

image

Voltar ao Índice

render50

render50 Gerar PDFs de código-fonte realçados pela sintaxe.

Voltar ao Índice

style50

Sugestões de correções

style50 - Para ver sugestões de novas linhas e recuo.
Exemplo: style50 hello.c

image

Voltar ao Índice

submit50

É baseado em git, um “sistema de controle de versão distribuído” que permite salvar diferentes versões de arquivos sem ter que dar a cada versão um nome de arquivo exclusivo (como você costuma fazer em seu próprio Mac ou PC!). Por meio submit50e, por sua vez, gitvocê pode enviar o trabalho várias vezes (ou seja, várias versões do mesmo).

Quando você executa submit50, seus arquivos são “enviados” (ou seja, carregados) para a “organização” do CS50 (também chamada de “submit50”) no GitHub

Para enviar seu código: submit50 cs50/problems/2022/x/credit depois digite: yes

Voltar ao Índice


Linguagem C - Style Guide

Style Guide for C


#include <stdio.h>  

int main(void)   
{  
    printf("olá, mundo");   
}

Voltar ao Índice

Tipos de dados

Existem muitos tipos de dados que podemos usar para nossas variáveis, que indicam ao computador que tipo de dados eles representam:
bool uma expressão booleana verdadeira ou falsa
char um único caractere ASCII como a ou 2
double um valor de vírgula flutuante com mais dígitos do que um float
float um valor de vírgula flutuante ou número real com um valor decimal
int inteiros até um certo tamanho ou número de bits
long inteiros com mais bits, para que possam contar mais do que um int
string uma linha de caracteres

Voltar ao Índice

Operadores, limitações, truncamento

Existem vários operadores matemáticos que podemos usar também:
+ para adição
- para subtração
* para multiplicação
/ para divisão
% para calcular o resto

Voltar ao Índice

Nome de caracteres especiais

\ backslash (barra invertida)
` backtick (crase)
* asterisk (asterisco)
_ underscore
{} curly braces (chaves)
[] square brackets (colchetes)
() parentheses (parênteses)
# hash mark (sustenido / hash / jogo da velha)
+ plus sign (sinal de “mais” ou somar)
- minus sign (hyphen) (sinal de menos ou hífen)
. dot (ponto)
! exclamation mark (ponto de exclamação)

4 - LINHAS BÁSICAS DE COMANDO

include

Para importar Bibliotecas:

#include <...> Inclui cabeçalho de biblioteca
#include <cs50.h> Funções do CS50;
#include <stdio.h> Funções de entrada/saída
#include <math.h> Funções matemáticas

Funções da Biblioteca cs50.h

E a biblioteca CS50 tem funções correspondentes para obter entrada de vários tipos:
get_char - solicita ao usuário um char
get_double - solicita ao usuário um double
get_float - solicita ao usuário um float
get_int - solicita ao usuário um int
get_long - solicita ao usuário um long
get_string - solicita ao usuário um string

Exemplo:
string nome = get_string("Qual é seu nome? \n");


Funções da biblioteca stdio.h

fclose - fecha um arquivo
fopen - abre um arquivo
fprintf - imprimir em um arquivo
fread - lê bytes de um arquivo
fscanf - obtém entrada de um arquivo
fwrite - escreve bytes em um arquivo
printf - imprimir na tela
scanf - obtém entrada de um usuário
sprintf - imprimir em uma string

Códigos de Formato para o printf

Para printf, também, existem diferentes marcadores de posição para cada tipo:
%c para caracteres
%f para flutuadores, duplos
%i para ints
%li para longos
%s para strings

Exemplo:
printf("olá,%s \n" ,nome);

Outras bibliotecas no manual do CS50

Voltar ao Índice

make

Compilar o arquivo que criamos
Exemplo: make hello

make é um programa que chama o compilador “clang”. Converte o código-fonte em código de máquina.

Voltar ao Índice

clang

Para usar direto o compilador clang:

Exemplo: clang hello.c Terá como arquivo de saída com nome padrão: a.out
obs: Esse comando não funciona se tiver a biblioteca do CS50.

Para ter como saída um arquivo com nome específico, usamos o comando: clang -o
Exemplo: clang -o hello hello.c Arquivo de saída: hello
-o “saída”. Renomeia o arquivo final, ou seja, argumento de linha de comando, que permite especificar, explicitamente, como você deseja que seu programa de saída seja chamado.

Código-fonte: hello.c
Código de Máquina: hello

Se quisermos usar a biblioteca do CS50, via #include <cs50.h>, para a função get_string ou outra função dessa biblioteca, também temos que adicionar um sinalizador: clang -o hello hello.c -lcs50

O sinalizador -l vincula o arquivo cs50 , que já está instalado no CS50 IDE, e inclui o código de máquina para get_string (entre outras funções) que nosso programa pode consultar e usar também.

Com o make, esses argumentos são gerados para nós, uma vez que a equipe também configurou o make no IDE CS50.

Voltar ao Índice

Voltar ao README