Você está na página 1de 95

ERNESTO HENRIQUE Este trabalho apresenta

RADIS STEINMETZ a viso dos autores


doutorando em Cincia acerca de algoritmos e
da informao pela da lgica de
Universidade de Braslia programao. A
(UnB), mestre em Gesto proposta principal desta
do Conhecimento e da cartilha surgiu da troca
Tecnologia da de experincia de
Informao pela docentes da rea de
Universidade Catlica de Computao no ensino
Braslia (UCB). destes assuntos, para
Atualmente alunos iniciantes de
Coordenador Geral do informtica.
Plo EaD e docente da
rea de Informao e Buscou-se utilizar uma
Comunicao do IFB - linguagem simples e
Campus Braslia. direta para atender
alunos dos cursos
ROBERTO DUARTE tcnicos dos Institutos
FONTES mestre em Federais que constituem
Computao pela a Rede Federal de
Universidade Federal do Educao Profissional,
Rio e bacharel em Cientfica e Tecnolgica,
Cincia da Computao vinculada Secretaria
e Grande do Sul de Educao Profissional
(UFRGS). Atualmente se
dedica rea acadmica,
CARTILHA LGICA e Tecnolgica (SETEC) do
Ministrio da Educao
na Coordenao de (MEC).
Pesquisa e Extenso e na
Coordenao Adjunta
DE PROGRAMAO
PRONATEC do IFB
Campus Taguatinga.
ERNESTO HENRIQUE RADIS STEINMETZ
ROBERTO DUARTE FONTES

CARTILHA LGICA DE
PROGRAMAO

Ministrio da
Educao
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 Carlos Cristiano Oliveira de Faria Almeida Luciana Miyoko Massukado
Cristiane Herres Terraza Luciano Pereira da Silva
Daniela Fantoni Alvares Luiz Diogo de Vasconcelos Junior
Edilsa Rosa da Silva Marco Antnio Vezzani
Elisa Raquel Gomes de Sousa Moema Carvalho Lima
Francisco Nunes dos Reis Jnior Paulo Henrique de Azevedo Leo
Gabriel Andrade Lima de Almeida Castelo Branco Philippe Tshimanga Kabutakapua
Gabriel Henrique Horta de Oliveira Reinaldo de Jesus da Costa Farias
Gustavo Ablio Galeno Arnt Renato Simes Moreira
Jos Gonalo dos Santos Sheila Soares Daniel dos Santos
Josu de Sousa Mendes Tatiana de Macedo Soares Rotolo
Julie Kellen de Campos Borges Vanessa Assis Araujo
Juliana Rocha de Faria Silva (presidente) Veruska Ribeiro Machado
Ktia Guimares Sousa Palomo Vinicius Machado dos Santos

Coordenao de Publicaes Juliana Rocha de Faria Silva

Produo executiva Sandra Maria Branchine

Grfica Diviso AGPRESS-AGBR Grupo AGBR

Tiragem 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.) deve-
se 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
Aprender algoritmos Aprender a andar de bicicleta
estudante

- Precisam de ajuda do pai ou de um


- Precisam de auxlio de professores e
irmo mais velho que j saiba andar de
material especfico sobre o tema.
iniciantes bicicleta.
- Cometem vrios erros bsicos, tpicos dos
-Sofrem vrias quedas, mas devem
iniciantes, mas devem continuar tentando.
levantar e tentar novamente.

- Conseguem desenvolver algoritmos de


- Conseguem andar sozinhos, mas
baixa e mdia complexidade sozinhos.
eventualmente sofrem algumas quedas.
intermedirios - Ainda cometem alguns erros,
- Quando se deparam com situaes
principalmente em algoritmos mais
perigosas podem sofrer quedas.
complexos.

- Conseguem desenvolver e entender


algoritmos de complexidades variadas. - Conseguem executar manobras
avanados radicais ou andar em diversos terrenos.
- Tornam-se instrutores de algoritmos
identificando erros dos iniciantes em - Tornam-se instrutores para iniciantes.
questo de segundos.

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.

Algoritmos no se aprendem Algoritmos se aprendem

Copiando algoritmos Construindo algoritmos

Estudando algoritmos prontos Testando algoritmos

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

A B 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:

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


1
resolver todos juntos.

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


2
o problema, registrando a soluo encontrada.

16 1. DEFINIES DE ALGORITMO
Terminada a fase de estudo, utilizar uma linguagem de programao para
3
escrever o programa que dever, a princpio, resolver o problema.

4 Analisar junto aos usurios se o problema foi resolvido.

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


5
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:

fim
incio

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
Dados numricos positivos ou negativos, excluindo-se qualquer nmero fracionrio.
a) Tipo inteiro
Exemplo: 35, 0, -56

Dados numricos positivos, negativos e nmeros fracionrios.


b) Tipo real
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
c) Tipo caractere conhecido como: alfanumrico, string, literal ou cadeia.
Exemplo: PROGRAMAO, Rua Alfa, 52 apto 1, 7, 249-4455

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


d) Tipo lgico
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.

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.

28 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-de-
dado>

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.

Operador de mdulo (isto , resto da diviso inteira). Por exemplo, 8 MOD 3 = 2. Tem a
MOD ou %
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.

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


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

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

Operador que resulta VERDADEIRO somente se seus dois operandos lgicos forem
e
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 B A.E.B A . OU . B
VERDADEIRO/ VERDADEIRO/ VERDADEIRO/ VERDADEIRO/
TRUE/.T./.V./1 TRUE/.T./.V./1 TRUE/.T./.V./1 TRUE/.T./.V./1
VERDADEIRO/ FALSO/ FALSO/ VERDADEIRO/
TRUE/.T./.V./1 FALSE/.F./0 FALSE/.F./0 TRUE/.T./.V./1
FALSO/ VERDADEIRO/ FALSO/ VERDADEIRO/
FALSE/.F./0 TRUE/.T./.V./1 FALSE/.F./0 TRUE/.T./.V./1
FALSO/ FALSO/ FALSO/ FALSO/
FALSE/.F./0 FALSE/.F./0 FALSE/.F./0 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 B AeB
1 1 1
1 0 0
0 1 0
0 0 0

Tabela 1.8 Tabela verdade do operador .OU.


A B A ou B
1 1 1
1 0 1
0 1 1
0 0 0

36 1. DEFINIES DE ALGORITMO
Tabela 1.9 Tabela verdade do operador .NAO.
A nao(A)
1 0
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 Y Z W Q
V 2 4 1,50 PROVA

a. (2 * (5 MOD 3) + Y + W * 2) > Z ou
(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 ( )

40 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 R3 6.0
I2 7 L1 Ol
I3 6 L2 A1
R1 5.5 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
Obs.: C  ( F 32 )
9

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.

45
2. COMANDOS DE ENTRADA E SADA
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:

47
3. TOMADA DE DECISES
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 <expressao-


logica> 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 Instrues
executadas executadas
quando a quando a condio
condio falsa verdadeira

Figura 3.2 Fluxograma do desvio condicional composto.

49
3. TOMADA DE DECISES
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
Condio 2 a condio 1
verdadeira

Instrues Instrues executadas


executadas quando quando condio 1
condio 1 e falsa, mas a condies
condies 2 so falsa 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

51
3. TOMADA DE DECISES
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:

Instrues
Condio 1
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.

53
3. TOMADA DE DECISES
EXERCCIOS DE FIXAO

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.

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

55
3. TOMADA DE DECISES
EXERCCIOS DE FIXAO

22. 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 Aluno Aprovado
Mdia = 7,0 Aluno em Recuperao
Mdia < 7,0 Aluno Reprovado

23. 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 10%
M 20%
P 30%

24. 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 3,00% 2,00%
De 500,01 at 950,00 5,00% 4,00%
Acima de 950,00 7,00% 6,00%

56 3. TOMADA DE DECISES
EXERCCIOS DE FIXAO

25. 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 0,00%
Acima 100,00 at 350,00 5,00%
Acima 350,00 10,00%

26. 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 15,00%
De 500,01 at 1.000,00 10,00%
Acima de 1.000,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)

57
3. TOMADA DE DECISES
EXERCCIOS DE FIXAO

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


se 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 5%
Abaixo de R$ 300,00 10%
R$ 300,00 6%

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

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


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

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


<valor-inicial>
da primeira repetio do lao.

uma expresso que especifica o valor mximo que a varivel contadora pode
<valor-limite>
alcanar.

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

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,
fimpara
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.

60 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 <valor-inicial> atribudo


<variavel>;

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.
61
4. ESTRUTURAS DE REPETIO
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.

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


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

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
menquanto
o resultado desta avaliao for VERDADEIRO, a <sequencia-de-
comandos> ser executada mais uma vez; caso contrrio, a execuo
prosseguir a partir do primeiro comando aps fimenquanto.

63
4. ESTRUTURAS DE REPETIO
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.

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


repetidos. Cada vez que o programa chega neste
ponto, a <expressao-logica> avaliada: se seu
at <expressao-logica> 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.

65
4. ESTRUTURAS DE REPETIO
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.

67
4. ESTRUTURAS DE REPETIO
EXERCCIOS DE FIXAO

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.

68 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

69
4. ESTRUTURAS DE REPETIO
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.

71
4. ESTRUTURAS DE REPETIO
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]

75
5. ESTRUTURAS DE DADOS COMPOSTAS
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.

1 175 225 10 9000 3,7 4,75


2 9,8 100 363 432 156 18
3 40 301 30,2 6381 1 0
4 402 4211 7213 992 442 7321

76 5. ESTRUTURAS DE DADOS COMPOSTAS


5 21 3 2 1 9000 2000
1 2 3 4 5 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:

77
5. ESTRUTURAS DE DADOS COMPOSTAS
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:

79
5. ESTRUTURAS DE DADOS COMPOSTAS
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.

81
5. ESTRUTURAS DE DADOS COMPOSTAS
EXERCCIOS DE FIXAO

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.

82 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 B

7 8 4 9 6 9 11 15
2 1 7 3 32 19 3 4

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

83
5. ESTRUTURAS DE DADOS COMPOSTAS
EXERCCIOS DE FIXAO

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.

84 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

85
5. ESTRUTURAS DE DADOS COMPOSTAS
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.

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.

86 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-de-
parametros>)]// 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.

89
6. MODULARIZANDO ALGORITMOS: PROCEDIMENTOS E FUNCES
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.

91
6. MODULARIZANDO ALGORITMOS: PROCEDIMENTOS E FUNCES
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.

93
REFERNCIAS BIBLIOGRFICAS
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.

Você também pode gostar