forked from blau_araujo/cblc
conteúdo da aula 4
This commit is contained in:
parent
5aafa298ee
commit
09d21771ce
17 changed files with 357 additions and 318 deletions
98
exercicios/04/README.org
Normal file
98
exercicios/04/README.org
Normal file
|
@ -0,0 +1,98 @@
|
|||
#+title: Curso Básico da Linguagem C
|
||||
#+subtitle: Exercícios
|
||||
#+author: Blau Araujo
|
||||
#+startup: show2levels
|
||||
#+options: toc:3
|
||||
|
||||
* Exercícios da aula 4: Variáveis e ponteiros
|
||||
|
||||
- [[../aulas/04-variaveis/README.org][Anotações da aula]]
|
||||
- [[https://youtu.be/i7RKtMgSSrM][Vídeo]]
|
||||
|
||||
|
||||
** 1. Pesquise e responda
|
||||
|
||||
- Existe uma forma para alterar uma variável em uma função a partir de
|
||||
outra função: como fazer isso?
|
||||
- Por que as variáveis de uma função, em princípio, são locais à própria
|
||||
função?
|
||||
- Se o valor associado a um ponteiro é um endereço, o que termos com a
|
||||
avaliação de =&NOME_DO_PONTEIRO=?
|
||||
|
||||
** 2. Analise o código, pesquise e responda
|
||||
|
||||
Este é mais um "Olá, mundo":
|
||||
|
||||
#+begin_src c
|
||||
#include <stdio.h>
|
||||
|
||||
char *msg = "Salve, simpatia!";
|
||||
|
||||
int main(void) {
|
||||
puts(msg);
|
||||
return 0;
|
||||
}
|
||||
#+end_src
|
||||
|
||||
Se ponteiros recebem endereços como valores, por que eu fiz a atribuição
|
||||
de uma string e o meu programa funcionou?
|
||||
|
||||
** 3. Compile, analise e demonstre
|
||||
|
||||
#+begin_src c
|
||||
#include <stdio.h>
|
||||
|
||||
int main(void) {
|
||||
|
||||
int a = 0;
|
||||
int b = 875569217;
|
||||
int c = 1280655661;
|
||||
int d = 1129071171;
|
||||
|
||||
char *p = (char *)&d;
|
||||
|
||||
int i = 0;
|
||||
while (*(p + i) != '\0') {
|
||||
putchar(*(p + i));
|
||||
i++;
|
||||
}
|
||||
putchar('\n');
|
||||
|
||||
// printf("%p\n%p\n%p\n%p\n", &d, &c, &b, &a);
|
||||
|
||||
return 0;
|
||||
}
|
||||
#+end_src
|
||||
|
||||
- Como o código funciona?
|
||||
- O que estou tentando imprimir?
|
||||
- Com o =printf= comentado, eu consigo imprimir o que eu quero?
|
||||
- Se eu tirar o comentário, eu tenho a impressão que eu quero?
|
||||
- Por que acontece essa diferença de comportamento?
|
||||
- Como imprimir corretamente apenas o que eu quero?
|
||||
|
||||
** 4. Pesquise e responda
|
||||
|
||||
- Para que serve e como usar a função =putchar=?
|
||||
- Quando e por que utilizar =putchar('\n')= em vez de =puts("")=?
|
||||
- Como funciona a estrutura de repetição =while=?
|
||||
- Para que servem os especificadores de formato =%zu= e =%p=?
|
||||
|
||||
** 5. Desafio: quadrado de um número
|
||||
|
||||
Crie um programa que peça a digitação de um número inteiro ao usuário
|
||||
e imprima o quadrado desse número.
|
||||
|
||||
*Requisitos:*
|
||||
|
||||
- O programa deve testar se o número digitado é um inteiro válido.
|
||||
- Se não for, o programa deve terminar com uma mensagem enviada para
|
||||
a saída padrão de erros (=stderr=) e estado de término =1=.
|
||||
|
||||
*Dicas:*
|
||||
|
||||
- Utilize a função =scanf= para ler o número digitado.
|
||||
- Existe uma variante do =printf= que possibilita imprimir na saída de erros
|
||||
em vez da saída padrão.
|
||||
- Existe um cabeçalho que define constante com os limites dos tipos inteiros.
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue