diff --git a/README.org b/README.org index d2ade39..bee707c 100644 --- a/README.org +++ b/README.org @@ -19,6 +19,6 @@ qualquer distribuição. ** Anotações e vídeos - 10.03.2025 [[./aulas/00-intro/README.org][Aula 0: Sobre o curso]] ([[https://youtu.be/RZmfuuABTHY][vídeo]]) -- 12.03.2025 [[./aulas/01-historia/README.org][Aula 1: História]] ([[https://youtu.be/wqJQL5W9FIw][vídeo]]) +- 12.03.2025 [[./aulas/01-historia/README.org][Aula 1: História]] ([[https://youtu.be/wqJQL5W9FIw][vídeo]]) ([[./exercicios/01/README.org][exercícios]]) - 14.03.2025 [[./aulas/02-dados-e-instrucoes/README.org][Aula 2: Dados e instruções]] ([[https://youtu.be/2KsvRJjshQ0][vídeo]]) diff --git a/exercicios/01/README.org b/exercicios/01/README.org new file mode 100644 index 0000000..c4150b0 --- /dev/null +++ b/exercicios/01/README.org @@ -0,0 +1,96 @@ +#+title: Curso Básico da Linguagem C +#+subtitle: Exercícios +#+author: Blau Araujo +#+startup: show2levels +#+options: toc:3 + +* Aula 1: História + +- [[../aulas/01-historia/README.org][Anotações da aula]] +- [[https://youtu.be/wqJQL5W9FIw][Vídeo]] + +** 1. Pesquise e explique + +As classificações abaixo são utilizadas para descrever as características da +linguagem C: pesquise e explique cada uma delas. + +- Linguagem de alto nível; +- Linguagem compilada; +- Linguagem procedural; +- Linguagem imperativa; +- Linguagem estruturada. + +** 2. Analise o programa + +Dado o programa abaixo ([[../aulas/01-historia/salve.c][salve.c]]), explique cada uma perguntas nos comentários. + +#+begin_src c +#include // O que é isso e para que serve? + +// Por que todo o programma é escrito na função 'main()'? +int main(void) { + + puts("Salve, simpatia!"); // O que faz e como se usa a função 'puts()'? + + return 0; // Para que serve esta instrução? +} +#+end_src + +** 3. Compile, encontre, explique e corrija os bugs + +O uso de /números mágicos/ (valores literais que não dão pistas de seus +significados) é desaconselhado porque dificultam a leitura semântica do +código. Sendo assim, nós utilizaremos a constante simbólica =EXIT_SUCCESS=, +definida na biblioteca padrão com valor =0=, em vez do inteiro literal =0= como +argumento da instrução =return=: + +#+begin_src c +#include + +int main(void) { + puts("Salve, simpatia!"); + return EXIT_SUCCESS +} +#+end_src + +Observe o resultado da compilação: + +#+begin_example +:~$ gcc salve.c -o salve +#+end_example + +- Quantos *erros* foram encontrados e quais são eles? +- Quais são as correções sugeridas pelo =gcc=? +- Como ficou o código corrigido? + +** 4. Compile, pesquise e responda + +Dado o código abaixo (por exemplo, =main.c=): + +#+begin_src c +#define EXIT_SUCCESS 0 + +int puts(const char *string); + +int main(void) { + puts("Salve, simpatia!"); + return EXIT_SUCCESS; +} +#+end_src + +Compilação: + +#+begin_example +:~$ gcc main.c +:~$ +#+end_example + +- Nenhum erro foi reportado, mas por quê? +- Como você executaria o binário resultante? + +** 5. Pesquise e responda + +Quando não explicitamos a especificação utilizada para compilar o nosso programa +(opção ~-std=PADRÃO~ do =gcc=), qual será o padrão utilizado e como podemos +confirmar isso pela linha de comandos? +