mirror of
https://gitlab.com/blau_araujo/cblc.git
synced 2025-05-10 18:46:36 -03:00
Compare commits
2 commits
6f44f3d103
...
b31d0aa415
Author | SHA1 | Date | |
---|---|---|---|
b31d0aa415 | |||
1c7d9ac276 |
3 changed files with 127 additions and 2 deletions
|
@ -20,5 +20,5 @@ qualquer distribuição.
|
||||||
|
|
||||||
- 10.03.2025 [[./aulas/00-intro/README.org][Aula 0: Sobre o curso]] ([[https://youtu.be/RZmfuuABTHY][vídeo]])
|
- 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]]) ([[./exercicios/01/README.org][exercícios]])
|
- 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]])
|
- 14.03.2025 [[./aulas/02-dados-e-instrucoes/README.org][Aula 2: Dados e instruções]] ([[https://youtu.be/2KsvRJjshQ0][vídeo]]) ([[./exercicios/02/README.org][exercícios]])
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
#+startup: show2levels
|
#+startup: show2levels
|
||||||
#+options: toc:3
|
#+options: toc:3
|
||||||
|
|
||||||
* Aula 1: História
|
* Exercícios da aula 1: História
|
||||||
|
|
||||||
- [[../aulas/01-historia/README.org][Anotações da aula]]
|
- [[../aulas/01-historia/README.org][Anotações da aula]]
|
||||||
- [[https://youtu.be/wqJQL5W9FIw][Vídeo]]
|
- [[https://youtu.be/wqJQL5W9FIw][Vídeo]]
|
||||||
|
|
125
exercicios/02/README.org
Normal file
125
exercicios/02/README.org
Normal file
|
@ -0,0 +1,125 @@
|
||||||
|
#+title: Curso Básico da Linguagem C
|
||||||
|
#+subtitle: Exercícios
|
||||||
|
#+author: Blau Araujo
|
||||||
|
#+startup: show2levels
|
||||||
|
#+options: toc:3
|
||||||
|
|
||||||
|
* Exercícios da aula 2: Dados e instruções
|
||||||
|
|
||||||
|
- [[../aulas/02-dados-e-instrucoes/README.org][Anotações da aula]]
|
||||||
|
- [[https://youtu.be/2KsvRJjshQ0][Vídeo]]
|
||||||
|
|
||||||
|
|
||||||
|
** 1. Pesquise e responda
|
||||||
|
|
||||||
|
- Quais são as finalidades da função =printf=?
|
||||||
|
- Em que cabeçalho da =glibc= ela é declarada?
|
||||||
|
- Quantos argumentos ela recebe?
|
||||||
|
- Como fazer para que a saída imprima quebras de linha?
|
||||||
|
- Para que servem os especificadores de formato =%d=, =%s=, =%c= e =%f=?
|
||||||
|
|
||||||
|
** 2. Operações aritméticas
|
||||||
|
|
||||||
|
Escreva um programa que, dado um valor inteiro associado à variável =num=,
|
||||||
|
calcule e imprima os resultados das seguintes operações:
|
||||||
|
|
||||||
|
- =num= multiplicado por 15;
|
||||||
|
- =num= somado a =42=;
|
||||||
|
- =123= menos =num=;
|
||||||
|
- Divisão de =num= por =5=;
|
||||||
|
- Resto da divisão de =num= por =5=.
|
||||||
|
|
||||||
|
Esquema geral da saída do programa:
|
||||||
|
|
||||||
|
#+begin_example
|
||||||
|
NUM x 15 = VALOR
|
||||||
|
NUM + 42 = VALOR
|
||||||
|
123 - NUM = VALOR
|
||||||
|
NUM / 5 = VALOR
|
||||||
|
RESTO DE NUM / 5 = VALOR
|
||||||
|
#+end_example
|
||||||
|
|
||||||
|
** 3. Números mágicos
|
||||||
|
|
||||||
|
O uso de valores literais sem um significado óbvio (/números mágicos/) é uma
|
||||||
|
prática indesejável, mas pode ser evitada de várias formas. Sendo assim,
|
||||||
|
analise as situações abaixo e proponha uma solução.
|
||||||
|
|
||||||
|
*Caso 1:* Propriedades de círculos
|
||||||
|
|
||||||
|
Meu programa tem funções para calcular a área e o perímetro de um círculo
|
||||||
|
cujo raio (um inteiro) é recebido como argumento:
|
||||||
|
|
||||||
|
#+begin_src c
|
||||||
|
#include ...
|
||||||
|
|
||||||
|
float circ_perim(int raio) {
|
||||||
|
/* Circunferência = 2πr */
|
||||||
|
return 2 * 3.14 * raio;
|
||||||
|
}
|
||||||
|
|
||||||
|
double circ_area(int raio) {
|
||||||
|
/* Área = πr² */
|
||||||
|
return 3.14 * raio * raio;
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(void) { ... }
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
*Caso 2:* Multiplicador constante
|
||||||
|
|
||||||
|
No meu programa, todas as operações aritméticas envolvem a multiplicação
|
||||||
|
de um valor por =10=.
|
||||||
|
|
||||||
|
#+begin_src c
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
int main(void) {
|
||||||
|
int num1 = 13;
|
||||||
|
int num2 = 29;
|
||||||
|
|
||||||
|
printf("%d x %d = %d\n", num1, 10, num1 * 10);
|
||||||
|
printf("%d x %d = %d\n", num1 + num2, 10, (num1 + num2) * 10);
|
||||||
|
printf("%d x %d = %d\n", num2, 10, num2 * 10);
|
||||||
|
}
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** 4. Compile, corrija e responda
|
||||||
|
|
||||||
|
Dado o programa abaixo (por exemplo, =main.c=)...
|
||||||
|
|
||||||
|
#+begin_src c
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
int main(void) {
|
||||||
|
char *fmt = "Circunferência de um círculo de raio %d: %.2f\n";
|
||||||
|
printf(fmt, r, circ_perim(r));
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
float circ_perim(int raio) {
|
||||||
|
/* Circunferência = 2πr */
|
||||||
|
return 2 * 3.14 * raio;
|
||||||
|
}
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
- Qual foi o erro encontrado na compilação?
|
||||||
|
- Por que esse erro aconteceu?
|
||||||
|
- Qual foi a solução adotada?
|
||||||
|
- A sua solução é a única possível?
|
||||||
|
- Se não for, cite outras possibilidades.
|
||||||
|
|
||||||
|
** 5. Pesquise e responda
|
||||||
|
|
||||||
|
Pesquise, entre as funções da =glibc=, aquelas que podem solucionar os problemas
|
||||||
|
abaixo e demonstre como elas podem ser utilizadas.
|
||||||
|
|
||||||
|
- Pausar a execução do programa por 10 segundos.
|
||||||
|
- Apenas imprimir uma quebra de linha.
|
||||||
|
- Ler um número inteiro interativamente e atribuí-lo a uma variável.
|
||||||
|
- Imprimir um número inteiro decimal em base 8 e base 16.
|
||||||
|
- Terminar a execução do programa com um valor de estado de término.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue