Você está na página 1de 144

ALGORITIMOS E PROGRAMAO I

Algoritmos e programao I.indd 1

7/8/2013 16:00:32
Process Black

Conselho Editorial EAD


Dris Cristina Gedrat
Thomas Heimman
Mara Salazar Machado
Andra de Azevedo Eick
Astomiro Romais

Obra organizada pela Universidade Luterana do Brasil.


Informamos que de inteira responsabilidade dos autores a
emisso de conceitos.
Nenhuma parte desta publicao poder ser reproduzida por
qualquer meio ou forma sem a prvia autorizao da Editora
da ULBRA.
A violao dos direitos autorais crime estabelecido na Lei n .610/98
e punido pelo Artigo 184 do Cdigo Penal.
Dados Internacionais de Catalogao na Publicao (CIP)
I74a Isaia Filho, Eduardo.
Algoritimos e programao I / Eduardo Isaia Filho, Vanessa Lindemann.
Canoas: Ed. ULBRA, 2013.
144p.
1. Algoritmo. 2. Programao. 3. Computao. 4. Informtica.
I. Lindemann, Vanessa. II. Ttulo.
CDU: 681.3.421.2
Setor de Processamento Tcnico da Biblioteca Martinho Lutero - ULBRA/Canoas

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

Algoritmos e programao I.indd 2

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.

Algoritmos e programao I.indd 3

7/8/2013 16:00:55
Process Black

ULBRA Educao a Distncia

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!

Professora Vanessa Lindemann

Algoritmos e programao I.indd 4

7/8/2013 16:00:55
Process Black

SOBRE O AUTOR

Eduardo Isaia Filho

Mestre, Coordenador dos Cursos de Computao da ULBRA unidade Canoas.


Professor titular da disciplina de Algoritmos e Programao I presencial.
Vanessa Lindemann

Mestre em Cincia da Computao - UFRGS - 2002; Doutora em Informtica


na Educao - UFRGS - 2008. Professora dos cursos de Computao da ULBRA
Canoas.

Algoritmos e programao I.indd 5

7/8/2013 16:00:55
Process Black

ULBRA Educao a Distncia

Algoritmos e programao I.indd 6

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

CONCEITOS FUNDAMENTAIS ....................................................................................19


2.1 Dados .............................................................................................................19
2.2 Variveis ..........................................................................................................20
2.3 Constantes .......................................................................................................22
2.4 Expresses .......................................................................................................22
Atividades .............................................................................................................26

INSTRUES PRIMITIVAS ........................................................................................29


3.1 Instruo primitiva de atribuio ......................................................................29
3.2 Instruo primitiva de sada ..............................................................................32
3.3 Instruo primitiva de entrada ...........................................................................34
Atividades .............................................................................................................36

ESTRUTURA SEQUENCIAL ........................................................................................39


4.1 Estrutura bsica de um algoritmo sequencial ......................................................39
4.2 Exemplo de um algoritmo com estrutura sequencial ............................................40
4.3 Construo de algoritmos sequenciais ...............................................................42
4.4 Teste de mesa de algoritmos com estrutura sequencial .......................................46
Atividades .............................................................................................................52

ESTRUTURA DE CONTROLE CONDICIONAL: SE ...........................................................53


5.1 Estrutura condicional SE simples........................................................................53
5.2 Estrutura condicional SE composta ....................................................................55
5.3 Estrutura condicional SE encadeada ..................................................................59
5.4 Formatao da soluo do algoritmo ..................................................................65
Atividades .............................................................................................................66

Algoritmos e programao I.indd 7

7/8/2013 16:00:55
Process Black

ULBRA Educao a Distncia

8
6

ESTRUTURA DE CONTROLE CONDICIONAL: ESCOLHA .................................................73


Atividades .............................................................................................................78

ESTRUTURA DE CONTROLE DE REPETIO: ENQUANTO ..............................................81


Atividades .............................................................................................................94

ESTRUTURA DE CONTROLE DE REPETIO: REPITA ....................................................99


Atividades ...........................................................................................................106

ESTRUTURA DE CONTROLE DE REPETIO: PARA.....................................................111


Atividades ...........................................................................................................117

10 INTRODUO LINGUAGEM C ...............................................................................121


10.1 Identicadores ..............................................................................................122
10.2 Tipos de dados ..............................................................................................123
10.3 Modeladores .................................................................................................123
10.4 Declarao, inicializao e escopo de variveis ...............................................124
10.5 Denio de constantes ................................................................................124
10.6 Cdigos de formato .......................................................................................125
10.7 Caracteres especiais ....................................................................................127
10.8 Comando de atribuio .................................................................................127
10.9 Operadores e funes ....................................................................................128
10.10 Comentrios................................................................................................130
10.11 Funes de entrada e sada ..........................................................................130
10.12 Estruturas de controle condicional ...............................................................131
10.13 Estruturas de controle de repetio .............................................................133
Atividades ...........................................................................................................137

Algoritmos e programao I.indd 8

7/8/2013 16:00:56
Process Black

INTRODUO

Eduardo Isaia Filho

Um programa de computador resultado da atividade intelectual de um


programador. Para isso, so necessrios alguns conhecimentos prvios em
abstrao, modelagem de problemas e lgica de programao. Todo programa
de computador comea a partir de um algoritmo, ou seja, atravs da organizao
lgica das instrues que resolvem o problema. Neste captulo, sero apresentados
os conceitos introdutrios para a construo de algoritmos, suas formas de
representao, seus mtodos de construo e sua estrutura bsica. Por fim, so
propostos alguns exerccios de fixao.

1.1 Conceito de algoritmo


Um algoritmo uma sequncia de passos finitos que visam solucionar um
determinado problema. Estamos acostumados a resolver algoritmos todos os
dias, mas os fazemos de forma to automtica que nem nos damos conta. Por
exemplo: trocar uma lmpada, fazer um bolo, preparar um caf passado, escovar
os dentes, trocar um pneu, entre outros. Todas as atividades do nosso dia a dia que
possuem uma sequncia de passos para serem resolvidas podem ser consideradas
um algoritmo.
Se utilizarmos o exemplo do preparo de um caf passado, teremos os seguintes
passos:
1

passo: reservar os utenslios ltro de caf, chaleira e recipiente para colocar o


caf passado;

passo: reservar o p de caf e a gua;

passo: aquecer a gua;

Algoritmos e programao I.indd 9

7/8/2013 16:00:56
Process Black

ULBRA Educao a Distncia

10
4

passo: colocar o p de caf no ltro;

passo: despejar a gua aquecida no ltro.

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.

1.2 Construo do algoritmo


Para construir um algoritmo, temos que saber claramente qual o problema que
desejamos solucionar, ou seja, qual o objetivo do algoritmo. Para isso, precisamos
analisar o problema identificando trs elementos bsicos: entrada, processamento
e sada.
A entrada so os elementos necessrios para dar incio soluo do problema, o
processamento a manipulao dos elementos de entrada para obteno da sada
e a sada o resultado esperado. Se considerarmos o exemplo do caf passado,
apresentado anteriormente, podemos identificar:

entrada: ltro de caf, chaleira, recipiente para colocar o caf passado, p de


caf e gua;

processamento: aquecer a gua, colocar o p no ltro e despejar a gua no


ltro;

sada: o caf passado.


Se considerarmos os algoritmos computacionais, podemos descrever estes
elementos em:

entrada de dados: so os dados que o algoritmo dever receber;

processamento de dados: so as frmulas e a disposio lgica em que os dados


de entrada sero organizados para obter-se a soluo do problema;

sada de dados: a apresentao do objetivo, ou seja, o resultado esperado.

Algoritmos e programao I.indd 10

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:

entrada de dados: perguntar ao usurio dois nmeros quaisquer;

processamento de dados: calcular a soma dos nmeros informados;

sada de dados: apresentar o resultado da soma.

ULBRA Educao a Distncia

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.

1.3 Formas de representao de algoritmos


Existem diversas formas de representarmos os algoritmos. Dentre elas, citamos
algumas abaixo.

Linguagem natural: utiliza uma descrio narrativa para especicar os passos


a serem realizados para executar a tarefa. Por no possuir uma estrutura bem
denida, pode dar margem para ms interpretaes e ambiguidades.

Portugus estruturado: utiliza uma linguagem estruturada e se assemelha a um


programa escrito em linguagem de programao. Tambm denominado de
pseudocdigo e bastante utilizado como passo inicial antes de descrever um
programa em uma linguagem de programao. Nesta disciplina, o portugus
estruturado ser a forma utilizada para representar os algoritmos no decorrer
dos captulos.

Fluxograma: uma forma universal de representao. Utiliza-se de guras


geomtricas para ilustrar os passos a serem seguidos para resoluo de um
problema.

Diagrama de Chapin: uma variao do uxograma permitindo ter-se uma


viso hierrquica e estruturada da lgica do algoritmo. Esta representao
pouco utilizada nos dias de hoje.

1.3.1 Portugus estruturado


O portugus estruturado um tipo de representao de algoritmo que utiliza
uma linguagem flexvel, intermediria entre a linguagem natural e linguagem de
programao. Normalmente, utilizado para organizar o raciocnio lgico antes
de implementar o mesmo em uma linguagem de programao. Todo algoritmo
representado em portugus estruturado dever ter sua sintaxe pr-definida. O
exemplo 1.1 prope um problema que ser resolvido utilizando um algoritmo em
portugus estruturado.

Algoritmos e programao I.indd 11

7/8/2013 16:00:56
Process Black

ULBRA Educao a Distncia

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

se (media >= 6) ento


escrever (Mdia final = , media, Aluno aprovado)
seno
escrever (Mdia final = ,media, Aluno reprovado)
fim

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.

Algoritmos e programao I.indd 12

7/8/2013 16:00:56
Process Black

Tabela 1.1 Smbolos geomtricos


Smbolo

Nome

Descrio

Terminal

Indica o incio e o fim do fluxo do


algoritmo.

Seta de fluxo de dados

Indica o sentido do fluxo de dados e faz


a conexo dos blocos existentes.

Entrada de dados

Indica que sero recebidas informaes


atravs do teclado.

Processamento

Indica a realizao de clculos,


atribuies ou qualquer manipulao de
dados.

Sada de dados

Indica que as informaes sero exibidas


na tela.

Desvio condicional

Indica a tomada de deciso, dividindo o


fluxo do algoritmo em dois caminhos.

Conector

Serve para conectar dois fluxos.

ULBRA Educao a Distncia

13

Cabe destacar que possvel encontrar formas geomtricas diferentes para


representar determinados comandos e/ou instrues. Entretanto, isso apenas
uma conveno ou hbito de cada autor. O algoritmo do exemplo 1.1 representado
atravs de um fluxograma pode ser visto a seguir.

Algoritmos e programao I.indd 13

7/8/2013 16:00:56
Process Black

ULBRA Educao a Distncia

14

1.3.3 Diagrama de Chapin


Os diagramas de Chapin foram criados para substituir os diagramas de blocos
(fluxograma) por um diagrama de quadros. A vantagem de se utilizar este tipo
de diagrama a clareza quanto ao fluxo de execuo e sua desvantagem que

Algoritmos e programao I.indd 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

ULBRA Educao a Distncia

15

resultado

Reprovado

escrever media, resultado


fim

1.3.4 Formalizao de um algoritmo


Construir um algoritmo consiste em detalhar os dados que sero processados
e as instrues que vo operar sobre esses dados. Esta construo, como visto
anteriormente, pode ser feita por diferentes formas de representaes, mas
importante formalizarmos a descrio dos algoritmos segundo uma conveno
pr-definida, para que todas as pessoas envolvidas no processo possam entendla. Para isso, necessrio definir o conjunto de regras que regulam a escrita do
algoritmo (sintaxe) e o conjunto de regras que definem a interpretao desta
escrita (semntica). Nos captulos seguintes, sero definidas a sintaxe e a semntica
utilizadas nesta disciplina.

1.4 Estrutura bsica de um algoritmo


Observe a receita de bolo de chocolate a seguir.
Bolo de chocolate
Ingredientes:

3 ovos

1 e 1/2 xcara de acar

2 xcaras farinha de trigo

1 xcara de chocolate em p ou achocolatado

1/2 xcara de leo

1 colher de fermento em p

Algoritmos e programao I.indd 15

7/8/2013 16:00:58
Process Black

ULBRA Educao a Distncia

16

1 pitada de sal

1 xcara de gua quente


Modo de preparo:

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.

Asse em forno com temperatura mdia por 40 minutos, desenforme quente.

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

Esta estrutura facilita a localizao do algoritmo, permitindo saber quais variveis


e/ou constantes sero usadas e como elas sero manipuladas para obter o resultado
esperado.

Glossrio

Programa: uma sequncia de instrues que podem ser executadas por


um computador. um conjunto de ordens dadas a um computador para a

Algoritmos e programao I.indd 16

7/8/2013 16:00:58
Process Black

realizao de um determinado processo. a implementao de um algoritmo


em uma determinada linguagem de programao.

Linguagens de programao: so ferramentas (so wares) que permitem o


desenvolvimento de programas. Possuem um poder de criao ilimitado,
desde jogos, editores de texto, sistemas empresariais at sistemas operacionais.
Existem vrias linguagens de programao, cada uma com suas caractersticas
prprias. Exemplos: Pascal, C, C++, C#, Java e outras.

ULBRA Educao a Distncia

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.

Vamos construir alguns algoritmos? Descreva os passos necessrios para


solucionar os seguintes desaos.

a.

Descreva como voc troca uma lmpada.

b.

Um campons precisa atravessar um rio utilizando um barco com


capacidade para carregar ele mesmo e mais uma de suas trs cargas,
que so: um lobo, uma ovelha e um mao de pasto. Quais os passos
que o campons deve seguir para atravessar o rio sem perder a sua
carga? Sabendo que o lobo come a ovelha e a ovelha come o pasto, ou
seja, em momento algum o lobo pode car sozinho com a ovelha e a
ovelha car sozinha com o pasto. DICA: procure no Google (www.
google.com.br) as palavras jogo campons ovelha pasto ou jogo
pastor ovelha feno e teste sua soluo de maneira online.

Algoritmos e programao I.indd 17

7/8/2013 16:00:58
Process Black

ULBRA Educao a Distncia

18

c.

Trs jesutas e trs canibais precisam atravessar um rio, para isso


dispem de um barco com capacidade para duas pessoas. Por medida
de segurana, em nenhuma das margens do rio, o nmero de canibais
pode ser maior que o nmero de jesutas. Qual a soluo para efetuar
a travessia de forma segura? DICA: procure no Google (www.google.
com.br) as palavras jogo jesutas canibais e teste sua soluo de
maneira online.

d.

A Torre de Hani consiste em uma base com trs pinos, onde em


um deles, esto dispostos trs discos uns sobre os outros, em ordem
crescente de dimetro, de cima para baixo. Descreva como passar todos
os discos de um pino para outro qualquer, usando um dos pinos como
auxiliar, de maneira que um disco maior nunca que em cima de outro
menor em nenhuma situao. DICA: procure no Google (www.google.
com.br) as palavras jogo torre de hani e teste sua soluo de maneira
online.

e.

Pedro possui dois baldes: um com capacidade para comportar 5 litros,


e outro que comporta 3 litros. Ele no possui outros recipientes e os
baldes no possuem marcaes de volume. Como Pedro, utilizando
os dois baldes, pode retirar exatamente sete litros de gua de uma
fonte?1

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!

Algoritmos e programao I.indd 18

7/8/2013 16:00:59
Process Black

CONCEITOS FUNDAMENTAIS

Eduardo Isaia Filho

Neste captulo, sero apresentados os conceitos de dados, variveis e constantes;


os tipos bsicos de dados; os operadores aritmticos, relacionais e lgicos. Por fim,
so propostos alguns exerccios de fixao.

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.

2.1.1 Tipos bsicos de dados


Os tipos de dados podem ser classificados de acordo com o tipo de informao
contida neles: dados numricos (inteiros e reais), dados literais (caractere e cadeia)
e dados lgicos.

Inteiro: os dados do tipo inteiro pertencem ao conjunto de nmeros inteiros


relativos, ou seja, so aqueles que no possuem componentes decimais ou
fracionrios, podendo ser positivos, nulos ou negativos. Exemplos: quantidade

Algoritmos e programao I.indd 19

7/8/2013 16:00:59
Process Black

ULBRA Educao a Distncia

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.

Caractere: os dados do tipo caractere so compostos por um nico caractere


alfanumrico (0..9, A..Z, a..z) ou caractere especial (#, $, %, *, ?, >, ...). Os dados
do tipo caractere so delimitados por aspas. Exemplos: cdigo de acesso a um
sistema (cdigo = #); resposta a uma pergunta (resposta = S); seleo entre
alternativas (alternativa = a); o sexo de uma pessoa (sexo = M).

Cadeia: os dados do tipo cadeia so formados por um conjunto de caracteres


alfanumricos (0..9, A..Z, a..z) e/ou caracteres especiais (#, $, %, *, ?, >, ...).
Os dados do tipo cadeia so delimitados por aspas. Exemplos: nome de um
funcionrio (nome = Alberto Malazowski); endereo de um cliente (rua = Av.
Julio de Castilhos, 990); senha de acesso a um sistema (senha = 9125ax);
outros.

Lgico: um dado do tipo lgico s pode assumir dois estados: verdadeiro ou


falso. Exemplos: resposta = verdadeiro (ou, simplesmente resposta = v); teste
= falso (ou, simplesmente teste = f).

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:

devem sempre comear com uma letra;

podendo ser seguida de letras e/ou nmeros;

Algoritmos e programao I.indd 20

7/8/2013 16:00:59
Process Black

no permitido espaos em branco, caso haja necessidade de separador o


sublinhado baixo (underscore) pode ser utilizado, exemplo: nome_aluno;

no permitido utilizar smbolos, operadores, acentos e caracteres especiais,


por exemplo: &, %, #, +, /, ?, @;

no permitido utilizar uma palavra reservada, ou seja, uma palavra que


um comando do algoritmo.

ULBRA Educao a Distncia

21

Exemplos de nomes de variveis:

Salario : correto;

1ANO : errado, pois no comeou com uma letra;

ANO1 : correto;

a casa : errado, pois contm o espao em branco;

SAL/HORA : errado, pois contm o caracter /;

SAL_HORA : correto;

_DESCONTO : errado, pois no comeou com uma letra.

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.

2.2.1 Sintaxe da declarao de variveis


Todas as variveis utilizadas em um algoritmo devem ser declaradas antes de
serem utilizadas, atravs da definio de um nome (identificador) e do tipo de
dado que ser armazenado nela. A seguir veja como a sintaxe da declarao de
uma varivel:
variveis
<nome da varivel ou lista de nomes> : <tipo de dado>
Exemplo
variveis
nome, endereco: cadeia
idade: inteiro
peso, altura: real

Algoritmos e programao I.indd 21

7/8/2013 16:00:59
Process Black

ULBRA Educao a Distncia

22

2.3 Constantes
Ao contrrio das variveis, o contedo armazenado em uma constante no
alterado durante a execuo de um algoritmo.

2.3.1 Sintaxe da declarao de constantes


As constantes tambm so definidas antes de serem utilizadas e seus nomes
(identificadores) seguem as mesmas regras das variveis. A seguir veja como a
sintaxe da declarao de uma constante.
constantes
<nome da constante> = <contedo>
Exemplo
constantes
pi = 3.1416

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.

2.4.1 Expresses aritmticas


As expresses aritmticas so formadas por variveis numricas e operadores
aritmticos, cujo resultado da avaliao do tipo numrico (inteiro ou real). Os
operadores aritmticos e sua ordem de prioridade so apresentados na Tabela 2.1.
Tabela 2.1 Operadores aritmticos
Operador

Operao

Prioridade

Exemplo

**

Exponenciao

3 ** 2 = 9

//

Radiciao

25 // 2 = 5

Multiplicao

7 * 2 = 14

Diviso

20 / 4 = 5

div

Quociente da diviso inteira

20 div 6 = 3

mod

Resto da diviso inteira

20 mod 6 = 2

Adio

3 + 8 = 11

Subtrao

30 12 = 18

Algoritmos e programao I.indd 22

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

ULBRA Educao a Distncia

23

Observe que a diviso de 14 por 4 a diviso tradicional, onde fracionamos o


quociente at obtermos um resultado nulo ou uma dzima peridica. Ao utilizarmos
os operadores div e mod, estamos fazendo a diviso inteira, ou seja, devemos
encerrar o processo de diviso quando o quociente necessitar ser fracionado. Veja
o exemplo da diviso inteira:
14 4
-8 3
quoiente inteiro (div)
2
resto da diviso inteira (mod)
Outros exemplos so apresentados na Tabela 2.2.
Tabela 2.2 Exemplos de diviso, div e mod
10 / 2 = 5
10 div 2 = 5
10 mod 2 = 0

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

A prioridade entre os operadores define a ordem em que os mesmos devem ser


executados dentro de uma mesma expresso. Quando h dois ou mais operadores
de mesma prioridade em uma expresso, a execuo se d da esquerda para
direita. Para alterar a ordem em que os operadores so executados, pode-se utilizar
parnteses, por exemplo:
(2 + 3) * 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

Algoritmos e programao I.indd 23

7/8/2013 16:00:59
Process Black

ULBRA Educao a Distncia

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.

2.4.2 Expresses lgicas


As expresses lgicas tm como resultado um valor lgico (verdadeiro/V ou
falso/F). Elas podem ser formadas por operadores relacionais, operadores lgicos
ou pela combinao de ambos.

2.4.2.1 Operadores relacionais


Estes operadores, listados na Tabela 2.3, so utilizados quando se deseja efetuar
comparaes entre objetos de mesma natureza (variveis do mesmo tipo de dado).
O resultado de uma comparao sempre um valor lgico (verdadeiro ou falso).
Tabela 2.3 Operadores relacionais
Operador
=

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

2.4.2.2 Operadores lgicos


Os operadores lgicos ou booleanos tambm resultam em valores lgicos e,
normalmente, so usados para combinar expresses relacionais. Os operadores
lgicos e suas relaes de precedncia so mostrados na Tabela 2.4.

Algoritmos e programao I.indd 24

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)

ULBRA Educao a Distncia

Tabela 2.4 Operadores lgicos

(V) e (V)

(F) ou (V)

Se considerarmos duas variveis, representadas por varivel1 e varivel2, podemos


descrever as trs operaes lgicas a seguir:

varivel1 E varivel2: o operador E resulta em verdadeiro somente se ambas


variveis forem verdadeiras. Se uma for falsa, ou se ambas forem falsas, a
operao E tambm ser falsa.

varivel1 OU varivel2: o operador OU resulta em verdadeiro se pelo menos


uma das variveis for verdadeira. S resultam em valores falsos se ambas
variveis forem falsas.

NO varivel1: o operador NO unrio, ou seja, s se aplica a uma varivel.


avaliado verdadeiro se a varivel for falsa; de modo contrrio, o operador
NO resultar em falso, se a varivel for verdadeira.

A Tabela 2.5, chamada de tabela-verdade, exemplifica o uso dos operadores lgicos,


considerando duas variveis lgicas (A e B). Uma vez que uma varivel lgica s
pode assumir dois valores (verdadeiro ou falso), h exatamente quatro combinaes
possveis entre A e B. As colunas contm os resultados das operaes lgicas sobre
as combinaes de A e B.
Tabela 2.5 Tabela-verdade dos operadores lgicos
A

No A

No B

AeB

A ou B

Algoritmos e programao I.indd 25

7/8/2013 16:01:00
Process Black

ULBRA Educao a Distncia

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)

Marque com um (X) somente os identicadores vlidos.


a) ( ) nome

b) ( ) endereo

c) ( ) 3x4

d) ( ) soma

e) ( ) salrio_lquido

f) ( ) a

g) ( ) nomedaempresa

h) ( ) ah!

i) ( ) salario total

j) ( ) mdia

k) ( ) x2

l) ( ) data

Observe os dados listados a seguir e identique o seu tipo, marcando com I


os inteiros, R os reais e C as cadeias.
a) ( ) nome de uma pessoa

b) ( ) o tamanho de uma mesa

c) ( ) preo de um produto

d) ( ) o nmero de cadeiras de uma mesa

e) ( ) um dia do ms

f) ( ) o cdigo de um produto

Assinale com um (X) a resposta certa. Ao convertermos a expresso 3 x y para


utilizarmos em um algoritmo, como ca a expresso?
a) ( ) x//3 + y//3;

4)

b) ( ) x + y //3;

c) ( ) (x + y) // 3;

d) ( ) 3 // x+y.

Qual o resultado da expresso 9 + 4 / 2 + 3?


a) 9,5;

b) 2,6;

Algoritmos e programao I.indd 26

c) 14;

d) 9,8;

e) 9.

7/8/2013 16:01:00
Process Black

5)

Considere as expresses lgicas e assinale (V) quando o resultado for


Verdadeiro e (F) quando o resultado for Falso.
a) ( ) V e F ou V

b) ( ) no (V e V)

c) ( ) (V ou F ) e V

Gabarito:
1.

As respostas corretas so: a, d, f, g, k e l.

2.

a) C;

3.

4.

5.

a) V;

b) R;

c) R;

d) I;

b) F;

c) V;

d) V

Algoritmos e programao I.indd 27

e) I;

d) ( ) no F e no F

ULBRA Educao a Distncia

27

f) C

7/8/2013 16:01:01
Process Black

ULBRA Educao a Distncia

28

Algoritmos e programao I.indd 28

7/8/2013 16:01:02
Process Black

INSTRUES PRIMITIVAS

Vanessa Lindemann

Instrues primitivas so comandos bsicos utilizados para efetuar a entrada e a


sada de dados e sua movimentao na memria. Estes comandos, presentes na
maioria absoluta dos algoritmos, garantem a comunicao do algoritmo com o
mundo exterior. Neste captulo, sero apresentadas as instrues primitivas de
atribuio, de entrada de dados (comando LER) e de sada de dados (comando
ESCREVER).

3.1 Instruo primitiva de atribuio


A sintaxe do comando de atribuio, representado pelo smbolo
a seguir e exemplificada nos Quadros 3.1 e 3.2.
<varivel>

<expresso>

<varivel>

<varivel>

<varivel>

<constante>

, apresentada

Seu funcionamento consiste em avaliar a expresso (varivel ou constante) que


est direita do comando e armazenar o valor resultante desta expresso (varivel
ou constante) na posio de memria correspondente varivel que aparece
esquerda do comando. Para isso, necessrio que o tipo de dado resultante da
expresso (varivel ou constante) avaliada e o tipo de dado da varivel sejam
compatveis. No exemplo media 6.8 (l-se mdia recebe seis e oito), o valor
6,8 armazenado na posio de memria reservada varivel media, que dever
ser do tipo real. Outros exemplos da instruo primitiva de atribuio podem ser
observados no Quadro 3.1.

Algoritmos e programao I.indd 29

7/8/2013 16:01:02
Process Black

ULBRA Educao a Distncia

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

Exemplos de comandos de atribuio


01 x

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

As variveis x e y foram declaradas do tipo lgico, ento podem armazenar


os valores lgicos verdadeiro ou falso. No exemplo 01, x recebe o valor lgico
verdadeiro. No exemplo 02, y recebe o valor armazenado na varivel x, ou seja, o
valor lgico verdadeiro.
As variveis codigo e qtde, declaradas como inteiro, s podem armazenar valores
do tipo inteiro, como ilustram os exemplos 03 e 04 do Quadro 3.1. No caso de uma
varivel do tipo real, esta poder armazenar tanto valores reais (como ilustra o
exemplo 06), quanto valores inteiros. Esta situao pode ser observada no exemplo
05, onde a varivel total que do tipo real, recebe o resultado da expresso
qtde*5 que, neste exemplo, resulta em 15.
Os ltimos exemplos do Quadro 3.1 ilustram a atribuio de valores a variveis
declaradas como literais. importante observar que quando as variveis forem
do tipo cadeia ou caractere, a expresso a ser atribuda varivel deve estar entre
aspas, como nos exemplos 07, 08 e 09. No exemplo 10, a varivel resposta2 recebe
o valor armazenado na varivel resposta1, ou seja, um S.
Retomando a questo da compatibilidade de tipo, destaca-se que: (a) o resultado
de uma expresso com operadores de diviso e/ou radiciao sempre dever ser
armazenado em uma varivel do tipo real, como ilustram os exemplos 03, 04 e 05
do Quadro 3.2; (b) os operadores mod e div s podem ser utilizados com operandos
do tipo inteiro, conforme exemplos 06 e 07 do Quadro 3.2; (c) o resultado de uma
expresso com operadores mod e/ou div deve ser armazenado em uma varivel do
tipo inteiro situaes tambm observveis nos exemplos 06 e 07 do Quadro 3.2.

Algoritmos e programao I.indd 30

7/8/2013 16:01:02
Process Black

31

Declarao de variveis
op1, op2: inteiro
r1, r2, r3: real
r4, r5: inteiro

ULBRA Educao a Distncia

Quadro 3.2 Exemplos da instruo primitiva de atribuio


Exemplos de comandos de atribuio
01 op1
02 op2
03 r1

10
2
op1 / op2

04 r2

18 / 4

05 r3

25 // 2

06 r4

8 mod 3

07 r5

op1 div 3

Nos exemplos 01 e 02 do Quadro 3.2, as variveis o p 1 e o p 2 recebem,


respectivamente, 10 e 2. Em seguida, a varivel r1 recebe o resultado da diviso de
op1 por op2 que, neste caso, 5. Como foi explicado anteriormente, independente
do resultado da expresso ser inteiro ou no, a varivel r1 foi declarada do tipo real
e ir armazenar este resultado como real. O mesmo ocorre nos exemplos 04 e 05, em
que as variveis r2 e r3 armazenam, respectivamente, os valores 4,5 (resultado de
uma diviso) e 5 (resultado de uma radiciao). O Quadro 3.3 ilustra os resultados
dos exemplos 06 e 07, em que as variveis r4 e r5 recebem, respectivamente, 2
(resto da diviso) e 3 (quociente inteiro).
Quadro 3.3 Exemplo dos operadores mod e div
r4
8 3
-6 2
2

8 mod 3

r5

op1 div 3

10 3
-9 3
resto da diviso

(a) Exemplo 06 - Quadro 3.2

quociente inteiro

(b) Exemplo 07 - Quadro 3.2

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

Algoritmos e programao I.indd 31

Memria
x
10
11
20

7/8/2013 16:01:02
Process Black

ULBRA Educao a Distncia

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

A soluo do exemplo 3.1 apresenta duas limitaes significativas: (a) a mdia do


aluno calculada e armazenada na memria, porm no exibida para o usurio
do programa; (b) se o programa for executado mais de uma vez, o resultado ser
sempre o mesmo, pois os valores armazenados nas variveis nota1 e nota2
permanecem inalterados. Estas limitaes sero resolvidas com o uso das instrues
primitivas de sada e de entrada, respectivamente, conforme descrevem as sees
3.2 e 3.3.

3.2 Instruo primitiva de sada


A instruo primitiva de sada de dados tem por objetivo prover a interao entre o
programa e o usurio (ou outros dispositivos), emitindo mensagens e/ou exibindo
valores armazenados em variveis na memria do computador.
A sintaxe do comando de sada de dados apresentada a seguir e exemplificada
no Quadro 3.6. Como pode ser observado, o argumento da instruo primitiva

Algoritmos e programao I.indd 32

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>)

ULBRA Educao a Distncia

33

escrever(<literal>,<varivel>)
Quadro 3.6 Exemplos da sintaxe do comando de sada
Variveis
media: real
nome: cadeia

Exemplos de comandos de sada


01
02
03
04

escrever(media)
escrever("Digite o nome do aluno: ")
escrever("Mdia final = ",media)
escrever(nome," obteve mdia final = ",media)

No exemplo 01 do Quadro 3.6, o comando de sada exibir apenas o valor


armazenado na varivel media (considerando a varivel media do exemplo 3.1,
o valor exibido seria 8). No segundo exemplo, o comando de sada contm apenas
um literal, que ser reproduzido no dispositivo de sada. O exemplo 03 contm um
literal (Mdia final = ) e uma varivel (media), separados por vrgula, resultando
em Mdia final = 8. Supondo que a varivel nome armazene Joana e a varivel media
armazene 8, a sada do exemplo 04 seria Joana obteve mdia final = 8.
A aplicao do comando de sada pode ser observada no exemplo 3.2, que reescreve
a soluo do exemplo 3.1 resolvendo uma das limitaes citadas anteriormente.
Nesta soluo, descrita no Quadro 3.7, a mdia do aluno calculada e armazenada
na memria (linha 07) e, por fim, exibida ao usurio (linha 08).
Quadro 3.7 Exemplo da aplicao de comandos de atribuio e sada de dados
Exemplo 3.2 - Calcula a mdia de um aluno, considerando duas notas.
01
02
03
04

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

Algoritmos e programao I.indd 33

7/8/2013 16:01:02
Process Black

ULBRA Educao a Distncia

34

3.3 Instruo primitiva de entrada


A instruo primitiva de entrada permite que dados fornecidos pelo usurio via
teclado (ou por outros dispositivos) sejam armazenados em variveis na memria
do computador.
A sintaxe do comando de entrada de dados exibida a seguir e exemplificada no
Quadro 3.8.
ler(<varivel>)
ler(<lista de variveis>)
Quadro 3.8 Exemplos da sintaxe do comando de entrada
Variveis
nota1: real
nota2: real
nome: cadeia

Exemplos de comandos de sada


01 ler(nome,nota1,nota2)
02 escrever("Digite o nome do aluno: ")
ler(nome)
escrever("Digite a primeira nota do aluno: ")
ler(nota1)
escrever("Digite a segunda nota do aluno: ")
ler(nota2)

No primeiro exemplo do Quadro 3.8, as trs variveis so lidas em um nico


comando de entrada, sem nenhuma informao prvia ao usurio sobre o que ele
dever digitar. Ao contrrio, o exemplo 02 l uma varivel de cada vez e, antes
de cada comando de entrada, emite uma mensagem ao usurio indicando o que
deve ser informado ao programa. Esta soluo facilita a interao do usurio com
o programa, garantindo que as informaes sejam fornecidas na ordem correta.
Retomando o exemplo que calcula a mdia do aluno, proposto na seo 3.1, o
Quadro 3.9 apresenta a soluo ideal para o problema, incluindo o comando de
entrada para resolver a segunda limitao mencionada anteriormente, com relao
s variveis nota1 e nota2 que permaneciam inalteradas, resultando sempre o
mesmo valor para mdia. Este algoritmo inicia solicitando que o usurio digite a
primeira nota do aluno (linha 05) e, em seguida, l o valor digitado e armazena na
varivel nota1 (linha 06). O mesmo acontece com a segunda nota (linhas 07 e 08).
A mdia do aluno calculada e armazenada na varivel media (linha 09) e, por
fim, exibida ao usurio (linha 10).

Algoritmos e programao I.indd 34

7/8/2013 16:01:03
Process Black

35

ULBRA Educao a Distncia

Quadro 3.9 Exemplo da aplicao de comandos de atribuio, entrada e sada


Exemplo 3.3 - Calcula a mdia de um aluno, considerando duas notas.
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)
fim

Um programador deve se preocupar em facilitar a interao do usurio com o


programa. Ento, importante utilizar o comando de sada antes do comando
de entrada, para indicar o que o usurio deve digitar (como nas linhas 05 e 07
do exemplo 3.3). Outro detalhe importante a ser observado a apresentao dos
resultados que deve conter, alm do resultado em si, mensagens explicando seu
significado (como acontece na linha 10 do exemplo 3.3).

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.

Algoritmos e programao I.indd 35

7/8/2013 16:01:03
Process Black

ULBRA Educao a Distncia

36

Atividades
1)

2)

Assinale (V) para as assertivas Verdadeiras e (F) para as Falsas.


(a)

) Instrues primitivas so comandos bsicos utilizados para


efetuar a entrada e a sada de dados e sua movimentao na
memria, presentes apenas em alguns algoritmos.

(b)

( ) So instrues primitivas: o comando de atribuio, o comando


de entrada de dados e o comando de sada de dados.

(c)

) O funcionamento do comando de atribuio consiste em avaliar


a expresso, varivel ou constante que est esquerda do
comando e armazenar o valor resultante na posio de memria
correspondente varivel que aparece direita do comando.

(d)

) A instruo primitiva de sada de dados tem por objetivo


prover a interao entre o programa e o usurio (ou outros
dispositivos).

(e)

) A instruo primitiva de entrada permite que dados fornecidos


pelo usurio via teclado (ou por outros dispositivos) sejam
armazenados em variveis na memria do computador.

Sobre a instruo primitiva de atribuio...


(I)

O resultado de uma operao de diviso sempre deve ser armazenado


em uma varivel declarada do tipo real, pois mesmo que o resultado
desta operao seja um valor inteiro (exemplo: 10 / 5, cujo resultado
ser 2), este ser armazenado como real.

(II)

Os operandos de uma expresso com operadores mod e/ou div podem


ser do tipo real, mas o resultado da expresso deve ser armazenado
em uma varivel do tipo inteiro.

(III)

No comando de atribuio, o literal atribudo a uma varivel do tipo


cadeia ou caractere deve estar entre aspas conforme o exemplo: nome
Luciene.

Quais assertivas so VERDADEIRAS?


(a)

Apenas I e II

(b)

Apenas II.

(c)

Apenas I e III.

(d)

I, II e III.

(e)

Nenhuma das respostas anteriores.

Algoritmos e programao I.indd 36

7/8/2013 16:01:03
Process Black

3)

Considerando a declarao de variveis a seguir, assinale os comandos de


atribuio considerados INVLIDOS.
variveis
nome, aluno: cadeia
resp: caractere

ULBRA Educao a Distncia

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

Assinale a opo em que uma ou mais das instrues primitivas est(o)


INCORRETA(s), considerando a declarao de variveis a seguir.
variveis
nome: cadeia
idade: inteiro
peso, altura, imc: real
(a) escrever(Informe o nome, o peso e a altura do paciente: )
ler(nome, peso, altura)
imc

peso / (altura * altura)

escrever(IMC do paciente ,nome, = , imc)


(b) idade
nome

10
Solano S

escrever(nome, tem , idade, anos)


(c) escrever(Informe o nome do paciente: )
ler(nome)
escrever(Informe a idade do paciente: )
ler(idade)
(d) ler(nome, peso, altura)
imc
peso / (altura * altura)
escrever(imc)
(e) Nenhuma das respostas anteriores.

Algoritmos e programao I.indd 37

7/8/2013 16:01:03
Process Black

ULBRA Educao a Distncia

38
5)

Considerando os comandos de atribuio a seguir, marque a opo que


contenha a declarao de variveis CORRETA.
a
10
b

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)

Nenhuma das respostas anteriores.

Respostas
1) a = F;

b = V;

c = F;

d = V;

e = V.

2) c.
3) a, b, c, f, h.
4) c.
5) b

Algoritmos e programao I.indd 38

7/8/2013 16:01:04
Process Black

ESTRUTURA SEQUENCIAL

Vanessa Lindemann

Ao criar um algoritmo, tem-se como objetivo a soluo de um determinado


problema. Para que este problema seja resolvido, os conceitos bsicos e as instrues
primitivas estudados nos captulos anteriores, devem estar organizados de forma a
representar um conjunto de aes, que seguir um fluxo de execuo determinado
por trs estruturas bsicas de controle: sequencial, condicional e repetitiva.
Este captulo dedicado estrutura sequencial, que contm um conjunto de
instrues que sero executadas de forma linear, de cima para baixo, da esquerda
para a direita, sem nenhum desvio entre as diretivas de incio e fim do algoritmo.
As estruturas de controle condicional e repetitiva sero estudadas nos captulos
subsequentes.

4.1 Estrutura bsica de um algoritmo sequencial


A estrutura bsica de um algoritmo sequencial apresentada no Quadro 4.1. Na
linha 01, tem-se a identificao do algoritmo, seguida da declarao de variveis
(linhas 02 e 03) e, por fim, entre as diretivas de incio e fim encontra-se o corpo do
algoritmo (linhas 04 a 08).
Quadro 4.1 Estrutura bsica de um algoritmo sequencial
01
02
03
04
05
06
07
08

algoritmo <nome>
variveis
<lista de variveis>: <tipo>
incio
<instruo 1>
<instruo 2>
<instruo n>
fim

Algoritmos e programao I.indd 39

7/8/2013 16:01:04
Process Black

ULBRA Educao a Distncia

40
Como pode ser observado na estrutura apresentada no Quadro 4.1, o fluxo de
execuo de um algoritmo sequencial linear.

4.2 Exemplo de um algoritmo com estrutura sequencial


O algoritmo apresentado no captulo 3, que calcula a mdia de um aluno a partir
de duas notas fornecidas pelo usurio, um exemplo da aplicao da estrutura
sequencial. Este exemplo, escrito em portugus estruturado, foi reproduzido
novamente no Quadro 4.2.
Quadro 4.2 Exemplo de algoritmo sequencial em portugus estruturado
Exemplo 3.3. Calcula a mdia de um aluno, considerando duas notas.

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

As instrues que compem o corpo do algoritmo sero executadas uma aps a


outra, na mesma ordem em que foram escritas, sem qualquer tipo de desvio. Atravs
da instruo primitiva de sada na linha 05, o usurio receber uma mensagem
solicitando que a primeira nota do aluno seja digitada. O valor digitado pelo
usurio ser lido e armazenado na varivel nota1 (linha 06). Os mesmos passos
so repetidos para a segunda nota (linhas 07 e 08), que lida e armazenada na
varivel nota2. Em seguida, a varivel media recebe a mdia do aluno, calculada
na linha 09 a partir da expresso (nota1+nota2)/2.
A soluo do algoritmo, apresentada no Quadro 4.2, foi escrita em portugus
estruturado, mas tambm possvel utilizar outras formas de representao, como
ilustra o fluxograma da Figura 4.1. O fluxograma de um algoritmo sequencial
permite, a partir do smbolo de incio, a execuo das instrues contidas nos
smbolos subsequentes sem nenhum desvio, at alcanar o smbolo de fim.

Algoritmos e programao I.indd 40

7/8/2013 16:01:04
Process Black

Figura 4.1 Exemplo de algoritmo sequencial em fluxograma

Algoritmos e programao I.indd 41

ULBRA Educao a Distncia

41

7/8/2013 16:01:04
Process Black

ULBRA Educao a Distncia

42

4.3 Construo de algoritmos sequenciais


O primeiro passo, para chegar soluo de um problema, identificar no seu
enunciado quais so os dados de entrada e de sada e, a partir da, definir o
processamento necessrio para gerar o resultado esperado.
No exemplo apresentado na seo anterior, os dados de entrada so as notas do
aluno e a sada esperada a sua mdia. Para chegar a esse resultado, foi realizado o
clculo da mdia aritmtica entre as duas notas fornecidas pelo usurio, conforme
pode ser observado no esquema da Figura 4.2.
Figura 4.2 Elementos bsicos para construo do algoritmo de clculo da mdia
Entrada
Notas do aluno
nota1 nota2

media

Processamento

Sada

Calcular a mdia

Mdia do aluno
media

(nota1+nota2)/2

A prvia identificao dos elementos bsicos, ilustrados na Figura 4.2, importante


para a construo da soluo do problema. Outros exemplos so apresentados
a seguir com o objetivo de ilustrar passo a passo como construir solues para
algoritmos sequenciais. A partir do enunciado de cada problema so identificados os
elementos bsicos para a construo do algoritmo (entrada / processamento / sada)
e, em seguida, apresenta-se a soluo do problema em portugus estruturado.
Exemplo 4.1
Descrio do problema: construa um algoritmo que: (a) leia o nome de um
funcionrio, a quantidade de horas por ele trabalhadas e o valor que ele recebe por
hora; (b) calcule o salrio bruto, o valor do INSS (8% sobre o salrio bruto) e o salrio
lquido do funcionrio; (c) escreva o nome do funcionrio e os valores calculados.
A partir deste enunciado, monta-se o esquema da Figura 4.3 que contm os
elementos bsicos para a construo da soluo.
Figura 4.3 Elementos bsicos para construo do algoritmo do exemplo 4.1
Entrada

Processamento

Sada

Calcular salrio bruto

nome
ht
vh

sb ht*vh
Calcular INSS

inss sb*0.08
Calcular salrio lquido

nome
sb
inss
sl

sl sb-inss

Algoritmos e programao I.indd 42

7/8/2013 16:01:04
Process Black

Foram identificados, a partir do enunciado do problema (exemplo 4.1), trs dados de


entrada: nome do funcionrio, horas trabalhadas e valor da hora (representados na
Figura 4.3 pelas variveis nome,ht e vh, respectivamente). Como sada, espera-se:
nome do funcionrio, salrio bruto, inss e salrio lquido (o nome do funcionrio
ser informado pelo usurio e os outros dados sero calculados). No processamento,
necessrio definir como, a partir dos dados de entrada, gerar o resultado esperado.
Neste exemplo, foram criadas as variveis sb, inss e sl para armazenar os
valores calculados para o salrio bruto, o INSS e o salrio lquido. O salrio bruto
calculado multiplicando a quantidade de horas trabalhadas pelo valor da hora
(ht*vh), o valor do INSS representa 8% do salrio bruto (sb*0.08) e, por fim, o
salrio lquido o salrio bruto menos o valor do INSS (sb-inss).

ULBRA Educao a Distncia

43

Com o esquema da Figura 4.3, portanto, possvel construir a soluo para o


problema, descrita em portugus estruturado no Quadro 4.3.
Quadro 4.3 Soluo do exemplo 4.1 em portugus estruturado
Exemplo 4.1 - Calcula o salrio de um funcionrio.
01
02
03
04
05
06
07
08
09
10
11
12

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

Algoritmos e programao I.indd 43

7/8/2013 16:01:05
Process Black

ULBRA Educao a Distncia

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

A entrada o ndice de natalidade da cidade Y (representada pela varivel y).


O objetivo do algoritmo calcular e escrever o ndice de natalidade da cidade X
(representada pela varivel x), que 30% superior ao da cidade Y. A soluo para
o problema est descrita em portugus estruturado no Quadro 4.4.

Algoritmos e programao I.indd 44

7/8/2013 16:01:05
Process Black

45

ULBRA Educao a Distncia

Quadro 4.4 Soluo do exemplo 4.2 em portugus estruturado


Exemplo 4.2 - Calcula o ndice de natalidade de uma cidade.
01
02
03
04
05
06

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

Quadro 4.5 Soluo do exemplo 4.3 em portugus estruturado


Exemplo 4.3 - Converso de graus Centgrados para graus Fahrenheit.
01
02
03
04
05
06

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

Algoritmos e programao I.indd 45

7/8/2013 16:01:05
Process Black

ULBRA Educao a Distncia

46

4.4 Teste de mesa de algoritmos com estrutura sequencial


O teste de mesa tem por objetivo detectar, caso existam, erros semnticos na
soluo do algoritmo (ou seja, erros de lgica). Para realizar o teste de mesa, as
variveis utilizadas no algoritmo devem ser listadas, uma simulao da execuo do
algoritmo realizada e todos os valores assumidos pelas variveis so registrados.
No final, compara-se a resposta obtida com a resposta esperada. Caso no haja
coincidncia entre estas respostas, detectou-se um erro de lgica.
Os exemplos descritos a seguir apresentam o algoritmo e seu teste de mesa.
Exemplo 4.4
Descrio do problema: faa um algoritmo para calcular a rea de um tringulo.
Figura 4.6 Elementos bsicos para construo do algoritmo do exemplo 4.4
Entrada

Processamento

Sada

Base e altura

Calcular a rea do tringulo

rea do tringulo

area

(b*h)/2

area

Mesmo que no esteja explcito na descrio do problema, os dados de entrada podem


ser identificados a partir da frmula usada para calcular a rea de um tringulo.
Assim, como ilustra a Figura 4.6, os dados necessrios para calcular esta rea so a
base e a altura do tringulo. No processamento, simplesmente, aplica-se a frmula
e, por fim, o resultado dever ser exibido ao usurio. O algoritmo que resolve este
problema descrito no Quadro 4.6 e seu teste de mesa explicado na sequncia.
Quadro 4.6 Soluo do exemplo 4.4 em portugus estruturado
Exemplo 4.4 - Clculo da rea de um tringulo.
01
02
03
04
05
06
07
08

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

Algoritmos e programao I.indd 46

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.

ULBRA Educao a Distncia

47

Quadro 4.7 Teste de mesa do exemplo 4.4 etapa 1


Exemplo 4.4 - Clculo da rea de um tringulo.
Entrada

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

Algoritmos e programao I.indd 47

area

12

7/8/2013 16:01:06
Process Black

ULBRA Educao a Distncia

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

A rea do tringulo calculada na linha 09 (Quadro 4.6). Considerando os valores


armazenados nas variveis b e h, tem-se (12*5)/2, que resulta em 30. Este valor
armazenado na varivel area, devendo, portanto, ser registrado na tabela do
teste de mesa.
Quadro 4.10 Teste de mesa do exemplo 4.4 etapa 2, passo 3
Exemplo 4.4 - Clculo da rea de um tringulo.
Entrada

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.

Algoritmos e programao I.indd 48

7/8/2013 16:01:06
Process Black

49

ULBRA Educao a Distncia

Quadro 4.11 Teste de mesa do exemplo 4.4 etapa 2, passo 4


Exemplo 4.4 - Clculo da rea de um tringulo.
Entrada
b = 12
h=5

Teste de mesa
variveis

linha
06

Sada

area

rea = 30

12

08

09

30

Encerrada a simulao de execuo, verifica-se que a resposta obtida coincide com


a resposta esperada (rea = 30). Portanto, o algoritmo est correto.

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

A partir destes dados, constri-se o algoritmo com a soluo para o problema


(Quadro 4.12) e, em seguida, realiza-se o teste de mesa (Quadros 4.13 e 4.14).

Algoritmos e programao I.indd 49

7/8/2013 16:01:06
Process Black

ULBRA Educao a Distncia

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

Para testar a soluo apresentada, definiu-se que a distncia a ser percorrida de


200 km. Assim, o valor esperado como resultado de 16,7 litros de combustvel
(200/12=16,7). O Quadro 4.13 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 4.13 Teste de mesa do exemplo 4.5 etapa 1
Exemplo 4.4 - Clculo da rea de um tringulo.
Entrada

Teste de mesa

distancia = 200
linha

Sada

variveis
distncia

litros

A simulao de execuo iniciada na linha 05 (Quadro 4.12), que exibir uma


mensagem ao usurio, para que ele digite a distncia a ser percorrida com o veculo.
Na sequncia (linha 06 - Quadro 4.12), este valor ser lido e armazenado na varivel
distancia, gerando um registro na tabela do teste de mesa, conforme pode ser
observado no Quadro 4.14.

Algoritmos e programao I.indd 50

7/8/2013 16:01:06
Process Black

51

ULBRA Educao a Distncia

Quadro 4.14 Teste de mesa do exemplo 4.5 etapa 2, passo 1


Exemplo 4.4 - Clculo da rea de um tringulo.
Entrada
distancia = 200

Teste de mesa
linha
06

Sada

variveis
distncia

litros

200

Na linha 07 (Quadro 4.12), a quantidade de litros necessria para percorrer a


distncia informada pelo usurio calculada e o resultado armazenado na varivel
litros. O registro desta execuo aparece na tabela do teste de mesa do Quadro
4.15, onde tambm consta a sada de dados executada na linha 08 (Quadro 4.12),
considerando o resultado obtido.
Quadro 4.15 Teste de mesa do exemplo 4.5 etapa 2, passo 2
Exemplo 4.4 - Clculo da rea de um tringulo.
Entrada

Teste de mesa

distancia = 200
linha
06
07

Sada

variveis
distncia

litros

Sero necessrios 16,7


litros de combustvel.

200
16,7

Encerrada a simulao de execuo do algoritmo, verifica-se que a resposta obtida


coincide com a resposta esperada (16,7 litros). Portanto, o algoritmo est correto.

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.

Algoritmos e programao I.indd 51

7/8/2013 16:01:06
Process Black

ULBRA Educao a Distncia

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)

O custo nal de um carro novo para o consumidor a soma do


custo de fbrica, dos impostos e da porcentagem do distribuidor.
Supondo que os impostos totalizam 45% sobre o custo de fbrica e a
porcentagem do distribuidor seja de 20% sobre o valor total, escreva
um algoritmo que leia o custo de fbrica de um carro, calcule e escreva
o custo nal ao consumidor.

(2)

Sabe-se que, para iluminar de maneira correta os cmodos de uma


casa, para cada m2, deve-se usar 18W de potncia. Faa um algoritmo
que receba as duas dimenses de um cmodo (em metros), calcule e
apresente a sua rea (em m2) e a potncia de iluminao que dever
ser utilizada.

(3)

Uma empresa que promove espetculos teatrais precisa de um


programa para denir o valor mnimo para o convite, considerando
o custo total do espetculo e o nmero de lugares disponveis para
o pblico no local da apresentao.

(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)

Considerando uma aplicao de P reais taxa de juros i constante


por um perodo de N meses, calcule e escreva qual ser o montante
M aps o trmino da aplicao, sendo M = P * (1 + i) N.

Algoritmos e programao I.indd 52

7/8/2013 16:01:07
Process Black

ESTRUTURA DE CONTROLE CONDICIONAL:


SE

Vanessa Lindemann

Como foi explicado anteriormente, os algoritmos seguem um fluxo de execuo


determinado por trs estruturas bsicas de controle: sequencial (tema do captulo
4), condicional e repetitiva.
A estrutura condicional utilizada para desviar o fluxo de execuo do algoritmo
para diferentes partes da soluo. Ela divide-se em estrutura SE e estrutura
ESCOLHA - a primeira delas abordada neste captulo. A estrutura SE mais flexvel,
podendo utilizar na sua condio todos os operadores relacionais (<, >, <=, >=, =, <>)
e, quando forem necessrias, mais de uma condio com os operadores lgicos (E
e OU) entre elas. Esta estrutura tambm classificada como estrutura condicional
SE simples, composta ou encadeada, como descrevem as prximas sees.

5.1 Estrutura condicional SE simples


A sintaxe da estrutura condicional SE simples apresentada a seguir.
se(<condio ou lista de condies>)ento
<instruo ou bloco de instrues>
A condio testada e resultar verdadeiro ou falso. Quando resultar verdadeiro, a
instruo da clusula ento executada. Esta estrutura pode conter mais de uma
condio com operadores lgicos entre elas e, tambm, pode conter um bloco de
instrues a ser executado, ao invs de uma instruo nica. Vale lembrar que um
bloco composto por duas ou mais instrues, delimitado pelas diretivas de incio e
fim. O Quadro 5.1 apresenta trs exemplos da estrutura condicional SE simples.

Algoritmos e programao I.indd 53

7/8/2013 16:01:07
Process Black

ULBRA Educao a Distncia

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

Mais de uma condio e bloco de


instrues
se(a>b)e(a<>0)e(b<>0)ento
incio

a
a-b
escrever(a)
fim

a
a/b
escrever(a)
fim

No primeiro exemplo do Quadro 5.1, a estrutura condicional SE possui apenas


uma condio (a>b) e, quando esta resultar verdadeiro, uma nica instruo a ser
executada (escrever(a)). O segundo exemplo tambm testa uma nica condio.
Entretanto, quando esta resultar verdadeiro, um bloco de instrues ser executado.
E, por fim, o terceiro exemplo apresenta uma situao em que trs condies
devero ser verdadeiras para que o bloco de comandos seja executado.
Para exemplificar a aplicao desta estrutura condicional, prope-se a ampliao
do exemplo que calcula a mdia de um aluno, cuja soluo foi apresentada nos
captulos anteriores. Alm de calcular e exibir a mdia do aluno, o algoritmo dever
emitir a mensagem Aluno aprovado sempre que a mdia for igual ou superior
a 6.0 (seis). A soluo para este problema, denominado exemplo 5.1, pode ser
observada no Quadro 5.2.
Quadro 5.2 Exemplo de algoritmo com estrutura condicional SE simples
Exemplo 5.1. Calcula a mdia de um aluno e emite mensagem Aluno aprovado.
01
02
03
04
05
06
07
08

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

As instrues das linhas 11 e 12 foram acrescentadas soluo inicial e, sempre


que a condio (media>=6) for verdadeira, a mensagem Aluno aprovado! ser
exibida ao usurio.

Algoritmos e programao I.indd 54

7/8/2013 16:01:07
Process Black

Na soluo apresentada, entretanto, quando o aluno obtiver mdia inferior a


6.0 (seis), nenhuma mensagem ser exibida ao usurio informando sobre sua
reprovao. Esta limitao pode ser resolvida utilizando a estrutura condicional
SE composta, descrita na prxima seo.

5.2 Estrutura condicional SE composta

ULBRA Educao a Distncia

55

A sintaxe da estrutura condicional SE composta pode ser observada a seguir.


se(<condio ou lista de condies>)ento
<instruo ou bloco de instrues>
seno
<instruo ou bloco de instrues>
Quando a condio avaliada resultar verdadeiro, a instruo da clusula ento
ser executada; caso contrrio, quando resultar falso, a instruo da clusula
seno que ser executada.
Com esta estrutura possvel acrescentar soluo do exemplo anterior, a emisso
da mensagem Aluno reprovado. quando a mdia for menor que 6.0 (seis). A
soluo para este problema, denominado exemplo 5.2, pode ser observada no
Quadro 5.3.
Quadro 5.3 Exemplo de algoritmo com estrutura condicional SE composta
Exemplo 5.2. Calcula a mdia de um aluno e emite mensagem Aluno aprovado ou
Aluno reprovado.
01
02
03
04
05
06
07
08

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

Algoritmos e programao I.indd 55

7/8/2013 16:01:07
Process Black

ULBRA Educao a Distncia

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

Comparar o valor com zero para


verificar se positivo ou negativo

Imprimir uma
das mensagens:

se(valor<0)ento
escrever("Negativo")
seno
escrever("Positivo")

Negativo
ou
Positivo

Quadro 5.4 Soluo do exemplo 5.3


Exemplo 5.3 - Verifica se um valor negativo ou positivo.
01
02
03
04
05
06
07
08
09
10
11

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

Algoritmos e programao I.indd 56

7/8/2013 16:01:07
Process Black

de todas as instrues do algoritmo, testando todas as possibilidades de sada.


Neste exemplo, duas possibilidades sero testadas: um valor negativo e um valor
positivo.
No primeiro teste realizado, definiu-se como dado de entrada 80. Assim, o
resultado esperado Negativo. O Quadro 5.5 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.

ULBRA Educao a Distncia

57

Quadro 5.5 Teste de mesa do exemplo 5.3


Exemplo 5.3 - Verifica se um valor negativo ou positivo.
Entrada

Teste de mesa

valor = 80

linha

Sada

variveis
valor

A simulao de execuo iniciada na linha 05 (Quadro 5.4), que exibir uma


mensagem ao usurio solicitando que ele digite um valor qualquer. Na sequncia
(linha 06 Quadro 5.4), este valor ser lido e armazenado na varivel valor,
gerando um registro na tabela do teste de mesa, conforme pode ser observado
no Quadro 5.6.
Quadro 5.6 Teste de mesa do exemplo 5.3 com valor negativo
Exemplo 5.3 - Verifica se um valor negativo ou positivo.
Entrada

Teste de mesa
variveis
linha
valor

valor = 80

06

Sada
Negativo

- 80

Na linha 07 (Quadro 5.4), a condio (valor<0) testada. Como 80 menor do


que zero, esse teste resulta verdadeiro e, consequentemente, a instruo da clusula
ento ser executada, emitindo a mensagem Negativo. A sada gerada, portanto,
coincide com a resposta esperada.
Ao testar um valor positivo como 22, por exemplo, a condio da linha 07 (Quadro
5.4) no ser satisfeita, resultando falso. Neste caso, a instruo da clusula seno
ser executada, emitindo a mensagem Positivo. Neste caso, o resultado obtido

Algoritmos e programao I.indd 57

7/8/2013 16:01:08
Process Black

ULBRA Educao a Distncia

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

Os testes de mesa realizados demonstram que os resultados obtidos atravs da


simulao de execuo do algoritmo, com valores negativos e positivos, coincidem
com os resultados esperados. Mas o que aconteceria se o valor digitado pelo usurio
fosse um 0 (zero)? Neste caso, o algoritmo emitiria a mensagem Positivo, que
no condiz com o resultado esperado j que o zero neutro. Para corrigir este
problema, ser necessrio usar a estrutura condicional SE encadeada, descrita na
prxima seo.

5.3 Estrutura condicional SE encadeada


