Você está na página 1de 95

ERNESTO HENRIQUE

RADIS STEINMETZ
doutorando em Cincia
da informao pela
Universidade de Braslia
(UnB), mestre em Gesto
do Conhecimento e da
Tecnologia da
Informao pela
Universidade Catlica de
Braslia (UCB).
Atualmente
Coordenador Geral do
Plo EaD e docente da
rea de Informao e
Comunicao do IFB Campus Braslia.

Este trabalho apresenta


a viso dos autores
acerca de algoritmos e
da lgica de
programao. A
proposta principal desta
cartilha surgiu da troca
de experincia de
docentes da rea de
Computao no ensino
destes assuntos, para
alunos iniciantes de
informtica.

ROBERTO DUARTE
FONTES mestre em
Computao pela
Universidade Federal do
Rio e bacharel em
Cincia da Computao
e Grande do Sul
(UFRGS). Atualmente se
dedica rea acadmica,
na Coordenao de
Pesquisa e Extenso e na
Coordenao Adjunta
PRONATEC do IFB
Campus Taguatinga.

CARTILHA LGICA
DE PROGRAMAO

Ministrio da

Educao

CARTILHA LGICA DE
PROGRAMAO

ERNESTO HENRIQUE RADIS STEINMETZ


ROBERTO DUARTE FONTES

Buscou-se utilizar uma


linguagem simples e
direta para atender
alunos dos cursos
tcnicos dos Institutos
Federais que constituem
a Rede Federal de
Educao Profissional,
Cientfica e Tecnolgica,
vinculada Secretaria
de Educao Profissional
e Tecnolgica (SETEC) do
Ministrio da Educao
(MEC).

cartilha lgica
de programao
Ernesto Henrique Radis Steinmetz
Roberto Duarte Fontes

EDITORA IFB
Braslia-DF
2013

REITOR
Wilson Conciani

PR-REITORIA DE ADMINISTRAO
Valdelcio Pereira Ribeiro

PR-REITORIA DE DESENVOLVIMENTO INSTITUCIONAL


Rosane Cavalcante de Souza

PR-REITORIA DE ENSINO
Nilton Nlio Cometti

PR-REITORIA DE EXTENSO
Giano Luiz Copetti

PR-REITORIA DE PESQUISA E INOVAO


Luciana Miyoko Massukado

cartilha lgica
de programao
Ernesto Henrique Radis Steinmetz
Roberto Duarte Fontes

EDITORA IFB
Braslia-DF
2013

2013 EDITORA IFB


Todos os direitos desta edio reservados Editora IFB.
Nenhuma parte desta publicao poder ser reproduzida ou transmitida de qualquer modo ou por qualquer meio, eletrnico ou
mecnico, incluindo fotocpia, gravao ou qualque tipo de sistema de armazenamento e transmisso de informao, sem prvia
autorizao, por escrito, da Editora do IFB.

EDITORA

SGAN 610, Mdulos D, E, F e G


CEP 70860-100 - Braslia -DF
Fone: +55 (61) 2103-2108
www.ifb.edu.br
E-mail: editora@ifb.edu.br

Conselho Editorial

Coordenao de Publicaes
Produo executiva
Grfica
Tiragem

Carlos Cristiano Oliveira de Faria Almeida


Cristiane Herres Terraza
Daniela Fantoni Alvares
Edilsa Rosa da Silva
Elisa Raquel Gomes de Sousa
Francisco Nunes dos Reis Jnior
Gabriel Andrade Lima de Almeida Castelo Branco
Gabriel Henrique Horta de Oliveira
Gustavo Ablio Galeno Arnt
Jos Gonalo dos Santos
Josu de Sousa Mendes
Julie Kellen de Campos Borges
Juliana Rocha de Faria Silva (presidente)
Ktia Guimares Sousa Palomo

Luciana Miyoko Massukado


Luciano Pereira da Silva
Luiz Diogo de Vasconcelos Junior
Marco Antnio Vezzani
Moema Carvalho Lima
Paulo Henrique de Azevedo Leo
Philippe Tshimanga Kabutakapua
Reinaldo de Jesus da Costa Farias
Renato Simes Moreira
Sheila Soares Daniel dos Santos
Tatiana de Macedo Soares Rotolo
Vanessa Assis Araujo
Veruska Ribeiro Machado
Vinicius Machado dos Santos

Juliana Rocha de Faria Silva


Sandra Maria Branchine
Diviso AGPRESS-AGBR Grupo AGBR
1.000

Ficha Catalogrfica preparada por


Laura Ceclia dos Santos Cruz CRB 2203

S823c

Steinmetz, Ernesto Henrique Radis.


Cartilha: lgica de programao / Ernesto Henrique Radis;
Roberto Duarte Fontes. -- Braslia, DF : IFB, 2012.
94p.
Bibliografia
ISBN 978-85-64124-09-7
1. Programao (computadores). 2. Estrutura de dados.
3. Algoritmos de computador. I. Fontes, Roberto Duarte.
II. Ttulo.
CDU 004.421

Sumrio

APRESENTAO .......................................................................................................................... 7
AGRADECIMENTO ....................................................................................................................... 9
INTRODUO ............................................................................................................................ 11
1. DEFINIES DE ALGORITMO ................................................................................................ 13
1.1. Conceitos ....................................................................................................................... 15
1.2. Fases de um algoritmo ................................................................................................. 16
1.3. Como Construir um algoritmo ..................................................................................... 17
1.4. Decomposio (Top-Down) .......................................................................................... 18
1.5. Desenvolvimento estruturado ..................................................................................... 20
1.6. Formas de representao de um algoritmo ................................................................ 20
1.7. Tipos de processamento ............................................................................................... 25
1.8. Tipos de dados .............................................................................................................. 27
1.9. Variveis (identificadores) ............................................................................................ 28
1.10. Declarao de variveis .............................................................................................. 29
1.11. Constantes ................................................................................................................... 30
1.12. Operaes bsicas: ...................................................................................................... 32
1.13. Primeiras instrues ................................................................................................... 38
2. COMANDOS DE ENTRADA E SADA .................................................................................... 43
2.1. Comando de entrada de dados ................................................................................... 43
2.2. Comando de sada de dados ........................................................................................ 43
3. TOMADA DE DECISES ........................................................................................................ 47

4. ESTRUTURAS DE REPETIO ................................................................................................ 59


4.1. Repetio determinada ................................................................................................ 60
4.2. Repetio Indeterminada ............................................................................................. 63
4.2.1 Repetio Indeterminada com Validao Inicial .................................................. 63
4.2.2 Repetio Indeterminada com Validao Final .................................................... 65
5. ESTRUTURAS DE DADOS COMPOSTAS ............................................................................... 73
5.1. Vetores ........................................................................................................................... 73
5.2. Matrizes ......................................................................................................................... 75
5.3. Algoritmos de pesquisa e ordenao de dados.......................................................... 79
6. MODULARIZANDO ALGORITMOS: PROCEDIMENTOS E FUNCES .................................... 87
6.1. Procedimentos............................................................................................................... 88
6.2. Funes .......................................................................................................................... 90

Apresentao

Quando da resoluo em um dado problema no computador, necessrio que seja


primeiramente encontrada uma maneira de se descrever esse problema de uma forma
clara e precisa. Sendo necessrio encontrar uma sequncia de passos que permitam que o
problema possa ser resolvido de maneira automtica e repetitiva. Esta sequncia de passos
chamada de lgica de programao (algoritmo).
De anos de experincias adquiridas em sala aula, laboratrios de informtica, surgiu
este trabalho, que consiste em uma introduo ao estudo de lgica de programao.
O contedo desta cartilha dirigido principalmente para ser utilizado como livro-texto
em disciplinas sobre algoritmos, apresentando uma linguagem simples e exerccios prticos
para serem aplicados em sala de aula.
Os exemplos desta cartilha foram desenvolvidos utilizando-se a ferramenta Visualg.
Ferramenta esta ensinada em cursos em todo o Brasil, que permite a alunos iniciantes em
programao o exerccio dos seus conhecimentos num ambiente prximo da realidade.
Os tpicos desta cartilha constituem uma introduo aos conceitos de lgica
de programao e uma preparao a conceitos mais avanados em programao de
computadores. Estes esto agrupados em sete captulos, cada um com o seguinte contedo:
1. Introduo que salienta a importncia do estudo de algoritmos para os futuros profissionais
de TI Tecnologia da Informao;
2. Apresenta formalmente o conceito de Algoritmo e os conceitos bsicos de lgica de
programao;

3. D a voc as formas de interatividade com o algoritmo, ou seja, a representao da troca


de informaes que ocorrer entre o computador e o usurio;
4. Mostra as tomadas de deciso que permitem que determinados comandos sejam
executados ou no, dependendo do resultado de um teste realizado (condio);
5. Aborda as estruturas de repetio necessrias de um ou vrios trechos de um algoritmo
um determinado nmero de vezes;
6. Apresenta estruturas de dados compostas que permitem a manipulao de dados
multivalorados;
7. Introduz os conceitos de modularizao de algoritmos, demonstrando tcnicas de
organizao mais eficiente do cdigo, bem como, a sua reutilizao.
Esperamos que este trabalho possa contribuir para o seu aprendizado e
consequentemente para seu futuro profissional.

Agradecimento

Agradecemos aos professores e amigos Anderson Luis Schvindt Bittencourt e Juliano


de Oliveira Pires que contriburam para a construo desta cartilha.
Agradecemos, ainda, ao professor Dr. Roberto Wagner da Silva Rodrigues que
participou do incio do processo de construo desta cartilha, mas por motivos profissionais
acabou sendo forado a abandonar este projeto de forma prematura.

Introduo

Existem muitos mitos e tabus sobre a dificuldade em aprender e estudar algoritmos,


mas os algoritmos esto presentes em nosso cotidiano muito mais do que podemos
imaginar. Quando vamos fazer uma viagem de frias e planejamos o roteiro de viagem
definindo: pontos de parada, lugares a visitar, quanto tempo ficaremos em um determinado
local, estradas que iremos percorrer etc., estamos montando um algoritmo para organizar
de maneira lgica os passos da viagem em questo.
A sociedade moderna est amplamente dependente da automao de processos
e o atual aperfeioamento tecnolgico deve-se em parte anlise e obteno de
descries na execuo de tarefas por meio de aes simples o suficiente, tal que
pudessem ser automatizadas, sendo executadas pelo computador que uma mquina
especialmente desenvolvida para este fim.
Para resolver um problema no computador necessrio que seja primeiramente
encontrada uma maneira de descrever este problema de uma forma clara e precisa. preciso
que encontremos uma sequncia de passos que permitam que o problema possa ser resolvido
de maneira automtica e repetitiva. Esta sequncia de passos chamada de algoritmo.
Um algoritmo pode ser definido como um conjunto de regras (instrues), bem
definidas, para soluo de um determinado problema. Segundo o dicionrio Michaelis,
o conceito de algoritmo utilizao de regras para definir ou executar uma tarefa especfica
ou para resolver um problema especfico.
A partir desses conceitos de algoritmos, pode-se perceber que a palavra algoritmo no
um termo computacional, ou seja, no se refere apenas rea de informtica. uma definio
ampla que agora que voc j sabe o que significa. Como j foi destacado anteriormente,
utilizada no cotidiano das pessoas.
INTRODUO

11

Na informtica, o algoritmo o projeto do programa, ou seja, antes de se fazer um


programa (Software) na Linguagem de Programao desejada (Pascal, C, Delphi etc.) devese fazer o algoritmo do programa. J um programa, um algoritmo escrito numa forma
compreensvel pelo computador (atravs de uma Linguagem de Programao), onde todas
as aes a serem executadas devem ser especificadas nos mnimos detalhes e de acordo
com as regras de sintaxe da linguagem escolhida.
Esta cartilha adota como linguagem padro para codificao dos exemplos, o
Portugol, aplicado na ferramenta VisialG, que de livre distribuio e uso. Est disponvel
para download em <http://www.apoioinformatica.inf.br/o-visualg>.

12

INTRODUO

1. Definies de algoritmo

A seguir so apresentados algumas definies de algoritmo por diferentes autores:

Um algoritmo um conjunto de instrues, dispostas em uma sequncia lgica,


que levam a soluo de um problema (BENEDUZZI e METZ, 2010).

Um algoritmo deve 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 (FORBELLONEE e EBERSPACHER, 2005).

uma sequencia de passos ordenados para a realizao de uma tarefa (PUGA


e RISSETTI, 2011).

Algoritmo na Cincia da Computao (Informtica), est associada a um


conjunto de regras e operaes bem definidas e ordenadas, destinadas soluo
de um problema, de uma classe de problemas, em um nmero finito de passos
(MANZANO e OLIVEIRA, 2011).

Um algoritmo uma sequencia finita de instrues ou operaes bsicas


(operaes bsicas sem ambigidade e executadas em tempo finito dispondo-se
apenas de lpis e papel), cuja a execuo, em tempo finito, resolve um problema
computacional, qualquer que seja a sua instncia (SALVETTI e BARBOSA, 2004).

A noo de algoritmo central para toda a computao. A criao de algoritmos


para resolver os problemas uma das maiores dificuldades dos iniciantes em programao
em computadores. Entretanto, isso no impede o surgimento de bons programadores e
analista de sistemas.
Podemos comparar o aprendizado de algoritmos com o aprendizado de andar de
bicicleta, veja na tabela 1.1.

1. DEFINIES DE ALGORITMO

13

Tabela 1.1 - Comparao do aprendizado de algoritmos com andar de bicicleta.


Perfil do
estudante

iniciantes

Aprender algoritmos

Aprender a andar de bicicleta

- Precisam de auxlio de professores e


material especfico sobre o tema.

- Precisam de ajuda do pai ou de um


irmo mais velho que j saiba andar de
bicicleta.

- Cometem vrios erros bsicos, tpicos dos


iniciantes, mas devem continuar tentando.
- Conseguem desenvolver algoritmos de
baixa e mdia complexidade sozinhos.

intermedirios

- Ainda cometem alguns erros,


principalmente em algoritmos mais
complexos.
- Conseguem desenvolver e entender
algoritmos de complexidades variadas.

avanados

- Tornam-se instrutores de algoritmos


identificando erros dos iniciantes em
questo de segundos.

-Sofrem vrias quedas, mas devem


levantar e tentar novamente.
- Conseguem andar sozinhos, mas
eventualmente sofrem algumas quedas.
- Quando se deparam com situaes
perigosas podem sofrer quedas.

- Conseguem executar manobras


radicais ou andar em diversos terrenos.
- Tornam-se instrutores para iniciantes.

Uma das formas mais eficazes de aprender algoritmos atravs de muitos exerccios.
Vejam algumas dicas de como aprender e como no aprender algoritmos na tabela 1.2.
Tabela 1.2 - Como aprender algoritmos.

14

Algoritmos no se aprendem

Algoritmos se aprendem

Copiando algoritmos

Construindo algoritmos

Estudando algoritmos prontos

Testando algoritmos

1. DEFINIES DE ALGORITMO

1.1. Conceitos
Os conceitos apresentados neste tpico derivam do entendimento de professores
da rea (citados no agradecimento), que contriburam para estas definies em conversas
cotidianas informais e trocas de experincias sobre os assuntos abordados, bem como,
foram elaborados com base na bibliografia utilizada na construo desta cartilha.

Instruo: 1) so conjuntos de regras ou normas definidas para a realizao


ou emprego de algo. Em informtica, o que indica a um computador uma ao
elementar a ser executada. Em um algoritmo, pode ser considerado um passo da sua
execuo. 2) So frases que indicam as aes a serem executadas. So compostas de
um verbo no imperativo/infinitivo mais um complemento.
Ex. Bata(bater) duas claras em neve
Ligue(ligar) os faris
Abra(abrir) a porta

Algoritmos: Um algoritmo formalmente uma sequncia lgica e finita de passos


que levam a execuo de uma tarefa. Podemos pensar em algoritmo como uma receita,
uma sequncia de instrues que do cabo de uma meta especfica. Estas tarefas no
podem ser redundantes nem subjetivas na sua definio, devem ser claras e precisas.

At mesmo as coisas mais simples, podem ser descritas por sequncias lgicas. Por
exemplo:
Exemplo 1:
Chupar uma bala
1. Pegar a bala.
2. Retirar o papel.
3. Chupar a bala.
4. Jogar o papel no lixo.

1. DEFINIES DE ALGORITMO

15

Exemplo 2:
Somar dois nmeros quaisquer
1. Escreva o primeiro nmero no crculo A.
2. Escreva o segundo nmero no crculo B.
3. Some o nmero do crculo A com nmero do crculo B e coloque o
resultado no retngulo.

Resultado

Figura 1.1 Exemplo da sequncia de passos para a soma de dois nmeros.

Programa: Corresponde as aes de um algoritmo transcritas em uma


linguagem de programao obedecendo sua sintaxe. So exemplos de linguagens
de programao: Java, Delphi, C, Pascal, etc.

1.2. Fases de um algoritmo


Para definirmos um algoritmo que representa uma soluo de um problema que
utiliza um computador, temos que observar as seguintes etapas:

16

Definir o problema. No podemos misturar vrios problemas em um e tentar


resolver todos juntos.

Realizar um estudo da situao atual e verificar quais a(s) forma(s) de resolver


o problema, registrando a soluo encontrada.

1. DEFINIES DE ALGORITMO

Terminada a fase de estudo, utilizar uma linguagem de programao para


escrever o programa que dever, a princpio, resolver o problema.

Analisar junto aos usurios se o problema foi resolvido.

Se a soluo no foi encontrada, o problema dever ser retornado para a


fase de estudo para se descobrir onde est a falha.

1.3. Como Construir um algoritmo


a) Anlise preliminar
Entenda o problema, identifique os dados envolvidos e os resultados esperados.
Ao montar um algoritmo, precisamos primeiro dividir o problema apresentado em trs fases
fundamentais conforme a figura 1.2 que apresenta a descrio bsica dos sistemas de informao.

Entrada

Processamento

Sada

Figura 1.2 Etapas de um sistema de informao.

Onde temos:
ENTRADA: So os dados de entrada do algoritmo informados pelo usurio.
PROCESSAMENTO: So os procedimentos utilizados para chegar ao resultado.
SADA: So os dados j processados, apresentados ao usurio.

1. DEFINIES DE ALGORITMO

17

b) Soluo
Desenvolver a sequncia lgica e finita de passos que levam a execuo de uma tarefa
para resolver o problema.
c) Teste de qualidade (Teste de mesa)
Ideal testar o algoritmo com o mximo de combinaes possveis.
d) Alterao
Caso o resultado do algoritmo no seja satisfatrio, altere-o e submeta a um novo teste.
e) Produto final
Algoritmo concludo e testado.

1.4. Decomposio (Top-Down)


A decomposio (Top-Down) consiste em pegar um grande problema, de difcil
soluo, e dividi-lo em problemas menores que devem ser mais facilmente resolvidos.
Exemplo:
Diviso 1:
1. Trocar uma lmpada queimada.
Diviso 2:
1. Pegar a lmpada nova (Incio)
2. Trocar a lmpada queimada pela lmpada nova (Meio)
3. Colocar a lmpada queimada no lixo (Fim)

18

1. DEFINIES DE ALGORITMO

Diviso 3:
1. Pegue a escada
2. Coloque a escada abaixo da lmpada queimada
3. Pegue a lmpada nova
4. Suba na escada
5. Retire a luminria
6. Retire a lmpada queimada
7. Coloque a lmpada nova
8. Coloque a luminria
9. Desa da escada
10. Jogue a lmpada queimada no lixo
11. Guarde a escada

Obs. Algumas instrues poderiam ser divididas mais de uma vez.

EXERCCIOS DE FIXAO
1. Crie uma sequencia lgica para tomar banho.
2. Faa um algoritmo para somar dois nmeros e multiplicar o resultado pelo primeiro nmero.
3. Descreva com detalhes a sequencia lgica para Trocar um pneu de um carro.

1. DEFINIES DE ALGORITMO

19

1.5. Desenvolvimento estruturado


So tcnicas que permitem sistematizar e ajudar no desenvolvimento de algoritmos
para a resoluo de grandes e complexos problemas computacionais.
Objetivos destas tcnicas:

Facilitar o desenvolvimento do algoritmo;

Facilitar o seu entendimento pelos humanos;

Antecipar a comprovao de sua correo;

Facilitar a sua manuteno e modificao;

Permitir que o seu desenvolvimento possa ser empreendido simultaneamente


por uma equipe de pessoas.

1.6. Formas de representao de um algoritmo


a) Descrio narrativa
Ex. Clculo da mdia de um aluno:
Obter as notas da primeira e da segunda prova;
Calcular a mdia aritmtica entre as duas.
Se a mdia for maior ou igual a 7, o aluno foi aprovado, seno ele foi reprovado
b) Fluxograma
Os fluxogramas ou diagramas de fluxo so uma representao grfica que utilizam formas
geomtricas padronizadas ligadas por setas de fluxo, para indicar as diversas aes (instrues)
e decises que devem ser seguidas para resolver o problema em questo. uma forma de
representao grfica de algoritmos, ou seja, das instrues e/ou mdulos do processamento.

20

1. DEFINIES DE ALGORITMO

O fluxograma permite visualizar os caminhos (fluxos) e as etapas de processamento


de dados possveis. Dentro destas etapas, os passos para a resoluo do problema utiliza
modelagem com uma linguagem visual para especificar o conjunto de instrues por meio
de formas geomtricas, facilitando a compreenso da lgica utilizada pelo profissional.
Existem atualmente vrios padres para definir as formas geomtricas a serem
utilizadas para as diversas instrues (passos) a serem seguidos pelo sistema. O padro
utilizado nesta disciplina, ser definido pelo professor durante as aulas.
Seguem alguns smbolos que so utilizados no fluxograma:

incio

fim

Entrada de dados

Lao Condicional
(se-seno-ento)

Sada de dados

Processamento

Conector

Laos de repetio

Figura 1.3 Principais elementos para construo de fluxogramas.

1. DEFINIES DE ALGORITMO

21

A seguir temos um exemplo de um fluxograma que l dois valores e mostra a soma


destes valores:

A princpio, marcamos o incio do fluxograma;

Em seguida, lemos o 1 valor que ser armazenado na varivel valor1;

Depois, lemos o 2 valor que ser armazenado em uma varivel diferente


chamada valor2.

Efetuamos a soma de valor1 com valor2 e armazenamos o resultado desta


operao aritmtica na varivel resultado.

Em seguida, mostramos o valor armazenado na varivel resultado.

E finalizamos o fluxo.

incio

Leia valor 1

Leia valor 2

resultado= valor 1 + valor 2

mostra resultado

fim

Figura 1.4 Exemplo de um fluxograma.

22

1. DEFINIES DE ALGORITMO

EXERCCIOS DE FIXAO
Desenhe um fluxograma para as seguintes situaes:
1.

Receber o valor do salrio de um trabalhador, calcular e mostrar o valor dirio


deste salrio.

2.

Calcular e mostrar a metade de um nmero qualquer informado pelo usurio.

3.

Ler trs nmeros quaisquer e mostrar o resultado da soma destes nmeros.

4.

Ler quatro nmeros quaisquer e mostrar o resultado da mdia destes nmeros.

5.

Calcular a rea de um retngulo.

6.

Calcular a rea de um crculo.

7.

Ler a idade de uma pessoa expressa em anos, meses e dias e mostrar expressa
apenas em dias.

8.

Ler um nmero qualquer e verificar se este nmero maior ou igual a 10. Para a
opo verdadeira mostrar a palavra Maior, seno mostrar Menor.

9.

Ler 5 valores, calcular e mostrar a mdia aritmtica destes valores. Se o resultado


for maior que 100, mostrar a palavra Maior, seno mostrar Menor.

10.

Mostrar se um nmero qualquer positivo, ou negativo, ou zero.

1. DEFINIES DE ALGORITMO

23

c) Pseudocdigo, tambm conhecido como Linguagem Estruturada ou Portugol.


A representao de um algoritmo na forma de pseudocdigo a seguinte:
Algoritmo Nome_Do_Algoritmo
Variveis
Declarao das variveis
Procedimentos
Declarao dos procedimentos
Funes
Declarao das funes
Inicio
Corpo do Algoritmo:
Entrada
Processamento
Saida
Fim

Exemplo:

24

1. DEFINIES DE ALGORITMO

A identao (deslocamento para a direita) de uma instruo significa que tal instruo
est subordinada instruo anterior e facilita em muito a compreenso e a manuteno do
algoritmo e dos cdigos-fontes em uma linguagem de programao.

1.7. Tipos de processamento


a) Processamento sequencial
As instrues do algoritmo so executadas uma aps a outra, sem que haja desvio na
sequncia das instrues, sendo cada instruo executada uma nica vez.
Exemplo: Obter a mdia aritmtica das quatro notas.
1. Incio
2. Some as duas primeiras notas
3. Some a terceira nota com o resultado da instruo 2
4. Some a quarta nota com o resultado da instruo 3
5. Divida o resultado da instruo 4 por 4
6. Fim

Se as quatro notas so 10, 5, 8, 1 a execuo das instrues ficar da seguinte forma:


1. Incio
2. 10 + 5 = 15
3. 15 + 8 = 23
4. 23 + 1 = 24
5. 24 / 4 = 6
6. Fim

b) Processamento condicional
Um conjunto de instrues (pode ser apenas uma instruo) executado ou no
dependendo de uma condio. Se a condio que estiver sendo testada tiver resposta
afirmativa, o conjunto de instrues executado.
1. DEFINIES DE ALGORITMO

25

Exemplo: Obter a mdia aritmtica das quatro notas. Se a mdia for maior ou igual a
sete, o aluno est aprovado, caso contrrio, est reprovado.
1. Incio
2. Some as duas primeiras notas
3. Some a terceira nota com o resultado da instruo 2
4. Some a quarta nota com o resultado da instruo 3
5. Divida o resultado daagor instruo 4 por 4
6. Se o resultado da instruo 5 for maior ou igual a 7
7. Aprove o aluno
8. Se o resultado da instruo 5 for menor que 7
9. Reprove o aluno
10.

Fim

Se as quatro notas so 10, 5, 8, 1, a execuo das instrues ficar da seguinte forma:


1. Incio
2. 10 + 5 = 15
3. 15 + 8 = 23
4. 23 + 1 = 24
5. 24 / 4 = 6
6. Resposta negativa
7. Resposta afirmativa - resultado < 7
8. Ento - aluno reprovado
9. Fim

Note que a instruo 6 foi executada. Como a resposta foi negativa (a mdia foi inferior a
sete), o aluno foi reprovado. No foi executada a instruo sete.
c) Processamento com repetio
Conjunto de instrues (pode ser apenas uma) que executado um determinado
nmero de vezes, sendo determinada uma condio de parada.

26

1. DEFINIES DE ALGORITMO

Exemplo: Obter a mdia aritmtica das quatro notas de todos os alunos da sala.
1. Incio
2. Para cada aluno da sala
3. Some as duas primeiras notas
4. Some a terceira nota com o resultado da instruo 3
5. Some a quarta nota com o resultado da instruo 4
6. Divida o resultado da instruo 5 por 4
7. Fim

Se existem dois alunos na sala e suas notas so: 10, 5, 8, 1 e 4, 6, 7, 3 a execuo das
instrues ficar da seguinte forma
10+5=15
15+8=23
23+1=24
24/4=6
4+6=10
10+7=17
17+3=20
20/4=5

Observe que um lao de repetio necessita sempre de uma condio de parada que
seja vlido, caso contrrio o programa entrar em um lao infinito.

1.8. Tipos de dados


Os dados so representados pelas informaes a serem processadas por um
computador. Estas informaes esto caracterizadas por quatro tipos de dados: inteiros,
reais, caracteres e lgicos.

1. DEFINIES DE ALGORITMO

27

a) Tipo inteiro

b) Tipo real

c) Tipo caractere

Dados numricos positivos ou negativos, excluindo-se qualquer nmero fracionrio.


Exemplo: 35, 0, -56
Dados numricos positivos, negativos e nmeros fracionrios.
Exemplo: 1.2, -45.897
So do tipo caractere as sequncias contendo letras, nmeros e smbolos especiais.
Uma sequncia de caracteres deve ser indicada entre aspas. Sendo tambm
conhecido como: alfanumrico, string, literal ou cadeia.
Exemplo: PROGRAMAO, Rua Alfa, 52 apto 1, 7, 249-4455

d) Tipo lgico

So do tipo lgico ou booleano os dados com valores verdadeiro/true (T) e falso/


false (F), sendo que este tipo poder representar um dos dois valores.

1.9. Variveis (identificadores)


Podemos imaginar uma varivel como sendo um local onde se pode colocar qualquer
valor do conjunto de valores possveis para o tipo definido para a varivel.
Toda varivel possui um nome, um tipo e um valor associado.
O nome de uma varivel utilizado para sua identificao e posterior uso dentro de
um programa, sendo assim, necessrio estabelecer algumas regras de utilizao destas.

28

O nome de uma varivel pode conter um ou mais caracteres;

O primeiro caractere do nome de uma varivel deve ser sempre uma letra;

No pode possuir espaos em branco;

No pode ser uma palavra reservada a uma instruo de programa;

No podero ser utilizados outros caracteres que no sejam letras e nmeros; e

Os nomes escolhidos devem explicitar seu contedo.

1. DEFINIES DE ALGORITMO

Qualquer caminho seguido no diagrama abaixo levar a um nome de varivel vlido.

letra
letra

dgito

Figura 1.5 Diagrama para validao de nomes de varivel.

Onde:
Letra: Qualquer letra do alfabeto [a...z, A...Z]
Dgito: Dgitos de [0...9]
So identificadores vlidos:
NOMEUSUARIO, FONE1, X, DELTA25, Z4, Idade, X1, MODELODEVeiculo.
So identificadores invlidos:
*nome, 2Fone, NOME/USUARIO, mODELO-DE-VEICULO, Nota do Aluno.

1.10. Declarao de variveis


Para que os programas manipulem valores, estes devem ser armazenados em variveis
e para isso, devemos declar-las de acordo com a sintaxe:
<lista-de-variaveis>: <tipo-de-dado>
<lista-de-variaveis>:vetor [<lista-de-intervalos>] de <tipo-dedado>

1. DEFINIES DE ALGORITMO

29

Exemplo:

Nesta definio, deveremos seguir as regras seguintes:


VARIVEIS a palavra-chave que dever ser utilizada uma nica vez na definio das
variveis e antes do uso destas;
Variveis de tipos diferentes devero ser declaradas em linhas diferentes;
Em uma mesma linha, quando quisermos definir variveis de mesmo tipo, deveremos
usar o smbolo de vrgula (,) para separ-las.

1.11. Constantes
Tudo aquilo que fixo ou estvel.
Exemplo: o valor do = 3,14159

30

1. DEFINIES DE ALGORITMO

EXERCCIOS DE FIXAO
1. Identifique os Atributos e declare variveis para um objeto automvel.
2. Identifique os Atributos e declare variveis para um objeto Pessoa.
3. Identifique os atributos e declare variveis para um objeto Eleitor.
4. Assinale com C os nomes corretos de varivel e com I os incorretos. Explique o que
est errado nos nomes incorretos.
a. (

) certo

b. (

) *oi

c. (

) oi!

d. (

) Lucio

e. (

) sorte#

f. (

) i123453

g. (

) Nota do Aluno

h. (

)o

i.

) arquivox11

j.

) 1ate

5. Classifique os dados especificados abaixo de acordo com seu tipo, assinalando com
I os dados do tipo inteiro, com R os reais, com C os caracteres (literais), com B os
lgicos (booleanos) e com N aqueles para os quais no possvel definir o tipo
de dado.
a. (

) -988786,987

b. (

) 34,50

c. (

) Casa do Titio

d. (

) .F.

e. (

) site

f. (

) -33

g. (

) .V.

h. (

) 0,5

i. (

) .V.

j. (

) .F.

k. (

) 12,89

l. (

) 215333

1. DEFINIES DE ALGORITMO

31

1.12. Operaes bsicas:


a) Expresses
Na lgica de programao, uma expresso tem o mesmo objetivo/conceito do termo
expresso da matemtica comum, ou seja, um conjunto de variveis e constantes que se
relacionam por meio de operadores aritmticos. Este conjunto de expresso e operadores
aritmticos (soma por exemplo) formam uma frmula que, aps solucionada fornecem um
resultado em especfico.
Observe o grfico a seguir:

altura

base
Figura 1.6 Grfico explicativo do clculo da rea de um tringulo.

Neste caso, a frmula para se calcular a rea de um retngulo igual ao produto de


sua altura por sua base. Poderemos, ento, montar a frmula como se segue:

AREA <- altura * base

Observe que, no exemplo acima, utilizamos trs variveis: altura, base e rea.
O resultado final armazenado na varivel AREA, ou seja, local de memria onde ser
armazenado o resultado da avaliao da expresso e o operador o sinal de * que em
linguagem de computador representa a multiplicao.

32

1. DEFINIES DE ALGORITMO

J que falamos em operadores, vamos ser um pouco mais claros neste tpico.

Os operadores so elementos ativos que tem influncia sobre os operandos


e atravs de sua ao resultam em um determinado valor. No exemplo acima, os
operandos seriam as variveis altura e base e o operador de multiplicao, o *.

Em lgica de programao, os operadores podem ser classificados em dois grupos:

Binrios: quando trabalham sobre os operandos em uma expresso. Os mais


conhecidos so os smbolos +, -, * e /, que representam a soma, a subtrao, a
multiplicao e a diviso, respectivamente.

Unrios: quando tem influncia sobre um nico operando, indicando, por exemplo,
que este se trata de um nmero negativo e no vem acompanhado de nenhum outro
operando. Exemplo: ao representar o nmero quatro negativo podemos utilizar (-4).
Isso no quer dizer que queremos subtrair o nmero quatro de outro valor.

Assim como classificamos os operadores, podemos tambm classificar as expresses


quanto ao seu tipo, conforme mostra a lista a seguir:

Expresso aritmtica: quando o resultado de sua avaliao for um nmero,


que pode ser positivo ou negativo, assim como inteiro ou real;

Expresso lgica: quando o resultado de sua avaliao for um valor lgico, ou


seja, verdadeiro (.T.) ou falso (.F.);

Expresso literal: quando o resultado de sua avaliao for um valor literal.

Cada uma das expresses vistas acima possui seus operadores em especfico. A seguir,
vamos mostrar uma tabela contendo esses operadores:
b) Operadores
Na soluo da grande maioria dos problemas, necessrio que as variveis tenham
seus valores consultados ou alterados e para isto, devemos definir um conjunto de
OPERADORES, sendo eles:
1. DEFINIES DE ALGORITMO

33

Operador de Atribuio:
NomeDaVariavel Valor ou Expresso Atribuda.
OU
NomeDaVariavel = Valor ou Expresso Atribuda
ATENO: usaremos o smbolo para atribuio.

Operadoradores Aritmticos:

Tabela 1.3 Operadores aritmticos.

+, -

Operadores unrios, isto , so aplicados a um nico operando. So os operadores


aritmticos de maior precedncia. Exemplos: -3, +x. Enquanto o operador unrio - inverte o
sinal do seu operando, o operador + no altera em nada o seu valor.

Operador de diviso inteira. Por exemplo, 5 \ 2 = 2. Tem a mesma precedncia do operador


de diviso tradicional.

+, -, *, /

Operadores aritmticos tradicionais de adio, subtrao, multiplicao e diviso. Por


conveno, * e / tm precedncia sobre + e -. Para modificar a ordem de avaliao das
operaes, necessrio usar parnteses como em qualquer expresso aritmtica.

MOD ou %

Operador de mdulo (isto , resto da diviso inteira). Por exemplo, 8 MOD 3 = 2. Tem a
mesma precedncia do operador de diviso tradicional.

Operador de potenciao. Por exemplo, 5 ^ 2 = 25. Tem a maior precedncia entre os


operadores aritmticos binrios (aqueles que tm dois operandos).

Funces Primitivas: SEN(x); COS(x); TG(x); ABS(x); INT(x); Raizq(x).

Podem variar, dependendo da linguagem de programao em que o algoritmo ser


descrito.

34

1. DEFINIES DE ALGORITMO

Operadores Relacionais:

So utilizados para relacionar variveis ou expresses, resultando num valor lgico


(Verdadeiro ou Falso), sendo eles:
Tabela 1.4 Operadores relacionais.

=, <, >,
<=, >=,
<>

Respectivamente: igual, menor que, maior que, menor ou igual a, maior ou igual
a, diferente de. So utilizados em expresses lgicas para se testar a relao
entre dois valores do mesmo tipo. Exemplos: 3 = 3 ( 3 igual a 3?) resulta em
VERDADEIRO; A > B (A est depois de B na ordem alfabtica?) resulta
em FALSO.

Operadores Lgicos:

So utilizados para avaliar expresses lgicas, sendo eles:


Tabela 1.5 Operadores Lgicos.

nao

Operador unrio de negao. nao VERDADEIRO = FALSO, e nao FALSO = VERDADEIRO.


Tem a maior precedncia entre os operadores lgicos. Equivale ao NOT do Pascal.

ou

Operador que resulta VERDADEIRO quando um dos seus operandos lgicos for verdadeiro.
Equivale ao OR do Pascal.

Operador que resulta VERDADEIRO somente se seus dois operandos lgicos forem
verdadeiros. Equivale ao AND do Pascal.

Veja a seguir a tabela verdade para as operaes e e ou com vrias formas de


representao dos valores booleanos.

1. DEFINIES DE ALGORITMO

35

Tabela 1.6 Tabela verdade dos operadores .E. e .OU.


A
VERDADEIRO/
TRUE/.T./.V./1
VERDADEIRO/
TRUE/.T./.V./1

B
VERDADEIRO/
TRUE/.T./.V./1
FALSO/
FALSE/.F./0

A.E.B
VERDADEIRO/
TRUE/.T./.V./1
FALSO/
FALSE/.F./0

A . OU . B
VERDADEIRO/
TRUE/.T./.V./1
VERDADEIRO/
TRUE/.T./.V./1

FALSO/
FALSE/.F./0
FALSO/
FALSE/.F./0

VERDADEIRO/
TRUE/.T./.V./1
FALSO/
FALSE/.F./0

FALSO/
FALSE/.F./0
FALSO/
FALSE/.F./0

VERDADEIRO/
TRUE/.T./.V./1
FALSO/
FALSE/.F./0

Veja o exemplo a seguir e, utilizando as tabelas verdade dos operadores, identifique o


resultado booleano para as expresses propostas.
APROVADO?
Expresso 1 : (Mdia >= 60) e (Frequncia >= 0.75)
REPROVADO?
Expresso 2 : (Mdia < 60) ou (Frequncia < 0.75)
Tabela 1.7 Tabela verdade do operador .E.
A
1
1
0
0

B
1
0
1
0

AeB
1
0
0
0

B
1
0
1
0

A ou B
1
1
1
0

Tabela 1.8 Tabela verdade do operador .OU.


A
1
1
0
0

36

1. DEFINIES DE ALGORITMO

Tabela 1.9 Tabela verdade do operador .NAO.


A
1
0

nao(A)
0
1

PRIORIDADE DE OPERADORES:
Durante a execuo de uma expresso que envolve vrios operadores, necessrio a
existncia de prioridades, caso contrrio poderemos obter valores que no representam o
resultado esperado.
A maioria das linguagens de programao utiliza as seguintes prioridades de
operadores:
1 - Efetuar operaes embutidas em parnteses mais internos
2 - Efetuar Funes
3 - Efetuar multiplicao e/ou diviso
4 - Efetuar adio e/ou subtrao
5 - Operadores Relacionais
6 - Operadores Lgicos

OBS: O programador tem plena liberdade para incluir novas variveis, operadores
ou funes para adaptar o algoritmo as suas necessidades, lembrando sempre, que
estes devem ser compatveis com a linguagem de programao a ser utilizada.

1. DEFINIES DE ALGORITMO

37

EXERCCIOS DE FIXAO
1. Na expresso A*B - C, qual ser a sequncia de execuo?
2. Na expresso (A*B) - C, qual ser a sequncia de execuo?
3. Na expresso A*(B - C), qual ser a sequncia de execuo?
4. Na expresso ( A*(B - C*(D/E))), qual ser a sequncia de execuo?

A lgica para se montar uma expresso ponto determinante na questo do resultado


ser ou no verdadeiro, ou seja, de ser o resultado esperado.

1.13. Primeiras instrues


Aps dominarmos os assuntos anteriormente tratados, passaremos a estudar as
instrues primitivas, ou seja, os comandos bsicos que executam tarefas consideradas
essenciais para a execuo de qualquer programa de computador. Um exemplo deste tipo
de instruo so aquelas responsveis pela comunicao do operador com o computador
por meio do teclado (entrada de dados) ou ainda a impresso de um relatrio (sada de
dados sem contar com a parte esttica do relatrio, alinhamento de colunas etc.).
Toda linguagem de programao tem por obrigao possuir instrues primitivas,
pois sem estas instrues no existiria comunicao com os perifricos.

Antes de qualquer coisa, voc saberia diferenciar perifricos de entrada e de


sada de dados? A resposta simples, perifricos de entrada so aqueles responsveis
pela passagem de dados do mundo externo para a memria do computador, como
por exemplo, o teclado, unidade de CD-ROM etc. J os perifricos de sada recebem
os dados do computador para outro equipamento externo, como por exemplo, o
monitor de vdeo, impressora etc.

38

1. DEFINIES DE ALGORITMO

Toda instruo, primitiva ou no, possui uma sintaxe, ou seja, uma regra que dever
ser seguida para a construo de seu cdigo. Caso esta regra no seja obedecida, o seu
programa pode simplesmente no funcionar.
Devemos saber tambm que o conjunto de aes que sero realizadas pelo computador
aps a execuo de um determinado comando conhecida como semntica.

EXERCCIOS DE FIXAO
1. Quais os valores das expresses a seguir:
2 + 3 * 6
12 / 3 * 2 5
31 / 4
31 MOD 4
31 % 4

2. Considere o seguinte algoritmo:

1. DEFINIES DE ALGORITMO

39

EXERCCIOS DE FIXAO
Mostre quais os valores armazenados em cada uma das variveis aps a execuo de
cada um dos comandos do algoritmo acima.
3. Faa o teste de mesa do algoritmo a seguir:

4. Considerando as variveis abaixo, indique o resultado de cada uma das expresses


a seguir:
X
V

Y
2

Z
4

W
1,50

Q
PROVA

a. (2 * (5 MOD 3) + Y + W * 2) > Z ou

40

(Y < Z -1) e nao((Z * (Y 1) + Y) < 100)

b. (X ou .V.) ou (Z * 2 % Y < W * Y)

c. F. e X = nao(.V.) ou Y < Z

d. Y + 4 * (Z MOD 3 + 1)

e. (3 + W (Y + 1) / 2) + 1,5

1. DEFINIES DE ALGORITMO

EXERCCIOS DE FIXAO
5. Dada a declarao de variveis:
I1, I2, I3 : inteiro
R1, R2, R3 : real
L1, L2 : literal
B1, B2 : lgico

Para as variveis declaradas acima, s quais so dados os valores seguintes:

I1 9
I2 7
I3 6
R1 5.5

R3 6.0
L1 Ol
L2 A1
B1 VERDADEIRO

R2 3.92

B2 VERDADEIRO

Determine o resultado da avaliao das expresses abaixo. Se caso no for possvel


resolver a expresso responda Expresso Invlida:
(a) (I1+I2) > 10 ou (I1+I2) = (I3+R1)
(b) (I1^2) + (I3^ 2)
(c) L1 <> L2
(d) (I1+I2) > 10 ou (I1+I2) = (I3+R1) e (I1>=I3) e (R1 >= I3)
(e) (R1 * I1) / (R3^B1) - B2

1. DEFINIES DE ALGORITMO

41

EXERCCIOS DE FIXAO
6. Faa o teste de mesa dos algoritmos a seguir:

42

1. DEFINIES DE ALGORITMO

2. Comandos de entrada e sada

Na maioria das vezes, um algoritmo necessita de interatividade com o usurio, ou


seja, preciso representar a troca de informaes que ocorrer entre o computador e o
usurio. Essa interatividade conseguida por meio dos comandos de entrada e sada.

2.1. Comando de entrada de dados


leia (<lista-de-variaveis>)

Este comando recebe os valores digitados pelos usurios, atribuindo-os s variveis


cujos nomes esto em <lista-de-variveis> ( respeitada a ordem especificada nesta lista).

2.2. Comando de sada de dados


escreva (<lista-de-expressoes>)

Este comando escreve o contedo de cada uma das expresses que compem a
<lista-de-expresses> nos dispositivos de sada, para que o usurio possa visualiz-lo (as
expresses dentro desta lista devem estar separadas por vrgulas).
escreval (<lista-de-expressoes>)

Idem ao anterior, com a nica diferena de que este provoca o pulo de uma linha em
seguida.

IMPORTANTE: Observe que, no pseudocdigo, quando queremos enviar uma


expresso como sada, esta colocada dentro de aspas, porm quando queremos
enviar o contedo de uma varivel, esta dever estar fora de aspas.

2. COMANDOS DE ENTRADA E SADA

43

Exemplo:

Execuo:

Figura 2.1 Exemplo de execuo de comandos de entrada e sada.

44

2. COMANDOS DE ENTRADA E SADA

EXERCCIOS DE FIXAO
1.

Escreva um algoritmo que leia dois nmeros, calcule o produto entre eles, mostre
o resultado e os nmeros recebidos.

2.

Crie um algoritmo que receba a idade de trs pessoas, calcule e mostre a mdia
das idades.

3.

Faa um algoritmo que receba dois nmeros, calcule a diviso, a multiplicao,


a soma, a diferena entre eles e mostre os resultados.

4.

Leia dois valores para as variveis A e B, efetue a troca dos valores de forma
que a varivel A passe a ter o valor da varivel B e que a varivel B, o valor da
varivel A. Apresentar os valores trocados.

5.

Faa um algoritmo que leia uma temperatura fornecida em graus Fahrenheit e


a converta para o seu equivalente em graus centgrados.
5
9

Obs.: C  ( F 32 )

6.

Uma empresa de energia eltrica calcula o valor da conta de luz de acordo com o
consumo em Kw/h. Faa um algoritmo que receba o nmero da conta, a leitura
anterior e a leitura atual, calcule o valor a ser pago, sabendo que a tarifa do
Kw/h de 0.20725. Mostre o nmero da conta, o valor da conta e o consumo
de luz de um usurio.

7.

Faa um algoritmo que receba a matrcula e as trs notas do aluno, calcule a


sua mdia, sabendo que a primeira nota tem peso dois, a segunda peso trs e
a terceira peso quatro. Mostre a matrcula e a mdia do aluno.

2. COMANDOS DE ENTRADA E SADA

45

EXERCCIOS DE FIXAO
8.

Leia as coordenadas de dois pontos no plano cartesiano e imprima a distncia


entre estes dois pontos. Obs.: frmula da distncia entre dois pontos (x1, y1) e
(x2, y2): ( x 2 x1)2
( y 2 y1)2 .

9.

Dado o preo de um produto em Reais, converta este valor para o equivalente em


Dlares. O programa dever ler o preo e a taxa de converso para o Dlar.

10.

Faa um programa para calcular e imprimir o salrio bruto a ser recebido por
um funcionrio em um ms. O algoritmo dever utilizar os seguintes dados:
nmero de horas que o funcionrio trabalhou no ms, valor recebido por hora
de trabalho e nmero de filhos com idade menor do que 14 anos (para adicionar
o salrio famlia). Considerar o valor do salrio famlia por filho.

11.

[Algoritmos - A. I. Orth] Escreva um algoritmo que l o cdigo da pea 1, o


nmero de peas 1, o valor unitrio da pea 1, o cdigo da pea 2, o nmero
de peas 2, o valor unitrio da pea 2 e a percentagem de IPI a ser acrescentado
e calcule o valor total a ser pago.

12.

[Algoritmos - A. I. Orth] Escreva um algoritmo que l o nmero de um vendedor,


o seu salrio fixo, o total de vendas por ele efetuadas e o porcentual que ganha
sobre o total de vendas. Calcule o salrio total do vendedor. Escreva o nmero
do vendedor e o salrio total.

13.

[Algoritmos - A. I. Orth] O custo ao consumidor, de um carro novo, a soma do


custo de fbrica com a percentagem do distribuidor e dos impostos (aplicados
ao custo de fbrica). Supondo que a percentagem do distribuidor seja de 28%
e os impostos de 45%, escreva um algoritmo para ler o custo de fbrica de um
carro e escrever o custo ao consumidor.

46

2. COMANDOS DE ENTRADA E SADA

3. Tomada de decises

A representao da soluo de um problema se faz atravs da descrio de um


conjunto de instrues a serem seguidas. Nos exemplos e exerccios que vimos at agora,
os recursos so limitados. Foi possvel resolver apenas os problemas puramente sequenciais,
ou seja, todas as instrues eram executadas seguindo a ordem do algoritmo (de cima para
baixo). Agora comearemos a estudar os desvios condicionais. Desvios condicionais, como
o prprio nome diz, permitem que determinados comandos sejam executados ou no,
dependendo do resultado de um teste realizado (condio).

Desvio Condicional Simples


se

<expressao-logica> entao
<sequencia-de-comandos>
fimse

Este comando analisa a <expresso-lgica>. Se o resultado do teste for VERDADEIRO,


todos os comandos da <seqncia-de-comandos> sero executados. Se o resultado for
FALSO, estes comandos so desprezados e a execuo do algoritmo continua a partir da
primeira linha depois do fimse.
A seguir apresentada uma representao em fluxograma do desvio condicional
simples:

3. TOMADA DE DECISES

47

letra

Instrues executadas
quando a condio
verdadeira

Instrues executadas
quando a condio
for falsa ou aps ser
verdadeira

Figura 3.1 Fluxograma do desvio condicional simples.

Vamos imaginar a seguinte situao: em uma empresa, ser solicitado o salrio de


um determinado funcionrio para se calcular seu novo salrio, sendo que, se este tiver um
salrio inferior a R$ 1000,00, o reajuste ser de 8%.
Observe que teremos que testar o valor do salrio, para saber se o reajuste ser
aplicado ou no.
Vamos criar ento um pseudocdigo com este objetivo:

48

3. TOMADA DE DECISES

Observe que, durante a execuo do pseudocdigo, aps obtermos, atravs de uma


instruo de entrada de dados, o valor do salrio do funcionrio, efetuamos um teste se.
A instruo ser executada somente se o teste for verdadeiro. A instruo fimse termina
o bloco de testes. No caso de ser falso, o bloco de teste no ser executado.

Desvio Condicional Composto


se <expressao-logica> entao
<sequencia-de-comandos-1>
senao
<sequencia-de-comandos-2>
fimse

No desvio condicional composto, se o resultado do teste da <expressaologica> for VERDADEIRO, todos os comandos da <sequencia-de-comandos-1> sero
executados, e a execuo continua depois do fimse. Se o resultado for FALSO, todos os
comandos da <sequencia-de-comandos-2> (SENAO) sero executados, e a execuo
continua depois do fimse.

Condio

Instrues
executadas
quando a
condio falsa

Instrues
executadas
quando a condio
verdadeira

Figura 3.2 Fluxograma do desvio condicional composto.

3. TOMADA DE DECISES

49

Vamos imaginar a seguinte situao: em uma empresa, ser solicitado o salrio de


um determinado funcionrio para se calcular seu novo salrio, sendo que, se este tiver um
salrio inferior a R$ 1000,00, o reajuste ser de 8%, caso contrrio o reajuste ser de 5%.
Vamos criar, ento, um pseudocdigo com este objetivo:

A instruo se possui duas condies, uma verdadeira e uma falsa. As instrues


que sero executadas no caso de um teste verdadeiro devem estar abaixo da clusula
entao, j as instrues que sero executadas no caso de um teste falso, devem estar
abaixo da clusula senao. A instruo fimse termina o bloco de testes.

Desvios condicionais encadeados


se <condicao1> entao
<instrucoes condio1 verdadeira>
senao
se <condicao2> entao
<instrues condicao2 verdadeira e condicao1 falsa>
senao
<instrucoes condicao2 e condicao1 falsa>
fimse
fimse

50

3. TOMADA DE DECISES

Em vrias situaes, necessrio analisar sucessivamente diversas condies para se


realizar uma tomada de deciso, estabelecendo condies dentro de condies. Chamados
de aninhamentos ou encadeamentos, esse tipo de estrutura poder ser constitudo de
diversos nveis de condies.

Condio 1

Instrues
executadas quando
a condio 1
verdadeira

Condio 2

Instrues
executadas quando
condio 1 e
condies 2 so falsa

Instrues executadas
quando condio 1
falsa, mas a condies
2 verdadeira

Figura 3.3 Fluxograma do desvio condicional encadeado.

Comando de seleo mltipla


escolha <expressao-de-selecao>
caso <exp11>, <exp12>, ..., <exp1n>
<sequencia-de-comandos-1>
caso <exp21>, <exp22>, ..., <exp2n>
<sequencia-de-comandos-2>
...
outrocaso
<sequencia-de-comandos-extra>
fimescolha

3. TOMADA DE DECISES

51

Para a tomada de uma deciso, existem casos em que no bastam apenas os desvios
condicionais (verdadeiro ou falso), mas uma srie de testes sobre um mesmo bloco. Este tipo
de estrutura chamado de estrutura de deciso do tipo ESCOLHA.
No fluxograma, o smbolo que representa cada uma das condies acima o mesmo
que o smbolo que representa a estrutura de deciso. Veja a sintaxe da estrutura de deciso
de escolha no fluxograma:

Condio 1

Instrues
condio 1

Condio 2

Instrues
condio 2

Condio 3

Instrues
condio 3

Figura 3.4 Fluxograma de desvio de seleo mltipla.

Vejamos o exemplo a seguir, que ilustra bem o que faz este comando:

52

3. TOMADA DE DECISES

Observe que temos aqui uma novidade, ou seja, em uma nica condio, estamos na
verdade realizando vrios testes, isto , verifica se a varivel time Inter ou Grmio
ou Flamengo ou Vasco ou ... e assim sucessivamente.

EXERCCIOS DE FIXAO
Seleo Simples

1.

Escreva um algoritmo que receba um nmero e mostre a sua metade somente


quando ela for maior que cinquenta.

2.

Crie um algoritmo que receba um nmero e mostre o nmero e o seu dobro


somente quando o nmero for maior que noventa e menor que cem.

3.

Faa um algoritmo que receba um nmero e mostre a sua quinta parte somente
quando ela for menor que cinquenta ou maior que mil.

4.

Construa um algoritmo que receba um nmero e mostre o seu sxtuplo somente


quando o resultado no for menor que trezentos.

5.

Elabore um algoritmo que receba um nmero e mostre o nmero e o sxtuplo


somente quando o nmero for maior que noventa.

6.

Crie um algoritmo que receba dois nmeros e mostre a diferena somente quando
o primeiro for maior que o segundo.

7.

Faa um algoritmo que receba um nmero e mostre o nmero somente quando


o nmero for par.

3. TOMADA DE DECISES

53

EXERCCIOS DE FIXAO

54

8.

Escreva um algoritmo que receba um nmero e mostre o nmero, se ele estiver


entre quinze (inclusive) e quarenta.

9.

Construa um algoritmo que receba um nmero e mostre o nmero somente se


ele estiver entre trinta e duzentos e oitenta e um (inclusive).

10.

Faa um algoritmo que receba nome, idade e altura, exiba somente o nome
da pessoa com 1,70m e idade acima de 17 anos.

11.

Elabore um algoritmo que receba o cdigo, o valor unitrio e a quantidade


de mercadoria adquirida. Calcule 6% de descontos somente para o total da
compra que ultrapassar a R$ 100,00. Ao final mostre o cdigo, o total a pagar
com e sem desconto e o valor do desconto.

12.

Escreva um algoritmo que receba o nmero da conta, o nome, o endereo e


o consumo em kw/h, informe o nmero da conta, o nome e o endereo da
conta de luz em que o consumo for inferior a 100 kw/h.

13.

Faa um algoritmo que receba nome, turma e trs notas do aluno. Calcule a
mdia ponderada considerando: primeira nota peso um, segunda nota peso
dois e terceira nota peso trs, informar o nome, a turma e a mdia do aluno
que a mdia for inferior a sete.

14.

Construa um algoritmo que receba um nmero e mostre se o nmero recebido


mpar.

3. TOMADA DE DECISES

EXERCCIOS DE FIXAO

15.

Faa um algoritmo que receba o salrio de um funcionrio, calcule e mostre o


novo salrio, sabendo-se que este sofreu um aumento de 25%. Este aumento
vlido para os funcionrios com mais de cinco anos de servio.

16.

Crie um algoritmo que receba o salrio de um funcionrio, calcule e mostre


o salrio a receber, sabendo-se que esse funcionrio tem gratificao de 5%
sobre o salrio-base. Pagar imposto de 7% sobre o salrio, o funcionrio cujo
salrio mais a gratificao ultrapassar R$ 1.000,00.

Seleo Composta
17.

Crie um algoritmo que leia um nmero inteiro. Se o nmero lido for positivo,
escreva uma mensagem indicando se ele par ou mpar.

18.

Construa um algoritmo que receba dois nmeros e mostre quando o primeiro


for maior e quando for menor que o segundo.

19.

Elabore um algoritmo que receba dois nmeros e mostre quando o primeiro for
maior, quando for menor e quando for igual ao segundo.

20.

Faa um algoritmo que receba trs nmeros e mostre quando o nmero estiver
na situao de maior nmero digitado.

21.

Escreva um algoritmo que receba dois nmeros e informe a diferena do maior


pelo menor.

3. TOMADA DE DECISES

55

EXERCCIOS DE FIXAO
22.

23.

24.

56

Faa um algoritmo que receba a matrcula e duas notas do aluno. Calcular a


mdia e mostrar a matrcula do aluno com as seguintes mensagens de acordo
com os dados a seguir:
MDIA

MENSAGEM

Mdia > 7,0


Mdia = 7,0
Mdia < 7,0

Aluno Aprovado
Aluno em Recuperao
Aluno Reprovado

Escreva um algoritmo que receba o cdigo, o preo e o tamanho da camiseta.


Sabe-se que de acordo com o tamanho h um desconto conforme tabela abaixo.
Informar o cdigo, e o valor do desconto.
TAMANHO

DESCONTO

G
M
P

10%
20%
30%

Faa um algoritmo que receba o nome e o salrio do funcionrio, calcule


os descontos conforme a tabela e informe o nome, o salrio a receber e os
descontos (separados) do funcionrio.
SALRIO

INSS

IR

At 500,00
De 500,01 at 950,00
Acima de 950,00

3,00%
5,00%
7,00%

2,00%
4,00%
6,00%

3. TOMADA DE DECISES

EXERCCIOS DE FIXAO
25.

26.

Construa um algoritmo que receba o cdigo e o total de vendas do vendedor,


calcule a comisso conforme a tabela e informe o cdigo e a comisso do
vendedor.
TOTAL DAS VENDAS

COMISSO

At 100,00
Acima 100,00 at 350,00
Acima 350,00

0,00%
5,00%
10,00%

Faa um algoritmo que receba a matrcula e o salrio do funcionrio, calcule a


gratificao conforme a tabela e informe a matrcula, salrio a receber e o valor
da gratificao do funcionrio.
SALRIO

GRATIFICAO

At 500,00
De 500,01 at 1.000,00
Acima de 1.000,00

15,00%
10,00%
5,00%

27.

Faa um algoritmo que receba um nmero e informe quando ele for maior e
menor que o nmero 100.

28.

Crie um algoritmo que receba dois pesos e mostre quando o primeiro peso for
maior que o segundo.

29.

Construa um algoritmo que receba duas idades e mostre quando a primeira


idade for maior, quando for igual e quando for menor que a segunda idade
(mostrar separadamente)

3. TOMADA DE DECISES

57

EXERCCIOS DE FIXAO

58

30.

Faa um algoritmo que receba trs alturas e informe quando a altura que
estiver na situao de maior altura.

31.

Escreva um algoritmo que receba o nome e o sexo de uma pessoa. Informar o


nome quando masculino e quando feminino.

32.

Elabore um algoritmo que receba a matrcula e o salrio do funcionrio. Sabese que, de acordo com o salrio, h uma gratificao conforme tabela abaixo.
Informar a matrcula e a gratificao.
SALRIO

GRATIFICAO

Acima de R$ 300,00
Abaixo de R$ 300,00
R$ 300,00

5%
10%
6%

3. TOMADA DE DECISES

4. Estruturas de repetio

Quando se torna necessrio, na programao, a repetio de um ou vrios trechos


em vrios momentos de um algoritmo em um determinado nmero de vezes, tem-se
uma estrutura de repetio. Em linguagem de programao, as estruturas de repetio
so conhecidas como laos de repetio (loopings) ou malhas de repetio. A estrutura de
repetio, assim como a de deciso, envolve sempre a avaliao de uma condio.
Para que se possam abstrair estas estruturas, considere um algoritmo que deva executar
n vezes um determinado trecho de instrues. Com o conhecimento que estudamos at
o presente momento, com certeza voc ir escrever o mesmo trecho, repetindo-o o nmero
de vezes necessrias. Em vez de se fazer isto, existem estruturas de repetio apropriadas
para executar um determinado trecho de instrues, o nmero de vezes necessrio, fazendo
com que o algoritmo passe a ter um tamanho reduzido, de fcil alterao na quantidade de
repeties e com melhor compreenso.
Trabalhamos basicamente com dois tipos de estruturas de repetio:
Repetio determinada: quando se tem, de forma prvia, o nmero de vezes que
uma determinada sequncia de comandos ser executado;
Repetio indeterminada: aqueles que no possuem um nmero pr-determinado
de vezes que a estrutura de comandos ser executada, porm este nmero estar vinculado
a uma determinada condio.

4. ESTRUTURAS DE REPETIO

59

4.1. Repetio determinada


para <variavel> de <valor-inicial> ate <valor-limite>
[passo <incremento>] faca
<sequencia-de-comandos>
fimpara

Esta estrutura repete uma sequncia de comandos um determinado nmero de vezes,


tendo o seu funcionamento controlado por uma varivel denominada contador.
Onde:
Tabela 4.1 Elementos do comando de repetio determinda.

60

<variavel>

a varivel contadora que controla o nmero de repeties do lao. Deve ser


necessariamente uma varivel do tipo inteiro, como todas as expresses deste
comando.

<valor-inicial>

uma expresso que especifica o valor de inicializao da varivel contadora antes


da primeira repetio do lao.

<valor-limite>

uma expresso que especifica o valor mximo que a varivel contadora pode
alcanar.

<incremento>

opcional. Quando presente, precedida pela palavra passo, uma expresso que
especifica o incremento que ser acrescentado varivel contadora em cada repetio
do lao. Quando esta opo no utilizada, o valor padro de <incremento> 1.
Vale a pena ter em conta que tambm possvel especificar valores negativos para
<incremento>. Por outro lado, se a avaliao da expresso <incremento > resultar
em valor nulo, a execuo do algoritmo ser interrompida, com a impresso de uma
mensagem de erro.

fimpara

Indica o fim da sequncia de comandos a serem repetidos. Cada vez que o programa
chega neste ponto, acrescentado varivel contadora o valor de <incremento >,
e comparado a <valor-limite >. Se for menor ou igual (ou maior ou igual,
quando <incremento > for negativo), a sequncia de comandos ser executada mais
uma vez; caso contrrio, a execuo prosseguir a partir do primeiro comando que
esteja aps o fimpara.

4. ESTRUTURAS DE REPETIO

A seguir apresentada uma representao em fluxograma da repetio determinada:

V de I at L
passo P

Condio

Instrues

Figura 4.1 Fluxograma do comando de repetio determinada.

A lgica de trabalho da repetio determinada apresentada a seguir:


1. No incio da leitura do cdigo/fluxo, o
<variavel>;

<valor-inicial>

atribudo

2. O valor da <variavel> comparado ao <valor-limite>;


3. Se o valor da <variavel> for maior que o <valor-limite>, a sequncia de
comandos que faz parte do lao no executado e o controle do processo passa
para a prxima linha aps o final do lao (fimpara) ou para o smbolo ao lado (no
caso de fluxograma);
4. Se o valor da <variavel> for menor ou igual ao do <valor-limite>, a
sequncia de comandos executada e, ao final do ltimo comando, o valor do
<incremento> adicionado <variavel> e retorna-se comparao entre
<variavel> e <valor-limite>, repetindo-se todo o processo anterior.
4. ESTRUTURAS DE REPETIO

61

Vale lembrar que o incremento no de declarao obrigatria, e, caso no seja


declarado, assume automaticamente o valor 1.
Exemplo:

Importante:
Se, logo no incio da primeira repetio, o <valor-inicial> for maior que o
<valor-limite> (ou menor, quando o <incremento> for negativo), o lao no ser
executado nenhuma vez. O exemplo a seguir no imprime nada.

Este outro exemplo, no entanto, funcionar por causa do passo -1:

62

4. ESTRUTURAS DE REPETIO

4.2. Repetio Indeterminada


Este tipo de estrutura, tambm chamado de laos condicionais, so aqueles cujo
conjunto de comandos em seu interior executado at que uma determinada condio seja
satisfeita. utilizado para repetir N vezes uma ou mais instrues. Tendo como vantagem
o fato de no ser necessrio o conhecimento prvio do nmero de repeties.
Existem dois tipos de estruturas de repetio indeterminada:

Repetio Indeterminada com Validao Inicial.

Repetio Indeterminada com Validao Final.

4.2.1 Repetio Indeterminada com Validao Inicial


enquanto <expressao-logica> faca
<sequencia-de-comandos>
fimenquanto

Esta estrutura repete uma sequncia de comandos enquanto uma determinada


condio (especificada atravs de uma expresso lgica) for satisfeita.
Tabela 4.2 Fluxograma do desvio condicional encadeados.

<expressao-logica>

Esta expresso avaliada antes de cada repetio do lao. Quando seu


resultado for VERDADEIRO, <sequencia-de-comandos>
executada.

menquanto

Indica o fim da <sequencia-de-comandos> que ser repetida.


Cada vez que a execuo atinge este ponto, volta-se ao incio do lao
para que <expressao-logica> seja avaliada novamente. Se
o resultado desta avaliao for VERDADEIRO, a <sequencia-decomandos> ser executada mais uma vez; caso contrrio, a execuo
prosseguir a partir do primeiro comando aps fimenquanto.

4. ESTRUTURAS DE REPETIO

63

A seguir apresentada uma representao em fluxograma da repetio indeterminada


com validao inicial:

Condio

Instrues

Figura 4.2 Fluxograma do comando de repetio indeterminada.

A sintaxe de execuo deste :

No incio da execuo do enquanto, a condio testada;

Se o resultado do teste for verdadeiro, a sequncia de comandos executada e


ao trmino desta, retorna-se ao teste da condio;

Sendo a condio for falsa, o controle da aplicao passa para a prxima linha
aps o fimenquanto.

Exemplo:

64

4. ESTRUTURAS DE REPETIO

4.2.2 Repetio Indeterminada com Validao Final


repita
<sequencia-de-comandos>
ate <expressao-logica>

Esta estrutura repete uma sequncia de comandos at que uma determinada condio
(especificada por meio de uma expresso lgica) seja satisfeita.
Tabela 4.3 Elementos do comando de repetio indeterminada.
repita

Indica o incio do lao.

at <expressao-logica>

Indica o fim da <sequencia-de-comandos> a serem


repetidos. Cada vez que o programa chega neste
ponto, a <expressao-logica> avaliada: se seu
resultado for FALSO, os comandos presentes entre esta
linha e a linha repita so executados; caso contrrio,
a execuo prosseguir a partir do primeiro comando
aps esta linha.

A seguir apresentada uma representao em fluxograma da repetio indeterminada


com validao final.
A sintaxe de execuo deste :

Executa a primeira iterao do lao;

Se o resultado do teste for verdadeiro, a sequncia de comandos executada e


ao trmino desta, retorna-se ao teste da condio;

Se a condio for falsa, executa-se nova iterao do lao, se a condio de


parada for verdadeira, encerra-se a execuo do lao.

4. ESTRUTURAS DE REPETIO

65

Instrues

Condio

Figura 4.3 Fluxograma do comando de repetio indeterminada com validao final.

Exemplo:

66

4. ESTRUTURAS DE REPETIO

EXERCCIOS DE FIXAO
Repetio determinada

1.

Construa um algoritmo que receba trinta nmeros e mostre a soma total dos
nmeros recebidos.

2.

Construa um algoritmo que receba cinquenta nmeros e mostre a mdia dos


nmeros que foram digitados.

3.

Construa um algoritmo que receba a idade de cem pessoas e mostre a mdia


das idades destas pessoas.

4.

Construa um algoritmo que leia cem nmeros e mostre qual o maior nmero
que foi lido.

5.

Construa um algoritmo que leia cinquenta nmeros e mostre qual o menor


nmero lido.

6.

Construa um algoritmo que leia cento e cinquenta nmeros e mostre qual o


maior e o menor nmero lido.

7.

Construir um algoritmo que receba cem nmeros e informe a mdia e a soma


entre os nmeros positivos.

8.

Construa um algoritmo que receba quinze nmeros quaisquer e informe qual o


maior e o menor entre os nmeros que foram lidos.

4. ESTRUTURAS DE REPETIO

67

EXERCCIOS DE FIXAO

68

9.

Escreva um algoritmo que receba 100 nmeros, e conte quantos deles esto
no intervalo [10, 20] e quantos deles esto fora do intervalo, escrevendo estas
informaes.

10.

Faa um algoritmo que receba o peso, a idade e a altura de cem pessoas,


calcule e informe os valores de: maior peso, menor peso, maior altura, menor
altura, maior idade e menor idade deste grupo.

11.

Escrever um algoritmo que leia 50 nmeros e informe quantos destes valores


so negativos.

12.

Uma loja tem 150 clientes cadastrados e deseja mandar uma correspondncia a
cada um deles anunciando um bnus especial. Escreva um algoritmo que leia o
nome, o endereo do cliente e o valor de suas compras e calcule um bnus de
10% se o valor das compras for menor ou igual a R$ 500.000,00 e de 15 %,
se superior a este valor.

13.

Faa um algoritmo que receba o salrio-base dos 1.200 funcionrios de uma


fbrica e calcule os descontos com vale transporte (vt) 2% e vale refeio (vr)
3%. Mostrar o total dos descontos efetuados separadamente.

14.

Faa um algoritmo que receba o nmero do apartamento e o consumo em


kw/h dos setenta e dois apartamentos deste edifcio. Informe os apartamentos
com o consumo inferior ou igual a 100 kw/h (inclusive) e os que ultrapassaram
este consumo.

15.

Faa um algoritmo que receba o tamanho de 500 camisetas existente no


almoxarifado e ao final informe quantas camisetas de cada tamanho P, M, G, GG.

4. ESTRUTURAS DE REPETIO

EXERCCIOS DE FIXAO
Repetio Indeterminada

16.

Elabore um algoritmo para somar os nmeros recebidos. O algoritmo encerra


quando digitado o nmero zero.

17.

Construa um algoritmo que leia vrios nmeros e mostre quantos nmeros


foram lidos. O algoritmo encerra quando digitado o nmero zero.

18.

Faa um algoritmo que receba vrios nmeros e mostre a mdia dos nmeros
recebidos. O final conhecido pelo nmero zero.

19.

Escreva um algoritmo que receba vrios nmeros, calcule e informe a mdia,


a soma e a quantidade de nmeros recebidos. O algoritmo encerra quando
digitado o nmero zero.

20.

Faa um algoritmo que receba a sigla da cidade de origem de um grupo de


pessoas, ao final informe quantas foram digitadas das cidades do Rio de Janeiro,
Belo Horizonte e Santa Catarina (separadamente). O algoritmo encerra quando
digitado fim.

21.

Elabore um algoritmo que recebe o sexo dos alunos de um determinado colgio


e informe o nmero de alunas e alunos separados e o nmero de digitaes
invlidas. O algoritmo encerra quando digitado fim.

22.

Construa um algoritmo que receba o estado civil (c | s | v) de um grupo de


pessoas, calcule e informe a quantidade de solteiros, casados, vivos, o nmero
de digitaes vlidas e invlidas. O algoritmo encerra quando digitado fim

4. ESTRUTURAS DE REPETIO

69

EXERCCIOS DE FIXAO
23. Foi feita uma pesquisa entre os habitantes de uma regio. Foi coletado o salrio
de cada habitante. Calcule e informe:
a) a mdia de salrio;
b) o maior e o menor salrio.
Encerre a entrada de dados quando for digitado o salrio zero.
24. Foi realizada uma pesquisa de algumas caractersticas fsicas da populao de
certa regio, a qual coletou os seguintes dados referentes a cada habitante para
serem analisados:
- sexo (masculino e feminino)
- olhos (claros e pretos)
- cabelos (louros, castanhos ou pretos)
Faa um algoritmo que calcule e informe a quantidade de pessoas do sexo
feminino, com olhos claros e cabelos louros. O final do conjunto de habitantes
reconhecido pelo sexo em branco .
25. Faa um algoritmo que receba a idade e a altura de um conjunto de pessoas.
Calcule e informe a mdia de altura e de idade das pessoas. Para encerrar a
entrada de dados, digite a idade igual a 0.

70

4. ESTRUTURAS DE REPETIO

EXERCCIOS DE FIXAO
26. Construa um algoritmo que receba o peso dos bois de uma determinada fazenda,
calcule e informe a quantidade de bois, o maior peso e o menor peso. Encerrar
quando for digitado o peso 0.
27. Crie um algoritmo que receba a altura de um grupo de pessoas, calcule e informe
a maior altura e a menor altura.
28. Foi feita uma pesquisa de audincia de canal de televiso em vrias casas de uma
determinada cidade. Ser fornecido o nmero da casa e o do canal de televiso
que estiver ligado no momento, caso a televiso esteja desligada fornecido
o nmero zero, bem como para a residncia fechada. Calcular e informar: a
quantidade de residncias fechadas, televises desligadas e a quantidade de
residncias com a televiso sintonizada no canal dois. Encerrar a pesquisa quando
for fornecido para o nmero da residncia um valor negativo.

4. ESTRUTURAS DE REPETIO

71

5. Estruturas de dados compostas

As estruturas de dados compostas so assim chamadas, pois permitem armazenar vrios


dados de um determinado tipo, se variveis indexadas forem utilizadas. Estas variveis so de
uso frequente na programao convencional. Varivel indexada um conjunto de variveis do
mesmo tipo, referenciadas pelo mesmo nome e que armazenam valores distintos.
A sua distino se d pela diviso da varivel, que possui uma posio de armazenamento
dentro de seu conjunto, sendo que a alterao ou a leitura do seu valor realizada por meio
de ndices, da o nome indexado. Existem dois tipos de variveis indexadas:

Vetor: quando a varivel indexada possui um nico ndice (uma dimenso);

Matriz: quando a varivel indexada possui dois ndices (duas dimenses X, Y/


Coluna, Linha).

5.1. Vetores
O nmero de ndices dentro de uma varivel denominado dimenso. Vetor um
conjunto de variveis, no qual cada uma pode armazenar uma informao diferente, mas
todas compartilham o mesmo nome. So associados ndices a esse nome, que representam
as posies do vetor, permitindo, assim, individualizar os elementos do conjunto.

5. ESTRUTURAS DE DADOS COMPOSTAS

73

Figura 5.1 Exemplo de um vetor.

Nesta figura, podemos perceber que um vetor composto por vrias clulas que
podem armazenar um determinado tipo de dado. Estas clulas podem ser acessadas por
meio de um endereo que as identifica e ordena, chamado ndice.
Para se definir uma varivel indexada, utilizamos a seguinte sintaxe:
<variaveis>: vetor[<intervalos>] de <tipo-de-dado>
Veja a seguir alguns exemplos de definio de variveis indexadas:
vet: vetor [1..10] de real
nomes: vetor [1..5] de caracter

No exemplo acima, criamos, na verdade, cinco variveis nomes, porm elas esto
divididas da seguinte forma:
nomes[1], nomes[2], nomes[3], nomes[4], nomes[5].
Cada uma das dimenses poder armazenar um valor diferenciado para um ou mais
caracteres. Sendo assim, para acessarmos um dos elementos do vetor, temos que indicar
qual elemento queremos obter, utilizando o nome da varivel e o ndice da posio conforme
o cdigo a seguir.

74

5. ESTRUTURAS DE DADOS COMPOSTAS

5.2. Matrizes
Uma matriz corresponde a vrios vetores colocados um abaixo do outro, formando,
assim, uma tabela composta por vrias linhas e vrias colunas.
Veja a seguir alguns exemplos de definio de variveis indexadas:
matriz: vetor [0..4,0..10] de inteiro
codigoProduto: vetor [1..3,1..10] de inteiro

No exemplo anterior, teremos a matriz codigoProduto, dividida nas seguintes


dimenses:
Tabela 5.1 Exemplo de uma matriz.
CodigoProduto[1,1]

CodigoProduto[2,1]

CodigoProduto[3,1]

CodigoProduto[1,2]

CodigoProduto[2,2]

CodigoProduto[3,2]

CodigoProduto[1,3]

CodigoProduto[2,3]

CodigoProduto[3,3]

CodigoProduto[1,4]

CodigoProduto[2,4]

CodigoProduto[3,4]

CodigoProduto[1,5]

CodigoProduto[2,5]

CodigoProduto[3,5]

5. ESTRUTURAS DE DADOS COMPOSTAS

75

CodigoProduto[1,6]

CodigoProduto[2,6]

CodigoProduto[3,6]

CodigoProduto[1,7]

CodigoProduto[2,7]

CodigoProduto[3,7]

CodigoProduto[1,8]

CodigoProduto[2,8]

CodigoProduto[3,8]

CodigoProduto[1,9]

CodigoProduto[2,9]

CodigoProduto[3,9]

CodigoProduto[1,10]

CodigoProduto[2,10]

CodigoProduto[3,10]

Quando estamos trabalhando com variveis indexadas, temos que obrigatoriamente


especificar o ndice da varivel na qual queremos trabalhar. No exemplo acima, temos que indicar
a coluna e a linha para acessarmos o valor de uma clula da tabela. Veja o exemplo a seguir:

Para validarmos o entendimento sobre variveis indexadas, vamos fazer um pequeno


exerccio. Dada a seguinte varivel indexada bidimensional A, ou seja, a matriz A:
Tabela 5.2 Exemplo de uma matriz com valores.

76

175

225

10

9000

3,7

4,75

9,8

100

363

432

156

18

3
4

40
402

301
4211

30,2
7213

6381
992

1
442

0
7321

5. ESTRUTURAS DE DADOS COMPOSTAS

21
1

3
2

2
3

1
4

9000
5

2000
6

1. Quantos elementos fazem parte do conjunto?


2. Qual o contedo do elemento identificado por A [4, 5] ?
3. Qual o contedo de X aps a execuo do comando X := A [3, 2] + A [5, 1] ?
4. O que aconteceria caso fosse referenciado o elemento A [6, 2] no programa?
5. Somar os elementos da quarta coluna: A [1, 4] + A [2, 4] + A [3, 4] + A [4, 4] +
A [5, 4].
6. Somar os elementos da terceira linha: (A [3, 1] + A [3, 2] + A [3, 3] + A [3, 4]).
No prximo exemplo, temos um algoritmo no qual iremos preencher os valores para
a varivel nome em suas diversas dimenses e em seguida list-los:

5. ESTRUTURAS DE DADOS COMPOSTAS

77

Veja abaixo o resultado da execuo do cdigo anterior:

Figura 5.2 Resultado da execuo do algoritmo nomes.

EXERCCIOS DE FIXAO
1.

Escreva um pseudocdigo que ir ler e armazenar em varivel indexada 10 nmeros


e aps o final da leitura, ir exibir a soma dos 10 nmeros armazenados nas dez
posies da varivel indexada.

2.

Escreva um pseudocdigo que ir ler e armazenar em varivel indexada 50 nmeros e


aps o final de leitura, ir apresentar o nmero da posio e o valor armazenado na
posio de varivel indexada que conter o maior valor lido.

78

5. ESTRUTURAS DE DADOS COMPOSTAS

5.3. Algoritmos de pesquisa e ordenao de dados


Conforme j foi dito anteriormente, quando trabalharmos com variveis indexadas, poderemos
entre outros criar ndices, ou seja, ordenar os vetores para que eles sejam apresentados em uma
determinada ordem. Este procedimento tambm conhecido, em sua forma mais simples, como Bolha
de Classificao. Sua lgica consiste na leitura de todos os elementos de um vetor, comparando os
valores de seus elementos vizinhos, e neste momento empregada a seguinte sequncia:
1. Sero realizadas menos varreduras que o total de elementos do vetor;
2. Na primeira varredura, verificamos que o elemento do vetor j se encontra em seu devido lugar;
3. Na segunda varredura, o procedimento anlogo primeira varredura e vai at o ltimo elemento;
4. Ao final do procedimento, o vetor estar classificado segundo o critrio escolhido.
Vamos prtica. No exemplo a seguir, iremos realizar a leitura de 5 nmeros e em
seguida classific-los em ordem crescente:

5. ESTRUTURAS DE DADOS COMPOSTAS

79

Veja abaixo o resultado da execuo do cdigo anterior:

Figura 5.3 Resultado da execuo do algoritmo classificao.

Outro processo que poder ser utilizado em programao a pesquisa sequencial, ou


seja, sero verificados todos os componentes de um vetor, para identificar se nestes esto
armazenados um determinado valor.
Exemplo:
Iremos efetuar a leitura de 100 nomes, em seguida, ser solicitado um nome qualquer
e, iremos verificar se, entre os 100 nomes entrados, existe o nome que foi solicitado na
pesquisa. Veja este algoritmo a seguir:

80

5. ESTRUTURAS DE DADOS COMPOSTAS

Veja abaixo o resultado da execuo do cdigo anterior:

Figura 5.4 Resultado da execuo do algoritmo pesquisa.

5. ESTRUTURAS DE DADOS COMPOSTAS

81

EXERCCIOS DE FIXAO

82

1.

Faa um algoritmo que carregue um vetor com 150 nmeros reais, determine e
mostre o seu elemento mximo (maior valor) e a posio na qual ele se encontra.

2.

Faa um algoritmo que carregue um vetor com 150 nmeros inteiros, determine e
mostre o seu elemento mnimo (menor valor) e a posio na qual ele se encontra.

3.

Escreva um algoritmo que armazene em um vetor os 100 primeiros nmeros


mpares. Aps isso, o algoritmo deve imprimir todos os valores armazenados.

4.

Escreva um algoritmo que armazene em um vetor o quadrado dos nmeros


mpares no intervalo fechado de 1 a 20. Aps isso, o algoritmo deve imprimir
todos os valores armazenados.

5.

Escreva um algoritmo que receba dez nmeros inteiros e armazene em um vetor


a metade de cada nmero. Aps isso, o algoritmo deve mostrar todos os valores
armazenados.

6.

Escreva um algoritmo que receba dez nmeros do usurio e armazene em um


vetor o quadrado de cada nmero. Aps isso, o algoritmo deve imprimir todos
os valores armazenados.

7.

Escreva um algoritmo que receba e armazene, em um vetor, quinze nmeros. Ao


final, mostre todos os nmeros pares do vetor e sua respectiva posio.

8.

Fazer um algoritmo em que sejam carregados dois vetores de 25 nmeros inteiros.

5. ESTRUTURAS DE DADOS COMPOSTAS

EXERCCIOS DE FIXAO
a. Intercale os elementos destes dois vetores formando um novo vetor de 50
elementos;
b. exiba os nmeros do novo vetor.
9.

Fazer um algoritmo que:


