Escolar Documentos
Profissional Documentos
Cultura Documentos
7/8/2013 16:00:32
Process Black
ISBN 978-85-7528-510-7
Editorao: Roseli Menzen
Dados tcnicos do livro
Fontes: Palatino Linotype, Franklin Gothic Demi Cond
Papel: o set 75g (miolo) e supremo 240g (capa)
Medidas: 15x22cm
7/8/2013 16:00:54
Process Black
APRESENTAO
Prezado(a) aluno(a)
Seja bem-vindo(a) ao estudo da disciplina de Algoritmos e Programao I!
Esta disciplina introduz o aluno no universo da lgica de programao, de forma
que no final do semestre voc estar capacitado a construir algoritmos. Para isso,
vamos estudar conceitos bsicos como tipos de dados, variveis, constantes,
operadores e expresses, formas de representao de algoritmos e, por fim,
estruturas de controle sequencial, de seleo e de repetio. A disciplina tambm
prev uma introduo linguagem de programao C, possibilitando que voc
valide os algoritmos construdos durante o semestre.
Um algoritmo pode ser definido como uma sequncia de passos que visam atingir
um objetivo. Algoritmos so comuns no nosso cotidiano como, por exemplo, uma
receita de bolo. Nela temos uma lista de ingredientes e uma sequncia de passos que
devem ser seguidos para atingirmos o objetivo final: o bolo. Quando construmos
um algoritmo, devemos especificar aes claras e precisas, que a partir de um estado
inicial, aps um perodo de tempo finito, produzem um estado final previsvel e bem
definido. Isso significa que um algoritmo define um padro de comportamento a
ser seguido visando resolver um problema, garantindo que sempre que executado,
sob as mesmas condies, produza o mesmo resultado.
O principal objetivo do estudo da lgica de programao a construo de
algoritmos. Um algoritmo representa o raciocnio envolvido na lgica de
programao e, dessa forma, permite-nos abstrair detalhes computacionais
atrelados s linguagens de programao que podem ser acrescentados mais
tarde. Assim, podemos focar nossa ateno naquilo que importante: a lgica
da construo de algoritmos. Vale lembrar que: uma vez concebida uma soluo
algortmica para um problema, esta pode ser traduzida para qualquer linguagem
de programao (processo denominado codificao).
O livro texto desta disciplina est organizado em dez captulos, subdivididos
em sees, para facilitar sua leitura e compreenso e favorecer a realizao das
atividades propostas ao final de cada captulo.
7/8/2013 16:00:55
Process Black
4
S possvel aprender a construir algoritmos, construindo algoritmos! Portanto,
resolver os exerccios propostos no final de cada captulo fundamental para
desenvolver o raciocnio lgico e atingir o objetivo desta disciplina. A disciplina
possui contedos cumulativos, ou seja, no final do semestre ainda estaremos
utilizando conceitos estudados nas primeiras semanas de aula. Sendo assim,
importante organizar o estudo, resolver os problemas propostos periodicamente
e no deixar as dvidas para depois.
As referncias bibliogrficas sugerem obras de autores que fundamentam os
estudos realizados e oferecem a voc possibilidades de aprofundamento com
leituras complementares.
Um bom trabalho!
7/8/2013 16:00:55
Process Black
SOBRE O AUTOR
7/8/2013 16:00:55
Process Black
7/8/2013 16:00:55
Process Black
SUMRIO
INTRODUO ............................................................................................................9
1.1 Conceito de algoritmo..........................................................................................9
1.2 Construo do algoritmo ....................................................................................10
1.3 Formas de representao de algoritmos..............................................................11
1.4 Estrutura bsica de um algoritmo .......................................................................15
Atividades .............................................................................................................17
7/8/2013 16:00:55
Process Black
8
6
7/8/2013 16:00:56
Process Black
INTRODUO
7/8/2013 16:00:56
Process Black
10
4
Se voc seguir estes passos, ao final, voc provavelmente ter um caf passado.
O que pode ser observado que alguns destes passos podem ser alterados em
sua ordem. Por exemplo, se reservarmos os ingredientes antes dos utenslios, no
teremos alterao no produto final. Porm, se colocssemos a gua no filtro com
caf antes de aquec-la, o resultado seria indesejado.
Um algoritmo computacional pode ser definido como uma sequncia lgica
de instrues ou comandos, que devem ser seguidas para se obter a soluo de
um problema. Da mesma forma que um algoritmo do dia a dia, deve seguir
uma sequncia de passos lgicos, que devem ser ordenados de forma clara para
solucionar o problema.
7/8/2013 16:00:56
Process Black
Por exemplo, se desejamos fazer um algoritmo para fazer a soma de dois nmeros
quaisquer, podemos neste caso identificar:
11
Sempre que formos construir um algoritmo, devemos nos concentrar nestes trs
elementos, eles sempre estaro envolvidos. Porm, nem sempre estaro nesta
ordem, podendo variar de algoritmo para algoritmo.
7/8/2013 16:00:56
Process Black
12
Exemplo 1.1. Faa um algoritmo que calcule e escreva a mdia final de um aluno
considerando duas notas; emita a mensagem Aluno aprovado ou Aluno
reprovado. Observao: um aluno considerado aprovado se obtiver nota final
maior ou igual a 6.
algoritmo exemplo_11
variveis
nota1, nota2, media: real
incio
escrever (Informe a 1 nota do aluno = )
ler (nota1)
escrever (Informe a 2 nota do aluno = )
ler (nota2)
media
(nota1 + nota2) / 2
1.3.2 Fluxograma
O fluxograma, tambm chamado de diagrama de blocos, uma representao de
algoritmo que utiliza smbolos geomtricos para representar as aes (comandos
ou instrues) a serem seguidas. Assim como portugus estruturado, utilizado
para organizar o raciocnio lgico do problema antes de implement-lo em uma
linguagem de programao. Os smbolos utilizados para representar estas aes
so apresentados na Tabela 1.1.
7/8/2013 16:00:56
Process Black
Nome
Descrio
Terminal
Entrada de dados
Processamento
Sada de dados
Desvio condicional
Conector
13
7/8/2013 16:00:56
Process Black
14
7/8/2013 16:00:57
Process Black
mais trabalhoso fazer desenhos do que escrever texto. O algoritimo do exemplo 1.1
representado atravs de um diagrama de Chapin pode ser visto a seguir.
incio
ler nota1, nota2
media
(nota1 + nota2) / 2
media >= 6
resultado
Aprovado
15
resultado
Reprovado
3 ovos
1 colher de fermento em p
7/8/2013 16:00:58
Process Black
16
1 pitada de sal
1.
Bata os ovos com o acar, o leo, o achocolatado e a farinha, depois adicione a gua
quente e por ltimo o fermento em p.
2.
Se observarmos com ateno, veremos que esta receita possui uma estrutura
bsica: nome da receita, ingredientes e modo de preparo. Podemos verificar que
esta estrutura facilita a localizao da receita, permite verificar se possumos todos
os ingredientes, antes de comear o preparo.
Um algoritmo, representado em portugus estruturado, possui uma estrutura
bastante semelhante a uma receita, organizada em trs partes: identificao do
algoritmo, declarao de constantes e/ou variveis e o corpo do algoritmo. Observe
o exemplo 1.1, reproduzido novamente a seguir.
Algoritmo exemplo_11
Identificador do algoritmo
variveis
nota1, nota2, media: real
Declarao de variveis
incio
escrever ("Informe a 1 nota do aluno = ")
ler (nota1)
escrever ("Informe a 2 nota do aluno = ")
ler (nota2)
media (nota1 + nota2) / 2
se (media >= 6) ento
escrever ("Mdia final = ", media, "Aluno aprovado")
seno
escrever ("Mdia final = ",media, "Aluno reprovado")
fim
Corpo do algoritmo
Glossrio
7/8/2013 16:00:58
Process Black
17
Referncias
ASCENCIO, A. F. G.; CAMPOS, E. A. V.. Fundamentos da Programao de Computadores:
algoritmos, Pascal, C/C++ (padro ANSI) e Java. 3.ed. So Paulo: Pearson Education do
Brasil, 2012.
BERG, A. C.; FIGUEIR, J. P.. Lgica de Programao. 2.ed. Canoas: Ed. ULBRA, 2001.
FORBELLONE, A. L. V.; EBERSPCHER, H. F.. Lgica de Programao: a construo de
algoritmos e estruturas de dados. 3.ed. So Paulo: Pearson/Prentice Hall, 2005.
GOODRICH, M. T.; TAMASSIA, R.. Projeto de Algoritmos. Porto Alegre: Bookman, 2004.
MIZRAHI, V. V.. Treinamento em Linguagem C. 2.ed. So Paulo: Pearson/Prentice Hall, 2008.
PUGA, S.; RISSETTI, G.. Lgica de Programao e Estruturas de Dados. So Paulo: Pearson/
Prentice Hall, 2003.
Atividades
1.
a.
b.
7/8/2013 16:00:58
Process Black
18
c.
d.
e.
Resposta:
Encha o balde de 5 litros e despeje a gua no balde de 3 litros, enchendo-o.
Agora, restaram 2 litros no balde de 5 litros. Jogue fora a gua do balde de 3
litros e coloque nele os 2 litros que estavam no balde de 5 litros. A seguir, encha
o balde de 5 litros novamente e pronto! No balde de 3 litros esto, agora, 2
litros de gua, enquanto o balde de 5 litros est cheio, totalizando 7 litros!
7/8/2013 16:00:59
Process Black
CONCEITOS FUNDAMENTAIS
2.1 Dados
O objetivo da maioria dos algoritmos manipular dados, transformando os dados
de entrada em dados de sada (resultados). Um dado um atributo que descreve
entidades ou caractersticas, por exemplo: o nome de uma pessoa, sua idade, seu
peso ou o nmero de pginas de um livro.
Quando vamos desenvolver um algoritmo, precisamos previamente identificar o
tipo do dado que est sendo manipulado. Isso necessrio, pois, quando formos
converter o algoritmo para uma linguagem de programao, os dados sero
armazenados na memria principal do computador e um espao de memria
especfico (tamanho) deve ser reservado a cada tipo de dado. Os principais tipos
de dados so: inteiro, real, caractere, cadeia e lgico.
7/8/2013 16:00:59
Process Black
20
de alunos em uma turma (alunos = 24); idade de uma pessoa (anos = 25); o ano
(ano = 2013); outros.
Real: os dados do tipo real pertencem ao conjunto dos nmeros reais. Portanto,
podem ter componentes decimais ou fracionrios e ser positivos, nulos ou
negativos. Exemplos: o salrio de uma pessoa (salrio = 3.450,34); a temperatura
(temperatura = 12); a altura de um prdio (altura = 120,50); outros.
2.2 Variveis
Uma varivel pode ser definida como um local, na memria principal, utilizado
para armazenar o contedo de um determinado dado, podendo receber muitos
valores diferentes durante a execuo do algoritmo, mas em um dado instante ela
s pode apresentar um valor nico.
O conceito de varivel foi criado para permitir, que atravs do nome (identificador),
os algoritmos possam armazenar, localizar e manipular as informaes na
memria dos computadores. So, portanto, formadas por trs atributos: um nome
(identificador), um tipo de dado, e um valor.
Toda varivel possui um nome nico que a diferencia das demais. A escolha do
nome de uma varivel cabe ao programador, porm algumas regras devem ser
observadas. So elas:
7/8/2013 16:00:59
Process Black
21
Salario : correto;
ANO1 : correto;
SAL_HORA : correto;
Uma considerao importante quanto ao nome das variveis que este deve ser
um nome representativo, de forma que ao ler o nome da varivel seja possvel
lembrar o que ela armazena.
7/8/2013 16:00:59
Process Black
22
2.3 Constantes
Ao contrrio das variveis, o contedo armazenado em uma constante no
alterado durante a execuo de um algoritmo.
2.4 Expresses
Operadores so elementos fundamentais que, quando relacionados com operandos,
produzem uma expresso. Por exemplo, a expresso 3 + 2 relaciona dois operandos
(os nmeros 3 e 2) por meio do operador (+) que representa a operao de adio.
Os operandos dividem-se em aritmticos, relacionais e lgicos. Esta diviso est
diretamente relacionada com o tipo de expresso onde aparecem os operadores.
Operao
Prioridade
Exemplo
**
Exponenciao
3 ** 2 = 9
//
Radiciao
25 // 2 = 5
Multiplicao
7 * 2 = 14
Diviso
20 / 4 = 5
div
20 div 6 = 3
mod
20 mod 6 = 2
Adio
3 + 8 = 11
Subtrao
30 12 = 18
7/8/2013 16:00:59
Process Black
Como pode ser observado, nos algoritmos podemos utilizar trs operadores
relacionados diviso, so eles: /, div e mod. Vamos entender qual a diferena de
cada um deles, relembrando alguns conceitos:
14 4
-12 3,5
quociente
20
- 20
0
resto da diviso
23
20 / 3 = 6,666...
20 div 3 = 6
20 mod 3 = 2
105 / 10 = 10,5
105 div 10 = 10
105 mod 10 = 5
32 / 6 = 5, 333...
32 div 6 = 5
32 mod 6 = 2
2+3*2=
5*2=
2+6=
10
Temos que ter um cuidado especial quando convertemos uma expresso matemtica
para utiliz-la em um algoritmo. Considere a expresso a seguir.
3+5
2
7/8/2013 16:00:59
Process Black
24
Podemos observar que o resultado desta expresso 4, pois primeiro somamos 3
e 5 e depois dividimos por 2. Quando convertemos a expresso para utilizarmos
em um algoritmo, temos que ter cuidado com a prioridade dos operadores, um
programador desatento poderia muito bem, converter a expresso matemtica para
3 + 5 / 2. Observe que agora o resultado 5,5 diferente da expresso original, pois
o operador prioritrio a diviso e no a soma, ou seja, primeiro iramos dividir
5 por 2, para somente depois somarmos a 3. Quando convertemos uma expresso
matemtica, para utilizarmos nos algoritmos, normalmente, teremos que adicionar
parnteses para determinar a prioridade de execuo. A converso correta para
expresso (3 + 5) / 2.
Comparao
Exemplo
Igual
3=2
Diferente
10 <> 20
<
Menor
4 < 18
>
Maior
10 > 20
<=
Menor ou igual
4 <= 7
verdadeiro
>=
Maior um igual
7 >= 7
verdadeiro
<>
falso
verdadeiro
verdadeiro
falso
7/8/2013 16:00:59
Process Black
25
Operador
Operao
Prioridade
Exemplo
NO
Negao
no(2>7)
Conjuno
(2=2) e (3<7)
OU
Disjuno
(2<5) ou (9<20)
no(F)
(V) e (V)
(F) ou (V)
No A
No B
AeB
A ou B
7/8/2013 16:01:00
Process Black
26
Referncias
ASCENCIO, A. F. G.; CAMPOS, E. A. V.. Fundamentos da Programao de Computadores:
algoritmos, Pascal, C/C++ (padro ANSI) e Java. 3.ed. So Paulo: Pearson Education do
Brasil, 2012.
BERG, A. C.; FIGUEIR, J. P.. Lgica de Programao. 2.ed. Canoas: Ed. ULBRA, 2001.
FORBELLONE, A. L. V.; EBERSPCHER, H. F.. Lgica de Programao: a construo de
algoritmos e estruturas de dados. 3.ed. So Paulo: Pearson/Prentice Hall, 2005.
GOODRICH, M. T.; TAMASSIA, R.. Projeto de Algoritmos. Porto Alegre: Bookman, 2004.
MIZRAHI, V. V.. Treinamento em Linguagem C. 2.ed. So Paulo: Pearson/Prentice Hall, 2008.
PUGA, S.; RISSETTI, G.. Lgica de Programao e Estruturas de Dados. So Paulo: Pearson/
Prentice Hall, 2003.
Atividades
1)
2)
3)
b) ( ) endereo
c) ( ) 3x4
d) ( ) soma
e) ( ) salrio_lquido
f) ( ) a
g) ( ) nomedaempresa
h) ( ) ah!
i) ( ) salario total
j) ( ) mdia
k) ( ) x2
l) ( ) data
c) ( ) preo de um produto
e) ( ) um dia do ms
f) ( ) o cdigo de um produto
4)
b) ( ) x + y //3;
c) ( ) (x + y) // 3;
d) ( ) 3 // x+y.
b) 2,6;
c) 14;
d) 9,8;
e) 9.
7/8/2013 16:01:00
Process Black
5)
b) ( ) no (V e V)
c) ( ) (V ou F ) e V
Gabarito:
1.
2.
a) C;
3.
4.
5.
a) V;
b) R;
c) R;
d) I;
b) F;
c) V;
d) V
e) I;
d) ( ) no F e no F
27
f) C
7/8/2013 16:01:01
Process Black
28
7/8/2013 16:01:02
Process Black
INSTRUES PRIMITIVAS
Vanessa Lindemann
<expresso>
<varivel>
<varivel>
<varivel>
<constante>
, apresentada
7/8/2013 16:01:02
Process Black
30
Quadro 3.1 Exemplos da instruo primitiva de atribuio
Declarao de variveis
x, y: lgico
codigo, qtde: inteiro
desconto, total: real
nome, telefone: cadeia
resposta1: caractere
resposta2: caractere
verdadeiro
02 y
03 codigo
04 qtde
2089
3
05 total
qtde * 5
06 desconto
07 nome
total * 0.1
"Ana Lu"
08 telefone
"(99)3333-0123"
09 resposta1
"S"
10 resposta2
resposta1
7/8/2013 16:01:02
Process Black
31
Declarao de variveis
op1, op2: inteiro
r1, r2, r3: real
r4, r5: inteiro
10
2
op1 / op2
04 r2
18 / 4
05 r3
25 // 2
06 r4
8 mod 3
07 r5
op1 div 3
8 mod 3
r5
op1 div 3
10 3
-9 3
resto da diviso
quociente inteiro
Por fim, vale lembrar que uma sequncia de atribuies modifica o contedo da
varivel armazenada na memria, como ilustra o exemplo do Quadro 3.4.
Quadro 3.4 Exemplo de uma sequncia de atribuies
Comandos de atribuio
01
10
02
x + 1
03
20
Memria
x
10
11
20
7/8/2013 16:01:02
Process Black
32
No exemplo 01 do Quadro 3.4 a varivel x inicializada com o valor 10 e,
consequentemente, a representao da varivel x na memria armazenava 10; em
seguida, atribudo varivel x o valor resultante da expresso x + 1, que 11,
substituindo o valor anterior na memria; finalmente, no exemplo 03, a varivel
x recebe o valor 20, que substituiu o valor anterior na memria como ilustra o
Quadro 3.4.
O Quadro 3.5 apresenta um algoritmo que exemplifica o uso da instruo
primitiva de atribuio. Este algoritmo tem por objetivo calcular a mdia final
de um aluno, considerando duas notas. Para isso, foram realizadas as seguintes
atribuies: a varivel nota1 recebe 7, a varivel nota2 recebe 9 e o resultado
da expresso que calcula a mdia, (nota1+nota2)/2, armazenado na
varivel media.
Quadro 3.5 Exemplo da aplicao do comando de atribuio
Exemplo 3.1 - Calcula a mdia de um aluno, considerando duas notas.
01
02
03
04
algoritmo exemplo31
variveis
nota1, nota2, media: real
incio
05
nota1
06
nota2
07
08
media
fim
(nota1 + nota2) / 2
7/8/2013 16:01:02
Process Black
de sada pode ser uma nica varivel, uma lista de variveis, um literal ou uma
mistura de ambos.
escrever(<varivel>)
escrever(<lista de variveis>)
escrever(<literal>)
33
escrever(<literal>,<varivel>)
Quadro 3.6 Exemplos da sintaxe do comando de sada
Variveis
media: real
nome: cadeia
escrever(media)
escrever("Digite o nome do aluno: ")
escrever("Mdia final = ",media)
escrever(nome," obteve mdia final = ",media)
algoritmo exemplo32
variveis
nota1, nota2, media: real
incio
05
nota1
06
nota2
07
08
09
media
(nota1 + nota2) / 2
escrever ("Mdia do aluno = ", media)
fim
7/8/2013 16:01:02
Process Black
34
7/8/2013 16:01:03
Process Black
35
algoritmo exemplo33
variveis
nota1, nota2, media: real
incio
escrever("Digite a primeira nota: ")
ler(nota1)
escrever("Digite a segunda nota: ")
ler(nota2)
media
(nota1 + nota2) / 2
escrever ("Mdia do aluno = ", media)
fim
Referncias
ASCENCIO, A. F. G.; CAMPOS, E. A. V.. Fundamentos da Programao de Computadores:
algoritmos, Pascal, C/C++ (padro ANSI) e Java. 3.ed. So Paulo: Pearson Education do
Brasil, 2012.
BERG, A. C.; FIGUEIR, J. P.. Lgica de Programao. 2.ed. Canoas: Ed. ULBRA, 2001.
FORBELLONE, A. L. V.; EBERSPCHER, H. F.. Lgica de Programao: a construo de
algoritmos e estruturas de dados. 3.ed. So Paulo: Pearson/Prentice Hall, 2005.
GOODRICH, M. T.; TAMASSIA, R.. Projeto de Algoritmos. Porto Alegre: Bookman, 2004.
MIZRAHI, V. V.. Treinamento em Linguagem C. 2.ed. So Paulo: Pearson/Prentice Hall, 2008.
PUGA, S.; RISSETTI, G.. Lgica de Programao e Estruturas de Dados. So Paulo: Pearson/
Prentice Hall, 2003.
7/8/2013 16:01:03
Process Black
36
Atividades
1)
2)
(b)
(c)
(d)
(e)
(II)
(III)
Apenas I e II
(b)
Apenas II.
(c)
Apenas I e III.
(d)
I, II e III.
(e)
7/8/2013 16:01:03
Process Black
3)
37
a, b, c: inteiro
total, preco, resto: real
teste, ag: lgico
(a)
(b)
(c)
(d)
(e)
4)
(
(
(
(
(
)
)
)
)
)
resp "sim"
b / 5
a
"verdadeiro"
teste
"Roberto"
nome
b + 1
b
(f)
(g)
(h)
(i)
(j)
(
(
(
(
(
)
)
)
)
)
resto mod 5
total
a
b + c
preco
qtde * 5.00
ag
teste
preco
total - c
10
Solano S
7/8/2013 16:01:03
Process Black
38
5)
a mod b
teste
"S"
500 * 0.1
desconto
x
50
10
x / y
(a) variveis
a, b, x, y: inteiro
c, desconto, z: real
teste: caractere
(b)
variveis
teste: caractere
a, b, c, x, y: inteiro
desconto, z: real
(c)
variveis
teste: cadeia
a, b, c, x, y: inteiro
desconto, z: real
(d)
variveis
teste: caractere
a, b, x, y: inteiro
c, desconto, z: real
(e)
Respostas
1) a = F;
b = V;
c = F;
d = V;
e = V.
2) c.
3) a, b, c, f, h.
4) c.
5) b
7/8/2013 16:01:04
Process Black
ESTRUTURA SEQUENCIAL
Vanessa Lindemann
algoritmo <nome>
variveis
<lista de variveis>: <tipo>
incio
<instruo 1>
<instruo 2>
<instruo n>
fim
7/8/2013 16:01:04
Process Black
40
Como pode ser observado na estrutura apresentada no Quadro 4.1, o fluxo de
execuo de um algoritmo sequencial linear.
01
02
03
04
05
06
07
08
09
10
11
algoritmo exemplo33
variveis
nota1, nota2, media: real
incio
escrever("Digite a primeira nota: ")
ler(nota1)
escrever("Digite a segunda nota: ")
ler(nota2)
media
(nota1 + nota2) / 2
escrever ("Mdia do aluno = ", media)
m
7/8/2013 16:01:04
Process Black
41
7/8/2013 16:01:04
Process Black
42
media
Processamento
Sada
Calcular a mdia
Mdia do aluno
media
(nota1+nota2)/2
Processamento
Sada
nome
ht
vh
sb ht*vh
Calcular INSS
inss sb*0.08
Calcular salrio lquido
nome
sb
inss
sl
sl sb-inss
7/8/2013 16:01:04
Process Black
43
algoritmo exemplo41
variveis
nome: cadeia
ht: inteiro
vh,sb,inss,sl: real
incio
escrever("Nome do funcionrio: ")
ler(nome)
escrever("Quantidade de horas trabalhadas: ")
ler(ht)
escrever("Valor da hora: ")
ler(vh)
13
sb
14
inss
15
16
17
18
19
20
ht * vh
sb * 0.08
sl
sb
escrever
escrever
escrever
escrever
fim
- inss
("Funcionrio: ", nome)
("Salrio bruto: R$", sb)
("INSS: R$", inss)
("Salrio lquido: R$", sl)
O algoritmo inicia com a definio de um identificador (linha 01), que deve seguir
as mesmas regras usadas para definir nomes de variveis - como no permitido o
uso de espao em branco e caracteres especiais, o exemplo 4.1 identificado como
exemplo41. Entre as linhas 02 e 05, consta a declarao de variveis: o nome do
funcionrio do tipo cadeia, a quantidade de horas trabalhadas foi declarada do
7/8/2013 16:01:05
Process Black
44
tipo inteiro e as demais variveis so do tipo real (valor da hora, salrio bruto, inss
e salrio lquido). O corpo do algoritmo est entre as linhas 06 e 20, onde esto
organizados os elementos bsicos de entrada/processamento/sada do esquema
apresentado na Figura 4.3. Os comandos que representam a entrada de dados
esto entre as linhas 07 e 12 - antes de cada instruo primitiva de entrada (linhas
08, 10 e 12), e ser emitida uma mensagem para o usurio, indicando os dados a
serem digitados (linhas 07, 09 e 11). Os clculos do processamento aparecem entre
as linhas 13 e 15, cujos resultados sero escritos entre as linhas 16 e 19 - comandos
que representam a sada de dados.
Exemplo 4.2
Descrio do problema: sabe-se que na cidade X o ndice de natalidade anual
30% maior do que na cidade Y. Construa um algoritmo que, a partir do ndice de
natalidade anual da cidade Y, calcule e escreva o valor estimado da natalidade
anual na cidade X.
O esquema da Figura 4.4 contm os elementos bsicos para a construo da soluo
deste problema.
Figura 4.4 Elementos bsicos para construo do algoritmo do exemplo 4.2
Entrada
Processamento
Sada
ndice de
natalidade anual
da cidade Y
Calcular o ndice de
natalidade da cidade X,
que 30% superior ao da
cidade Y
ndice de
natalidade anual
da cidade X
x
x
y*1.3
7/8/2013 16:01:05
Process Black
45
algoritmo exemplo42
variveis
x, y: real
incio
escrever("ndice de natalidade da cidade Y: ")
ler(y)
07
08
09
x
y * 1.3
escrever ("ndice de natalidade da cidade X: ", x)
fim
Exemplo 4.3
Descrio do problema: faa um algoritmo que converta uma temperatura de graus
Centgrados para graus Fahrenheit. A frmula de converso F=(9*C+160)/5, onde
F a temperatura em Fahrenheit e C a temperatura em Centgrados.
Os dados de entrada e sada, bem como o processamento necessrio para resolver
o problema, podem ser observados na Figura 4.5. A partir destes dados, chega-se
soluo para o problema, apresentada em portugus estruturado no Quadro 4.5.
Figura 4.5 Elementos bsicos para construo do algoritmo do exemplo 4.3
Entrada
Processamento
Sada
Temperatura em
graus Centgrados
Converter a temperatura
de graus Centgrados para
Fahrenheit
Temperatura em
graus Fahrenheit
F
C
F
(9*C+160)/5
algoritmo exemplo43
variveis
C, F: real
incio
escrever("Temperatura em graus Centgrados: ")
ler(C)
07
08
09
F
(9*C+160)/5
escrever ("Temperatura em graus Fahrenheit: ", F)
fim
7/8/2013 16:01:05
Process Black
46
Processamento
Sada
Base e altura
rea do tringulo
area
(b*h)/2
area
algoritmo exemplo44
variveis
b, h, area: real
incio
escrever("Base: ")
ler(b)
escrever("Altura: ")
ler(h)
09
10
11
area
(b*h)/2
escrever ("rea = ", area)
fim
7/8/2013 16:01:05
Process Black
Para testar a soluo apresentada, preciso definir valores para os dados de entrada.
Neste caso, a base e a altura do tringulo (no teste apresentado a seguir definiu-se
b = 12 e h = 5, que resultar em uma rea de 30). Em seguida, necessrio montar a
tabela onde devem constar todas as variveis utilizadas na soluo e o registro dos
valores assumidos por elas na simulao da execuo do algoritmo. Esta etapa do
teste pode ser observada no Quadro 4.7. esquerda, aparecem os valores definidos
como dados de entrada; no centro, a tabela do teste de mesa que ser preenchida
durante a simulao de execuo do algoritmo; e direita, um espao onde ser
registrada a sada do algoritmo.
47
Teste de mesa
b = 12
h=5
linha
Sada
variveis
b
area
Feito isto, a simulao de execuo deve ser iniciada, passando linha a linha do
algoritmo e registrando os valores assumidos pelas variveis. Na linha 05 do
algoritmo (Quadro 4.6), primeira instruo a ser executada, ser emitida uma
mensagem ao usurio para que ele informe a base do tringulo. Esta instruo no
altera o valor de nenhuma das variveis, portanto, no gera registro na tabela do
teste de mesa. Na linha 06 (Quadro 4.6), o valor digitado pelo usurio ser lido e
armazenado na varivel b, gerando um registro no teste de mesa, conforme ilustra
o Quadro 4.8. Este registro contm o nmero da linha da instruo executada no
algoritmo e o valor de entrada da varivel b, definido como 12 neste teste.
Quadro 4.8 Teste de mesa do exemplo 4.4 etapa 2, passo 1
Exemplo 4.4 - Clculo da rea de um tringulo.
Entrada
Teste de mesa
b = 12
h=5
Sada
variveis
linha
06
area
12
7/8/2013 16:01:06
Process Black
48
Na linha 07 (Quadro 4.6), uma mensagem ser emitida ao usurio solicitando que
ele digite a altura do tringulo, valor que ser lido e armazenado na varivel h
(linha 08 - Quadro 4.6), gerando um novo registro na tabela do teste de mesa, que
pode ser observado no Quadro 4.9.
Quadro 4.9 Teste de mesa do exemplo 4.4 etapa 2, passo 2
Exemplo 4.4 - Clculo da rea de um tringulo.
Entrada
Teste de mesa
b = 12
h =5
linha
06
Sada
variveis
b
area
12
08
Teste de mesa
b = 12
h=5
linha
06
08
09
Sada
variveis
b
area
12
5
30
Por fim, na linha 10 (Quadro 4.6), consta a instruo primitiva de sada que ir
exibir ao usurio o valor da rea do tringulo, calculado no algoritmo. O Quadro
4.11 apresenta, direita, a sada do algoritmo.
7/8/2013 16:01:06
Process Black
49
Teste de mesa
variveis
linha
06
Sada
area
rea = 30
12
08
09
30
Exemplo 4.5
Descrio do problema: escreva um algoritmo para calcular a quantidade de
combustvel necessria para um automvel percorrer determinada distncia.
Considerar um consumo mdio de um litro de combustvel para cada 12 km
rodados.
Para calcular a quantidade de combustvel necessria para um automvel percorrer
uma distncia qualquer, necessrio saber a distncia a ser percorrida e o consumo
mdio do veculo. No enunciado do problema, consta apenas o consumo mdio do
veculo. Portanto, a distncia a ser percorrida dever ser informada pelo usurio.
A Figura 4.7 apresenta os elementos bsicos para a construo deste algoritmo.
Figura 4.7 Elementos bsicos para construo do algoritmo do exemplo 4.5
Entrada
Processamento
Sada
Distncia a ser
percorrida
Calcular a quantidade de
combustvel
Quantidade de
combustvel
distancia
litros
distancia/12
litros
7/8/2013 16:01:06
Process Black
50
Quadro 4.12 Soluo do exemplo 4.5 em portugus estruturado
Exemplo 4.4 - Clculo da rea de um tringulo.
01
02
03
04
05
06
algoritmo exemplo45
variveis
distancia, litros: real
incio
escrever("Informe a distncia a ser percorrida: ")
ler(distancia)
07
08
09
litros
distancia/12
escrever ("Sero necessrios ",litros," de combustvel.")
fim
Teste de mesa
distancia = 200
linha
Sada
variveis
distncia
litros
7/8/2013 16:01:06
Process Black
51
Teste de mesa
linha
06
Sada
variveis
distncia
litros
200
Teste de mesa
distancia = 200
linha
06
07
Sada
variveis
distncia
litros
200
16,7
Referncias
ASCENCIO, A. F. G.; CAMPOS, E. A. V.. Fundamentos da Programao de Computadores: algoritmos,
Pascal, C/C++ (padro ANSI) e Java. 3.ed. So Paulo: Pearson Education do Brasil, 2012.
BERG, A. C.; FIGUEIR, J. P.. Lgica de Programao. 2.ed. Canoas: Ed. ULBRA, 2001.
FORBELLONE, A. L. V.; EBERSPCHER, H. F.. Lgica de Programao: a construo de
algoritmos e estruturas de dados. 3.ed. So Paulo: Pearson/Prentice Hall, 2005.
GOODRICH, M. T.; TAMASSIA, R.. Projeto de Algoritmos. Porto Alegre: Bookman, 2004.
MIZRAHI, V. V.. Treinamento em Linguagem C. 2.ed. So Paulo: Pearson/Prentice Hall, 2008.
PUGA, S.; RISSETTI, G.. Lgica de Programao e Estruturas de Dados. So Paulo: Pearson/
Prentice Hall, 2003.
7/8/2013 16:01:06
Process Black
52
Atividades
Para cada um dos exerccios a seguir, monte o esquema com os elementos
bsicos (entrada / processamento / sada), construa o algoritmo com a soluo
para o problema e, por m, realize o teste de mesa, para assegurar que a resposta
esteja correta.
(1)
(2)
(3)
(4)
Sabe-se que
1 p = 12 polegadas;
1 jarda = 3 ps;
1 milha = 1760 jardas.
Faa um algoritmo que receba uma medida em ps, faa as converses
conforme a descrio acima e mostre os resultados em polegadas,
jardas e milhas.
(5)
7/8/2013 16:01:07
Process Black
Vanessa Lindemann
7/8/2013 16:01:07
Process Black
54
Quadro 5.1 Exemplos da sintaxe da estrutura condicional SE simples
Com instruo nica Com bloco de instrues
se(a>b)ento
escrever(a)
se(a>b)ento
incio
a
a-b
escrever(a)
fim
a
a/b
escrever(a)
fim
algoritmo exemplo51
variveis
nota1, nota2, media: real
incio
escrever("Digite a primeira nota: ")
ler(nota1)
escrever("Digite a segunda nota: ")
ler(nota2)
09
10
11
12
13
media
(nota1 + nota2) / 2
escrever ("Mdia do aluno = ", media)
se(media>=6)ento
escrever("Aluno aprovado!")
fim
7/8/2013 16:01:07
Process Black
55
algoritmo exemplo52
variveis
nota1, nota2, media: real
incio
escrever("Digite a primeira nota: ")
ler(nota1)
escrever("Digite a segunda nota: ")
ler(nota2)
09
10
11
12
13
14
15
media
(nota1 + nota2) / 2
escrever("Mdia do aluno = ", media)
se(media>=6)ento
escrever("Aluno aprovado!")
seno
escrever("Aluno reprovado!")
fim
7/8/2013 16:01:07
Process Black
56
As instrues das linhas 13 e 14 foram acrescentadas soluo anterior. Desta forma,
quando a condio (media>=6) for verdadeira, a mensagem Aluno aprovado!
ser exibida; e quando a condio resultar falso, o algoritmo emitir a mensagem
Aluno reprovado.
Na sequncia, mais um problema ser resolvido para exemplificar a aplicao da
estrutura SE composta e destacar a necessidade da estrutura SE encadeada.
Exemplo 5.3
Descrio do problema: escreva um algoritmo que verifique se um valor qualquer
digitado pelo usurio positivo ou negativo.
Figura 5.1 Elementos bsicos para construo do algoritmo do exemplo 5.3
Entrada
Processamento
Sada
valor
Imprimir uma
das mensagens:
se(valor<0)ento
escrever("Negativo")
seno
escrever("Positivo")
Negativo
ou
Positivo
algoritmo exemplo53
variveis
valor: real
incio
escrever("Informe um valor qualquer: ")
ler(valor)
se(valor<0)ento
escrever("Negativo")
seno
escrever("Positivo")
fim
Antes de iniciar o teste de mesa, vale lembrar que a escolha dos dados de testes
muito importante na simulao. Os dados escolhidos devem garantir a execuo
7/8/2013 16:01:07
Process Black
57
Teste de mesa
valor = 80
linha
Sada
variveis
valor
Teste de mesa
variveis
linha
valor
valor = 80
06
Sada
Negativo
- 80
7/8/2013 16:01:08
Process Black
58
tambm coincide com o resultado esperado. Os dados deste teste podem ser
observados no Quadro 5.7.
Quadro 5.7 Teste de mesa do exemplo 5.3 com valor positivo
Exemplo 5.3 - Verifica se um valor negativo ou positivo.
Entrada
Teste de mesa
valor = 22
linha
06
variveis
Sada
Positivo
valor
22
7/8/2013 16:01:08
Process Black
59
algoritmo exemplo53
variveis
valor: real
incio
escrever("Informe um valor qualquer: ")
ler(valor)
se(valor<0)ento
escrever("Negativo")
seno
se(valor>0)ento
escrever("Positivo")
seno
escrever("Zero neutro")
fim
Para testar todas as possibilidades de sada desta soluo, o teste de mesa deve ser
realizado considerando trs valores: um positivo, um negativo e o zero.
Exemplo 5.4
Descrio do problema: escreva um algoritmo para encontrar o maior entre dois
valores quaisquer digitados pelo usurio.
Figura 5.2 Elementos bsicos para construo do algoritmo do exemplo 5.3
Entrada
Processamento
Sada
valor1
valor2
maior
ou mensagem:
valores iguais
O algoritmo do Quadro 5.9 foi construdo a partir dos dados do esquema da Figura
5.2. Em seguida, apresenta-se o teste de mesa realizado (Quadros 5.5 e 5.6).
7/8/2013 16:01:08
Process Black
60
Quadro 5.9 Soluo do exemplo 5.4
Exemplo 5.4 - Encontra o maior entre dois valores quaisquer.
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
algoritmo exemplo54
variveis
valor1,valor2:real
incio
escrever("Informe o primeiro valor: ")
ler(valor1)
escrever("Informe o segundo valor: ")
ler(valor2)
se(valor1>valor2)ento
escrever("Maior = ", valor1)
seno
se(valor2>valor1)ento
escrever("Maior = ", valor2)
seno
escrever("Valores iguais!")
fim
Neste exemplo, trs possibilidades devem ser testadas: valor1 maior; valor2
maior; valor1 e valor2 iguais.
No teste realizado, descrito a seguir, definiu-se como dados de entrada 8 e 5.
Assim, o resultado esperado Maior = 8. O Quadro 5.10 apresenta a primeira
etapa do teste de mesa, que consiste em montar o esquema para registrar os valores
assumidos pelas variveis durante a simulao da execuo do algoritmo.
Quadro 5.10 Teste de mesa do exemplo 5.4 etapa 1
Exemplo 5.4 - Encontra o maior entre dois valores quaisquer.
Entrada
valor1 = 8
valor2 = 5
Teste de mesa
linha
Sada
variveis
valor1
valor2
7/8/2013 16:01:08
Process Black
61
Teste de mesa
linha
06
Sada
variveis
valor1
valor2
Teste de mesa
linha
06
08
Sada
Maior = 8
variveis
valor1
valor2
8
5
Exemplo 5.5
Descrio do problema: tendo como dados de entrada a altura e o gnero de uma
pessoa, escreva um algoritmo para calcular seu peso ideal, utilizando as seguintes
frmulas: para homens (72,7 x altura) 58; para mulheres (62,1 x altura) 44.7.
7/8/2013 16:01:08
Process Black
62
Quadro 5.13 Soluo do exemplo 5.5
Exemplo 5.5 - Calcula o peso ideal de uma pessoa.
01
02
03
04
05
06
07
08
09
10
11
12
13
algoritmo exemplo55
variveis
genero: caractere
altura, peso_ideal: real
incio
escrever("Qual o seu gnero(M ou F)? ")
ler(genero)
escrever("Qual a sua altura? ")
ler(altura)
se(genero="M")ento
peso_ideal
(72.7*altura)-58
seno
se(genero="F")ento
14
15
16
17
18
19
20
21
peso_ideal
seno
incio
(62.1*altura)-44.7
peso_ideal
0
escrever("Gnero invlido.")
fim
escrever("Peso ideal = ", peso_ideal)
fim
Exemplo 5.6
Descrio do problema: leia um valor inteiro e verifique se ele par ou mpar.
7/8/2013 16:01:09
Process Black
63
algoritmo exemplo56
variveis
valor: inteiro
incio
escrever("Digite um valor inteiro: ")
ler(valor)
se(valor mod 2 = 0)ento
escrever(valor, " par.")
seno
escrever(valor, " mpar.")
fim
Neste caso, a varivel valor deve ser do tipo inteiro para ser utilizada com o
operador mod, que retorna o resto de uma diviso.
Exemplo 5.7
Descrio do problema: um banco conceder um crdito especial aos seus clientes,
varivel conforme o saldo mdio no ltimo ano. Construa um algoritmo que leia
o saldo mdio de um cliente, calcule e escreva o valor do crdito de acordo com
a tabela a seguir.
Saldo mdio
Crdito
At R$ 500,00
sem crdito
Acima de R$ 3.000,00
7/8/2013 16:01:09
Process Black
64
Quadro 5.15 Soluo do exemplo 5.7
Exemplo 5.7 - Calcula o valor de crdito disponvel para um cliente.
01
02
03
04
05
06
07
08
09
10
algoritmo exemplo57
variveis
saldo_medio, credito: real
incio
escrever("Digite o saldo mdio do cliente no ltimo ano: ")
ler(saldo_medio)
se(saldo_medio<=500)ento
credito
0
seno
se(saldo_medio>500)e(saldo_medio<=1000)ento
11
12
13
credito
saldo_medio*0.2
seno
se(saldo_medio>1000)e(saldo_medio<=3000)ento
14
15
16
17
18
credito
seno
saldo_medio*0.3
credito
saldo_medio*0.4
escrever ("O cliente tem R$", credito," de crdito.")
fim
Exemplo 5.8
Descrio do problema: faa um algoritmo que execute as operaes bsicas de uma
calculadora. Leia dois valores numricos e um smbolo; caso o smbolo seja um dos
relacionados a seguir efetue a operao correspondente com os valores digitados
pelo usurio; caso contrrio, digite a mensagem Operador invlido!. Smbolos:
+ soma, - subtrao, * multiplicao, / diviso. Ateno para a diviso por 0!
7/8/2013 16:01:09
Process Black
65
algoritmo exemplo58
variveis
valor1, valor2: real
op: caractere
incio
escrever("Valor 1: ")
ler(valor1)
escrever("Operador (+ - * /): ")
ler(op)
escrever("Valor 2: ")
ler(valor2)
se(op="+")ento
escrever("Resultado = ", valor1+valor2)
seno
se(op="-")ento
escrever("Resultado = ", valor1-valor2)
seno
se(op="*")ento
escrever("Resultado = ", valor1*valor2)
seno
se(op="/")ento
se(valor2<>0)ento
escrever("Resultado = ", valor1/valor2)
seno
escrever("No possvel dividir por 0.")
seno
escrever("Operador invlido!")
fim
7/8/2013 16:01:09
Process Black
66
Quadro 5.17 Formatao do texto do algoritmo
Sem indentao
se(valor1>valor2)ento
escrever(valor1)
seno
se(valor2>valor1)ento
escrever(valor2)
seno
escrever("Valores iguais!")
Com indentao
se(valor1>valor2)ento
escrever(valor1)
seno
se(valor2>valor1)ento
escrever(valor2)
seno
escrever("Valores iguais!")
Referncias
ASCENCIO, A. F. G.; CAMPOS, E. A. V.. Fundamentos da Programao de Computadores:
algoritmos, Pascal, C/C++ (padro ANSI) e Java. 3.ed. So Paulo: Pearson Education do
Brasil, 2012.
BERG, A. C.; FIGUEIR, J. P.. Lgica de Programao. 2.ed. Canoas: Ed. ULBRA, 2001.
FORBELLONE, A. L. V.; EBERSPCHER, H. F.. Lgica de Programao: a construo de
algoritmos e estruturas de dados. 3.ed. So Paulo: Pearson/Prentice Hall, 2005.
GOODRICH, M. T.; TAMASSIA, R.. Projeto de Algoritmos. Porto Alegre: Bookman, 2004.
MIZRAHI, V. V.. Treinamento em Linguagem C. 2.ed. So Paulo: Pearson/Prentice Hall, 2008.
PUGA, S.; RISSETTI, G.. Lgica de Programao e Estruturas de Dados. So Paulo: Pearson/
Prentice Hall, 2003.
Atividades
Parte I - Questes objetivas e testes de mesa
1)
seno
x
10
7/8/2013 16:01:09
Process Black
2)
10
w * 5
seno
w
67
w / 5
3)
7/8/2013 16:01:10
Process Black
68
ULBRA Educao a Distncia
4)
(a)
Sada:
X (A+B)*D
seno
X (AB)/C
escreva X
(b)
se(A>2)E(B<7)ento
Sada:
X (A+2)*(B2)
seno
X (A+B)/D*(C+D)
escreva X
(c)
se(A=2)OU(B>7)ento
Sada:
X (A+2)*(B2)
seno
X (A+B)/D*(C+D)
escreva X
(d)
se NO(A>3)E NO(B<7)ento
Sada:
X A+B
seno
X A/B
escreva X
7/8/2013 16:01:10
Process Black
5)
69
(3.14*r**2)+(2*3.14*r*h)
litro
area/3
qtde
litro/5
qtde*24
1)
Senha
analuisa
990123
luciano
714460
josue
134895
7/8/2013 16:01:10
Process Black
70
2)
3)
Bnus
Entre 2 e 4 anos
2%
Entre 5 e 10 anos
5%
10%
7/8/2013 16:01:10
Process Black
4)
1 <= E < 28
R$ 2,50
28 <= E < 50
R$ 7,80
E >= 50
R$ 13,00
71
5)
Faa um algoritmo que leia trs valores (A, B e C) e verique se eles formam
ou no um tringulo. Se for um tringulo, indique de que tipo : equiltero,
escaleno ou issceles.
Tringulo: forma geomtrica composta por trs lados, sendo que cada lado
menor que a soma dos outros dois lados (isto uma regra, ou seja, uma
condio). Logo, tringulo quando A< B+C, B<A+C e C<A+B.
Issceles: dois lados iguais (A=B) ou (A=C) ou (B=C).
Escaleno: todos os lados diferentes (A<>B) e (B<>C).
Equiltero: todos os lados iguais (A=B) e (B=C).
7/8/2013 16:01:10
Process Black
72
4 (a) 3
4 (b) 66
4 (c) 50
4 (d) 4
5 - Custo = R$ 140,64
Quantidade de latas de tinta = 5,86
7/8/2013 16:01:11
Process Black
Vanessa Lindemann
O captulo anterior apresentou a estrutura condicional SE, que avalia uma expresso
lgica que resulta verdadeiro ou falso. Se o resultado desta expresso for verdadeiro,
as instrues da clusula ento so executadas. Caso contrrio, o fluxo desviado
para executar as instrues da clusula seno. Tem-se, portanto, dois caminhos
possveis a serem seguidos. Em situaes de igualdade para uma mesma varivel,
em que necessrio comparar a varivel com vrios valores, utiliza-se a estrutura
condicional SE encandeada (como ilustrou o exemplo 5.8). Neste caso, tem-se uma
seleo de mltipla escolha.
O uso da estrutura condicional ESCOLHA, tema deste captulo, pode simplificar
bastante a cascata de estruturas SE, necessria em situaes de seleo de mltipla
escolha. A estrutura ESCOLHA pode ser utilizada, portanto, em situaes de
igualdade para uma mesma varivel, desde que esta varivel seja do tipo inteiro,
caractere ou lgico.
A sintaxe da estrutura condicional ESCOLHA apresentada a seguir.
escolha(<varivel>)
caso <1>: <instruo ou bloco de instrues>
caso <2>: <instruo ou bloco de instrues>
caso <n>: <instruo ou bloco de instrues>
seno
<instruo ou bloco de instrues>
fim
7/8/2013 16:01:11
Process Black
74
Se a varivel avaliada tiver um dos valores listados nas opes, a instruo (ou
bloco de instrues) correspondente ao caso ser executada. Quando a varivel
for diferente de todas as opes listadas, a instruo (ou bloco de instrues) da
clusula seno ser executada. A clusula seno opcional nesta estrutura.
Para demonstrar a aplicao da estrutura condicional ESCOLHA, a soluo do
exemplo 5.8 (descrita no captulo 5), que executa as operaes bsicas de uma
calculadora, foi reescrita no Quadro 6.1 substituindo a estrutura SE encadeada
pela estrutura ESCOLHA.
Quadro 6.1 Soluo do exemplo 5.8 com estrutura ESCOLHA
Exemplo 5.8 - Executa as operaes bsicas de uma calculadora.
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
algoritmo exemplo58
variveis
valor1, valor2: real
op: caractere
incio
escrever("Valor 1: ")
ler(valor1)
escrever("Operador (+ - * /): ")
ler(op)
escrever("Valor 2: ")
ler(valor2)
escolha(op)
caso "+": escrever("Resultado = ", valor1+valor2)
caso "-": escrever("Resultado = ", valor1-valor2)
caso "*": escrever("Resultado = ", valor1*valor2)
caso "/": se(valor2<>0)ento
escrever("Resultado = ", valor1/valor2)
seno
escrever("No possvel dividir por 0.")
seno
escrever("Operador invlido!")
fim
fim
7/8/2013 16:01:11
Process Black
Exemplo 6.1
Descrio do problema: faa um algoritmo que leia um valor inteiro entre 0 e 10
e escreva o valor por extenso.
Quadro 6.2 Soluo do exemplo 6.1
75
algoritmo exemplo61
variveis
valor: inteiro
incio
escrever("Digite um valor entre 0 e 10: ")
ler(valor)
escolha(valor)
caso 0: escrever("Zero")
caso 1: escrever("Um")
caso 2: escrever("Dois")
caso 3: escrever("Trs")
caso 4: escrever("Quatro")
caso 5: escrever("Cinco")
caso 6: escrever("Seis")
caso 7: escrever("Sete")
caso 8: escrever("Oito")
caso 9: escrever("Nove")
caso 10: escrever("Dez")
seno
escrever("Valor invlido!")
fim
fim
Exemplo 6.2
Descrio do problema: faa um algoritmo que leia um cdigo (COD) e duas
variveis (X e Y). Quando o cdigo for A: teste e informe se X par ou mpar; B:
teste e informe qual o menor valor (X ou Y); C: verifique e informe se os valores
so mltiplos.
7/8/2013 16:01:11
Process Black
76
Quadro 6.3 Soluo do exemplo 6.2
Exemplo 6.2 - Executa instrues conforme um cdigo (A, B ou C).
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
algoritmo exemplo62
variveis
codigo: caractere
x, y: inteiro
incio
escrever("Qual o cdigo (A, B ou C)? ")
ler(codigo)
escrever("Qual o valor de x? ")
ler(x)
escrever("Qual o valor de y? ")
ler(y)
escolha(codigo)
caso "A": se(x mod 2 = 0)ento
escrever(x, " par.")
seno
escrever(x, " mpar.")
caso "B": se(x<y)ento
escrever("x=",x," menor do que y=",y)
seno
se(x>y)ento
escrever("y=",y," menor do que x=",x)
seno
escrever(x," e ",y," so iguais")
caso "C": se(x mod y = 0)ou(y mod x = 0)ento
escrever(x," e ",y," so mltiplos)
seno
escrever(x," e ",y," no so mltiplos)
seno
escrever("Cdigo invlido! Digite A, B ou C.")
fim
fim
Exemplo 6.3
Descrio do problema: considerando o cardpio de uma lanchonete, apresentado
a seguir, construa um algoritmo que calcule e informe o valor a ser pago por um
7/8/2013 16:01:11
Process Black
Descrio
Preo
001
Cachorro-quente
8,00
002
Torrada
6,00
003
Xis
12,00
004
Refrigerante
3,00
005
Suco
3,00
006
gua mineral
2,00
77
algoritmo exemplo63
variveis
codigo, qtde: inteiro
incio
escrever("Digite o cdigo do produto: ")
ler(codigo)
escrever("Digite a quantidade: ")
ler(qtde)
escolha(codigo)
caso 001: escrever("Total a pagar = R$",qtde*8)
caso 002: escrever("Total a pagar = R$",qtde*6)
caso 003: escrever("Total a pagar = R$",qtde*12)
caso 004: escrever("Total a pagar = R$",qtde*3)
caso 005: escrever("Total a pagar = R$",qtde*3)
caso 006: escrever("Total a pagar = R$",qtde*2)
seno
escrever("Cdigo invlido!")
fim
fim
7/8/2013 16:01:11
Process Black
78
Referncias
ASCENCIO, A. F. G.; CAMPOS, E. A. V.. Fundamentos da Programao de Computadores:
algoritmos, Pascal, C/C++ (padro ANSI) e Java. 3.ed. So Paulo: Pearson Education do
Brasil, 2012.
BERG, A. C.; FIGUEIR, J. P.. Lgica de Programao. 2.ed. Canoas: Ed. ULBRA, 2001.
FORBELLONE, A. L. V.; EBERSPCHER, H. F.. Lgica de Programao: a construo de
algoritmos e estruturas de dados. 3.ed. So Paulo: Pearson/Prentice Hall, 2005.
GOODRICH, M. T.; TAMASSIA, R.. Projeto de Algoritmos. Porto Alegre: Bookman, 2004.
MIZRAHI, V. V.. Treinamento em Linguagem C. 2.ed. So Paulo: Pearson/Prentice Hall, 2008.
PUGA, S.; RISSETTI, G.. Lgica de Programao e Estruturas de Dados. So Paulo: Pearson/
Prentice Hall, 2003.
Atividades
Para cada um dos exerccios a seguir, monte o esquema com os elementos bsicos
(entrada / processamento / sada), construa o algoritmo com a soluo para o problema
e, por fim, realize o teste de mesa para assegurar que a resposta esteja correta.
1)
2)
Descrio
Preo
1485
Camiseta
35,00
2395
Camisa
70,40
3400
Cala
120,00
4197
Jaqueta
190,00
5266
Moletom
90,00
Cargo
% de aumento
101
Gerente
10%
102
Engenheiro
20%
103
Tcnico
30%
7/8/2013 16:01:12
Process Black
3)
79
4)
Tabela 2
Cdigo do Estado
Imposto
Cdigo da Carga
35%
10
50,00
25%
20
100,00
15%
30
200,00
5%
isento
Escreva um algoritmo que calcule o que deve ser pago por um produto,
considerando como dados de entrada o preo normal de etiqueta e a escolha
da condio de pagamento. Utilize os cdigos da tabela a seguir para efetuar
o clculo do valor a ser pago dependendo da condio de pagamento.
Cdigo
5)
Condio de pagamento
7/8/2013 16:01:12
Process Black
80
7/8/2013 16:01:12
Process Black
Vanessa Lindemann
7/8/2013 16:01:12
Process Black
82
enquanto sua condio de interrupo resultar verdadeiro. A sintaxe da estrutura
de repetio ENQUANTO apresentada a seguir.
enquanto(<condio>)faa
<instruo ou bloco de instrues>
Como pode ser observado, a condio de interrupo verificada antes da execuo
da instruo ou bloco de instrues a ser repetido. Se o resultado desta condio
for verdadeiro, a instruo ou bloco de instrues executado e, logo aps esta
iterao, o fluxo de execuo retorna para o incio da estrutura ENQUANTO e a
condio avaliada novamente. Este processo repetido at que a condio de
interrupo resulte falso. Neste caso, o fluxo de execuo do algoritmo continuar
a partir da instruo imediatamente aps estrutura ENQUANTO. Vale destacar
que, como a condio de interrupo avaliada no incio da estrutura de controle,
quando esta resultar falso na primeira vez em que for verificada, a instruo ou
bloco de instrues da estrutura no ser executado nenhuma vez.
Para exemplificar a aplicao da estrutura ENQUANTO, o problema descrito
no exemplo 6.3 ser resolvido novamente a seguir neste captulo denominado
exemplo 7.1.
Exemplo 7.1
Descrio do problema: considerando o cardpio de uma lanchonete, apresentado
a seguir, construa um algoritmo que calcule e informe o valor a ser pago por um
determinado cliente. O algoritmo deve ler o cdigo do produto e a quantidade
adquirida, calcular e escrever o total a pagar.
Cdigo
Descrio
Preo
001
Cachorro-quente
8,00
002
Torrada
6,00
003
Xis
12,00
004
Refrigerante
3,00
005
Suco
3,00
006
gua mineral
2,00
7/8/2013 16:01:12
Process Black
83
algoritmo exemplo71
variveis
codigo, qtde: inteiro
total: real
resp: caractere
incio
07
total
08
09
10
11
12
13
14
15
resp
"S"
enquanto(resp="S")faa
incio
escrever("Digite o cdigo do produto: ")
ler(codigo)
escrever("Digite a quantidade adquirida: ")
ler(qtde)
escolha(codigo)
16
total + (qtde*8.00)
17
total + (qtde*6.00)
18
total + (qtde*12.00)
19
total + (qtde*3.00)
20
total + (qtde*3.00)
21
22
23
24
25
26
27
28
29
7/8/2013 16:01:12
Process Black
84
uma compra ser repetido. Quando o usurio responder N (no), a condio de
interrupo no ser satisfeita e o fluxo de execuo continuar a partir da instruo
imediatamente aps o bloco da estrutura ENQUANTO, ou seja, na linha 28, que
exibir uma mensagem ao usurio com o valor total a ser pago.
Considerando que as estruturas de controle de repetio permitiro a criao
de algoritmos mais complexos, para os quais a necessidade de testes se faz mais
presente, prope-se a realizao do teste de mesa deste algoritmo, cujo resultado
pode ser observado no Quadro 7.2. Para simular a execuo deste algoritmo foi
considerada a compra dos seguintes produtos: duas torradas, um xis e trs sucos
- dados de entrada, listados esquerda no Quadro 7.2.
Quadro 7.2 Teste de mesa do exemplo 7.1
Exemplo 5.4 - Encontra o maior entre dois valores quaisquer.
Entrada
2 torradas
1 xis
3 sucos
Teste de mesa
linha
resp
cod
qtde
S
002
14
17
12.00
S
12
003
14
18
26
24.00
S
12
005
14
20
26
total
0
12
26
varivel
07
08
Sada
33.00
N
7/8/2013 16:01:13
Process Black
85
7/8/2013 16:01:13
Process Black
86
Na sequncia, outros exemplos da aplicao da estrutura de controle ENQUANTO
so apresentados. Sero encontradas, a partir da descrio dos problemas, trs
situaes diferentes em relao ao nmero de iteraes a serem executadas: situao
01, quando o nmero de iteraes conhecido; situao 02, quando o nmero
de iteraes no conhecido, mas a descrio do problema define a condio de
interrupo; situao 03, quando nem o nmero de iteraes, nem a condio de
interrupo so conhecidos.
Na construo de algoritmos no existe receita de bolo para resolver um
problema. Um mesmo problema pode ser resolvido de n formas diferentes e todas
as solues estarem igualmente corretas. Entretanto, considerando as trs situaes
descritas acima, referentes ao nmero de iteraes e condio de interrupo
estarem ou no previamente definidos no enunciado do problema, algumas dicas
podem auxiliar na resoluo dos problemas. Visando contribuir neste sentido, as
solues apresentadas a seguir so classificadas conforme as situaes descritas e
as instrues do algoritmo referentes a elas aparecem em negrito.
Exemplo 7.2
Descrio do problema: construa um algoritmo que leia 10 valores do tipo inteiro,
calcule e escreva a mdia dos valores lidos.
Este um exemplo da primeira situao, ou seja, o nmero de iteraes est
especificado na descrio do problema o bloco de instrues da estrutura de
repetio dever ser executado 10 vezes. Nesta situao, cria-se uma varivel
do tipo contador para controlar o fluxo da estrutura de repetio. Esta varivel,
denominada cont, dever: (a) ser inicializada no incio do algoritmo (cont
0);
(b) ser validada na condio de interrupo para que sejam executadas 10 iteraes
(cont <10); (c) para cada valor lido, contar um (cont
cont + 1). Estas
instrues aparecem em negrito na soluo em portugus estruturado apresentada
no Quadro 7.3. Na sequncia, a Figura 7.1 ilustra esta mesma soluo representada
em fluxograma.
7/8/2013 16:01:13
Process Black
algoritmo exemplo72
variveis
valor, soma, cont: inteiro
media: real
incio
cont
0
soma
0
enquanto(cont<10)faa
incio
escrever(Digite um valor: )
ler(valor)
cont
cont + 1
SITUAO 01
N de iteraes determinado.
87
soma
soma + valor
fim
media
soma / 10
escrever(Mdia = , media)
fim
7/8/2013 16:01:13
Process Black
88
A Situao 02, em que o nmero de iteraes no conhecido mas a descrio do
problema define a condio de interrupo, pode ser observada no Quadro 7.4.
Neste exemplo, a entrada de dados dever ser encerrada quando o usurio digitar
0 (zero). Portanto, a condio de interrupo ir testar a varivel de entrada. A
varivel valor lida no incio do algoritmo (linha 09 Quadro 7.4) e avaliada na
condio da linha 10 Quadro 7.4. Se a condio resultar verdadeiro, o bloco de
instrues da estrutura ENQUANTO ser executado. Este bloco possui um contador
e um acumulador (linhas 12 e 13 Quadro 7.4), que sero usados para calcular a
mdia no final do algoritmo (linha 17 Quadro 7.4), alm da instruo primitiva
de entrada (linha 15 Quadro 7.4) que ir ler um valor para cada nova iterao.
Exemplo 7.3
Descrio do problema: construa um algoritmo que leia vrios valores do tipo
inteiro (0 encerra a entrada de dados), calcule e escreva a mdia dos valores
lidos.
Quadro 7.4 Soluo do exemplo 7.3
Exemplo 7.3 - Calcula a mdia de vrios valores lidos.
01
02
03
04
05
06
algoritmo
variveis
valor,
media:
incio
cont
exemplo73
soma, cont: inteiro
real
SITUAO 02
N de iteraes determinado, com
condio de interrupo definida.
07
08
09
10
11
12
13
14
15
16
soma
0
escrever("Digite um valor: ")
ler(valor)
enquanto(valor<>0)faa
incio
cont
cont + 1
soma
soma + valor
escrever("Digite um valor: ")
ler(valor)
fim
17
18
19
media
soma / cont
escrever("Mdia = ", media)
fim
7/8/2013 16:01:14
Process Black
O Quadro 7.5 ilustra a Situao 03, quando nem o nmero de iteraes, nem a
condio de interrupo, so conhecidos. Como foi visto no exemplo 7.1, nestes
casos, necessrio criar uma varivel auxiliar para controlar o fluxo de execuo
nos exemplos deste captulo usou-se a varivel resp para tal funo.
89
Exemplo 7.4
Descrio do problema: construa um algoritmo que leia vrios valores do tipo
inteiro, calcule e escreva a mdia dos valores lidos.
Quadro 7.5 Soluo do exemplo 7.4
Exemplo 7.4 - Calcula a mdia de vrios valores lidos.
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
algoritmo exemplo74
variveis
valor, soma, cont: inteiro
media: real
resp: caractere
incio
cont
0
SITUAO 03
N de iteraes indeterminado, sem
condio de interrupo definida.
soma
0
resp
"S"
enquanto(resp="S")faa
incio
escrever("Digite um valor: ")
ler(valor)
cont
cont + 1
soma
soma + valor
escrever("Continuar? S/N ")
ler(resp)
fim
media
soma / cont
escrever("Mdia = ", media)
fim
7/8/2013 16:01:14
Process Black
90
Exemplo 7.5
Descrio do problema: construa um algoritmo que leia 10 valores do tipo inteiro
e verifique quantos so mltiplos de trs.
Quadro 7.6 Soluo do exemplo 7.5
Exemplo 7.5 - Verifica quantos valores so mltiplos de trs.
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
algoritmo exemplo75
SITUAO 01
variveis
N de iteraes determinado.
valor, cont, mult: inteiro
incio
cont
0
mult
0
enquanto(cont<10)faa
incio
cont
cont + 1
escrever("Digite o ",cont," valor: ")
ler(valor)
Se(valor mod 3 = 0) ento
mult
mult + 1
fim
escrever(mult, " valores so mltiplos de 3.")
fim
Exemplo 7.6
Descrio do problema: escreva um algoritmo que leia um nmero no
determinado de valores (qualquer valor negativo encerra a entrada de dados),
encontre e escreva o menor entre eles.
Quadro 7.7 Soluo do exemplo 7.6
Exemplo 7.6 - Encontra o menor entre os valores digitados pelo usurio.
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
algoritmo exemplo76
SITUAO 02
variveis
N
de
iteraes
indeterminado,
com
valor, menor: real
condio
de
interrupo
definida.
incio
escrever("Digite um valor: ")
ler(valor)
menor
valor
enquanto(valor>=0)faa
incio
se(valor<menor)ento
menor
valor
escrever("Digite um valor: ")
ler(valor)
fim
escrever("Menor valor = ", menor)
fim
7/8/2013 16:01:14
Process Black
Exemplo 7.7
Descrio do problema: uma empresa deseja aumentar o preo de seus produtos
em 20%. Faa um algoritmo que leia o cdigo e o preo atual de cada produto
da empresa, calcule e escreva o preo novo; calcule e escreva a mdia dos preos
com o aumento.
91
algoritmo exemplo77
SITUAO 03
variveis
N de iteraes indeterminado, sem
cod, cont: inteiro
condio de interrupo definida.
preco,preconovo,soma,media:real
resp: caractere
incio
cont
0
soma
0
09
10
11
12
13
14
15
resp
"S"
enquanto(resp="S")faa
incio
escrever("Digite o cdigo e o preo atual: ")
ler(cod, preco)
preconovo
preco * 1.2
escrever("Preo com 20% de aumento = R$ ",preconovo)
16
17
18
19
20
21
22
23
soma
soma + preconovo
cont
cont + 1
escrever("Continuar? S/N ")
ler(resp)
fim
media
soma / cont
escrever("Mdia dos preos com aumento = ", media)
fim
Exemplo 7.8
Descrio do problema: escreva um algoritmo para calcular a mdia final de cada
um dos alunos de uma turma de Algoritmos, considerando 03 notas: trabalho A
com peso 3, trabalho B com peso 2 e a prova com peso 5. Alm disso, importante
saber a mdia geral da turma.
7/8/2013 16:01:14
Process Black
92
Quadro 7.9 Soluo do exemplo 7.8
Exemplo 7.8 - Calcula a nota final dos alunos de uma turma e a mdia geral da turma.
01
02
03
04
05
06
07
08
09
10
11
12
13
algoritmo exemplo78
SITUAO 03
variveis
N
de
iteraes
indeterminado,
sem
cont: inteiro
condio de interrupo definida.
n1, n2, n3, soma, media: real
resp: caractere
incio
cont
0
soma
0
resp
"S"
enquanto(resp="S")faa
incio
escrever("Digite as trs notas do aluno: ")
ler(n1, n2, n3)
14
15
16
17
18
19
20
21
22
23
media
(n1*3 + n2*2 + n3*5)/10
escrever("Mdia do aluno = ",media)
soma
soma + media
cont
cont + 1
escrever("Continuar? S/N ")
ler(resp)
fim
media
soma / cont
escrever("Mdia geral da turma = ", media)
fim
Exemplo 7.9
Descrio do problema: Chico tem 1,5m e cresce 2cm por ano, enquanto Z tem
1,1m e cresce 3cm ao ano. Construa um algoritmo que calcule e mostre quantos
anos sero necessrios para que Z seja maior que Chico.
7/8/2013 16:01:14
Process Black
algoritmo exemplo79
variveis
cont: inteiro
chico, ze: real
incio
cont
0
chico
1.5
ze
1.1
enquanto(ze<chico)faa
incio
12
13
14
20
22
23
93
chico
chico + 0.02
ze
ze + 0.03
cont
cont + 1
fim
escrever("So necessrios", cont," anos para Z > Chico.")
fim
Referncias
ASCENCIO, A. F. G.; CAMPOS, E. A. V.. Fundamentos da Programao de Computadores:
algoritmos, Pascal, C/C++ (padro ANSI) e Java. 3.ed. So Paulo: Pearson Education do
Brasil, 2012.
BERG, A. C.; FIGUEIR, J. P.. Lgica de Programao. 2.ed. Canoas: Ed. ULBRA, 2001.
FORBELLONE, A. L. V.; EBERSPCHER, H. F.. Lgica de Programao: a construo de
algoritmos e estruturas de dados. 3.ed. So Paulo: Pearson/Prentice Hall, 2005.
GOODRICH, M. T.; TAMASSIA, R.. Projeto de Algoritmos. Porto Alegre: Bookman, 2004.
MIZRAHI, V. V.. Treinamento em Linguagem C. 2.ed. So Paulo: Pearson/Prentice Hall, 2008.
PUGA, S.; RISSETTI, G.. Lgica de Programao e Estruturas de Dados. So Paulo: Pearson/
Prentice Hall, 2003.
7/8/2013 16:01:15
Process Black
94
Atividades
Parte I - Questes objetivas
1)
10
20
se(i>=y)ento
incio
i
fim
enquanto(i<y)faa
incio
i + 1
escrever(i)
i + 1
i
fim
fim
2)
7/8/2013 16:01:15
Process Black
tendo como dados de entrada 2, 9, 47, -7, -11, -49, 47, 30, 100, -100, -120, -47, 14,
114, 13, quantos nmeros sero impressos?
(a) 8;
(b) 9;
(c) 7;
95
(d) 15;
(e) 6.
3)
v1
enquanto(i<=v2)faa
incio
se(i mod 2 <> 0)ento
escrever(i,, )
i
i + 1
fim
fim
fim
7/8/2013 16:01:15
Process Black
96
ULBRA Educao a Distncia
(a) 1, 3, 5, 7, 9,
O primeiro valor deve ser menor que o segundo.
(b) 1, 3, 5, 7, 9
O primeiro valor deve ser menor que o segundo.
(c) 1, 3, 5, 7, 9,
3, 5
(d) 2, 4, 6, 8,
O primeiro valor deve ser menor que o segundo.
(e) 1, 3, 5, 7, 9,
4,
4)
enquanto(valor<>0)faa
incio
escrever(Digite um valor inteiro: )
ler(valor)
fim
fim
(a) Tantos quantos forem digitados.
(b) Tantos quantos forem digitados, at ser digitado 0 (zero).
(c) Tantos quantos forem digitados, at ser digitado um valor negativo.
(d) Tantos quantos forem digitados, at ser digitado um valor que no
inteiro.
(e) Nenhum.
7/8/2013 16:01:15
Process Black
5)
97
incio
escrever(Digite os valores de x e y: )
ler(x,y)
z
enquanto(z*y<=x)faa
z
z+1
z-1
x-z*y
escrever(z,w)
fim
(a) Exibe, respectivamente, o quociente e o resto da varivel x pela varivel y.
(b) Exibe, respectivamente, os dois primeiros nmeros primos menores que x e y.
(c) Exibe, respectivamente, o resto e o quociente da varivel x pela varivel y.
(d) Exibe, respectivamente, o valor correspondente s variveis y e x.
(e) Exibe, respectivamente, o valor correspondente s variveis x e y.
(2)
7/8/2013 16:01:15
Process Black
98
(3)
(4)
(5)
7/8/2013 16:01:16
Process Black
Vanessa Lindemann
7/8/2013 16:01:16
Process Black
100
No exemplo 8.1, a descrio do problema indica que devero ser lidos 25 valores,
ou seja, o nmero de iteraes previamente conhecido cenrio denominado
Situao 01. No exemplo 8.2, no possvel prever quantos valores sero digitados,
mas a condio de interrupo est definida (o valor zero dever encerrar a entrada
de dados) cenrio denominado Situao 02. Por fim, a descrio do problema do
exemplo 8.3 no contempla nenhuma destas informaes, ou seja, no possvel
prever o nmero de iteraes necessrias, nem a condio para encerrar o lao de
repetio cenrio denominado Situao 03.
Como no captulo anterior, os problemas so classificados em uma destas situaes
e as instrues referentes a como prover o fluxo de repetio em tal situao
aparecem em negrito.
Exemplo 8.1
Descrio do problema: construa um algoritmo que leia 25 valores, calcule e escreva
o percentual de valores negativos.
Quadro 8.1 Soluo do exemplo 8.1
Exemplo 8.1 - Calcula o percentual de valores negativos.
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
algoritmo exemplo81
variveis
cont, negativo: inteiro
valor, perc: real
incio
cont
0
negativo
0
repita
escrever("Digite um valor: ")
ler(valor)
cont
cont + 1
se(valor < 0)ento
negativo
negativo + 1
at(cont=25)
SITUAO 01
N de iteraes determinado.
perc
(negativo*100)/25
escrever("% de negativos = ",perc)
fim
7/8/2013 16:01:16
Process Black
Exemplo 8.2
Descrio do problema: construa um algoritmo que leia vrios valores do tipo
inteiro (0 encerra a entrada de dados), calcule e escreva o percentual de valores
negativos.
Quadro 8.2 Soluo do exemplo 8.2
101
algoritmo exemplo82
variveis
cont, negativo: inteiro
valor, perc: real
incio
SITUAO 02
N de iteraes indeterminado, com
condio de interrupo definida.
06
07
08
09
10
11
12
13
14
cont
0
negativo
0
repita
escrever("Digite um valor: ")
ler(valor)
cont
cont + 1
se(valor < 0)ento
negativo
negativo + 1
at(valor=0)
15
16
17
perc
(negativo*100)/cont
escrever("% de negativos = ",perc)
fim
7/8/2013 16:01:16
Process Black
102
Exemplo 8.3
Descrio do problema: construa um algoritmo que leia vrios valores do tipo
inteiro, calcule e escreva o percentual de valores negativos.
Quadro 8.3 Soluo do exemplo 8.3
Exemplo 8.3 - Calcula o percentual de valores negativos.
01
02
03
04
05
06
07
algoritmo exemplo83
variveis
cont, negativo: inteiro
valor, perc: real
resp: caractere
incio
cont
0
SITUAO 03
N de iteraes indeterminado, sem
condio de interrupo definida.
08
09
10
11
negativo
0
repita
escrever("Digite um valor: ")
ler(valor)
12
13
14
15
16
17
cont
cont + 1
se(valor < 0)ento
negativo
negativo + 1
escrever("Continuar? S/N ")
ler(resp)
at(resp="N")
18
19
20
perc
(negativo*100)/cont
escrever("% de negativos = ",perc)
fim
7/8/2013 16:01:16
Process Black
Exemplo 8.4
Descrio do problema: uma pesquisa realizada em um clube coletou informaes
sobre as caractersticas fsicas de 40 atletas, quais sejam: gnero (F- feminino, M masculino), idade, peso e altura. Escreva um algoritmo para identificar: a maior
idade entre os atletas; a porcentagem de mulheres e de homens; o n de homens
com menos de 1,70m; o peso mdio das mulheres.
103
algoritmo exemplo84
SITUAO 01
variveis
N de iteraes determinado.
genero: caractere
peso, altura, soma, media: real
cont, idade, maior, fem, masc, alt: inteiro
incio
cont
0
08
09
10
11
12
13
14
15
16
17
18
19
20
21
maior
0
fem
0
masc
0 soma
0 alt
0
repita
escrever("Digite gnero, idade, peso e altura: ")
ler(genero, idade, peso, altura)
se(idade>maior)ento
maior
idade
se(genero="F")ento
incio
fem
fem + 1
soma
soma + peso
fim
seno
se(genero="M")ento
incio
22
23
24
25
26
27
28
29
30
31
32
33
34
35
masc
masc + 1
se(altura<1.70)ento
alt
alt + 1
fim
cont
cont + 1
at(cont=40)
fem
(fem*100)/40
masc
(masc*100)/40
media
soma/fem
escrever("Maior idade = ", maior)
escrever(fem,"% so mulheres e ", masc, "% homens")
escrever("Peso mdio das mulheres = ", media)
escrever(alt, " homens medem menos que 1,70m")
fim
7/8/2013 16:01:16
Process Black
104
Exemplo 8.5
Descrio do problema: construa um algoritmo que repita a leitura de uma senha
at que ela seja vlida. Para cada senha incorreta escrever a mensagem SENHA
INVLIDA. Quando a senha for informada corretamente deve ser impressa a
mensagem ACESSO PERMITIDO e o algoritmo encerrado. Considere que a
senha correta a76dk09.
Quadro 8.5 Soluo do exemplo 8.5
Exemplo 8.5 - Valida senha.
01
02
03
05
08
09
10
12
13
14
16
17
algoritmo exemplo85
SITUAO 02
variveis
N de iteraes indeterminado, com
senha: cadeia
condio de interrupo definida.
incio
repita
escrever("Digite a senha: ")
ler(senha)
se(senha<>"a76dk09")ento
escrever("Senha invlida")
at(senha="a76dk09")
escrever("Acesso permitido")
fim
7/8/2013 16:01:17
Process Black
Exemplo 8.6
Descrio do problema: realizou-se uma pesquisa com professores de uma
universidade. Foram coletados os seguintes dados de cada professor: idade, tempo
de servio na universidade (em anos) e quantidade de disciplinas que ministra.
Faa um programa que, a partir desses dados, calcule e informe: o percentual de
professores com idade entre 30 e 50 anos, a quantidade de professores com mais
de 10 anos de servio e a mdia de disciplinas ministrada por professor.
105
algoritmo exemplo86
SITUAO 03
variveis
N de iteraes indeterminado, sem
resp: caractere
condio de interrupo definida.
perc, media: real
idade, ts, disc, qtde, cont, soma: inteiro
incio
perc
0
qtde
0 soma
0 cont
0
repita
escrever("Digite idade: ")
ler(idade)
escrever("Digite tempo de servio: ")
ler(ts)
escrever("Digite qtde de disciplinas que ministra: ")
ler(disc)
se(idade>=30)e(idade<=50)ento
perc
perc + 1
se(ts>10)ento
qtde
qtde + 1
soma
soma + disc
cont
cont + 1
escrever("Continuar? S/N ")
ler(resp)
at(resp="N")
perc
(perc*100)/cont
media
soma/cont
escrever(perc,"% dos professores tm entre 30 e 50 anos")
escrever(qtde," prof. com tempo de servio superior a 10")
escrever("Mdia de disciplinas por professor = , media")
fim
7/8/2013 16:01:17
Process Black
106
Referncias
ASCENCIO, A. F. G.; CAMPOS, E. A. V.. Fundamentos da Programao de Computadores:
algoritmos, Pascal, C/C++ (padro ANSI) e Java. 3.ed. So Paulo: Pearson Education do
Brasil, 2012.
BERG, A. C.; FIGUEIR, J. P.. Lgica de Programao. 2.ed. Canoas: Ed. ULBRA, 2001.
FORBELLONE, A. L. V.; EBERSPCHER, H. F.. Lgica de Programao: a construo de
algoritmos e estruturas de dados. 3.ed. So Paulo: Pearson/Prentice Hall, 2005.
GOODRICH, M. T.; TAMASSIA, R.. Projeto de Algoritmos. Porto Alegre: Bookman, 2004.
MIZRAHI, V. V.. Treinamento em Linguagem C. 2.ed. So Paulo: Pearson/Prentice Hall, 2008.
PUGA, S.; RISSETTI, G.. Lgica de Programao e Estruturas de Dados. So Paulo: Pearson/
Prentice Hall, 2003.
Atividades
Parte I - Questes objetivas
1)
2)
7/8/2013 16:01:17
Process Black
tendo como dados de entrada 2, 9, 47, -7, -11, -49, 47, 30, 100, -100, -120, -47, 14,
114, 13, quantos nmeros sero impressos?
(a) 8
(b) 9
(c) 7
107
(d) 15
(e) 6
3)
O algoritmo a seguir tem como objetivo calcular a mdia dos valores lidos.
Entretanto, isto no acontece corretamente devido a um erro.
01
algoritmo exerc3
02
variveis
03
n,s,m: real
04
i: inteiro
05
incio
06
07
08
repita
09
ler(n)
10
11
s + n
i + 1
12
at(i=10)
13
14
escrever(m)
15
s/2
fim
7/8/2013 16:01:17
Process Black
108
4)
repita
escrever(Digite um valor inteiro: )
ler(valor)
at(valor=0)
fim
(a) Tantos quantos forem digitados.
(b) Tantos quantos forem digitados, at ser digitado 0 (zero).
(c) Tantos quantos forem digitados, at ser digitado um valor negativo.
(d) Tantos quantos forem digitados, at ser digitado um valor que no
inteiro.
(e) Nenhum.
5)
(b)
(c)
(d)
(e)
7/8/2013 16:01:17
Process Black
(2)
(3)
(4)
(5)
109
7/8/2013 16:01:18
Process Black
110
Respostas dos exerccios da Parte I
1 - Errado
2-b
3-c
4-b
5-c
7/8/2013 16:01:18
Process Black
Vanessa Lindemann
A varivel de controle assumir, a cada iterao, um dos valores da faixa que inicia
com o valor vi e encerra no valor vf. O p corresponde ao incremento ou decremento
dado varivel de controle. O padro incrementar 1 a cada iterao, caso em que
a diretiva passo p pode ser omitida.
Nos captulos anteriores, foram identificados trs cenrios onde so utilizadas as
estruturas de repetio: Situao 01, quando o nmero de iteraes previamente
conhecido; Situao 02, quando o nmero de iteraes indeterminado, mas temse uma condio de interrupo definida; Situao 03, quando nem o nmero de
iteraes, nem a condio de interrupo so previamente conhecidos - caso em
que necessrio usar uma varivel auxiliar na condio de parada do lao de
repetio. Em portugus estruturado, a estrutura PARA s pode ser usada para
7/8/2013 16:01:18
Process Black
112
resolver problemas em que o nmero de iteraes conhecido, ou seja, na Situao
01. Algumas linguagens de programao, entretanto, possibilitam a implementao
das outras situaes.
Na Situao 01, o processo de repetio denominado lao contado e, como
foi visto nos captulos anteriores, este pode ser resolvido utilizando as estruturas
ENQUANTO e REPITA. Para isso, utiliza-se uma varivel do tipo contador, que
tem seu contedo alterado a cada iterao como ilustram os trechos de algoritmos
apresentados no Quadro 9.1.
Quadro 9.1 Lao contado utilizando ENQUANTO e REPITA
ENQUANTO
REPITA
01
02
03
04
05
06
01
02
03
04
05
cont
0
enquanto(cont<25)faa
incio
<demais instrues>
cont
cont + 1
fim
cont
0
repita
<demais instrues>
cont
cont + 1
at(cont=25)
Como pode ser observado, nos dois exemplos do Quadro 9.1 a varivel cont
inicializada (linha 01), incrementada (linha 05 no exemplo com a estrutura
ENQUANTO e linha 04 com a estrutura REPITA) e testada para controlar o final
do lao de repetio (linha 02 na estrutura ENQUANTO, linha 05 na estrutura
REPITA). A estrutura PARA a mais adequada para esta situao, pois h uma
economia de instrues, a prpria estrutura se encarrega de inicializar, incrementar
e encerrar a varivel de controle, como ilustra o Quadro 9.2. Estes trs processos
ocorrem na linha 01.
Quadro 9.2 Lao contado utilizando PARA
PARA
01
02
03
04
O valor inicial da varivel de controle definido como 1; em seguida, verificase se a condio de interrupo foi atingida (ou seja, se a varivel de controle j
chegou ao seu limite final que, neste caso, 25): se a condio de interrupo foi
7/8/2013 16:01:18
Process Black
113
Exemplo 9.1
Descrio do problema: construa um algoritmo que leia 10 valores, um de cada
vez, conte e escreva quantos esto no intervalo [10,20] e quantos esto fora deste
intervalo.
Quadro 9.3 Soluo do exemplo 9.1
Exemplo 9.1 - Verifica quantos valores pertencem a um intervalo.
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
algoritmo exemplo91
SITUAO 01
variveis
N
de
iteraes
determinado.
valor, cont, dentro, fora: inteiro
incio
dentro
0
fora
0
para cont de 1 at 10 faa
incio
escrever("Digite um valor: ")
ler(valor)
se(valor>=10)e(valor<=20)ento
dentro
dentro + 1
seno
fora
fora + 1
fim
escrever(dentro, " nmeros dentro do intervalo")
escrever(fora, " nmeros fora do intervalo")
fim
Exemplo 9.2
Descrio do problema: construa um algoritmo que escreva os nmeros pares
entre 1 e 100.
7/8/2013 16:01:18
Process Black
114
Quadro 9.4 Soluo do exemplo 9.2
Exemplo 9.2 - Soma os nmero mpares de um intervalo.
01
02
03
04
05
06
07
algoritmo exemplo92
SITUAO 01
variveis
N de iteraes determinado.
cont: inteiro
incio
para cont de 2 at 100 passo 2 faa
escrever(cont)
fim
Exemplo 9.3
Descrio do problema: construa um algoritmo que escreva a soma dos nmeros
mpares entre dois valores quaisquer informados pelo usurio.
Quadro 9.5 Soluo do exemplo 9.3
Exemplo 9.3 - Soma os nmero mpares de um intervalo.
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
algoritmo exemplo93
SITUAO 01
variveis
N de iteraes determinado.
cont, vi, vf, soma: inteiro
incio
soma
0
escrever("Digite o valor inicial: ")
ler(vi)
escrever("Digite o valor final: ")
ler(vf)
para cont de vi at vf faa
incio
se(cont mod 2 = 1)ento
soma
soma + cont
fim
escrever("Soma dos mpares do intervalo = ", soma)
fim
Exemplo 9.4
Descrio do problema: construa um algoritmo que leia um valor inteiro, entre 1
e 10, e escreva a sua tabuada.
7/8/2013 16:01:18
Process Black
115
Exemplo: 5
1x5=5
2 x 5 = 10
3 x 5 = 15
4 x 5 = 20
5 x 5 = 25
6 x 5 = 30
...
10 x 5 = 50
Quadro 9.6 Soluo do exemplo 9.4
Exemplo 9.4 - Escreve a tabuada de um valor.
01
02
03
04
05
06
07
08
09
10
11
12
algoritmo exemplo94
SITUAO 01
variveis
N
de
iteraes
determinado.
valor, cont: inteiro
incio
escrever("Digite um valor inteiro entre 1 e 10: ")
ler(valor)
se(valor>=1)e(valor<=10)ento
para cont de 1 at 10 faa
escrever(cont,"x",valor,"=",cont*valor)
seno
escrever("Valor invlido. Digite valore entre 1 e 10.")
fim
Exemplo 9.5
Descrio do problema: em uma pesquisa realizada com 1000 habitantes de
uma regio, foram coletados os seguintes dados: idade, gnero e salrio. Faa
um algoritmo que calcule e informe: a idade mdia do grupo, o percentual de
mulheres e de homens e, tambm, a quantidade de pessoas com salrio superior
a R$ 5.000,00.
7/8/2013 16:01:19
Process Black
116
Quadro 9.7 Soluo do exemplo 9.5
Exemplo 9.5 - Soma os nmero mpares de um intervalo.
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
algoritmo exemplo95
SITUAO 01
variveis
N
de
iteraes
determinado.
cont, idade, soma, pessoa: inteiro
salario, media, fem, masc: real
genero: caractere
incio
soma
0 fem
0 masc
0 pessoa
0
para cont de 1 at 1000 faa
incio
escrever("Digite idade, gnero (M ou F) e salrio: ")
ler(idade, genero, salario)
soma
soma + idade
se(genero="F")ento
fem
fem + 1
seno
se(genero="M")ento
masc
masc + 1
se(salario>5000)ento
pessoa
pessoa + 1
fim
media
soma/1000
fem
(fem *100)/1000
masc
(masc *100)/1000
escrever("Idade mdia = ", media)
escrever("Feminino = ", fem,"%")
escrever("Masculo = ", masc,"%")
escrever(pessoa, " pessoas possuem salrio > 5.000,00")
fim
Referncias
ASCENCIO, A. F. G.; CAMPOS, E. A. V.. Fundamentos da Programao de Computadores:
algoritmos, Pascal, C/C++ (padro ANSI) e Java. 3.ed. So Paulo: Pearson Education do
Brasil, 2012.
BERG, A. C.; FIGUEIR, J. P.. Lgica de Programao. 2.ed. Canoas: Ed. ULBRA, 2001.
FORBELLONE, A. L. V.; EBERSPCHER, H. F.. Lgica de Programao: a construo de
algoritmos e estruturas de dados. 3.ed. So Paulo: Pearson/Prentice Hall, 2005.
GOODRICH, M. T.; TAMASSIA, R.. Projeto de Algoritmos. Porto Alegre: Bookman, 2004.
MIZRAHI, V. V.. Treinamento em Linguagem C. 2.ed. So Paulo: Pearson/Prentice Hall, 2008.
PUGA, S.; RISSETTI, G.. Lgica de Programao e Estruturas de Dados. So Paulo: Pearson/
Prentice Hall, 2003.
7/8/2013 16:01:19
Process Black
Atividades
Parte I - Questes objetivas
1)
117
fim
qual a sada se a entrada for 3 e depois 5?
(a) 3 e 5;
(b) 10 e 154;
(c) 9 e 153;
(d) 11 e 155;
(e) 4 e 34.
2)
7/8/2013 16:01:19
Process Black
118
ULBRA Educao a Distncia
3)
O algoritmo a seguir...
algoritmo exerc3
variveis
i: inteiro
incio
para i de 100 at 1 passo -2 faa
escrever(i)
fim
(a) imprime os nmeros de 1 a 100 em ordem decrescente;
(b) imprime os nmeros pares entre 100 e 1 em ordem crescente;
(c) imprime os nmeros mpares entre 1 e 100 em ordem crescente;
(d) imprime os nmeros entre 1 e 100;
(e) imprime os nmeros pares entre 1 e 100 em ordem decrescente.
4)
escrever(Digite o valor de n: )
ler(n)
para z de 1 at n faa
para i de 1 at n faa
para j de i at n faa
k
k + 1
pode-se armar que o valor de k para qualquer valor de n, ao nal da execuo ser:
(a) n3 ;
(b) n2 ;
7/8/2013 16:01:19
Process Black
119
(c) n2 + log n;
(d) n2(n+1)/2;
(e) (n3-n)/3.
5)
para i de 1 at n faa
para j de i at n faa
k
k + 1
quanto vale k?
(a) n3 ;
(b) (n2n)/2;
(c) n(n+1)/2;
(d) n-1;
(e) n.
2)
7/8/2013 16:01:19
Process Black
120
ULBRA Educao a Distncia
3)
4)
5)
5x6
6x5
5x6
6x5
+
+
+
+
10
9
8
7
...
...
5x6
6x5
+
2
1
7/8/2013 16:01:20
Process Black
10
INTRODUO LINGUAGEM C
Vanessa Lindemann
7/8/2013 16:01:20
Process Black
122
Um programa em linguagem C consiste em uma ou mais funes. A funo
principal, denominada main, indica onde o programa inicia. A estrutura bsica
de um programa em C apresentada a seguir.
#inlcude <nome da biblioteca>
void main( ) {
// bloco de comandos
}
Bibliotecas so arquivos contendo vrias funes que podem ser incorporadas aos
programas escritos em C. A diretiva #include faz com que as funes inseridas na
biblioteca especificada possam ser utilizadas no programa. As bibliotecas stdio.h
e conio.h permitem a utilizao de diversos comandos de entrada e sada e de
funes de tela, respectivamente. So exemplos de funes de tela, os comandos
usados para limpar a tela, posicionar o cursor em uma determinada posio na
tela, trocar a cor da fonte e/ou do fundo.
Os parnteses ao lado da palavra main indicam que ela uma funo, o tipo void
indica que ela no retornar nenhum valor, enquanto as chaves delimitam o seu
incio e o seu fim. O bloco de comandos que estiver entre as chaves executado
sequencialmente quando a funo for chamada.
importante salientar que a linguagem C case sensitive, ou seja, sensvel a letras
maisculas e minsculas (por exemplo, a diferente de A) e todos os programas
devem, obrigatoriamente, ser escritos em letras minsculas. Outro detalhe
importante que cada comando finalizado com um ponto-e-vrgula.
As sees a seguir so dedicadas apresentao de conceitos e definies
importantes e necessrias para o incio da programao em linguagem C.
10.1 Identificadores
Em linguagem C, os nomes utilizados para referenciar variveis, constantes e
funes definidas pelo usurio so chamados de identificadores.
A criao de um identificador deve seguir as seguintes regras: podem ser formados
por letras, nmeros e sublinhado; devem iniciar com uma letra; letras minsculas
e maisculas so consideradas caracteres distintos; no podem ser palavras
reservadas; podem conter qualquer tamanho, porm apenas os 32 primeiros
caracteres so significativos.
Alm disso, importante criar identificadores considerando a sua aplicao
para facilitar a leitura do cdigo-fonte e, consequentemente, o trabalho do
programador. A quantidade de horas trabalhadas por uma pessoa durante uma
7/8/2013 16:01:20
Process Black
123
Faixa de valores
Tamanho (aproximado)
char
-127 a 127
8 bits
int
-32.767 a 32.767
16 bits
float
32 bits
double
64 bits
sem valor
void
10.3 Modeladores
possvel forar que o resultado de uma expresso seja de um tipo especfico
usando o conceito de modelador. A forma geral de um modelador
(tipo)expresso
onde tipo um dos tipos padro da linguagem C.
Sendo r uma varivel declarada do tipo float, as expresses a seguir resultam
em valores diferentes.
r=9/2;
r=(float)9/2;
7/8/2013 16:01:20
Process Black
124
7/8/2013 16:01:20
Process Black
125
Formato
%c
Caractere
%i
Inteiro
%l
Inteiro longo
%d
%ld
Decimal longo
%u
%f
%lf
%s
%e
%o
%x
%p
Ponteiro
%%
Smbolo %
7/8/2013 16:01:20
Process Black
126
Os cdigos de formato podem ter modificadores que especifiquem o tamanho do
campo, o nmero de casas decimais e um indicador de justificao esquerda.
Especificador de largura mnima do campo: um valor entre o smbolo % e o
caractere de formato indica a largura mnima do campo, preenchendo a sada com
brancos (padro) ou com zeros (coloca-se um 0 antes do especificador de tamanho).
Quando um valor maior que o mnimo definido, este ser impresso por completo.
Exemplos: %05d preencher um nmero com menos de cinco dgitos com zeros
esquerda, de maneira que seu tamanho total seja cinco.
Especificador do nmero de casas decimais: para definir o nmero de casas
decimais a serem exibidas em um ponto flutuante, usa-se um ponto entre o
especificador de tamanho e o nmero de casas decimais desejadas. Por exemplo:
%6.2f exibir um valor com, no mnimo, seis dgitos de comprimento e duas
casas decimais.
Especificador para justificar informao esquerda: por definio, toda sada
justificada direita. O uso do sinal depois do % faz com que a sada seja justificada
esquerda. Exemplo: %-6.2f justificar esquerda um valor de ponto flutuante,
com no mnimo seis dgitos e duas casas decimais.
A Tabela 10.3 apresenta exemplos da utilizao dos especificadores de tipos. O
caractere especial \n, usado nos exemplos, explicado na prxima seo.
Tabela 10.3 Exemplo da utilizao dos especificadores de tipos
Cdigo
Resultado
float valor=136.472;
printf(\n
printf(\n
printf(\n
printf(\n
%f,valor);
%8.1f,valor);
%08.1f,valor);
%-8.1f,valor);
136.472000
136.5
000136.5
136.5
int valor=790;
printf(\n
printf(\n
printf(\n
printf(\n
%i,valor);
%5i,valor);
%05i,valor);
%-5i,valor);
790
790
00790
790
O valor total 350.
O valor total 350.
O valor total
350.
7/8/2013 16:01:20
Process Black
127
Significado
Cdigo
Significado
\a
alerta (beep)
\v
tab vertical
\b
retrocesso (backspace)
\\
\f
avano de pgina
\n
nova linha
\r
\?
\t
tab horizontal
\0
nulo
7/8/2013 16:01:21
Process Black
128
Para utilizar strcpy (abreviao de string copy) preciso inserir no programa,
atravs da diretiva include, a biblioteca string.h.
Exemplo
Comentrio
a + b
Soma o contedo de a e de b.
a b
a * b
a / b
a % b
Comentrio
==
a == b
!=
a != b
<=
a <= b
>=
a >= b
<
a < b
>
a > b
7/8/2013 16:01:21
Process Black
129
Operador
Smbolo
Descrio
&&
Conjuno
ou
||
Disjuno
no
Negao
total=total+valor;
total+=valor;
num=num*5;
num*=5;
d=d-valor;
d-=valor;
x=x/5;
x/=5;
Descrio
Pr-fixado
Ps-fixado
++
Incrementa
++n
n++
--
Decrementa
--n
n--
7/8/2013 16:01:21
Process Black
130
Resumindo:
++i
i++
a=a+1;
z=a;
a=a-1;
a=a+1;
z=a;
a=a-1;
z=a;
equivalente a
equivalente a
equivalente a
equivalente a
z=a++;
z=a--;
z=++a;
z=--a;
10.10 Comentrios
Os comentrios so textos que podem ser inseridos no programa com o objetivo de
document-lo e no so analisados pelo compilador. Os comentrios de uma linha
so precedidos do smbolo //, enquanto o comentrio de vrias linhas envolvido
por /* e */, conforme pode ser observado nos exemplos a seguir.
// Este um comentrio de uma linha.
/* Este um comentrio
de mais de uma linha. */
scanf(%f,&valor1);
printf(Digite o operador: );
operador = getche();
scanf(%f,&valor2);
7/8/2013 16:01:21
Process Black
A sintaxe das duas funes diferente. A funo scanf tem dois parmetros: o
primeiro indica o tipo do dado a ser lido (Tabela 10.2 cdigos de formatao),
especificado por uma letra depois do smbolo % entre as aspas; e o nome da
varivel, antecedido do smbolo & (sem espao) que referencia um endereo de
memria. A funo getche l um caractere pressionado no teclado pelo usurio
e o escreve na tela. Na linha 4, a varivel operador recebe o valor lido atravs da
funo getche.
131
printf(Nome do aluno...: );
fflush(stdin);
fgets(nome,60,stdin);
A funo de sada utilizada para apresentar dados na tela, seja uma mensagem, o
resultado de uma expresso ou o contedo armazenado em uma varivel. A funo
de sada mais utilizada em C o printf, que pode ser observado nos dois trechos
de cdigos apresentados anteriormente e na linha de cdigo a seguir.
printf(Sua idade em dias e: %i, dias);
Nesse exemplo, o comando printf tem dois parmetros: a mensagem e a varivel.
O valor armazenado na varivel dias ser apresentado na tela no lugar em que
est o %i na mensagem (o %i a formatao do dado a ser exibido, que neste caso
um inteiro).
7/8/2013 16:01:21
Process Black
Process Black
fim
incio
algoritmo exemplo101
variveis
valor: inteiro
Portugus estruturado SE
//bibliotecas
getch();
//pausa
clrscr();
//limpa a tela
gotoxy(10,10);
//posiciona o cursor
printf("Digite um valor: ");
scanf("%i",&valor);
gotoxy(10,14);
if(valor%2==0)
printf("%i par.", valor);
else
printf("%i mpar.", valor);
int valor;
void main() {
#include <stdio.h>
#include <conio.h>
Linguagem C - if
Exemplo 10.1 - Ler um valor do tipo inteiro e verificar se ele par ou mpar.
132
7/8/2013 16:01:22
133
Linguagem C - switch
#include <stdio.h>
#include <conio.h>
algoritmo exemplo102
variveis
valor1,valor2,r: real
operador: caractere
incio
//bibliotecas
void main(){
float valor1,valor2, r;
char operador;
clrscr();
//limpa a tela
gotoxy(10,5); //posiciona o cursor
printf("Digite o primeiro valor: ");
scanf("%f",&valor1);
gotoxy(10,8);
printf("Digite o operador: ");
operador = getche();
gotoxy(10,11);
printf("Digite o segundo valor: ");
scanf("%f",&valor2);
switch(operador){
case'+': r = valor1 + valor2; break;
case'-': r = valor1 - valor2; break;
case'*': r = valor1 * valor2; break;
case'/': if(valor2!=0)
r = valor1 / valor2;
else
r = 0;
break;
else{
gotoxy(10,20);
printf("Operador invlido!");
}
}
gotoxy(10,24);
printf("Resultado = %3.2f", r);
getch();
//pausa
}
7/8/2013 16:01:22
Process Black
134
Quadro 10.3 Exemplo da estrutura de controle de repetio ENQUANTO
Exemplo 10.3 - Ler 10 valores do tipo inteiro, calcular e escrever a mdia dos valores
lidos.
Portugus estruturado ENQUANTO
Linguagem C while
#include <stdio.h>
#include <conio.h>
algoritmo exemplo103
variveis
valor,soma,cont: inteiro
media: real
incio
cont
0
soma
0
enquanto(cont<10)faa
incio
void main() {
int valor, soma, cont;
float media;
cont = 0;
soma = 0;
while(cont<10)
{
clrscr();
//limpa a tela
gotoxy(10,10); //posiciona cursor
printf("Digite um valor: ");
scanf("%i",&valor);
cont = cont + 1;
soma = soma + valor;
}
media = soma / 10;
gotoxy(10,14);
printf("Media = %.2f", media);
getch();
//pausa
escrever("Digite um
valor: ")
ler(valor)
cont
cont + 1
soma
soma + valor
fim
media
soma / 10
escrever("Mdia = ", media)
fim
//bibliotecas
7/8/2013 16:01:22
Process Black
Linguagem C do while
#include <stdio.h>
#include <conio.h>
algoritmo exemplo104
variveis
cont: inteiro
valor, negativo, perc: real
incio
cont
0
negativo
0
repita
void main() {
int cont;
float valor, negativo, perc;
cont = 0;
negativo = 0;
do{
clrscr();
gotoxy(10,10);
printf("Digite um valor: ");
scanf("%f",&valor);
cont = cont + 1;
if(valor < 0)
negativo = negativo + 1;
} while(cont<25);
perc = (negativo*100)/25;
gotoxy(10,14);
printf("%%denegativos=%.2f",perc);
getch();
//pausa
//bibliotecas
135
7/8/2013 16:01:22
Process Black
136
Quadro 10.5 Exemplo da estrutura de controle de repetio PARA
Exemplo 10.5 - Ler 10 valores do tipo inteiro, calcular e escrever a mdia dos valores lidos.
Portugus estruturado PARA
Linguagem C for
#include <stdio.h>
#include <conio.h>
algoritmo exemplo105
variveis
valor,soma,cont: inteiro
media: real
incio
soma
0
para cont de 1 at 10 faa
incio
//bibliotecas
void main() {
int valor, soma, cont;
float media;
soma = 0;
for(cont=1;cont<=10;cont++)
{
clrscr();
//limpa a tela
gotoxy(10,10);//posiciona cursor
printf("Digite o %i valor: ",cont);
scanf("%i",&valor);
soma = soma + valor;
}
media = soma / 10;
gotoxy(10,14);
printf("Media = %.2f", media);
getch();
//pausa
fim
Referncias
ASCENCIO, A. F. G.; CAMPOS, E. A. V.. Fundamentos da Programao de Computadores:
algoritmos, Pascal, C/C++ (padro ANSI) e Java. 3.ed. So Paulo: Pearson Education do
Brasil, 2012.
BERG, A. C.; FIGUEIR, J. P.. Lgica de Programao. 2.ed. Canoas: Ed. ULBRA, 2001.
FORBELLONE, A. L. V.; EBERSPCHER, H. F.. Lgica de Programao: a construo de
algoritmos e estruturas de dados. 3.ed. So Paulo: Pearson/Prentice Hall, 2005.
GOODRICH, M. T.; TAMASSIA, R.. Projeto de Algoritmos. Porto Alegre: Bookman, 2004.
MATTOS, Patrcia Noll de. Linguagem de Programao II (Caderno Universitrio 027). 2.ed.
Canoas: Ed. ULBRA, 2001.
MIZRAHI, V. V.. Treinamento em Linguagem C. 2.ed. So Paulo: Pearson/Prentice Hall, 2008.
PUGA, S.; RISSETTI, G.. Lgica de Programao e Estruturas de Dados. So Paulo: Pearson/
Prentice Hall, 2003.
SCHILDT, Herbert. C Completo e Total. 3. ed. So Paulo: Makron Books, 1997.
7/8/2013 16:01:22
Process Black
Atividades
Parte I - Questes objetivas
1)
137
( ) Errado
2)
3)
4)
7/8/2013 16:01:22
Process Black
138
5)
6)
j=k=10; l=++j;
j=-j;
k++; j=j+k-l--;
7)
7/8/2013 16:01:23
Process Black
8)
II.
III.
IV.
V.
139
9)
7/8/2013 16:01:23
Process Black
140
10)
11)
(a)
T
printf(Total = %-5i,469);
(b)
T
printf(Total = %.2f,280.338);
(c)
T
printf(Total = %4i,258);
(d)
T
printf(Total = %4.2f,587.222);
(e)
T
12)
7/8/2013 16:01:23
Process Black
141
7/8/2013 16:01:23
Process Black
142
7/8/2013 16:01:23
Process Black
143
7/8/2013 16:01:23
Process Black
144
7/8/2013 16:01:23
Process Black