Você está na página 1de 27

1

Programao em C
Aula 3
Curso: Introduo a Computao turma C 1S2014
Prof. Marcio Merino Fernandes
2
Dada uma temperatura em graus centgrados,
apresent-la em graus Fahrenheit. A frmula de
converso : F = (9 * C + 160) / 5.
Problema 6
3
Nos programas anteriores, os valores das
variveis eram estabelecidos em operaes de
atribuio. Mas agora, qual o valor de C?
Leitura de dados
4
Uma outra forma de atribuir valores a variveis a
leitura de dados. Em C, usa-se a funo scanf.
Assim como printf, a funo scanf pode ter vrios
parmetros, sendo o primeiro uma string.
No caso da funo scanf, esta string deve conter
apenas tags, separadas por espaos em branco.
Os demais parmetros da funo scanf devem ser
endereos de variveis.
Leitura de dados
5
O que acontece quando o computador executa
uma instruo de leitura de dados? Exemplo:
A execuo do programa interrompida. O
computador espera que o usurio digite algum
valor e pressione a tecla Enter.
Aps pressionar Enter, o computador retoma a
execuo do programa e armazena o(s) valor(es)
digitado(s) no(s) endereo(s) fornecido(s) na
funo scanf.
scanf(%f,&C);
Leitura de dados
6
O que difere a leitura de dados da operao de
atribuio?
Na operao de atribuio, o valor a ser atribudo
definido antes da execuo do programa, enquanto
numa operao de leitura de dados, o valor atribudo
definido durante a execuo.
Em programao, diz-se que coisas so estticas
quando ocorrem antes do programa executar e
dinmicas, quando ocorrem durante a execuo.
C = 32;
scanf(%f,&C)
Valor de C estabelecido estaticamente.
Valor de C estabelecido dinamicamente.
Leitura de dados
7
Na leitura de dados, o valor digitado pelo usurio
deve ser do mesmo tipo que a varivel.
Com a leitura de dados, a execuo de um
programa pode ser realizada para valores
diferentes das variveis.
Porm, se o valor da varivel estabelecido de
forma esttica, para cada valor da varivel,
necessrio compilar o programa novamente.
Leitura de dados
8
Dadas as idades (tipo int) e os pesos (tipo float)
de duas pessoas, exibir quem a pessoa mais
velha e a sua idade e quem a pessoa mais leve
e o seu peso.
Problema 7
9
Problema 7
10
Todo comando if requer uma condio que pode
ser verdadeira ou falsa.
Caso a condio seja verdadeira, o comando if
executa um conjunto de instrues, podendo
deixar de executar um outro conjunto alternativo.
Quando existe um conjunto de instrues a ser
executado, caso o valor da condio seja falso,
utiliza-se o comando if-else.
Comando if-else
11
Exemplo:
Um conjunto de instrues comea com o smbolo
{ e termina com o smbolo }. Caso, o conjunto
contenha apenas uma instruo, as chaves so
opcionais.
if (delta >=0)
{
x1 = (-b + sqrt(delta))/(2*a);
x2 = (-b sqrt(delta))/(2*a);
}
else
{
printf(Sem razes reais.);
}
Comando if-else
12
Qualquer instruo pode fazer parte de um
conjunto de instrues, inclusive um comando if
ou um comando if-else.
if (delta >=0)
{
x1 = (-b + sqrt(delta))/(2*a);
if (delta == 0)
x2 = x1;
else
x2 = (-b sqrt(delta))/(2*a);
}
else
{
printf(Sem razes reais.);
}
Comando if-else
Por que
no foram
usadas as
chaves { }
neste
comando?
13
Programas mais complexos so mais difceis de
ler e compreender.
Uma forma de melhorar a legibilidade do
programa usar recuos.
Os recuos devem ser usados sempre aps o
smbolo {, sendo as instrues recuadas direita.
O smbolo } deve estar alinhado ao abre-chaves
correspondente.
A importncia dos recuos
14
Exemplo:
De quem o else acima?
O compilador sempre associa um else ao if anterior
mais prximo que ainda no possui um else.
Como associar o else instruo if (nota >= 9)?
if (nota >= 9)
if (nota_anterior < nota)
printf(Voc est melhorando.);
else
printf(Sem estudo difcil ser aprovado.);
Recuos no resolvem ambigidades
15
Exemplo:
Neste caso, as chaves, em vez de opcionais,
sero obrigatrias, pois apenas os recuos no
resolvem.
if (nota >= 9)
{
if (nota_anterior < nota)
printf(Voc est melhorando.);
}
else
printf(Sem estudo difcil ser aprovado.);
A importncia dos recuos
16
Dadas as idades
(tipo int) e os
pesos (tipo float)
de duas pessoas,
exibir quem a
pessoa mais
velha e a sua
idade e quem a
pessoa mais leve
e o seu peso,
usando funes.
Problema 8
17
Problema 8
Lembrar que, quando se
executa um programa,
executa-se a funo main.
18
Observe como o programa principal tornou-se
mais conciso e modularizado devido ao uso de
funes.
Observe a funo maiorValor:
int maiorValor(int idade1, int idade2)
{
if (idade1 > idade2)
return idade1;
else
return idade2;
}
Esta funo funciona
apenas para idades?
Esta funo poder
ser usada sempre que
for necessrio
determinar o maior de
dois valores inteiros.
Utilizao de funes
19
Assim, podemos reescrever a funo maiorValor
como:
onde x e y representam valores inteiros genricos.
Ateno!
Os nomes dos parmetros na definio da funo no
precisam ser iguais aos nomes dos parmetros durante o
uso da funo.
int maiorValor(int x, int y)
{
if (x > y)
return x;
else
return y;
}
Utilizao de funes
20
Como assim? Veja o exemplo abaixo:
x e y: parmetros de definio (ou formais)
a e b: parmetros de uso (ou reais).
int a, b, maior;
maior = maiorValor(a,b);
int maiorValor(int x, int y)
{
if (x > y)
return x;
else
return y;
}
4 12 a b
4 12 x y
No momento da chamada
de maiorValor, cpias de
a e b so feitas em x e y.
Utilizao de funes
21
Dado o valor da varivel N, determine a soma dos
nmeros inteiros de 1 a N.
Problema 9
22
Deseja-se calcular o valor de: 1 + 2 + 3 + ... + N.
Observao: no sabemos, a priori, quantos
termos sero somados, pois o valor de N
estabelecido dinamicamente.
Para se calcular esta soma, o programa p09.c
utiliza o comando while.
O comando while permite que um conjunto de
instrues seja executado tantas vezes quantas forem
necessrias, enquanto uma condio for verdadeira.
Comando while
23
Quando um programa executa um conjunto de
instrues repetidas vezes, diz-se que o programa
est realizando um processamento iterativo.
Cada execuo do conjunto de instrues
denomina-se uma iterao. Exemplo de uso do
comando while:
s = 0;
i = 1;
while (i <= 3)
{
s = s + i;
i++;
}
Instante s i (i <= 3)
inicial 0 1 V
1 Iterao 0 + 1 = 1 1 + 1 = 2 V
2 Iterao 1 + 2 = 3 2 + 1 = 3 V
3 Iterao 3 + 3 = 6 3 + 1 = 4 F
Comando while
24
A execuo do programa p09.c sempre ir
terminar, pois i ser maior do que N em algum
momento.
Porm, pode a execuo de um programa com
processamento iterativo no terminar? Observe:
s = 0;
i = 0;
while (i < 3)
{
i--;
s = s + i;
}
Este lao ou loop
nunca ir terminar!
(Erro de lgica)
s = 0;
i = 0;
while (i > -3)
{
i--;
s = s + i;
}
Maneira
correta
Comando while
25
Ateno!
Em alguns casos, o loop infinito pode ser
desejvel. Exemplo: um programa que monitora
um reator nuclear deve estar sempre em
execuo.
Neste caso, pode-se escrever:
while (1)
{
...
}
Comando while
26
Outra forma de repetir um conjunto de instrues
com o comando do-while.
Veja que no comando while, a condio testada
antes da execuo das instrues, ao contrrio do
comando do-while. O que acontece para N=0?
s = 0;
i = 1;
do
{
s = s + i;
i++;
}
while (i <= N);
Comando
do-while
s = 0;
i = 1;
while (i <= N)
{
s = s + i;
i++;
}
Comando
while
Comando do-while
27
Exerccios 6, 9 e 10. Pginas 55 e 56 do livro
texto.
Exerccios

Você também pode gostar