CS50: S1 | Aula
Tags: braziliandevs
Published: 2022-04-25 16:21:51

## Introdução

Essa primeira semana é uma transição do uso da ferramenta (e linguagem de programação) [Scratch](https://scratch.mit.edu) para uma linguagem de programação conhecida como C. 

O professor é o [David J. Malan](https://cs.harvard.edu/malan/), tem uma didática muito boa e não é prolixo. Ele passa por pontos mostrando como é importante respeitar a sintaxe da linguagem, e que é normal errar, durante sua prática não se frustar com os erros, e sim aprender com eles.

Além de falar sobre a linguagem C, e mostrar como ela será necessária para a realização das tarefas desta semana. A aula entra no assunto do terminal e os comandos no linux. Não precise se preocupar em instalar o Linux como seu sistema operacional, já que todo o seu acesso ao terminal e ao ambiente de programação, será por meio de um servidor na nuvem, preparado pela equipe do CS50, para que todos tenham acesso as mesmas ferramentas.

Comandos como `mkdir`, `ls`, `cd` e outros serão apresentados no decorrer da aula, assim como rodar o compilador via terminal.

## O mundo em C

Assim que começa já se apresenta um template padrão de um programa em C, onde é pedido que nesse momento não se apegue aos detalhes.

```c
#include <stdio.h>

int main(void) {
	printf("Hello, world!\n"); 
}
```

Aceite o `int main(void)` no primeiro momento. E ao compilar, e rodar o executável, exibirá seu programa com uma mensagem `Hello, world`.

No mundo de C, o programador deve definir com que tipo de dado vai trabalhar, se trabalhará com números, deve usar `int`, `float`, `double` e por aí vai. Pois cada tipo, tem uma memória definida para ser alocada para cada tipo de informação.

Neste curso e para fins práticos, é disponibilizado a biblioteca `cs50`. O que permitirá conseguir do usuário informações, como números e textos, atráves de funções como: `get_int()` e `get_string()`.

```c
#include <stdio.h>
#include <cs50.h>

int main(void) {
  int x = get_int("x: ");
  int y = get_int("y: ");
  printf("%i\n", x + y);
}
```

Pode-se perceber que desta vez, o printf tem um **código** `%i`. Este código é a formatação do código para ser exibido em tela.

A aula decorre muito bem, abordando o que são bibliotecas e headers. Explicando as estruturas de repetições, como usa-las e porque usa-las. As condicionais, e outros fundamentos da linguagem de programação de forma didática, e bem intuitiva.

Se você nunca teve aula de programação na vida, é uma excelente aula de introdução, e com exemplos práticos para você praticar sozinho depois.

Assim como, se você já sabe programar, acredito que seja uma ótima revisão dado o crédito pelo `dever de casa` proposto pelos **psets**. 

Caso tenha interesse em aprender a programar, assista essa aula e pratique. Estará começando com o pé direito!.

## Verificando conhecimento

- Como você escreve código?
- O que é um compilador?
- Como executar um arquivo em .c?
- Como o operador de atribuição funciona?
- Como dizer ao terminal para executar um arquivo no atual diretório?
- Como exibir diferentes tipos de dados?
- O que são condicionais? Como funcionam?
- Porque adicionar um incremento ao final de um while-loop?