A aplicao da estrutura condicional SE encadeada, cuja sintaxe apresentada
a seguir, pode ser observada no Quadro 5.8 que reescreve a soluo do exemplo
anterior e nos exemplos apresentados na sequncia.
se(<condio ou lista de condies>)ento
<instruo ou bloco de instrues>
seno
se(<condio ou lista de condies>)ento
<instruo ou bloco de instrues>
seno
<instruo ou bloco de instrues>
A soluo do exemplo anterior, que verifica se um valor positivo ou negativo,
foi reescrita no Quadro 5.8, utilizando a estrutura SE encadeada (linhas 07 a 13).
As modificaes realizadas aparecem entre as linhas 10 e 13, onde mais um teste
foi includo para garantir que quando o dado de entrada for 0 (zero), o algoritmo
emita uma mensagem Zero neutro.

Algoritmos e programao I.indd 58

7/8/2013 16:01:08
Process Black

59

ULBRA Educao a Distncia

Quadro 5.8 Soluo do exemplo 5.3


Exemplo 5.3 - Verifica se um valor negativo ou positivo.
01
02
03
04
05
06
07
08
09
10
11
12
13
14

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

Comparar os valores para


encontrar o maior entre eles

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).

Algoritmos e programao I.indd 59

7/8/2013 16:01:08
Process Black

ULBRA Educao a Distncia

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

A simulao de execuo iniciada na linha 05 (Quadro 5.9), que exibir uma


mensagem ao usurio solicitando que ele digite o primeiro valor. Na sequncia
(linha 06 Quadro 5.9), este valor ser lido e armazenado na varivel valor1,
gerando um registro na tabela do teste de mesa, conforme pode ser observado no
Quadro 5.11.

Algoritmos e programao I.indd 60

7/8/2013 16:01:08
Process Black

61

ULBRA Educao a Distncia

Quadro 5.11 Teste de mesa do exemplo 5.4 etapa 2, passo1


Exemplo 5.4 - Encontra o maior entre dois valores quaisquer.
Entrada
valor1 = 8
valor2 = 5

Teste de mesa
linha
06

Sada

variveis
valor1

valor2

A execuo da linha 07 (Quadro 5.9) exibe uma mensagem solicitando que o


usurio digite o segundo valor, que lido e armazenado na varivel valor2
(linha 08 Quadro 5.9). O registro desta execuo aparece na tabela do teste de
mesa do Quadro 5.12.
Quadro 5.12 Teste de mesa do exemplo 5.4 etapa 2, passo2
Exemplo 5.4 - Encontra o maior entre dois valores quaisquer.
Entrada
valor1 = 8
valor2 = 5

Teste de mesa
linha
06
08

Sada
Maior = 8

variveis
valor1

valor2

8
5

Na linha 09 (Quadro 5.9) acontece a comparao entre os dois valores armazenados


na memria, 8 e 5. A condio testada verifica se o primeiro valor maior que o
segundo. Neste caso, a condio testada 8>5, que resulta em verdadeiro e permite
a execuo da instruo da clusula ento. A sada gerada, portanto, Maior =
8, que coincide com a resposta esperada.

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.

Algoritmos e programao I.indd 61

7/8/2013 16:01:08
Process Black

ULBRA Educao a Distncia

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

A soluo deste exemplo ser usada para relembrar alguns fundamentos j


estudados: (a) a varivel genero foi declara do tipo caractere (linha 03), por isso,
ao compar-la com M ou com F, estes devem estar entre aspas, como pode ser
observado nas linhas 10 e 13; (b) a clusula seno da linha 15 possui um bloco de
instrues a ser executado, delimitado pelas diretivas de incio (linha 16) e fim (linha
19); (c) o texto do algoritmo est indentado, facilitando a sua leitura e compreenso
a instruo primitiva de sada da linha 20 est alinhada s instrues anteriores
estrutura SE, ou seja, ela no faz parte desta estrutura e ser executada sempre.

Exemplo 5.6
Descrio do problema: leia um valor inteiro e verifique se ele par ou mpar.

Algoritmos e programao I.indd 62

7/8/2013 16:01:09
Process Black

63

ULBRA Educao a Distncia

Quadro 5.14 Soluo do exemplo 5.6


Exemplo 5.6 - Verifica se um valor par ou mpar.
01
02
03
04
05
06
07
08
09
10
11

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

Entre R$ 501,00 e 1.000,00

20% sobre o valor do saldo mdio

Entre R$ 1.000,00 e 3.000,00

30% sobre o valor do saldo mdio

Acima de R$ 3.000,00

40% sobre o valor do saldo mdio

Algoritmos e programao I.indd 63

7/8/2013 16:01:09
Process Black

ULBRA Educao a Distncia

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

Neste exemplo, as estruturas SE das linhas 10 e 13 possuem duas condies com o


operador lgico E entre elas. Desta forma, para que a instruo da clusula ento
seja executada, as duas condies devem resultar verdadeiro.

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!

Algoritmos e programao I.indd 64

7/8/2013 16:01:09
Process Black

65

ULBRA Educao a Distncia

Quadro 5.16 Soluo do exemplo 5.8


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
24
25
26
27
28

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

A soluo apresentada neste exemplo possui vrias estruturas SE encadeadas, onde


a varivel op foi comparada a quatro operadores diferentes (linhas 12, 15, 18 e 21).
Nesta situao, quando a varivel do tipo inteiro lgico, ou caractere e precisa ser
comparada com vrios valores, tambm possvel resolver o problema utilizando
a estrutura condicional ESCOLHA, tema do prximo captulo.

5.4 Formatao da soluo do algoritmo


Como pode ser observado nos exemplos apresentados at agora, as solues tm
seu texto indentado (indentar significa inserir determinado espao entre a margem
da pgina e o incio do texto de um pargrafo). Recomenda-se o uso de indentao
no texto do algoritmo para facilitar a sua leitura. O Quadro 5.17 apresenta o mesmo
trecho de um algoritmo sem e com indentao, ilustrando o quanto a segunda
opo deixa o algoritmo mais legvel.

Algoritmos e programao I.indd 65

7/8/2013 16:01:09
Process Black

ULBRA Educao a Distncia

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)

Aps executar o teste a seguir:


x

se (a <= b) e (c > b) ento


x

seno
x

10

x estar armazenando 10 se:


(a) a = b < c;
(b) a > b <= c;
(c) a <= b < c;
(d) a < b < c;
(e) Nenhuma das alternativas anteriores.

Algoritmos e programao I.indd 66

7/8/2013 16:01:09
Process Black

2)

Aps executar o teste a seguir:


w

10

se (g <= m) ou (h < m) ento


w

w * 5

seno
w

ULBRA Educao a Distncia

67

w / 5

W estar armazenando 2 se:


(a) h <= m < g;
(b) h = m < g;
(c) g < m < h;
(d) h < m <= g;
(e) Nenhuma das alternativas anteriores.

3)

Considerando o algoritmo apresentado a seguir...


algoritmo teste_de_mesa
variveis
x, y, z: lgico
incio
ler(x,y,z)
se(x=V)ento
se(y=V)ento
incio
comando 1
se(z=F)ento
comando 2
seno
comando 3
comando 4
m
seno
comando 5
comando 6
fim

Algoritmos e programao I.indd 67

7/8/2013 16:01:10
Process Black

68
ULBRA Educao a Distncia

(a) Se x = V, y = F e z = V, quais os comandos sero executados?


(b) Se x = V, y = V e z = V, quais os comandos sero executados?
(c) Quais os valores de x, y e z para que somente o comando 5 seja
executado?
(d) Quais os valores de x, y e z para que somente o comando 6 seja
executado?
(e) Nenhuma das alternativas anteriores.

4)

Indique a sada dos trechos de algoritmo apresentados a seguir,


considerando
A = 20, B = 5, C = 5 e D = 5.

(a)

se NO(D > 5) ento

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

Algoritmos e programao I.indd 68

7/8/2013 16:01:10
Process Black

5)

O algoritmo apresentado a seguir calcula a quantidade de latas de tinta


necessrias e o custo para pintar tanques cilndricos de combustvel. Os dados
de entrada so a altura (h) e o raio (r) do cilindro. A lata de tinta custa R$ 24,00,
cada lata contm 5 litros e cada litro pinta 3 metros quadrados.
algoritmo exercicio5
variveis

ULBRA Educao a Distncia

69

h, r, c, qtde, area, litro: real


incio
ler (h, r)
area

(3.14*r**2)+(2*3.14*r*h)

litro

area/3

qtde

litro/5

qtde*24

escrever ("Custo = R$ ", c)


escrever ("Quantidade de latas de tinta = ", qtde)
m
Qual a sada do algoritmo, considerando h = 6 e r = 2? Considere duas casas
decimais para fazer os clculos.

Parte II - Resoluo de problemas


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)

Construa um algoritmo que verique se o nome e a senha informados pelo


usurio so vlidos considerando a tabela a seguir. Emita uma das mensagens
Acesso liberado ou Acesso negado.
Usurio

Senha

analuisa

990123

luciano

714460

josue

134895

Algoritmos e programao I.indd 69

7/8/2013 16:01:10
Process Black

ULBRA Educao a Distncia

70
2)

3)

A empresa 1001 Utilidades precisa de um algoritmo para calcular o salrio de


seus funcionrios. O salrio bruto de cada funcionrio calculado com base
no n de horas por ele trabalhadas no ms e o valor que ele recebe por hora.
O salrio lquido deve considerar a comisso de 2% sobre o total das vendas
realizadas pelo funcionrio no ms, o bnus por tempo de servio (conforme a
tabela abaixo) e, finalmente, o desconto de INSS (8% sobre o total a receber).
Para a empresa, importante ter os seguintes valores disponveis em R$:
salrio fixo, total de adicionais (comisso + bnus), desconto INSS e salrio
lquido.
Tempo de servio

Bnus

Entre 2 e 4 anos

2%

Entre 5 e 10 anos

5%

Maior que 10 anos

10%

Faa um algoritmo que, tendo como dados de entrada um ponto qualquer,


determine e escreva o seu quadrante.

Algoritmos e programao I.indd 70

7/8/2013 16:01:10
Process Black

4)

Joo Papo-de-Pescador, homem de bem, comprou um microcomputador


para controlar o rendimento dirio de seu trabalho. Toda vez que ele volta de
um dia de pescaria e traz um peso de peixes maior que o estabelecido pelo
regulamento de pesca do estado Rio Grande do Sul (100 quilos) deve pagar
uma multa por quilo excedente, que varia de acordo com a tabela abaixo.
Peso em excesso (E)

Valor da multa p/ quilo excedente

1 <= E < 28

R$ 2,50

28 <= E < 50

R$ 7,80

E >= 50

R$ 13,00

ULBRA Educao a Distncia

71

Faa um algoritmo que leia a varivel P (peso de peixes) e verique se h


excesso. Se houver, armazene o excesso de peso na varivel E e o valor da multa
que Joo dever pagar na varivel M, caso contrrio tais variveis devero
receber 0 (zero). Apresente o peso em excesso e o valor da multa.

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).

Respostas dos exerccios da Parte I


1-b
2-b
3 (a) Comandos 5 e 6;
3 (b) Comandos 1, 3, 4 e 6;
3 (c) x = V, y = F, z = no testado;
3 (d) Impossvel executar apenas o comando 6.

Algoritmos e programao I.indd 71

7/8/2013 16:01:10
Process Black

ULBRA Educao a Distncia

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

Algoritmos e programao I.indd 72

7/8/2013 16:01:11
Process Black

ESTRUTURA DE CONTROLE CONDICIONAL:


ESCOLHA

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

Algoritmos e programao I.indd 73

7/8/2013 16:01:11
Process Black

ULBRA Educao a Distncia

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

Comparando esta soluo apresentada no captulo 5, que utilizou estrutura


SE encadeada, possvel observar o quanto a estrutura condicional ESCOLHA
simplifica a leitura e a compreenso do algoritmo.
Na sequncia, so apresentados mais alguns exemplos para demonstrar a aplicao
da estrutura condicional ESCOLHA.

Algoritmos e programao I.indd 74

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

ULBRA Educao a Distncia

75

Exemplo 6.1 - Escreve um valor entre 0 e 10 por extenso.


01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22

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.

Algoritmos e programao I.indd 75

7/8/2013 16:01:11
Process Black

ULBRA Educao a Distncia

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

Como foi explicado anteriormente, o algoritmo executado de cima para baixo e


da esquerda para a direita, ento possvel escrever mais de uma instruo por
linha como ilustram as linhas 03, 05, 06 e 07.

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

Algoritmos e programao I.indd 76

7/8/2013 16:01:11
Process Black

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

ULBRA Educao a Distncia

77

Quadro 6.4 Soluo do exemplo 6.3


Exemplo 6.3 - Calcula o total a pagar em uma lanchonete.
01
02
03
04
05
06
07
06
08
09
09
09
09
09
09
24
25
26
27

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

A soluo apresentada est correta. Entretanto, possui limitaes, pois s possvel


registrar a compra de um produto a cada execuo do algoritmo. Para resolver
este problema, permitindo o registro de vrios produtos em uma mesma compra,
necessrio utilizar as estruturas de repetio, tema dos prximos captulos.

Algoritmos e programao I.indd 77

7/8/2013 16:01:11
Process Black

ULBRA Educao a Distncia

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)

Construa um algoritmo que leia o cdigo de um produto e imprima sua descrio


e seu preo, conforme a tabela a seguir. O algoritmo dever emitir uma mensagem
de alerta, caso o cdigo do produto digitado no esteja cadastrado.
Cdigo

Descrio

Preo

1485

Camiseta

35,00

2395

Camisa

70,40

3400

Cala

120,00

4197

Jaqueta

190,00

5266

Moletom

90,00

Uma empresa conceder um aumento de salrio aos seus funcionrios, variveis


de acordo com o cargo, conforme a tabela abaixo. Escreva um algoritmo que leia o
salrio e o cdigo do cargo de um funcionrio, calcule o valor do novo salrio. Se
o cargo do funcionrio no estiver na tabela, ele dever receber 40% de aumento.
Imprima a descrio do cargo, o salrio antigo, o novo salrio e a diferena.
Cdigo

Cargo

% de aumento

101

Gerente

10%

102

Engenheiro

20%

103

Tcnico

30%

Algoritmos e programao I.indd 78

7/8/2013 16:01:12
Process Black

3)

Escrever um algoritmo que leia os seguintes dados:


- o cdigo do estado de origem da carga de um caminho (conforme a Tabela 1);
- o peso da carga do caminho em toneladas;
- o cdigo da carga (conforme a Tabela 2).

ULBRA Educao a Distncia

79

Com base nestas informaes, o algoritmo deve calcular e escrever:


- o peso da carga convertido em quilos;
- o preo da carga do caminho;
- o valor do imposto, considerando o preo da carga e o estado de origem;
- o valor total transportado pelo caminho (valor da carga + imposto).
Tabela 1

4)

Tabela 2

Cdigo do Estado

Imposto

Cdigo da Carga

Preo por quilo

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

A vista, em dinheiro ou cheque, recebe 10% de desconto

A vista, no carto de crdito, recebe 5% de desconto

Em 2 vezes, preo normal de etiqueta, sem juros

Em 3 vezes, preo de etiqueta mais juros de 10%

Faa um algoritmo que leia um nmero entre 1 e 7 e informe o dia da semana


correspondente, sendo domingo o nmero 1. Caso o nmero no corresponda
a um dia da semana, o algoritmo dever emitir mensagem de erro.

Algoritmos e programao I.indd 79

7/8/2013 16:01:12
Process Black

