#+title: Curso Básico da Linguagem C
#+subtitle: Exercícios
#+author: Blau Araujo
#+startup: show2levels
#+options: toc:3

* Exercícios da aula 9: Argumentos e ambiente

- [[../../aulas/09-args/README.org][Anotações da aula]]
- [[https://youtu.be/uufnW60rg2Q][Vídeo]]

** 1. Desafio: Programa =listenv=

Crie um programa que liste as variáveis exportadas para seu ambiente de duas
formas:

*Sem argumentos:* lista todas as variáveis no ambiente...

#+begin_example
:~$ listenv
#+end_example

*Com nomes de variáveis:* lista apenas os valores das variáveis informadas...

#+begin_example
:~$ listenv VAR1 VAR2 ...
#+end_example

Para cada variável inexistente passada como argumento, imprimir na saída
padrão de erros (=stderr=)...

#+begin_example
:~$ listenv SHELL VAR2 VAR3
/bin/bash
VAR2 não está definida no ambiente
VAR3 não está definida no ambiente
#+end_example

** 2. Desafio: Programa =tconv=

Crie um programa que converta temperaturas segundo a sintaxe abaixo:

#+begin_example
tconv 23.4c     Converte 23.4 graus Celsius para Fahrenheit
tconv 100f      Converte 100 graus Fahrenheit para Celsius
#+end_example

#+begin_quote
A unidade deve ser indiferente à caixa de texto (~f = F~, ~c = C~).
#+end_quote

** 3. Desafio: Programa =2fer=

Crie um programa que, para cada =NOME= recebido como argumento, imprima:

#+begin_example
Um para NOME, um para mim.
#+end_example

Se nenhum nome for passado, imprimir:

#+begin_example
Um para você, um para mim.
#+end_example

** 4. Desafio: Programa =fatp=

Escreva um programa que imprima os fatores primos de um número inteiro positivo
maior do que 1 recebido como argumento.

#+begin_example
:~$ fatp 90
2 3 3 5
:~$ fatp 36
2 2 3 3
:~$ fatp 43
43 é primo!
#+end_example


** 5. Desafio: Programa =round=

Escreva um programa que, recebendo um número com ponto flutuante como argumento,
faça o seu arredondamento das seguintes formas:

#+begin_example
:~$ round 2.5
3
:~$ round 2.4
2
:~$ round -c 2.3
3
:~$ round -f 2.9
2
:~$ round -t 2.6
2
#+end_example

#+begin_quote
As opções =-t= (/truncate/), =-f= (/floor/) e =-c= (/ceil/) podem ser escritos antes ou
depois do número. As opções =-t= e =-f= são sinônimas. 
#+end_quote
