#+title: Curso Básico da Linguagem C
#+subtitle: Aula 2: Dados e instruções
#+author: Blau Araujo
#+startup: show2levels
#+options: toc:3

* Aula 2: Dados e instruções

[[https://youtu.be/2KsvRJjshQ0][Vídeo desta aula]]

Programas podem ser entendidos como formas de manipular dados através de
instruções para realizar tarefas.

** Instruções:

- Declarações de variáveis e funções
- Atribuições e alterações de variáveis
- Chamadas de funções
- Retorno de funções, etc...

#+begin_quote
Toda instrução simples é terminada com =;=.
#+end_quote

** Dados:

- Constantes simbólicas
- Expressões constantes
- Operações lógicas e aritméticas
- Valores retornados por funções
- Endereços de memória, etc...

#+begin_quote
Tudo que expressa um valor é chamado de /expressão/.
#+end_quote

** Exemplo (=x10.c=):

#+begin_src c
#include <stdio.h>

int main(void) {
    int num;

    num = 5;

    printf("%d x 10 = %d\n", num, num * 10);
    return 0;
}
#+end_src

*** O que temos aqui:

- =int num;= → Declaração da variável =num=.
- =num = 5;= → Atribuição de um valor à variável =num=.
- =printf(...);= → Chamada da função =printf=.
- ="%d x 10 = %d\n"= → Primeiro argumento da função =printf=.
- =num= → Acesso ao dado na variável =num=.
- =num * 10= → Dado na variável =num= vezes =10=.

** Outro exemplo (=xconst.c=):

#+begin_src c
#include <stdio.h>

#define MULT 10  // Multiplicador.

int main(void) {
    int num = 5;

    printf("%d x 10 = %d\n", num, num * MULT);
    return 0;
}
#+end_src

*** O que há de novo:
  
- =#define MULT 10= → Definição da constante simbólica =MULT=.
- =int num = 5;= → Inicialização da variável =num= na própria declaração.
- =num * MULT= → Dado em =num= vezes a expansão de =MULT=.

#+begin_quote
O valor de =MULT= será expandido no pré-processamento!
#+end_quote

** Mais um exemplo (=quadrado.c=):

#+begin_src c
#include <stdio.h>

int quadrado(int base) {
    return base * base;
}

int main(void) {
    int num = 5;

    printf("%d^2 = %d\n", num, quadrado(num));
    return 0;
}
#+end_src

*** O que há de novo desta vez:
  
- =int quadrado(int base)...= → Definição da função =quadrado=.
- =return base * base= → Retorno da função =quadrado=.
- =quadrado(num);= → Chamada da função =quadrado=.