ULBRA Educao a Distncia

80

Algoritmos e programao I.indd 80

7/8/2013 16:01:12
Process Black

ESTRUTURA DE CONTROLE DE REPETIO:


ENQUANTO

Vanessa Lindemann

Este captulo d continuidade discusso a respeito de estruturas de controle


do fluxo de execuo dos algoritmos. Enquanto as estruturas condicionais,
estudadas nos captulos anteriores, tm como objetivo escolher entre diferentes
fluxos de execuo, a partir da avaliao de uma expresso, as estruturas de
repetio possibilitam que uma ou mais instrues sejam executadas mais de
uma vez no algoritmo, enquanto uma condio de interrupo for satisfeita.
Como foi destacado no ltimo exemplo do captulo anterior (exemplo 6.3), em
determinadas situaes, necessrio que um conjunto de instrues possa ser
repetido vrias vezes. O exemplo mencionado deveria calcular o total gasto
por um cliente em uma lanchonete. Entretanto, na soluo apresentada, s
possvel registrar a compra de um tipo de produto cada vez que o algoritmo
executado. No possvel, por exemplo, registrar a compra de uma torrada e
um refrigerante. Para resolver essa limitao, faz-se necessrio o uso de uma das
estruturas de controle de repetio, como pode ser observado mais adiante.
As estruturas de controle de repetio dividem-se em ENQUANTO, REPITA
e PARA. Elas diferenciam-se em relao ao momento em que a condio de
interrupo ser avaliada, que pode ser antes ou depois da primeira iterao.
Outro fator a ser considerado na escolha da estrutura de repetio a ser
usada refere-se ao conhecimento prvio sobre o nmero de iteraes a serem
realizadas.
A estrutura de controle de repetio ENQUANTO o objeto de estudo do presente
captulo, as outras duas estruturas sero abordadas nos captulos subsequentes. A
estrutura ENQUANTO permite executar uma ou mais instrues repetidamente

Algoritmos e programao I.indd 81

7/8/2013 16:01:12
Process Black

ULBRA Educao a Distncia

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

Algoritmos e programao I.indd 82

7/8/2013 16:01:12
Process Black

83

ULBRA Educao a Distncia

Quadro 7.1 Soluo do exemplo 7.1


Exemplo 7.1 - Calcula o total a ser pago por um cliente em uma lanchonete.
01
02
03
04
05
06

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

caso 001: total

total + (qtde*8.00)

17

caso 002: total

total + (qtde*6.00)

18

caso 003: total

total + (qtde*12.00)

19

caso 004: total

total + (qtde*3.00)

20

caso 005: total

total + (qtde*3.00)

21
22
23
24
25
26
27
28
29

caso 006: total


total + (qtde*2.00)
seno
escrever("Cdigo invlido!")
fim
escrever("Continuar o registro de produtos? S/N ")
ler(resp)
fim
escrever("Total a pagar = R$",total)
fim

Antes de iniciar a soluo do algoritmo, necessrio ler com ateno o seu


enunciado para identificar os dados de entrada e sada e definir como processlos para resolver o problema. Neste caso, por exemplo, a partir da descrio
do problema no possvel saber previamente o nmero de iteraes a serem
realizadas. Um cliente pode comprar dois itens diferentes (torrada + refrigerante),
outro cliente pode comprar quatro itens (torrada + refrigerante + xis + suco). Diante
deste contexto, aps cada iterao, o usurio ir informar se deseja continuar o
registro de produtos ou totalizar a compra. A resposta do usurio testada na
condio de interrupo (linha 09), de forma que enquanto sua resposta for S
(sim), o bloco de instrues (entre as linhas 10 e 27) que permite o registro de

Algoritmos e programao I.indd 83

7/8/2013 16:01:12
Process Black

ULBRA Educao a Distncia

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

Total a pagar = R$ 33,00

varivel

07
08

Sada

33.00
N

A simulao de execuo iniciada na linha 07 (Quadro 7.1), onde a varivel


total inicializada com 0 (zero), gerando o primeiro registro na tabela do teste
de mesa (Quadro 7.2). Na sequncia (linha 08), a varivel resp inicializada com o
caractere S. Esta varivel ir armazenar a resposta do usurio referente a continuar

Algoritmos e programao I.indd 84

7/8/2013 16:01:13
Process Black

ou no o registro de produtos (linha 26) que, consequentemente, ser a condio


de interrupo da estrutura ENQUANTO (linha 09). Entretanto, na primeira
verificao da condio de interrupo (linha 09), o usurio ainda no respondeu
se deseja continuar ou no e, por isso, a varivel resp est vazia. Para que o bloco
de instrues da estrutura seja executado, a condio de interrupo da estrutura
dever resultar verdadeiro, ou seja, a varivel resp deve ser inicializada com S.

ULBRA Educao a Distncia

85

A condio de interrupo da linha 09 (Quadro 7.1) avaliada e resulta verdadeiro


porque, neste momento, a varivel resp est armazenando S, como pode ser
observado na segunda linha da tabela do teste de mesa, no Quadro 7.2. Na
sequncia, o usurio ir informar o cdigo do produto escolhido pelo cliente
(valor lido na linha 12 do Quadro 7.1 e armazenado na varivel codigo) e a
quantidade adquirida (valor lido na linha 14 do Quadro 7.1 e armazenado na
varivel qtde). A estrutura de seleo ESCOLHA usada para desviar o fluxo
de execuo para o caso 002, que representa a torrada comprada pelo cliente.
Neste momento, na linha 17 (Quadro 7.1), total
total + (qtde*6.00),
ou seja, a varivel total recebe o que ela j tinha armazenado (zero), mais o valor
resultante de (qtde*6.00) (ou seja, 2 torradas x 6,00 = 12,00), funcionando
como um acumulador (as variveis usadas com a funo de acumular valores
sempre devem ser inicializadas).
A execuo ter continuidade na linha 25 (Quadro 7.1), na instruo imediatamente
aps a estrutura ESCOLHA, quando o usurio ser questionado se deseja continuar
o registro de produtos. Considerando os dados de entrada escolhidos para esta
simulao, a resposta do usurio dever ser S pois ainda faltam registrar dois tipos
de produtos: xis e suco. Esta resposta lida na linha 26 (Quadro 7.1) e armazenada
na varivel resp, como pode ser observado no primeiro registro da linha 26 na
tabela do teste de mesa (Quadro 7.2). Encerra-se, portanto, a primeira iterao
desta simulao.
Ao encontrar o final do bloco de instrues da estrutura ENQUANTO (linha
27 Quadro 7.1), o fluxo de execuo retorna para a linha 09, onde sua condio
de interrupo testada novamente. Como a varivel resp est armazenando S
neste momento, a condio resultar verdadeiro e, consequentemente, o bloco de
instrues da estrutura ENQUANTO ser executado novamente nesta segunda
iterao ser registrada a compra do produto de cdigo 003 (xis). Uma terceira
iterao ser executada para registrar a compra do produto de cdigo 005 (suco).
Depois de registrar os sucos, o usurio dever responder que no quer continuar
registrando produtos e a varivel resp estar armazenando N, como mostra
a ltima linha da tabela do teste de mesa (Quadro 7.2). Logo, a condio de
interrupo no ser satisfeita, ou seja, resp no mais igual a S. O total a pagar
(R$ 33,00) exibido ao usurio atravs da instruo da linha 28 (Quadro 7.1) e a
simulao do algoritmo encerrada (linha 29 Quadro 7.1).

Algoritmos e programao I.indd 85

7/8/2013 16:01:13
Process Black

ULBRA Educao a Distncia

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.

Algoritmos e programao I.indd 86

7/8/2013 16:01:13
Process Black

Quadro 7.3 Soluo do exemplo 7.2


Exemplo 7.1 - Calcula a mdia de 10 valores lidos.
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17

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.

ULBRA Educao a Distncia

87

soma
soma + valor
fim
media
soma / 10
escrever(Mdia = , media)
fim

Figura 7.1 Soluo do exemplo 7.2 representada em fluxograma

Algoritmos e programao I.indd 87

7/8/2013 16:01:13
Process Black

ULBRA Educao a Distncia

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

Algoritmos e programao I.indd 88

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.

ULBRA Educao a Distncia

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

Algoritmos e programao I.indd 89

7/8/2013 16:01:14
Process Black

ULBRA Educao a Distncia

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

Algoritmos e programao I.indd 90

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.

ULBRA Educao a Distncia

91

Quadro 7.8 Soluo do exemplo 7.7


Exemplo 7.7 - Calcula o preo novo dos produtos e a mdia destes valores.
01
02
03
04
05
06
07
08

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.

Algoritmos e programao I.indd 91

7/8/2013 16:01:14
Process Black

ULBRA Educao a Distncia

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.

Algoritmos e programao I.indd 92

7/8/2013 16:01:14
Process Black

Quadro 7.10 Soluo do exemplo 7.9


Exemplo 7.9 - Calcula quantos anos so necessrios para que Z seja maior que
Chico.
01
02
03
04
06
07
08
08
10
11

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

ULBRA Educao a Distncia

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.

Algoritmos e programao I.indd 93

7/8/2013 16:01:15
Process Black

ULBRA Educao a Distncia

94

Atividades
Parte I - Questes objetivas
1)

O algoritmo a seguir imprime os nmeros pares entre 1 e 20.


( ) Certo
( ) Errado
algoritmo exerc1
variveis
i,x,y: inteiro
incio
i

10

20

se(i>=y)ento
incio
i

fim
enquanto(i<y)faa
incio
i + 1

escrever(i)
i + 1

i
fim
fim

2)

Simulando a execuo do algoritmo a seguir,


algoritmo exerc2
variveis
a: inteiro
incio
ler(a)
enquanto(a<=100)faa
incio
se(a > -10)ento
escrever(a)
ler(a)
fim
fim

Algoritmos e programao I.indd 94

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;

ULBRA Educao a Distncia

95

(d) 15;
(e) 6.

3)

Qual a sada do algoritmo a seguir, se as entradas forem 1 e 9 e, depois, 5 e 3?


algoritmo exerc3
variveis
i,v1,v2: inteiro
incio
ler(v1,v2)
se(v1>v2)ento
escrever(O primeiro valor deve ser menor que o
segundo.)
seno
incio
i

v1

enquanto(i<=v2)faa
incio
se(i mod 2 <> 0)ento
escrever(i,, )
i

i + 1

fim
fim
fim

Algoritmos e programao I.indd 95

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)

Quantos valores sero lidos no algoritmo a seguir?


algoritmo exerc4
variveis
valor: inteiro
incio
valor

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.

Algoritmos e programao I.indd 96

7/8/2013 16:01:15
Process Black

5)

Considerando que X e Y so nmeros inteiros positivos, assinale a alternativa


CORRETA que descreve a tarefa executada pelo algoritmo abaixo.
algoritmo exerc5
variveis
x,y,z,w: inteiro

ULBRA Educao a Distncia

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.

Parte II - Resoluo de problemas


Para cada um dos exerccios a seguir, construa o algoritmo com a soluo
para o problema e realize o teste-de-mesa para assegurar que a resposta esteja
correta.
(1)

Escreva um algoritmo que leia vrios valores, conte e informe quantos


so positivos e quantos so negativos. A entrada de dados deve encerrar
quando o usurio digitar 0 (zero).

(2)

Escreva um algoritmo que leia 20 valores, encontre e escreva o maior


entre eles.

Algoritmos e programao I.indd 97

7/8/2013 16:01:15
Process Black

ULBRA Educao a Distncia

98
(3)

Escreva um algoritmo que calcule a mdia dos nmeros pares digitados


pelo usurio. A entrada de dados deve encerrar quando o usurio
digitar um valor menor ou igual a 0 (zero).

(4)

Faa um algoritmo que lei um valor inteiro e positivo, calcule e escreva


o seu fatorial.
Exemplos: !4 = 1 x 2 x 3 x 4 = 24
!5 = 1 x 2 x 3 x 4 x 5 = 120
Por denio, !0 = 1

(5)

Em uma eleio presidencial existem 4 candidatos. Os votos so


informados atravs de cdigos, que obedecem a seguinte regra: 1, 2, 3,
4 = voto para os respectivos candidatos; 5 = voto nulo; 6 = voto branco.
Elabore um algoritmo que leia o voto de cada um dos eleitores, calcule
e escreva: total de votos para cada candidato; total de votos nulos; total
de votos em branco. Como nalizador do conjunto de dados tem-se o
valor 0 (zero).

Respostas dos exerccios da Parte I


1 - Certo
2-a
3-a
4-e
5-a

Algoritmos e programao I.indd 98

7/8/2013 16:01:16
Process Black

ESTRUTURA DE CONTROLE DE REPETIO:


REPITA

Vanessa Lindemann

Ao contrrio da estrutura ENQUANTO, estudada no captulo anterior, a condio


de interrupo da estrutura REPITA verificada no final de cada iterao, como
pode ser observado na sua sintaxe, apresentada a seguir.
repita
<instruo ou bloco de instrues>
at(<condio>)
Uma ou mais instrues sero executadas repetidamente at que sua condio
resulte verdadeiro. Como a condio s avaliada no final de cada iterao, a
instruo ou bloco de instrues a ser repetido ser executado pelo menos uma vez,
independente do valor inicial da condio de interrupo. Depois de cada iterao,
se o resultado da condio for falso, o fluxo de execuo retorna para o incio da
estrutura REPITA. Este processo repetido at que a condio de interrupo resulte
verdadeiro. Neste caso, o fluxo de execuo do algoritmo continuar a partir da
instruo imediatamente aps estrutura REPITA.
Como a estrutura de repetio REPITA delimitada pela diretiva AT, as diretivas
de incio e fim no so utilizadas para delimitar seu bloco de instrues como nas
estruturas estudadas nos captulos anteriores.
Para exemplificar a aplicao da estrutura REPITA, so apresentados na sequncia
seis exemplos. Os trs primeiros tm o mesmo objetivo, calcular e escrever o
percentual de valores negativos digitados pelo usurio. Entretanto, cada um
representa uma situao diferente em relao ao nmero de iteraes ou condio
de interrupo ser ou no previamente conhecido.

Algoritmos e programao I.indd 99

7/8/2013 16:01:16
Process Black

ULBRA Educao a Distncia

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

Algoritmos e programao I.indd 100

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

ULBRA Educao a Distncia

101

Exemplo 8.2 - Calcula o percentual de valores negativos.


01
02
03
04
05

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

Algoritmos e programao I.indd 101

7/8/2013 16:01:16
Process Black

ULBRA Educao a Distncia

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

Algoritmos e programao I.indd 102

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.

ULBRA Educao a Distncia

103

Quadro 8.4 Soluo do exemplo 8.4


Exemplo 8.4 - Pesquisa sobre as caractersticas fsicas de atletas.
01
02
03
04
05
06
07

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

Algoritmos e programao I.indd 103

7/8/2013 16:01:16
Process Black

ULBRA Educao a Distncia

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

Algoritmos e programao I.indd 104

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.

ULBRA Educao a Distncia

105

Quadro 8.6 Soluo do exemplo 8.6


Exemplo 8.6 - Pesquisa com professores de uma universidade.
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
29

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

Algoritmos e programao I.indd 105

7/8/2013 16:01:17
Process Black

ULBRA Educao a Distncia

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)

O algoritmo a seguir imprime a sequncia de pares entre 1 e 100.


