#+title: Curso Básico da Linguagem C #+subtitle: Exercícios #+author: Blau Araujo #+startup: show2levels #+options: toc:3 * Exercícios da 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?