a. leia um vetor A com 30 valores numricos;
b. leia um outro vetor B com 30 valores numricos;
c. leia o valor de uma varivel X;
d. verifique qual o elemento de A igual a X;
e. exiba o elemento de B de posio correspondente do elemento de A igual
a X, se existir.
Dadas as variveis indexadas A e B abaixo:
A
7
2

8
1

4
7

B
9
3

6
32

9
19

11
3

10.

Calcular o conjunto C = A + B.

11.

Calcular o produto dos elementos A[1, 2], A[3, 1], B[2, 2], B[4, 2].

15
4

5. ESTRUTURAS DE DADOS COMPOSTAS

83

EXERCCIOS DE FIXAO

84

12.

Construa um algoritmo que carregue 100 nmeros inteiros positivos (deve ser feito
o teste para garantir a no incluso de nmeros invlidos utilize o lao repita
at neste teste). O programa deve calcular a mdia dos nmeros do vetor e, ao
final, mostrar todos os nmeros que so maiores que a mdia.

13.

Faa um algoritmo que carregue um vetor com 50 nomes, ordene e mostre o


vetor ordenado.

14.

Faa um algoritmo que carregue um vetor com 50 nomes, depois solicite ao


usurio um nome e verifique se este existe no vetor ou no (mostrar o nome e
a posio no vetor, caso exista, e uma mensagem indicativa, caso no exista). A
solicitao deve ser repetida at que o usurio digite a palavra fim.

15.

Faa um algoritmo que carregue um vetor com 100 nmeros inteiros, verifique
cada nmero, se este for par, multiplique por 3 e atualize o seu valor no vetor. Ao
final, mostre todos os elementos do vetor.

16.

Faa um algoritmo que carregue um vetor com 150 nmeros inteiros, gere um
segundo vetor com todos os nmeros do primeiro vetor multiplicados por 2.
Mostre ambos os vetores.

17.

Faa um algoritmo que carregue uma matriz de dimenso 5x5, calcule e mostre
a soma de todos os elementos e uma listagem com cada um dos elementos da
matriz.

18.

Faa um algoritmo que carregue duas matrizes de dimenso 6x6. Gere uma
terceira matriz com a soma das duas anteriores e mostre seus valores.

5. ESTRUTURAS DE DADOS COMPOSTAS

EXERCCIOS DE FIXAO
19.

Faa um algoritmo que carregue um vetor com 60 posies, calcule e mostre a


soma de todos os elementos das posies pares e impares do vetor.

20.

Faa um algoritmo que carregue uma matriz de dimenso 10x10, calcule e


mostre a soma de cada uma das linhas e de cada uma das colunas da matriz.

21.

Faa um algoritmo que: o usurio preencha com quaisquer valores inteiros um


vetor de trinta posies e que calcule a mdia deles. Os valores menores que
a mdia devem ser copiados em outro vetor, os quais devem ficar em ordem
crescente. Liste os dados do primeiro vetor e tantos quantos houver no segundo
vetor. Use mensagens claras para o usurio tomar conhecimento dos passos
sendo executados.

22.

Faa um algoritmo que: o usurio preencha com quaisquer valores inteiros um


vetor de trinta posies e que calcule a mdia deles. Os valores maiores que
a mdia devem ser copiados em outro vetor, os quais devem ficar em ordem
crescente. Liste os dados do primeiro vetor e tantos quantos houver no segundo
vetor. Use mensagens claras para o usurio tomar conhecimento dos passos
sendo executados. O fluxograma e o portugol devem ser entregues passados a
limpo. Consulte apenas o seu material.

23.

Faa um algoritmo que: o usurio insere em um vetor N 40 nmeros


negativos, seguido da digitao de outros 40 nmeros maiores que zero em
um P (faa o teste para permitir somente a entrada de valores vlidos). Faa
um vetor V, de tal forma que cada elemento seu seja a soma dos elementos
de P e N, de mesma i-sima posio, e caso a soma seja negativa
transforme-a em positiva. Liste V, mostre a mdia, o maior e o menor valor

5. ESTRUTURAS DE DADOS COMPOSTAS

85

EXERCCIOS DE FIXAO
deste. Apresente ao usurio a opo de pesquisar um valor qualquer em
V, informando sua localizao ou declarando que no existe tal valor no
vetor. Repetir o procedimento de consulta, at que o usurio decida encerrar
a execuo do algoritmo.

86

24.

Faa um algoritmo que leia um vetor de 20 valores numricos e ordene


esse vetor em ordem crescente. O programa tambm deve ler um nmero
K e imprimir, antes e depois da ordenao, o K-simo termo da varivel
composta.

25.

Faa um algoritmo que leia e armazene 30 valores reais positivos, determine


a sua mdia e gere um segundo vetor, no qual cada elemento calculado a
partir do elemento correspondente ao primeiro vetor, mais 30%, caso seja
menor que a mdia, seno mais 20%. Mostre os dois vetores. O clculo de
30% corresponde a multiplicar por 1,3 e 20% por 1,2.

26.

Faa um algoritmo que leia e armazene setenta valores reais positivos,


determine a sua mdia e mostre-a. Gere um segundo vetor, no qual cada
elemento calculado a partir do elemento correspondente do primeiro vetor
subtrado da mdia determinada para o primeiro vetor. Calcule o somatrio
dos valores negativos do segundo vetor e mostre-o. Mostre os dois vetores.

5. ESTRUTURAS DE DADOS COMPOSTAS

6. Modularizando algoritmos: Procedimentos e


Funces

Em sistemas de grande porte, devido complexidade dos seus algoritmos, necessria


a diviso destes em diversas partes, para que, assim, o sistema tenha uma operao precisa.
Essa diviso de tarefas denominada de subalgoritmos. Os subalgoritmos nada mais so
do que rotinas que possuem uma funo especfica.
A modularizao consiste em um mtodo para facilitar a construo de grandes
programas, atravs de sua diviso em pequenas etapas, que so: mdulos, rotinas, sub-rotinas
ou sub-programas. Isto permite o reaproveitamento de cdigo, j que podemos utilizar um
mdulo quantas vezes forem necessrias, eliminando assim a necessidade de escrever o mesmo
cdigo em situaes repetitivas.
Um exemplo clssico da utilizao de sub-programas a validao de CPF. Para um nmero
de CPF ser considerado vlido, devemos aplicar uma rotina que calcula o dgito verificador e
compara com o dgito informado. Em um sistema bancrio, este procedimento de validao
utilizado em vrios momentos diferentes dentro dos programas/algoritmos do sistema.
Neste caso, a utilizao de uma rotina de validao permite que o cdigo seja descrito
somente uma nica vez, podendo ser utilizado em vrias partes do sistema. Imaginando que
tal situao se repete por 20 vezes no sistema. Teramos que escrever 20 vezes o mesmo
trecho de cdigo? No, para isso teramos uma rotina subalgoritmo que teria esta funo.
Este subalgoritmo teria um nome e, sempre que fosse necessria a verificao do CPF,
bastaria invocar, chamar, este subalgoritmo.
De um modo geral, os subalgoritmos so importantes devido aos seguintes aspectos:

Estruturao de algoritmos, facilitando assim a deteco de erros;

6. MODULARIZANDO ALGORITMOS: PROCEDIMENTOS E FUNCES

87

Modularizao de sistemas, que justamente utilizada para a reutilizao de


rotinas subalgoritmos em vrios pontos do algoritmo principal;

Subdiviso de algoritmos extensos, facilitando assim a sua compreenso.

O esquema de um algoritmo e seus subalgoritmos pode ser observado a seguir:


Algoritmo (nome do algoritmo)
Variveis
Definio das variveis globais
<definicao dos subalgoritmos>
Incio
<estrutura do algoritmo principal>
Fim.

A maioria das linguagens de programao possibilitam criar subalgoritmos, preciso


descrev-los aps a declarao das variveis e antes do corpo do programa principal. Isso a
definio do subalgoritmos ou a sua declarao. A chamada do subalgoritmo pode ocorrer
no programa principal, ou at mesmo em outro subalgoritmo, no qual necessrio que seja
executado o cdigo correspondente ao subalgoritmo em questo. Os subalgoritmos podem
ser de dois tipos:

funes;

procedimentos.

6.1. Procedimentos
Um procedimento, tambm conhecido como sub-rotina, composto por um conjunto
de instrues que realiza uma determinada tarefa especfica. Procedimento no retorna
nenhum valor. Sua declarao, que deve estar entre o final da declarao de variveis e a
linha inicial do programa principal, segue a sintaxe abaixo:

88

6. MODULARIZANDO ALGORITMOS: PROCEDIMENTOS E FUNCES

Procedimento <nome-de-procedimento> [(<sequencia-de-declaracoes-deparametros>)]// Seo de Declaraes Internas


inicio
// Seo de Comandos
fimprocedimento

Os parmetros so variveis para se estabelecer uma troca de informaes entre o


programa principal e o procedimento. Nem sempre necessrio que exista o uso de parmetros.
Exemplo - Procedimento para realizar a soma de dois valores, sem a passagem de parmetros.

Exemplo - Procedimento para realizar a soma de dois valores, com passagem de parmetros.

6. MODULARIZANDO ALGORITMOS: PROCEDIMENTOS E FUNCES

89

6.2. Funes
Uma funo um subprograma que retorna um valor, assim, as funes devem sempre
utilizar um comando que permita este retorno de valores. No nosso caso, usaremos a clusula
retorne. De modo anlogo aos procedimentos, sua declarao deve estar entre o final da
declarao de variveis e a linha incio do programa principal. Segue a sintaxe abaixo:
Funo <nome-de-funcao> [(<sequencia-de-declaracoes-de-parametros>)]:
<tipo-de-dado>
// Seo de Declaraes Internas
inicio
// Seo de Comandos
retorne
fimfuncao

Exemplo - Funo para realizar a soma de dois valores, com passagem de parmetros.

90

6. MODULARIZANDO ALGORITMOS: PROCEDIMENTOS E FUNCES

EXERCCIOS DE FIXAO
1.

Escreva um algoritmo que leia um nmero qualquer e diga se ele positivo ou


negativo juntamente com a resposta se ele par ou impar, utilize um procedimento
para cada uma das verificaes.

2.

Escreva um algoritmo que leia o percentual de faltas e as duas notas de aluno,


calcule a mdia e mostre a mensagem aprovado, se o aluno obtiver mdia maior
ou igual a 6 com menos de 20% de faltas. Para calcular a mdia, utilize uma
funo.

3.

Construa um programa que leia um nmero inteiro e verifique se este nmero


positivo, ou negativo, ou igual a zero. Utilize procedimentos para mostrar o
resultado.

4.

Escreva um algoritmo que leia dois nmeros e a operao aritmtica para ser
efetuada com estes nmeros, sendo: a adio; s subtrao; m multiplicao;
d diviso; e p potenciao. Utilizando funes para efetuar a operao
indicada, mostre o resultado da operao indicada.

6. MODULARIZANDO ALGORITMOS: PROCEDIMENTOS E FUNCES

91

REFERNCIAS BIBLIOGRFICAS
BENEDUZZI, H. M.; METZ, J. A. Lgica e linguagem de programao: introduo
ao desenvolvimento de software. Editora do Livro Tcnico Curitiba, PR, 2010.
FORBELLONEE A.; EBERSPACHER H. Lgica de programao, Ed. Pearson, So
Paulo, SP, 2005.
MANZANO, J. A. N. G. & OLIVEIRA, J. F. Algoritmos. Lgica para
Desenvolvimento de Programao de Computadores. Ed. rica. So Paulo, SP,
2011.
PUGA, S.; RISSETTI, G. Lgica de programao e estrutura de dados, com
aplicaes em Java. Pearson. So Paulo, 2011.
SALVETTI, D. D. & BARBOSA, L. M. Algoritmos. Makron Books. So Paulo, SP,
2004.

REFERNCIAS BIBLIOGRFICAS

93

Esta obra foi composta por Ernesto Henrique Radis Steinmetz e Roberto Duarte Fontes.
Fonte Famlia Frutiger LT std, corpo 11, Famlia Caecilia LT std e impressa pela grfica
AGBR em papel couche fosco 115g.