( ) Certo
( ) Errado
algoritmo exerc1
variveis
n: inteiro
incio
n
1
repita
escrever(i)
i
i + 2
at(i=100)
fim

2)

Simulando a execuo do algoritmo a seguir,


algoritmo exerc2
variveis
a: inteiro
incio
repita
ler(a)
se(a > -10)ento
escrever(a)
at(a>100)
fim

Algoritmos e programao I.indd 106

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

ULBRA Educao a Distncia

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

O erro est na linha:


(a) 3
(b) 10
(c) 13
(d) 9
(e) 12

Algoritmos e programao I.indd 107

7/8/2013 16:01:17
Process Black

ULBRA Educao a Distncia

108
4)

Quantos valores sero lidos no algoritmo a seguir?


algoritmo exerc4
variveis
valor: inteiro
incio
valor

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)

Assinale a assertiva INCORRETA.


(a)

Estruturas de repetio so necessrias para repetir uma instruo (ou


bloco de instrues), que represente um comportamento padro, vrias
vezes.

(b)

Utilizando a estrutura de repetio REPITA, escreve-se uma instruo


uma nica vez e ela pode ser executada vrias vezes.

(c)

Na estrutura REPITA o fluxo de repetio controlado por um


contador.

(d)

imprescindvel que haja uma instruo dentro do bloco de instrues


da estrutura REPITA que permita alterar o valor lgico da condio.

(e)

A diferena entre as estruturas ENQUANTO e REPITA que na segunda


as instrues so executadas no mnimo uma vez porque sua condio
s vericada ao nal de cada iterao.

Algoritmos e programao I.indd 108

7/8/2013 16:01:17
Process Black

Parte II - Resoluo de problemas


Para cada um dos exerccios a seguir, construa o algoritmo com a soluo
para o problema e realize o teste de mesa para assegurar que a resposta esteja
correta.
(1)

Escreva um algoritmo que leia uma srie no determinada de dois


valores. O primeiro valor um cdigo que signica: (1) dbito, (2)
crdito e (0) m. O segundo valor uma quantia numrica real. O
programa deve calcular o total de dbito e crdito e, ao nal, mostrar
o saldo (crdito dbito).

(2)

Durante uma pesquisa realizada entre os habitantes de uma regio,


foram coletados os seguintes dados: idade, gnero e salrio. Faa um
algoritmo que calcule e informe: a mdia salarial do grupo; a maior
idade do grupo; quantidade de mulheres com salrio superior a R$
5.000,00.

(3)

Um hotel cobra R$ 360,00 a diria e mais uma taxa de servios. A taxa


de: R$ 5,50 por diria, se o nmero de dirias for maior que 15; R$
6,00 por diria, se o nmero de dirias for igual a 15; R$ 8,00 por diria,
se o nmero de dirias for menor que 15. Construa um algoritmo que
imprima o nome e a conta (total das dirias, total da taxa e total a pagar)
de cada um dos clientes com reserva no hotel.

(4)

Em um laboratrio, usam-se dois tipos de cobaias: ratos e coelhos. O


cdigo para ratos 1, e para coelhos 2. Foram feitas 30 experincias
que usaram essas cobaias. Faa um algoritmo que leia, para cada uma
das experincias, o cdigo e a quantidade de cobaias utilizadas. Desejase saber: o total de cobaias utilizadas e o percentual de cada tipo de
cobaia.

(5)

Elabore um algoritmo que repita a leitura de uma data at que ela


seja vlida. Para cada data incorreta escrever a mensagem DATA
INVLIDA. Quando a data for informada corretamente deve ser
impressa a mensagem ACESSO DATA VLIDA e o algoritmo
encerrado. Para resolver este problema, use trs variveis para
representar a data: dia, ms e ano; no esquea de considerar ano
bissexto, quando o ms de fevereiro tem 29 dias.

Algoritmos e programao I.indd 109

ULBRA Educao a Distncia

109

7/8/2013 16:01:18
Process Black

ULBRA Educao a Distncia

110
Respostas dos exerccios da Parte I
1 - Errado
2-b
3-c
4-b
5-c

Algoritmos e programao I.indd 110

7/8/2013 16:01:18
Process Black

ESTRUTURA DE CONTROLE DE REPETIO:


PARA

Vanessa Lindemann

A estrutura de repetio PARA, diferente das outras duas j estudadas, controlada


por uma varivel de controle, como pode ser observado na sintaxe apresentada
a seguir.
para <v> de <vi> at <vf> passo <p> faa
<instruo ou bloco de instrues>
Onde:

v representa a varivel de controle;

vi indica o valor inicial da varivel de controle;

vf indica o valor nal da varivel de controle;

p dene o incremento ou decremento da varivel de controle.

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

Algoritmos e programao I.indd 111

7/8/2013 16:01:18
Process Black

ULBRA Educao a Distncia

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

para cont de 1 at 25 faa


incio
<instrues>
fim

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

Algoritmos e programao I.indd 112

7/8/2013 16:01:18
Process Black

atingida, a repetio se encerra e o algoritmo continuar sua execuo na instruo


imediatamente seguinte estrutura PARA; se a condio de interrupo no foi
atingida, o bloco de instrues da estrutura ser executado e a varivel de controle
incrementada. Este processo ser repetido at que a varivel de controle atinja o
valor definido como limite final (25).
Para exemplificar a aplicao da estrutura de repetio PARA, os quadros a
seguir apresentam a soluo de cinco problemas que utilizam esta estrutura na
sua soluo.

ULBRA Educao a Distncia

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.

Algoritmos e programao I.indd 113

7/8/2013 16:01:18
Process Black

ULBRA Educao a Distncia

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.

Algoritmos e programao I.indd 114

7/8/2013 16:01:18
Process Black

115

ULBRA Educao a Distncia

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.

Algoritmos e programao I.indd 115

7/8/2013 16:01:19
Process Black

ULBRA Educao a Distncia

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.

Algoritmos e programao I.indd 116

7/8/2013 16:01:19
Process Black

Atividades
Parte I - Questes objetivas
1)

Considerando o algoritmo a seguir,


algoritmo exerc1
variveis
num, cont, aux, e: inteiro
incio
aux
1
e
1
repita
escrever("Digite um nmero inteiro positivo: ")
ler(num)
at(num>0)
para cont de 1 at num faa
incio
aux
aux * cont
e
e + aux
fim
escrever(e)

ULBRA Educao a Distncia

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)

Considerando o algoritmo a seguir,


algoritmo exerc2
variveis
v1, v2, s, x: inteiro
incio
s
0
ler(v1, v2)
para x de v1 at v2 faa
s + 2
s
escrever(s)
fim

Algoritmos e programao I.indd 117

7/8/2013 16:01:19
Process Black

118
ULBRA Educao a Distncia

qual a sada, tendo como entrada 3 e 8?


(a) 7;
(b) 8;
(c) 6;
(d) 10;
(e) 12.

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)

Considerando o trecho de algoritmo a seguir,


0

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 ;

Algoritmos e programao I.indd 118

7/8/2013 16:01:19
Process Black

119

ULBRA Educao a Distncia

(c) n2 + log n;
(d) n2(n+1)/2;
(e) (n3-n)/3.

5)

No nal da execuo do trecho de algoritmo a seguir,


k

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.

Parte II - Resoluo de problemas


Para cada um dos exerccios a seguir, construa o algoritmo com a soluo
para o problema e realize o teste-de-mesa para assegurar que a resposta esteja
correta.
1)

Escrever um algoritmo que gere nmeros entre 1000 e 1999 e escreva


aqueles que divididos por 11 do resto 5.

2)

Foi feita uma pesquisa em 20 cidades brasileiras para coletar dados


sobre os acidentes de trnsito ocorridos no ano de 2012. Em cada
cidade, foram obtidos os seguintes dados referentes a 2012: cdigo da
cidade, nmero de veculos de passeio, nmero de acidentes de trnsito
com vtimas e nmero de acidentes de trnsito sem vtimas. Deseja-se
saber:
(a) o total de acidentes de trnsito nas 20 cidades que participaram da
pesquisa;

Algoritmos e programao I.indd 119

7/8/2013 16:01:19
Process Black

120
ULBRA Educao a Distncia

(b) o maior e o menor nmero de acidentes de trnsito com vtimas e


a que cidades pertencem;
(c) o percentual de acidentes de trnsito sem vtimas em cada uma das
20 cidades que participaram da pesquisa;
(d) a mdia de veculos nas 20 cidades juntas.

3)

Faa um algoritmo que leia um valor inteiro e positivo, calcule e escreva


o seu fatorial.
Exemplos: !4 = 1 x 2 x 3 x 4 = 24
!5 = 1 x 2 x 3 x 4 x 5 = 120
Por denio, !0 = 1

4)

Elabore um algoritmo que leia um valor inteiro, verique e informe se


ele primo.

5)

Faa um algoritmo para calcular e escrever o valor de R.


R=

5x6
6x5
5x6
6x5
+
+
+
+
10
9
8
7

...
...

5x6
6x5
+
2
1

Respostas dos exerccios da Parte I


1-b
2-e
3-e
4-e
5-b

Algoritmos e programao I.indd 120

7/8/2013 16:01:20
Process Black

10

INTRODUO LINGUAGEM C

Vanessa Lindemann

A linguagem C, criada por Dennis Ritchie na dcada de 70, resultou de um processo


evolutivo de linguagens e, durante alguns anos, teve seu padro baseado na verso
5 do sistema operacional UNIX. Com a popularizao dos microcomputadores,
vrias verses de C foram criadas, gerando muitas discrepncias entre elas. Para
resolver essa situao, em 1983, o ANSI (American National Standards Institute)
estabeleceu um comit para definir um padro que guiasse todas as implementaes
da linguagem C.
A popularizao da linguagem C deve-se a vrios fatores, dentre os quais
destacam-se: (a) o poderoso conjunto de operadores e tipos de dados disponveis;
(b) a portabilidade, podendo ser usada em mquinas de portes e de sistemas
operacionais diferentes; (c) as caractersticas de linguagens de alto nvel
(comandos com sintaxe prxima linguagem humana e tipos de dados inteiro,
real e caractere) como, por exemplo, as linguagens Pascal, Delphi e Visual Basic,
aliadas s caractersticas de linguagens de baixo nvel (tambm conhecidas como
linguagem de mquina, manipulam bits, bytes e endereos) como a linguagem
Assembler, por exemplo.
C uma linguagem de propsitos gerais, estruturada e compilada (o compilador
l o cdigo-fonte do programa inteiro e converte-o em um cdigo executvel).
Ela utilizada para a construo de sistemas operacionais (UNIX e LINUX, por
exemplo), compiladores, interpretadores, editores de textos, planilhas eletrnicas,
aplicativos para dispositivos mveis, etc.

Algoritmos e programao I.indd 121

7/8/2013 16:01:20
Process Black

ULBRA Educao a Distncia

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

Algoritmos e programao I.indd 122

7/8/2013 16:01:20
Process Black

semana de trabalho pode ser armazenada em uma varivel chamada qtde_horas;


enquanto uma funo que ir verificar se uma data vlida ou no pode ter como
indentificador valida_data.

10.2 Tipos de dados

ULBRA Educao a Distncia

123

Os tipos de dados mais utilizados em linguagem C so: int (nmero inteiro),


float (nmero real) e char (caractere). A linguagem C no possui tipo de dado
lgico (que pode assumir verdadeiro ou falso), pois considera qualquer valor
diferente de 0 (zero) como verdadeiro; e tambm no possui um tipo especial para
armazenar cadeias de caracteres (string), estas so armazenadas em um vetor de
caracteres. A Tabela 10.1 apresenta a lista de tipos bsicos utilizados em C.
Tabela 10.1 Tipos de dados mais utilizados em Linguagem C
Tipo

Faixa de valores

Tamanho (aproximado)

char

-127 a 127

8 bits

int

-32.767 a 32.767

16 bits

float

3.4 E-38 a 3.4 E+38

32 bits

double

1.7 E-308 a 1.7 E+308

64 bits

sem valor

void

A faixa de valores apresentada est de acordo com o padro ANSI e considerada


a faixa mnima. Dependendo do processador e do compilador C que estiver sendo
utilizado, o tamanho e a faixa de valores podem variar.

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;

// essa expresso resulta 4

r=(float)9/2;

// com o uso do modelador, resulta 4.5

Algoritmos e programao I.indd 123

7/8/2013 16:01:20
Process Black

ULBRA Educao a Distncia

124

10.4 Declarao, inicializao e escopo de variveis


Varivel uma posio de memria, identificada por um nome (identificador),
usada para armazenar um dado de um determinado tipo por vez. As variveis
so declaradas aps a especificao de seus tipos, como pode ser observado nos
exemplos a seguir.
float total;
int idade, cont;
char resposta;
A primeira linha da declarao de variveis do exemplo cria uma varivel chamada
total, que pode armazenar valores do tipo real; na segunda linha, so criadas
duas variveis para armazenar valores do tipo inteiro, idade e cont; por ltimo,
resposta criada para armazenar caracteres (um por vez). Cada varivel
armazenar um nico valor por vez.
As variveis podem ser inicializadas no momento da sua declarao, colocando o
sinal de atribuio seguido da informao desejada, como no exemplo apresentado
a seguir, em que cont inicializada com 0 e resposta com S. importante
destacar que os dados atribudos a variveis do tipo caractere so envolvidos por
apstrofes.
int cont=0;
char resposta=S;
O local em que as variveis so declaradas definem o seu escopo, que pode ser
global ou local. As variveis de escopo global, denominadas variveis globais, so
declaradas fora de qualquer funo, inicializadas automaticamente com 0 (zero)
e podem ser usadas em qualquer ponto do programa. As variveis locais so
declaradas dentro de uma funo, no so inicializadas automaticamente e valem
enquanto esta funo estiver ativa. As variveis de escopo local tm preferncia
em relao s de escopo global.

10.5 Definio de constantes


Uma constante ir representar um valor fixo, previamente definido pelo
programador e inaltervel no programa. Uma das formas de definir constantes
em C atravs da diretiva #define, seguida do nome da constante e do valor que
esta representar no programa. No exemplo a seguir, apresenta-se a declarao
da constante pi cujo valor definido como 3.141516. Observe que na definio de
uma constante no se usa o ponto-e-vrgula no final.
#define pi 3.141516
Desta forma, o programador usar pi no programa ao invs de usar 3.141516.

Algoritmos e programao I.indd 124

7/8/2013 16:01:20
Process Black

10.6 Cdigos de formato


Os cdigos de formato, apresentados na Tabela 10.2, so constantes que definem
o formato dos dados a serem lidos e exibidos na tela.
Tabela 10.2 Cdigos de formatao
Cdigo

ULBRA Educao a Distncia

125

Formato

%c

Caractere

%i

Inteiro

%l

Inteiro longo

%d

Inteiro em formato decimal

%ld

Decimal longo

%u

Decimal sem sinal

%f

Ponto flutuante em formato decimal

%lf

Ponto flutuante longo (double)

%s

Cadeia de caracteres (string)

%e

Valor em notao cientfica

%o

Valor em notao octaldecimal

%x

Valor em notao hexadecimal

%p

Ponteiro

%%

Smbolo %

Eles so usados em funes de entrada e de sada de dados (descritas na seo 10.11).


