.. | ||
quadrado.c | ||
README.org | ||
x10.c | ||
x10const.c | ||
x10func.c |
Curso Básico da Linguagem C
- Aula 2: Dados e instruções
Aula 2: Dados e instruções
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…
Toda instrução simples é terminada com
;
.
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…
Tudo que expressa um valor é chamado de expressão.
Exemplo (x10.c
)
#include <stdio.h>
int main(void) {
int num;
num = 5;
printf("%d x 10 = %d\n", num, num * 10);
return 0;
}
O que temos aqui:
int num;
→ Declaração da variávelnum
.num = 5;
→ Atribuição de um valor à variávelnum
.printf(...);
→ Chamada da funçãoprintf
."%d x 10 = %d\n"
→ Primeiro argumento da funçãoprintf
.num
→ Acesso ao dado na variávelnum
.num * 10
→ Dado na variávelnum
vezes10
.
Outro exemplo (x10const.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;
}
O que há de novo:
#define MULT 10
→ Definição da constante simbólicaMULT
.int num = 5;
→ Inicialização da variávelnum
na própria declaração.num * MULT
→ Dado emnum
vezes a expansão deMULT
.
O valor de
MULT
será expandido no pré-processamento!
Mais um exemplo (quadrado.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;
}
O que há de novo desta vez:
int quadrado(int base)...
→ Definição da funçãoquadrado
.return base * base
→ Retorno da funçãoquadrado
.quadrado(num);
→ Chamada da funçãoquadrado
.
Dúvidas
Para que serve a função main
?
A função main
é o ponto de entrada do programa, ou seja, é o ponto a partir
do qual o programa começará a ser executado. Quando a função main
termina,
o programa é terminado retornando um valor inteiro (int
) para o sistema,
que utilizará este valor como estado de término do programa.
Qual é o significado de void
?
No exemplo da aula, void
(que significa vazio) é utilizado para explicitar
que a função main
não receberá argumentos:
int main(void) { /* ... */ }
Isso não é obrigatório e existem situações em que a função main
receberá
dados do ambiente de execução (sistema operacional), como argumentos de
linha de comando e variáveis exportadas para o programa, por exemplo:
int main(int arg, char **argv) { /* ... */ }
A palavra-chave
void
tem outros usos não relacionados com o caso do exemplo da aula.
Por que o tipo do retorno de main
é int
?
Para atender às especificações da linguagem (5.1.2.2.1 Program startup).
A função main
poderia retornar outros tipos de dados?
Em tese, sim, mas a função main
tem um papel diferenciado e deve seguir
as especificações da linguagem.
A função main
poderia retornar uma string?
Além do que foi respondido antes, nenhuma função pode retornar vetores:
e strings são vetores de caracteres terminados com o caractere nulo (\0
).
Por que o cabeçalho stdio.h
foi incluído no programa?
Para que pudéssemos utilizar a função printf
.
A linguagem C implementa muito poucas instruções nativas, deixando a implementação de outras funcionalidades e abstrações para as funções da biblioteca C padrão. Por sua vez, a biblioteca C padrão é muito grande e possui centenas de funções implementadas. Então, para otimizar o acesso a elas, nós só precisamos das declarações das funções que serão efetivamente utilizadas nos nossos programas.
Nós poderíamos fazer essas declarações nos códigos onde elas fossem utilizadas, mas a própria biblioteca padrão oferece vários arquivos de cabeçalhos: arquivos contendo declarações de funções e outras definições, que podem ser inseridos nos nossos códigos apenas quando necessário.