A funo de entrada scanf, por exemplo, possui dois parmetros: o cdigo de
formato e uma varivel. Neste caso, o valor digitado pelo usurio ser armazenado
na varivel denominada peso, declarada e formatada como float.
scanf(%f,&peso);
A funo printf, exemplificada a seguir, tambm contm dois parmetros: o
primeiro uma constante, apresentada entre aspas; o segundo uma varivel,
denominada dias. O valor armazenado na varivel dias ser exibido na posio
em que aparece o cdigo de formato usado na mensagem, neste caso o %i.
printf(Sua idade em dias e: %i, dias);

Algoritmos e programao I.indd 125

7/8/2013 16:01:20
Process Black

ULBRA Educao a Distncia

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);

printf(\n O valor total %2d.,350);


printf(\n O valor total %4d.,350);
printf(\n O valor total %5d.,350);

Algoritmos e programao I.indd 126

790
790
00790
790
O valor total 350.
O valor total 350.
O valor total
350.

7/8/2013 16:01:20
Process Black

10.7 Caracteres especiais


Os caracteres especiais so usados para representar alguma formatao em
particular e caracteres especiais que seriam impossveis de usar diretamente no
cdigo-fonte. Esses caracteres devem ser precedidos da barra invertida, como
o \n que representa nova linha. A Tabela 10.4 apresenta os caracteres e seus
significados.

ULBRA Educao a Distncia

127

Tabela 10.4 Cdigos de caracteres de escape


Cdigo

Significado

Cdigo

Significado

\a

alerta (beep)

\v

tab vertical

\b

retrocesso (backspace)

\\

exibe barra invertida

\f

avano de pgina

exibe aspa nica

\n

nova linha

exibe aspas duplas

\r

retorna ao incio da linha

\?

exibe ponto de interrogao

\t

tab horizontal

\0

nulo

10.8 Comando de atribuio


O comando de atribuio, representado por = (sinal de igualdade), utilizado para
atribuir valores a variveis. importante lembrar que os valores atribudos a uma
varivel devem ser compatveis com o seu tipo. Alguns exemplos de atribuio
podem ser observados a seguir.
total=345.60;
idade=20;
resp=s;
cont=cont+1;
Os caracteres so representados entre apstrofos ( ) e as cadeias de caracteres
entre aspas ( ).
possvel atribuir um valor a duas ou mais variveis atravs de um nico comando,
como no exemplo a seguir, em que as variveis x e y recebem 10.
x=y=10;
Caso seja necessrio atribuir uma cadeia de caracteres a uma varivel, utiliza-se
a funo strcpy.
strcpy(nome,Ana Paula Rocha);

Algoritmos e programao I.indd 127

7/8/2013 16:01:21
Process Black

ULBRA Educao a Distncia

128
Para utilizar strcpy (abreviao de string copy) preciso inserir no programa,
atravs da diretiva include, a biblioteca string.h.

10.9 Operadores e funes


A linguagem C possui operadores e funes predefinidas destinadas a clculos
matemticos e manipulao de caracteres. Alguns deles so apresentados nas
Tabelas 10.5 e 10.6. Para utilizar as funes matemticas, a biblioteca math.h deve
ser includa no programa atravs da diretiva include. Os operadores lgicos so
apresentados na Tabela 10.7.
Tabela 10.5 Operadores aritmticos
Operadores Matemticos
Operador

Exemplo

Comentrio

a + b

Soma o contedo de a e de b.

a b

Subtrai o contedo de b do contedo de a.

a * b

Multiplica o contedo de a pelo contedo de b.

a / b

Divide o contedo de a pelo contedo de b.

a % b

Obtm o resto da diviso de a por b.*

* O operador % s pode ser utilizado com operandos do tipo inteiro.

Tabela 10.6 Operadores relacionais


Operadores Relacionais
Operador Exemplo

Comentrio

==

a == b

Testa se o contedo de a igual ao contedo de b.

!=

a != b

Testa se o contedo de a diferente do contedo de b.

<=

a <= b

Testa se o contedo de a menor ou igual que o contedo de b.

>=

a >= b

Testa se o contedo de a maior ou igual que o contedo de b.

<

a < b

Testa se o contedo de a menor que o contedo de b.

>

a > b

Testa se o contedo de a maior que o contedo de b.

Algoritmos e programao I.indd 128

7/8/2013 16:01:21
Process Black

129

Operador

Smbolo

Descrio

&&

Conjuno

ou

||

Disjuno

no

Negao

ULBRA Educao a Distncia

Tabela 10.7 Operadores lgicos

Em C, tambm pode-se utilizar operadores reduzidos, exemplificados na Tabela 10.8.


Tabela 10.8 Operadores reduzidos
Expresso

Equivalente com operadores reduzidos

total=total+valor;

total+=valor;

num=num*5;

num*=5;

d=d-valor;

d-=valor;

x=x/5;

x/=5;

Alm dos operadores apresentados anteriormente, a linguagem C disponibiliza


operadores de pr e ps incremento e decremento, descritos na Tabela 10.9. O
operador ++ incrementa 1 ao valor do seu operando, enquanto - decrementa 1.
Estes operadores podem ser usados antes (pr-fixados) ou depois (ps-fixados) do
nome da varivel. Em ambos os casos a varivel incrementada ou decrementada.
Entretanto, ++n incrementa o valor da varivel n antes que n seja usada e n++
usa o valor de n e depois o incrementa.
Tabela 10.9 Operadores pr e ps-fixados
Operador

Descrio

Pr-fixado

Ps-fixado

++

Incrementa

++n

n++

--

Decrementa

--n

n--

Algoritmos e programao I.indd 129

7/8/2013 16:01:21
Process Black

ULBRA Educao a Distncia

130
Resumindo:
++i

incrementa o valor de i em 1 e depois o utiliza;

i++

utiliza o valor de i e depois incrementa-o em 1.

Logo, conclui-se que:


z=a;

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. */

10.11 Funes de entrada e sada


As funes de entrada de dados so utilizadas para receber dados digitados pelo
usurio. Os dados recebidos so armazenados em variveis j declaradas no incio
do programa. As funes de entrada mais utilizados em C so scanf, fgets
e getche.
A funo scanf utilizada para ler dados dos tipos numrico e caractere, enquanto
a funo fgets utilizada para ler uma cadeia de caracteres e a funo getche
pode ser utilizada para ler um caractere por vez.
O trecho de cdigo a seguir apresenta um exemplo da utilizao das funes scanf
e getche. Os dois valores do tipo float so lidos com a funo scanf (linhas 2
e 6) e o dado do tipo caractere lido com getche (linha 4).
1

printf(Digite o primeiro valor: );

scanf(%f,&valor1);

printf(Digite o operador: );

operador = getche();

printf(Digite o segundo valor: );

scanf(%f,&valor2);

Algoritmos e programao I.indd 130

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.

ULBRA Educao a Distncia

131

Um exemplo da utilizao da funo fgets pode ser observado nas linhas de


cdigo apresentadas a seguir. A funo fgets possui trs parmetros o nome
da varivel, o tamanho mximo da varivel e a entrada de dados padro (stdin
= standard input) e antes de utiliz-la preciso liberar o buffer do dispositivo de
entrada de dados, o que feito atravs da funo fflush.
1

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).

10.12 Estruturas de controle condicional


A seguir, so apresentados dois exemplos que utilizam estruturas de controle
condicional - o exemplo 10.1 exemplifica a aplicao da estrutura SE (em C, if) e
o exemplo 10.2 da estrutura ESCOLHA (em C, switch). Na coluna da esquerda
dos Quadros 10.1 e 10.2, aparece a soluo em portugus estruturado, enquanto a
coluna da direita apresenta a mesma soluo em linguagem C.

Algoritmos e programao I.indd 131

7/8/2013 16:01:21
Process Black

Algoritmos e programao I.indd 132

Process Black

fim

se(valor mod 2 = 0)ento


escrever(valor," par.")
seno
escrever(valor," mpar.")

escrever("Digite um valor: ")


ler(valor)

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.

Quadro 10.1 Exemplo da estrutura de controle condicional SE

ULBRA Educao a Distncia

132

7/8/2013 16:01:22

133

ULBRA Educao a Distncia

Quadro 10.2 Exemplo da estrutura de controle condicional ESCOLHA


Exemplo 10.2 - Construir uma calculadora que contenha as operaes: +, - , * e /.
Portugus estruturado - ESCOLHA

Linguagem C - switch
#include <stdio.h>
#include <conio.h>

algoritmo exemplo102
variveis
valor1,valor2,r: real
operador: caractere
incio

escrever("Digite o 1 valor: ")


ler(valor1)
escrever("Digite o operador: ")
ler(operador)
escrever("Digite o 2 valor: ")
ler(valor2)
escolha(operador)
caso "+": r
valor1 + valor2
caso "-": r
valor1 - valor2
caso "*": r
valor1 * valor2
caso "/": se(valor2<>0)ento
r
valor1/valor2
seno
r
0
seno
escrever("Operador invlido!")
fim
escrever ("Resultado = ", r)
fim

//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
}

10.13 Estruturas de controle de repetio


As estruturas de controle de repetio so exemplificadas nos quadros a seguir.
Para facilitar o entendimento, a coluna da esquerda dos Quadros 10.3, 10.4 e 10.5
apresenta a soluo em portugus estruturado e a da direita em linguagem C.

Algoritmos e programao I.indd 133

7/8/2013 16:01:22
Process Black

ULBRA Educao a Distncia

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

Algoritmos e programao I.indd 134

//bibliotecas

7/8/2013 16:01:22
Process Black

Quadro 10.4 Exemplo da estrutura de controle de repetio REPITA


Exemplo 10.4 - Ler 25 valores, calcular e escrever o percentual de valores negativos.
Portugus estruturado REPITA

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

escrever("Digite um valor: ")


ler(valor)
cont
cont + 1
se (valor < 0) ento
negativo
negativo + 1
at(cont=25)
perc
(negativo*100)/25
escrever("% negativos = ",perc)
fim

//bibliotecas

ULBRA Educao a Distncia

135

Algoritmos e programao I.indd 135

7/8/2013 16:01:22
Process Black

ULBRA Educao a Distncia

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

escrever("Digite um valor: ")


ler(valor)
soma
soma + valor
fim
media
soma / 10
escrever("Mdia = ", 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.
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.

Algoritmos e programao I.indd 136

7/8/2013 16:01:22
Process Black

Atividades
Parte I - Questes objetivas
1)

A sintaxe das declaraes de variveis em C inclui o nome da varivel seguido


de um tipo.
( ) Certo

ULBRA Educao a Distncia

137

( ) Errado

2)

So nomes vlidos para variveis na linguagem C:


(a) if, a*b_2, H789, &ya;
(b) A, b, Y, count;
(c) 9xy, a36, x*y, --j;
(d) 2_ou_1, \m, h, j;
(e) i, j, int, obs.

3)

Em C, os nomes cont e Cont no podem ser empregados para representar a


mesma varivel ao longo de um programa.
( ) Certo
( ) Errado

4)

Uma string uma sequncia de caracteres armazenada em um vetor de


caracteres.
( ) Certo
( ) Errado

Algoritmos e programao I.indd 137

7/8/2013 16:01:22
Process Black

ULBRA Educao a Distncia

138
5)

O que faz o seguinte programa em C ?


#include <stdio.h>
void main( ){
int i =2;
printf (O valor de i = %i \n, i);
}
(a) Imprime: O valor de i = 2 e pula para a prxima linha;
(b) Imprime: O valor de i = 2 \n;
(c) Pula para a prxima linha e imprime: O valor de i = 2 ;
(d) Imprime: O valor de i = 2 ;
(e) Nenhuma das alternativas anteriores.

6)

Qual o resultado das variveis j, k e l depois da seguinte sequncia de


operaes?
int j,k,l;

j=k=10; l=++j;

j=-j;

k++; j=j+k-l--;

(a) j = -10, k = 10, l = 10;


(b) j = -11, k = 11, l = 10;
(c) j = -10, k = 11, l = 10;
(d) j = 11, k= 11, l = 11;
(e) Nenhuma das alternativas anteriores.

7)

if(var) equivalente a if(var!=0).


( ) Certo
( ) Errado

Algoritmos e programao I.indd 138

7/8/2013 16:01:23
Process Black

8)

Considerando o conceito de variveis em Linguagem C, leia as armaes a


seguir e indique a armativa correta.
I.

As variveis de um programa em C esto associadas a posies de


memria, previamente identicadas, que armazenam informaes

II.

O primeiro caractere de um identicador deve ser uma letra e o


restante do nome pode conter letras, nmeros e sublinhado. Alm
disto, palavras-chaves no podem ser usadas como identicadores.

III.

As variveis so classicadas, quanto ao seu escopo, como globais


ou locais. As globais so declaradas fora de qualquer funo e so
reconhecidas em todo o programa; as locais so declaradas dentro da
funo em que sero utilizadas e valem enquanto esta estiver ativa.

IV.

O tipo de uma varivel dene os valores que ela pode assumir e as


operaes que podem ser realizadas com ela.

V.

A linguagem C no faz distino entre as variveis Cont, cont e


CONT.

ULBRA Educao a Distncia

139

(a) II e III esto incorretas.


(b) I, II e IV esto corretas.
(c) V est incorreta.
(d) I, II e III esto corretas.
(e) Todas esto corretas.

9)

Na Linguagem C, os cdigos de formao de tipo de dados NO esto


corretamente associados na alternativa:
(a) int - %i;
(b) double - %d;
(c) oat - %f;
(d) char - %c;
(e) Nenhuma das respostas anteriores.

Algoritmos e programao I.indd 139

7/8/2013 16:01:23
Process Black

ULBRA Educao a Distncia

140
10)

Na expresso condicional A>=P||P>A , est correto armar que a mesma


(a) nunca ser verdadeira.
(b) somente ser verdadeira quando P for menor ou igual a A.
(c) somente ser verdadeira quando P for maior que A.
(d) nunca ser falsa.
(e) Nenhuma das respostas anteriores.

11)

Considerando os especicadores de tipo usados nos comandos de sada


apresentados a seguir, assinale a alternativa INCORRETA.
printf(Total = %05i,794);

(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)

Para que faixa de valores da varivel x o seguinte segmento de cdigo imprime


a letra C? (Questo da prova do POSCOMP 2003)
if(x<=200)
if(x<100)
if(x<0) printf(A)
else printf(B)
else printf(C)
else printf(D)
(a) 0<x<100;
(b) x<=100;
(c) 100<x<=200;
(d) x>200;
(e) 100<=x<=200.

Algoritmos e programao I.indd 140

7/8/2013 16:01:23
Process Black

Parte II - Resoluo de problemas


Escolha um exerccio de cada um dos captulos anteriores e reescreva sua soluo
em Linguagem C (utilize um compilador de Linguagem C para executar os
programas resolvidos).

ULBRA Educao a Distncia

141

Respostas dos exerccios da Parte I


1 - Errado
2-b
3 - Certo
4 - Certo
5-a
6-b
7 - Certo
8-c
9-b
10 - d
11 - d
12 - e

Algoritmos e programao I.indd 141

7/8/2013 16:01:23
Process Black

ULBRA Educao a Distncia

142

Algoritmos e programao I.indd 142

7/8/2013 16:01:23
Process Black

ULBRA Educao a Distncia

143

Algoritmos e programao I.indd 143

7/8/2013 16:01:23
Process Black

ULBRA Educao a Distncia

144

Algoritmos e programao I.indd 144

7/8/2013 16:01:23
Process Black

Você também pode gostar