Anda di halaman 1dari 90

ALGORITMOS

APOSTILA por Luclia Ribeiro

Qualquer tempo tempo. A hora


mesma da morte hora de
nascer.
Nenhum tempo tempo
bastante para a cincia de ver,
rever.
Tempo, contratempo anulam-se,
mas o sonho resta, de viver.
(Mario Quintana, Qualquer)

Verso 4 - Fev/16

ndice
"Quantas vezes a gente, em busca da ventura,
Procede tal e qual o avozinho infeliz:
Em vo, por toda parte, os culos procura,
Tendo-os na ponta do nariz! (Mrio Quintana)
NDICE ........................................................................................................................................ 2
VISO GERAL ............................................................................................................................. 5
1.1
DADOS E INFORMAES ............................................................................................. 5
1.2
CONVERSO DE DADOS EM INFORMAES ................................................................ 5
1.3
DIVISO DE TAREFAS SERES HUMANOS X SISTEMAS DE COMPUTAO .................................. 5
1.4
INFORMTICA ............................................................................................................. 6
1.5
TIPOS DE DADOS .......................................................................................................... 6
1.6
O QUE UM COMPUTADOR? ........................................................................................ 6
1.6.1 UNIDADE CENTRAL DE PROCESSAMENTO ..................................................................... 9
1.6.2 MEMRIA ..................................................................................................................... 9
1.6.3 DISPOSITIVOS DE ENTRADA .......................................................................................... 9
1.6.4 DISPOSITIVOS DE SADA ................................................................................................ 9
1.7
CICLO DE PROCESSAMENTO ........................................................................................ 9
1.7.1 ENTRADA / SADA DE DADOS ......................................................................................... 9
1.7.2 PROGRAMA ................................................................................................................. 10
1.7.3 PROCESSAMENTO ....................................................................................................... 10
1.8
REPRESENTAO DA INFORMAO ......................................................................... 10
1.9
BYTES ........................................................................................................................ 11
1.10 EXERCCIOS ................................................................................................................. 11
NOES DE LGICA ................................................................................................................ 13
2.1
LGICA ...................................................................................................................... 13
2.2
LGICA DE PROGRAMAO ...................................................................................... 13
2.3
ALGORITMO............................................................................................................... 14
2.4
PROGRAMAO......................................................................................................... 14
2.5
IMPORTNCIA DE UM ALGORITMO ........................................................................... 14
2.5.1 LINGUAGEM NATURAL .............................................................................................. 14
2.5.2 FLUXOGRAMA ........................................................................................................... 15
2.5.3 LINGUAGEM ESTRUTURADA ...................................................................................... 15
2.6
EXEMPLOS ................................................................................................................. 15
2.7
EXERCCIOS ............................................................................................................... 17
ITENS FUNDAMENTAIS ............................................................................................................ 19
3.1
INTRODUO ............................................................................................................ 19
3.2
TIPOS DE DADOS ........................................................................................................ 19
3.2.1 INTEIRO .................................................................................................................... 19
3.2.2 REAL ......................................................................................................................... 19
3.2.3 CARACTER................................................................................................................. 19
3.2.4 LGICO..................................................................................................................... 20
3.3
FORMAO DE IDENTIFICADORES ............................................................................ 20
3.4
CONSTANTES ............................................................................................................. 20
3.5
VARIVEIS................................................................................................................. 20
3.6
COMENTRIOS .......................................................................................................... 21
3.7
EXERCCIOS ............................................................................................................... 21
EXPRESSES E OPERADORES ................................................................................................. 23
4.1
4.2
4.3
4.4

INTRODUO ............................................................................................................ 23
EXPRESSES ARITMTICAS ....................................................................................... 23
EXPRESSES LGICAS ............................................................................................... 24
EXERCCIOS ............................................................................................................... 25

Algoritmos e Linguagens Lucilia Ribeiro

ESTRUTURA SEQUENCIAL ....................................................................................................... 27


5.1
COMANDO DE ATRIBUIO ....................................................................................... 27
5.2
COMANDOS DE ENTRADA E SAIDA............................................................................ 27
5.2.1 COMANDO DE ENTRADA ............................................................................................ 27
5.2.2 COMANDO DE SADA ................................................................................................. 27
5.3
ESTRUTURA SEQUENCIAL ......................................................................................... 28
5.4
TESTE DE MESA ......................................................................................................... 28
5.5
EXERCCIOS ............................................................................................................... 29
ESTRUTURAS CONDICIONAIS.................................................................................................. 31
6.1
ESTRUTURA CONDICIONAL SIMPLES ........................................................................ 31
6.2
ESTRUTURA CONDICIONAL COMPOSTA .................................................................... 32
6.3
ESTRUTURA CONDICIONAL ENCADEADA ................................................................. 33
6.3.1 SELEO ENCADEADA HETEROGNEA ...................................................................... 33
6.3.2 SELEO ENCADEADA HOMOGNEA ......................................................................... 33
6.5
EXERCCIOS ............................................................................................................... 35
SELEO DE MLTIPLA ESCOLHA ......................................................................................... 39
7.1
7.2

SELEO DE MLTIPLA ESCOLHA ............................................................................ 39


EXERCCIOS ............................................................................................................... 41

ESTRUTURAS DE REPETIO .................................................................................................. 42


8.1
8.2
8.3
8.4
8.5

ESTRUTURAS DE REPETIO..................................................................................... 42
ESTRUTURA DE REPETIO COM VARIVEL DE CONTROLE .................................... 42
ESTRUTURA DE REPETIO COM TESTE NO INCIO .................................................. 43
ESTRUTURA DE REPETIO COM TESTE NO FINAL ................................................... 43
EXERCCIOS ............................................................................................................... 44

VETORES E MATRIZES............................................................................................................. 45
9.1
ESTRUTURA DE DADOS ............................................................................................. 45
9.2
VARIVEIS COMPOSTAS HOMOGNEAS.................................................................... 45
9.3
VETORES - VARIVEIS COMPOSTAS UNIDIMENSIONAIS .......................................................... 45
9.3.1 MANIPULAO DE VETORES ...................................................................................... 45
9.4
MATRIZES - VARIVEIS COMPOSTAS MULTIDIMENSIONAIS ..................................................... 47
9.4.1 DECLARAO DE MATRIZES ...................................................................................... 47
9.4.2 MANIPULAO DE MATRIZES .................................................................................... 48
9.4.3 PERCORRENDO UMA MATRIZ BIDIMENSIONAL ........................................................... 48
9.5
EXERCCIOS ............................................................................................................... 49
REGISTROS ............................................................................................................................... 51
10.1 ESTRUTURA DE DADOS ................................................................................................ 51
10.2 REGISTROS ................................................................................................................... 51
10.2.1 DECLARAO DE UM REGISTRO ................................................................................ 51
10.2.2. MANIPULAO DE UM REGISTRO ............................................................................. 51
10.2.3. REGISTRO DE CONJUNTOS........................................................................................ 51
10.2.4. MANIPULAO DE REGISTRO DE CONJUNTOS .......................................................... 52
10.2.5. CONJUNTO DE REGISTROS........................................................................................ 52
10.2.6 MANIPULAO DE CONJUNTO DE REGISTROS ........................................................... 53
10.3 EXERCCIOS ................................................................................................................. 54
MODULARIZAO ................................................................................................................... 55
11.1 DECOMPOSIO ........................................................................................................... 55
11.2 MDULOS..................................................................................................................... 55
11.3 SUB-ROTINA ................................................................................................................. 58
11.3.1 PASSAGEM DE PARMETROS POR VALOR ................................................................... 59
11.3.2 PASSAGEM DE PARMETROS POR REFERNCIA ......................................................... 60
11.4 FUNO ....................................................................................................................... 60
11.5 EXERCCIOS ................................................................................................................. 63
LISTAS DE EXERCCIOS............................................................................................................ 64
LISTA 1: LGICA ..................................................................................................................... 65
LISTA 2: ESTRUTURA SEQENCIAL ................................................................................................ 66
Algoritmos e Linguagens Lucilia Ribeiro

LISTA 3: ESTRUTURA CONDICIONAL............................................................................................... 68


LISTA 4: SELEO DE MLTIPLA ESCOLHA ...................................................................................... 71
LISTA 5: REVISO .................................................................................................................... 72
LISTA 6: ESTRUTURAS DE REPETIO ............................................................................................. 75
LISTA 7: VETORES E MATRIZES..................................................................................................... 77
LISTA 8: REGISTROS ................................................................................................................. 82
LISTA 9: MODULARIZAO ......................................................................................................... 83
BIBLIOGRAFIA ......................................................................................................................... 85

Algoritmos e Linguagens Lucilia Ribeiro

01 Viso Geral

Viso Geral
As coisas so sempre melhores no comeo
(Blaise Pascal)

1.1

DADOS E INFORMAES

Dados so conjuntos de fatos distintos e objetivos, relativos a eventos. Os dados,


por si s, tem pouca relevncia ou propsito. Por exemplo, se for dito que a temperatura
ambiente de 32C, provavelmente todos compreendero, mas se for dito que a temperatura de 82F, a compreenso depender do conhecimento do ouvinte sobre essa unidade de medida. O dado 32C rapidamente convertido em sensao trmica, portanto
ele tem algum significado ou importncia. Nesse caso, pode-se dizer que ele uma informao. Informaes so dados com algum significado ou relevncia.
Se o ouvinte no tem nenhum conhecimento sobre a unidade de medida F, ela no
fornece a exata sensao de frio ou calor.
A informao a compreenso dos dados, a matria-prima para o processamento
mental. Sem dados e um mecanismo (processo) de compreenso desses dados existe o
processamento mental e, se no houver esse processamento mental, os dados no se
transformam em informaes, continuam sendo apenas dados.
DADO x INFORMAO
DADO
INFORMAO
Data de Nascimento: 16/07/61
Idade: 41 anos
Soma de Preo Unitrio x Quantidade
Valor Total da Fatura: R$ 2500,00
Medio x Mtrica de Temperatura = 38 C
Quente
Medio x Mtrica de Distncia = 100 Km
Longe

1.2

CONVERSO DE DADOS EM INFORMAES

Os sistemas de computao trabalham somente com dados. Eles permitem a coleta,


processamento, armazenamento e distribuio de enormes quantidades de dados. A converso de dados em informaes uma tarefa do ser humano, mas os sistemas de computao podem auxiliar alguns processos que ajudam nessa converso:
Contextualizao
Categorizao
Clculo
Condensao

1.3

Relacionar os dados coletados com outros existentes


Separar os dados em categorias
Analisar matemtica ou estatisticamente os dados
Resumir os dados para uma forma concisa

DIVISO DE TAREFAS Seres Humanos x Sistemas de Computao

Quando o ser humano trabalha com informaes, existem determinadas tarefas que
podem ser realizadas:
Pensar / Criar
Tomar Decises
Realizar Aes Fsicas
Comunicar-se
Processar Dados

Absorver e combinar conhecimentos e informaes de modo no programado para


criar novas informaes e conhecimentos. o processo criativo propriamente dito.
Usar informaes para definir, avaliar e selecionar entre possveis aes a serem tomadas.
Qualquer combinao de movimentos fsicos, com algum propsito.
Apresentar conhecimentos e informaes para outras pessoas, de modo que elas
entendam. Da, a diferena entre comunicar e transmitir.
Capturar, transmitir, armazenar, recuperar, manipular ou apresentar dados.

Os equipamentos so criados para facilitar e agilizar as tarefas realizadas pelos seres


humanos Isso inclui os sistemas de computao, que tm como uma de suas finalidades
at substituir o ser humano em uma ou mais tarefas ligadas informao. Das tarefas
Algoritmos e Linguagens Lucilia Ribeiro

01 Viso Geral

apresentadas, a mais adequada para os sistemas de computao realizarem o Processamento de Dados. As outras apresentam caractersticas humanas difceis de
seremimitadas.
Dentro do processamento de dados, algumas tarefas so bsicas:
Capturar
Manipular

Buscar os dados onde eles existem e traz-los


Tratas os dados de forma que possam ser organizados e ganhar sentido (transformando-se em informao)
Guardar os dados de maneira organizada
Buscar os dados que foram armazenados de forma organizada
Mostrar os dados de forma compreensvel
Enviar e receber dados de outros locais

Armazenar
Recuperar
Apresentar
Transmitir

A Tecnologia da Informao formada por dispositivos que processam dados de forma precisa e rpida, facilitando alguma tarefa para o ser humano. O equipamento mais
importante dessa tecnologia o computador, e a informtica estuda essa tecnologia.
1.4

INFORMTICA

Informtica o estudo de tudo o que se relaciona tecnologia da informao. uma


unio de trechos de duas outras palavras e foi criada pelos franceses.
INFORMTICA = INFORmao + AutoMTICA
Outra definio possvel para informtica : O estudo do tratamento da informao,
utilizando-se, como ferramenta bsica, recursos dos sistemas de computao.
Este conceito amplia bastante a idia inicial. Primeiro, porque a informtica tratada
como um estudo, por isso, dotada de conceitos prprios e distintos. Como estudo, seu
objetivo o tratamento da informao, usando como ferramenta os recursos de sistemas
de computao, ou seja, o computador e outros recursos ligados a ele.
1.5

TIPOS DE DADOS

Os sistemas de computao, atualmente, manipulam vrios tipos diferentes de dados:


Nmeros
Textos
Imagens
Sons

1.6

Podem ser organizados, alterados, calculados e armazenados.


Podem ser escritos, corrigidos, alterados na forma e cor, armazenados e impressos.
Podem ser estticas (em duas ou trs dimenses) ou em movimento (animaes e vdeos). Podem ser criadas, alteradas, armazenadas e reproduzidas.
Podem ser gerados eletronicamente (sintetizados) ou gravados diretamente da realidade. Podem
ser alterados, armazenados e reproduzidos.

O QUE UM COMPUTADOR?

Para facilitar a compreenso do funcionamento e dos componentes de um computador, apresentada, a seguir, uma analogia entre o funcionamento de um computador e o
local de trabalho de um operador, formado basicamente pelos utenslios comuns de um
escritrio (obviamente, sem um computador). Layout e funcionamento desse local de
trabalho:

Algoritmos e Linguagens Lucilia Ribeiro

01 Viso Geral

Regras para realizar as tarefas:

1) No arquivo de ao (1), esto armazenadas as instrues para realizao de cada


tarefa. Essas instrues apresentam uma seqncia de passos a serem seguidos.
2) Quando o operador (2) receber as instrues, ele deve copiar cada uma delas no
quadro-negro (3), que possui 16 reas para isso (A1 -A16). Cada instruo deve ser escrita em uma das reas livres do quadro-negro, sempre iniciando pela rea A1.
3) Aps copiar as instrues, o operador deve comear a realizar cada uma delas,
respeitando a seqncia. Caso alguma indique ao operador para escrever em uma rea j
ocupada do quadro, ele deve apagar o contedo anterior e escrever o novo contedo.
4) Os dados que sero usados para realizar as tarefas encontram-se escritos em fichas empilhadas ao lado do operador, no escaninho (4). As fichas devero ser usadas na
seqncia em que se encontram e, ao ser usada, a ficha deve ser descartada.
5) O operador possui uma calculadora (5) para realizar todos os clculos matemticos
necessrios para a realizao da sua tarefa (dependendo das instrues).
6) Para apresentar os resultados da tarefa realizada, o operador possui uma mquina
de escrever (6), utilizada para escrever os resultados.
Suponha-se que o operador receba a seguinte seqncia de instrues que estavam
armazenadas no arquivo de ao:
1) Pegue uma ficha e copie o seu valor no quadro - rea A16
2) Pegue uma ficha e copie o seu valor no quadro - rea A15
3) Some o contedo de A15 com o de A16 e coloque o resultado em A16
4) Se no houver mais fichas, avance para a rea A6; caso contrrio, avance para a
rea A5
5) Volte para a rea A2
6) Datilografe o contedo de A16
7) Pare
O operador copiava as instrues, uma a uma, nas primeiras reas do quadro-negro.
O quadro ficava com a seguinte aparncia:
A1
Pegue uma ficha e copie
o seu valor no quadro,
rea A16

A2
Pegue uma ficha e copie
o seu valor no quadro,
rea A15

A3
Some o contedo de A15
com o de A16 e coloque
o resultado em A16

A5
Volte para a rea A2

A6
Datilografe o contedo de
A16
A10

A7
Pare

A9

A11

A4
Se no houver mais fichas, avance para a rea
A6; caso contrrio, avance para a rea A5
A8
A12

Terminada a cpia das instrues, o operador comea a realizar cada uma delas, na
seqncia em que foram apresentadas. Como exemplo, supe-se que existam, no escaninho, quatro fichas com os seguintes valores: 7, 1, 4 e 2. Veja o que acontece no quadro e nas reas afetadas:
Pegue uma ficha e copie o
seu valor na rea A16

Incio
A15

Some o contedo de A15


com o de A16 e coloque o
resultado em A16
A15

A16
1

Pegue uma ficha e copie


seu valor na rea A15
A15

A16
4

A16

A15

A16

Algoritmos e Linguagens Lucilia Ribeiro

Pegue uma ficha e copie


seu valor na rea A15
A15
A16
1
7
Volte para a rea A2

Se no houver mais fichas, avance para a rea


A6; caso contrrio, avance para a rea A5
A15
A16
1
8
Some o contedo de A15
com o de A16 e coloque o
resultado em A16
A15

A16
4

A15

A16
1

Se no houver mais fichas, avance para a rea


A6; caso contrrio, avance para a rea A5
A15
A16
4
12

12
7

01 Viso Geral

Volte para a rea A2

Pegue uma ficha e copie


seu valor na rea A15

A15

A15

A16

12

Se no
houver mais
fichas, avance
para a
rea A6; caso contrrio,
avance para a rea A5
A15
A16
2
14

A16

12

Some o contedo de A15


com o de A16 e coloque
o resultado em A16
A15
A16
2
14

Datilografe o contedo de
A16

Pare

A15

A15

A16

14

A16

14

A palavra computador vem da palavra latina computare, que significa calcular. Pode
at parecer estranho, mas essa idia no est de toda errada, mesmo assim, muito pouco
para se ter uma idia do que seja um computador, ento, eis mais uma definio:
Computador uma mquina que recebe e trabalha os dados de maneira a obter
umresultado. Para realizar isso, ele programvel, ou seja, responde a um grupo de comandos especficos (instrues) de uma maneira bem definida e pode executar uma lista
pr-gravada desses comandos. Essa lista chamada de programa.
A partir dessa definio, podem ser retiradas algumas concluses importantes:
O computador uma mquina.
Realiza um trabalho com os dados para obter resultados.
O trabalho realizado pelo computador chama-se Processamento.
O computador programvel. Pode realizar somente tarefas bem definidas, e
cada uma delas corresponde a uma nica instruo, que sempre realizada da
mesma maneira. Alm disso, ele pode responder a uma lista de instrues prgravadas, realizando uma instruo aps a outra.
Essa lista de instrues pr-gravadas chamada de Programa. Existem computadores que apresentam programas fixos e invariveis o computador realiza sempre as mesmas tarefas - que j acompanham o computador. Tambm
existem computadores cujos programas instalados so diferentes, portanto
realizam tarefas diferentes de acordo com os programas.
Outra definio para computador: " um sistema integrado, composto de hardware e
de software."
Concluindo:
O computador um sistema formado por determinados componentes que, atuando em conjunto, permitem que ele realize as tarefas que foram determinadas. Esse
sistema composto, basicamente, de dois elementos, Hardware e Software.
Hardware a parte fsica do computador, ou seja, o prprio computador e todos os dispositivos ligados a ele (perifricos). O hardware composto por "dispositivos
eletrnicos que fornecem capacidade de computao, dispositivos de interconectividade
(por exemplo, switches de rede, dispositivos de telecomunicao) que permitem o fluxo
dos dados e dispositivos eletromecnicos (por exemplo, sensores, motores, bombas) que
fornecem funes do mundo exterior". Normalmente, o hardware de um sistema de
computao apresenta a seguinte estrutura geral:

Algoritmos e Linguagens Lucilia Ribeiro

01 Viso Geral

1.6.1 UNIDADE CENTRAL DE PROCESSAMENTO


A Unidade Central de Processamento UCP (CPU .Central Processing Unit), o crebro
do computador, o componente de hardware que realmente executa as instrues apresentadas pelo programa. A Unidade Central de Processamento possui dois componentes
principais:
- Unidade de Controle (UC): responsvel pelo controle do fluxo dos dados entre
aspartes do computador e por sua interpretao (se so dados ou instrues). Na simulao de computador, o operador.
- Unidade Lgica e Aritmtica (ULA): responsvel pelos clculos e pela manipulao dos dados. Na simulao de computador, a calculadora.
1.6.2 MEMRIA
Possibilita ao computador armazenar dados e instrues durante o processamento.
Podem existir dois tipos de memria em um computador:
- Memria de "Acesso Direto" ou Memria Principal, tambm conhecida por RAM
(Memria de Acesso Randmico): o armazenamento dos dados e programas temporrio. Na simulao de computador, o quadro-negro.
- Dispositivos de Armazenamento Secundrios: dispositivos que permitem ao computador armazenar permanentemente grandes quantidades de dados ou programas. Na
simulao de computador, o arquivo de ao.
1.6.3 DISPOSITIVOS DE ENTRADA
Dispositivos atravs dos quais os dados e instrues entram no sistema de computao para o processamento. Traduz essas entradas para um cdigo que a Unidade Central
de Processamento entende. Na simulao de computador, o escaninho com as fichas.
1.6.4 DISPOSITIVOS DE SADA
Dispositivos que permitem a visualizao dos resultados do processamento dos da-dos.
Na simulao de computador, a mquina de escrever.
-Software o conjunto de instrues (programas de computador) que, quando
executadas, produzem o desempenho desejado e dados que permitem que os programas
manipulem adequadamente a informao. a parte lgica do computador, aquela com a
qual no existe contato fsico. Na simulao de computador, so as instrues realizadas
pelo operador e o contedo das fichas utilizadas por ele.
Observando a simulao de computador, apresentada anteriormente, percebe-se que
as operaes de um computador dependem da lgica das instrues que ele realiza. Essas instrues so criadas pelo homem e alimentadas no computador, que apenas as
executa, de acordo com os seus componentes internos.
1.7

CICLO DE PROCESSAMENTO

O computador, de maneira simplificada, realiza uma determinada seqncia ("ciclo")


para processar os dados. chamado de Ciclo de Processamento, e representado graficamente da seguinte maneira:
ENTRADA

PROCESSAMENTO

SADA

PROGRAMA

1.7.1 ENTRADA / SADA DE DADOS


O computador l os dados a serem processados (a partir de perifricos de entrada) e
os coloca na memria principal. Aps o processamento, o computador envia uma cpia dos
resultados, a partir da memria principal, para os perifricos de sada. Essa sada pode ser
composta por dados de entrada modificados ou por novos dados gerados pelo
processamento.

Algoritmos e Linguagens Lucilia Ribeiro

01 Viso Geral

1.7.2 PROGRAMA
Lista de instrues que o computador deve seguir, ou seja, a seqncia das operaes necessrias para que os dados sejam processados. Normalmente esse programa est
gravado num dispositivo de armazenamento secundrio e copiado para a memria
principal do computador durante o processamento.
1.7.3 PROCESSAMENTO
o trabalho realizado pela CPU do computador. O que ela faz depende do programa,
mas quem processa os dados o hardware do computador. Para que o processamento
acontea, os dados devem estar na memria principal.
1.8

REPRESENTAO DA INFORMAO

A informao e os dados necessitam de meios para que sejam exibidos. Normalmente


so utilizados modelos que imitam a realidade.
O sistema de computao funciona, basicamente, da mesma maneira, pois imita a
informao real criando um modelo eletrnico para trabalhar. Esse modelo numrico e
aritmtico. Alguns pontos em comum entre os equipamentos de computao e a matemtica permitem essa imitao da realidade. Esses pontos em comum so a Numerao
e a Aritmtica Binria.
Os sistemas de computao trabalham com o sistema de numerao binrio. Cada
smbolo 0 ou 1 da numerao binria chamado de dgito binrio. Em ingls, BinaryDigit,
que resulta: Blnary digiT = BIT
Como esse bit usado para modelar (representar a informao), pode-se definir que
"Bit a menor unidade da informao".
Os bits servem muito bem para a representao de nmeros, mas o sistema de computao no trabalha apenas com informaes numricas, ento, como representar le-tras
e smbolos?
Para entender como o sistema faz isso, imagine a existncia de duas lmpadas e a
necessidade de criar uma maneira (um modelo) para indicar o estado do movimento de
um carro em determinado momento.
As lmpadas apresentam dois "estados" possveis: acesa ou apagada. Com isso foi
criada uma tabela que associa os estados das lmpadas aos estados do movimento do
carro.
Se em vez de lmpadas houvesse bits 0 (apagada) ou 1 (acesa), a tabela ficaria com
os valores apresentados direita.
00

Carro andando
em frente

01

Carro virando
direita

10

Carro virando
esquerda

11

Carro parado

Com isso possvel criar tabelas de equivalncia entre as combinaes possveis dos
bits e as informaes que devem ser representadas. Quando so usados dois bits, o nmero de combinaes possveis quatro, pois na numerao binria existe a seguinte
relao: Nmero de combinaes = 2n sendo n = nmero de bits.
O sistema de computao utiliza uma tabela de equivalncia entre combinaes de bits
e caracteres (nmeros, letras e smbolos). claro que, se o sistema utilizasse ape-

Algoritmos e Linguagens Lucilia Ribeiro

10

01 Viso Geral

nas dois bits, s conseguiria representar quatro caracteres, o que no o caso, pois ele
pode utilizar qualquer quantidade de bits para representar os dados.
Normalmente, utilizam-se grupos de oito bits. Usando a frmula anterior: nmero de
combinaes = 28 = 256. Portanto, o sistema de computao utilizando oito bits consegue representar at 256 caracteres diferentes (256 combinaes diferentes).
1.9

BYTES

Cada um desses grupos de oito bits chamado de byte. Pode-se considerar cada byte representando um caractere, portanto o byte utilizado para medir o tamanho dos
trabalhos realizados no sistema de computao, principalmente se for levado em considerao que sistemas antigos utilizavam somente textos em seus trabalhos. Por exem-plo:
um livro com 250 pginas tem, aproximadamente, 1.000.000 de caracteres (contan-do-se
espaos, que tambm so caracteres). Caso fosse usado um computador para edi-tar esse
mesmo texto, ele continuaria tendo o mesmo nmero de caracteres que o livro real, mas
esses caracteres seriam modelados em bytes. Esse texto seria representado, ento, por
1.000.000 de bytes, ou melhor, o tamanho desse texto para o computador seria de
1.000.000 de bytes.
Como em outras unidades de medida, no caso de bytes, so usados mltiplos para
representar grandes quantidades (por exemplo, 1000 m = 1 km). Estes smbolos servi-ro
para fazer um arredondamento de valores, o que facilitar a operao: 2
=
2 =
2 =
2 =
2

1.10

Quantidade de Bytes
1024 bytes
1.048.576 bytes
1.073.741.824 bytes
1.099.511.627.776 bytes

Valor
1024 bytes
1024 Kb
1024 Mb
1024 Gb

1
1
1
1

Nome
Kb Kilobyte
Mb Megabyte
Gb Gigabyte
Tb - Terabyte

EXERCCIOS

1) Verifique a configurao de algum computador que voc tenha acesso. Verifique


tipo do processador, capacidade de memria RAM, capacidade do HD e sistema operacional utilizado.
2) Recorte dois anncios de propagandas de lojas de computadores. Um para computadores de marca (Itautec, Dell, HP) e outro para computadores sem marca. Compare
configuraes e preos.
3) Explique a diferena entre dados e informaes.
4) Baseado na resposta anterior, comente por que o computador processa dados e no
informaes.
5) Entre os componentes de um sistema de computao, qual o responsvel pelo
processamento dos dados?
6) Defina programa e a sua funo em um sistema de computao.
7) Utilizando as suas palavras e os conceitos apresentados neste captulo, defina
computador.
8) Quais so os principais componentes de um sistema de computao?
9) Quando se afirma que um computador programvel, o que isso significa?
10) Utilize a simulao de computador apresentada para "processar" as instrues a
seguir e apresente o resultado final dessa tarefa. No escaninho, existem quatro fichas com
os seguintes valores: 5, 3, 2 e 2:

Algoritmos e Linguagens Lucilia Ribeiro

11

01 Viso Geral

a) Escreva 1 em A14;
b) Pegue uma ficha e copie o seu valor no quadro - rea A 16;
c) Pegue uma ficha e copie o seu valor no quadro - rea A 15;
d) Some o contedo de A15 com o de A16 e coloque o resultado em A16;
e) Some 1 ao valor de A14 e coloque o resultado em A14;
f) Se no houver mais fichas, avance para a rea A8; caso contrrio, avance para a rea A7;
g) Volte para a rea A3;
h) Divida o valor de A16 pelo valor de A14 e coloque o resultado em A16;
i)

Datilografe o contedo de A16;

j) Pare.

-x-

Algoritmos e Linguagens Lucilia Ribeiro

12

02 Noes de Lgica

Noes de Lgica
Cada ferramenta carrega consigo o esprito com o qual foi criada.
(Werner Karl Heisenberg)

2.1

LGICA

Coerncia e racionalidade. "Arte do bem pensar", "cincia das formas do pensamento". Visto que nossa razo pode funcionar desordenadamente, a lgica tem em vista a
"correo do raciocnio", colocando ordem no pensamento.
Exemplos:
Todo mamfero um animal
Todo cavalo um mamfero

Portanto, todo cavalo um animal


Kaiton pas do planeta Stix
Todos os Xinpins so de Kaiton
Logo, todos os Xinpins so Stixianos
A lgica objetiva a criao de uma representao mais FORMAL. Utilizamos sempre a
lgica para pensar, falar, escrever ou agir corretamente. Precisamos, para todas essas
atividades, colocar ordem no pensamento.
A gaveta est fechada
A caneta est dentro da gaveta
Precisamos primeiro abrir a gaveta para depois pegar a caneta
Anacleto mais velho que Felisberto
Felisberto mais velho que Marivaldo

Portanto, Anacleto mais velho que Marivaldo


2.2

LGICA DE PROGRAMAO

Significa o uso correto das leis do pensamento, da "ordem da razo" e de processos de


raciocnio e simbolizao formais na programao de computadores, objetivando racionalidade no desenvolvimento de tcnicas que produzam solues logicamente vlidas e
coerentes que resolvam os problemas que se deseja programar.
Um mesmo raciocnio pode ser expresso em qualquer um dos inmeros idiomas existentes, mas continuar representando o mesmo raciocnio, usando apenas outra conveno.
Acontece exatamente a mesma coisa na Lgica de Programao. Pode ser representada em qualquer uma das inmeras linguagens de programao existentes. S que, no
raciocnio geral, uma grande diversidade de detalhes computacionais no tem nada a ver
com o mesmo. Portanto, para escapar dessa "Torre de Babel" e, ao mesmo tempo, representar mais fielmente o raciocnio da Lgica de Programao, utilizamos os Algorit-mos.
O objetivo principal da Lgica de Programao a construo de algoritmos coeren-tes
e vlidos.
Algoritmos e Linguagens Lucilia Ribeiro

13

02 Noes de Lgica

2.3

ALGORITMO

Algoritmo um conjunto de procedimentos a ser seguido para que um determinado


problema seja resolvido. Para trazermos os algoritmos para a memria do computador
necessrio que o mesmo seja programado, ou seja, convertido em uma linguagem que
possa ser entendida pela mquina.
uma seqncia de passos que visam atingir um objetivo bem definido. Cada passo
deve ser simples e sem ambigidade.
Apesar do nome pouco usual, algoritmos so comuns em nosso cotidiano, como, por
exemplo, uma receita de bolo. Na receita existe uma srie de ingredientes necessrios e
uma seqncia de diversos passos (aes) que devem ser fielmente executados para que
se consiga o alimento desejado, conforme se esperava antes do incio da atividade (objetivo bem definido).
Portanto, ao elaborar um algoritmo devemos: Especificar aes claras e precisas ->
Partindo de um estado inicial -> Aps um perodo de tempo finito -> Produzem um estado final previsvel e bem definido.
Um algoritmo deve garantir que sempre que seja executado, sob as mesmas condies, produza o mesmo resultado.
Obs.:
Observe a seqncia: 1, 6, 11, 16, 21, 26,...
Qual o stimo elemento?
Qual o padro de comportamento?
2.4

PROGRAMAO

Programar consiste em elaborar um conjunto finito de instrues reconhecidas pela


mquina, de forma que o computador as execute.
a implementao de um algoritmo em determinada linguagem de programao.

Problema

Fase da resoluo do
problema
Soluo em
forma de
algoritmo

Soluo como
programa

Fase da implementao

2.5

IMPORTNCIA DE UM ALGORITMO

Representar mais fielmente o raciocnio envolvido na Lgica de Programao bem como


codificar para qualquer linguagem de programao. Existem vrias formas de re-presentar
um algoritmo: Linguagem Natural, Fluxograma e Linguagem Estruturada (Al-goritmo Portugol) que a mais utilizada. Para exemplificar utilizaremos o seguinte pro-grama:
Dividir dois nmeros.
2.5.1 LINGUAGEM NATURAL
Escolher o numerador
Escolher o denominador

Se o denominador for igual a zero, ento Escreva que no existe diviso por
zero
Seno, divida o numerador pelo denominador
Algoritmos e Linguagens Lucilia Ribeiro

14

02 Noes de Lgica

2.5.2 FLUXOGRAMA
Escolher o numerador

Escolher o denominador

Sim

No
Denominador = 0

Imprimir numerador
dividido por denominador

Imprimir mensagem
Diviso por zero

Fim

2.5.3 LINGUAGEM ESTRUTURADA


algoritmo primeiroExemplo {
real numerador, denominador,resultado;
leia (numerado);
leia (denominador);
se (denominador == 0){

escreva ("Diviso por zero");


}
senao {
resultado = numerador / denominador;
}
}

2.6

EXEMPLOS

Muitas vezes realizamos tarefas aparentemente bvias demais como, por exemplo,
trocar uma lmpada, sem percebermos seus pequenos detalhes. Vejamos esse primeiro
algoritmo:
1.
2.
3.
4.
5.
6.

pegar uma escada;


posicionar a escada embaixo da lmpada;
buscar uma lmpada nova;
subir na escada;
retirar a lmpada velha;
colocar a lmpada nova;

Neste primeiro algoritmo, seguimos uma determinada seqncia de aes que fazem
com que ele seja seguido naturalmente por qualquer pessoa, estabelecendo um padro de
comportamento, pois qualquer pessoa agiria da mesma maneira.
MAS, e se a lmpada no estivesse queimada? A execuo das aes conduziria a uma
troca, independentemente de a lmpada estar ou no queimada, pois essa possibili-dade
no foi prevista. Uma soluo seria:
1.
2.
3.
4.
5.

pegar uma escada;


posicionar a escada embaixo da lmpada;
buscar uma lmpada nova;
acionar o interruptor;
se a lmpada no acender, ento

Algoritmos e Linguagens Lucilia Ribeiro

15

02 Noes de Lgica

5.1. subir na escada;


5.2. retirar a lmpada velha;
5.3. colocar a lmpada nova;
Este algoritmo funciona, mas pode ser melhorado visto que buscamos uma lmpada e
a escada sem saber se sero necessrias. Mudemos o teste condicional para o incio da
seqncia de aes:
1. acionar o interruptor;
2. se a lmpada no acender, ento
2.1. pegar uma escada;
2.2. posicionar a escada embaixo da lmpada;
2.3. buscar uma lmpada nova;
2.4. subir na escada;
2.5. retirar a lmpada velha;
2.6. colocar a lmpada nova;
H muitas formas de resolver um problema, afinal cada pessoa pensa e age de maneira diferente. Isto significa que, para este mesmo problema de trocar lmpadas, poderamos ter diversas solues diferentes e corretas (se atingissem o resultado desejado de
efetuar a troca), portanto, o bom senso e a prtica de lgica de programao que indicaro a soluo mais adequada, que com menos esforo e menor objetividade produz o
resultado almejado.
O algoritmo acima no prev ainda o fato de a lmpada nova no funcionar e, portanto, no atingir o objetivo nesta situao especfica. Melhorando o algoritmo:
1. acionar o interruptor;
2. se a lmpada no acender, ento
2.1. pegar uma escada;
2.2. posicionar a escada embaixo da lmpada;
2.3. buscar uma lmpada nova;
2.4. subir na escada;
2.5. retirar a lmpada velha;
2.6. colocar a lmpada nova;
2.7. se a lmpada nova no acender, ento
2.7.1. buscar uma lmpada nova;
2.7.2. subir na escada;
2.7.3. retirar a lmpada queimada;
2.7.4. colocar outra lmpada nova;
2.7.5. se a lmpada nova no acender, ento
2.7.5.1. buscar uma lmpada nova;
2.7.5.2. subir na escada;
2.7.5.3. retirar a lmpada queimada;
2.7.5.4. colocar outra lmpada nova;
(repito os quatro ltimos passos at quando?)
Percebemos que as aes cessaro quando conseguirmos colocar uma lmpada que
acenda; caso contrrio, ficaremos testando indefinidamente (note que o interruptor continua acionado!) Temos que expressar a repetio da ao sem repetir o texto que representa a ao, assim como determinar um limite para tal repetio, para garantir uma
condio de parada. Observemos que o nmero de repeties indefinido, mas finito.
1. acionar o interruptor;
2. se a lmpada no acender, ento
2.1. pegar uma escada;
2.2. posicionar a escada embaixo da lmpada;
2.3. buscar uma lmpada nova;
2.4. subir na escada;
2.5. retirar a lmpada velha;
2.6. colocar a lmpada nova;
Algoritmos e Linguagens Lucilia Ribeiro

16

02 Noes de Lgica

2.7. enquanto a lmpada nova no acender, faa


2.7.1. buscar uma lmpada nova;
2.7.2. subir na escada;
2.7.3. retirar a lmpada queimada;
2.7.4. colocar outra lmpada nova;
At agora estamos efetuando a troca de uma nica lmpada. Na verdade, estamos
testando um soquete (acionado por um interruptor), trocando tantas lmpadas quantas
forem necessrias para assegurar que o conjunto funcione. O que faramos se tivssemos
mais soquetes a testar, por exemplo, 10 soquetes? A soluo aparentemente mais bvia
seria repetir o algoritmo de uma nica lmpada para os 10 soquetes existentes. Entretanto, isso no uma maneira eficiente de se resolver esse problema. O conjunto de aes
desenvolvidas exatamente igual para os 10 soquetes. Ento, podemos fazer com que o
algoritmo volte a executar o conjunto de aes relativas a um nico soquete tantas vezes
quantas forem desejadas (no nosso caso, 10 vezes). O algoritmo ficaria assim:
1. ir at o interruptor do primeiro soquete;
2. enquanto a quantidade de soquetes testados for menor do que dez, faa
2.1. acionar o interruptor;
2.2. se a lmpada no acender, ento
2.2.1. pegar uma escada;
2.2.2. posicionar a escada embaixo da lmpada;
2.2.3. buscar uma lmpada nova;
2.2.4. subir na escada;
2.2.5. retirar a lmpada velha;
2.2.6. colocar a lmpada nova;
2.3. enquanto a lmpada nova no acender, faa
2.3.1. buscar uma lmpada nova;
2.3.2. subir na escada;
2.3.3. retirar a lmpada queimada;
2.3.4. colocar outra lmpada nova;
2.4. ir at o interruptor do prximo soquete;
Quando a condio quantidade de soquetes testados for menor do que dez for verdadeira, as aes responsveis pela troca ou no de um nico soquete sero executadas.
Caso a condio de parada seja falsa, ou seja, todos os dez soquetes j tiverem sido testados, nada mais ser executado.
2.7

EXERCCIOS

11) Elabore algoritmo passo-a-passo para trocar um pneu furado. Admita que esto
disponveis no porta malas do carro todos os materiais necessrios.
12) Elabore algoritmo passo-a-passo para fazer um bolo. Admita que esto disponveis
todos os ingredientes necessrios.
13) Elabore algoritmo passo-a-passo para pegar uma coca-cola em uma mquina de
refrigerantes. Admita que voc esteja em frente mquina e a ficha esteja em sua carteira/bolsa.
14) Elabore algoritmo passo-a-passo representando seus atos de um dia da semana
(meio de semana) desde o momento que voc abre o olho de manh at o momento que
voc os fecha para dormir
15) Trs jesutas e trs canibais precisam atravessar um rio; para tal dispem de um
barco com capacidade para duas pessoas. Por medidas de segurana, no se deve permitir que em alguma margem a quantidade de jesutas seja inferior de canibais. Qual a
soluo para efetuar a travessia com segurana? Elabore um algoritmo mostrando a resposta, indicando as aes que concretizam a soluo deste problema.
Algoritmos e Linguagens Lucilia Ribeiro

17

02 Noes de Lgica

16) Elabore um algoritmo que mova trs discos de uma Torre de Hani, que consiste
em trs hastes (a, b, c), uma das quais serve de suporte para trs discos de tamanhos
diferentes (1, 2, 3), os menores sobre os maiores. Pode-se mover um disco de cada vez
para qualquer haste, contanto que nunca seja colocado um disco maior sobre um menor.
O objetivo transferir os trs discos para outra haste

-x-

Algoritmos e Linguagens Lucilia Ribeiro

18

03 Itens Fundamentais

Itens Fundamentais
Quantas mas caram na cabea de Newton at ele ter inspirao!
(Robert Frost)

3.1

INTRODUO

Todo o trabalho realizado por um computador baseado na manipulao de dados


contidos em sua memria.
A memria do computador pode ser comparada a um conjunto de caixas numeradas.
Em cada caixa podemos guardar uma informao. O nmero da caixa serve para localizla e possui o nome de endereo.
1

3
Joo
7

4
25
8

Guarde o valor Joo na posio de memria 3


Guarde o valor 25 na posio de memria 4

Para armazenar uma informao na memria, no precisamos referenciar o endereo


da posio. Isso pode ser feito pela associao de um nome a cada posio. A associao
feita por um mecanismo interno das linguagens de programao que associa nomes que
criamos s posies de memria. Este mecanismo utiliza uma tabela de smbolos.
NOME
Idade
Cpf

3.2

Tabela de Smbolos
POSIO DA MEMRIA
1
2

TIPOS DE DADOS

Inicialmente vamos diferenciar dado de informao. Se falarmos: A escada possui 8


degraus. O valor 8 um dado, e informao a associao de 8 com o nmero de degraus
da escada.
Iremos trabalhar com quatro tipos primitivos. Usaremos estes tipos bsicos na construo de algoritmos:
3.2.1 INTEIRO
Podem ser positivos, negativos ou nulos e no possuem parte decimal.
Eu tenho 2 filhos.
A escada possui 9 degraus.
Meu vizinho ganhou 1 carro novo.
3.2.2 REAL
Podem ser positivos, negativos ou nulos e possuem parte decimal.
Ele tem 1,65 m de altura.
Meu saldo no banco de R$ 500,30.
No momento Geraldo est pesando 73,5 kg.
3.2.3 CARACTER
Podem ser as letras maisculas (A...Z), as letras minsculas (a...z), os nmeros (0...9)
e os caracteres especiais (ex.: &, #, @, ?, +). So sempre representados entre aspas no
algoritmo.
Constava na prova: Use somente caneta preta!.
O parque municipal estava cheio de placas: No pise na grama!.
O nome do vendedor Felisberto Laranjeira.
Algoritmos e Linguagens Lucilia Ribeiro

19

03 Itens Fundamentais

3.2.4 LGICO
Possuem apenas duas possibilidades de representao, ou seja, podem assumir apenas duas situaes (Verdadeiro ou Falso, Verdade ou Falsidade, V ou F). Convencionaremos que dados lgicos podero assumir um dos seguintes valores: Verdade ou Falsidade
(V ou F)
A porta pode estar aberta ou fechada.
A lmpada pode estar acesa ou apagada.
3.3

FORMAO DE IDENTIFICADORES

Os identificadores so os nomes das variveis, das constantes, das rotinas etc. Existem regras bsicas para a formao de identificadores:
1. Os caracteres que voc pode utilizar na formao dos identificadores so: nmeros,
letras maisculas e minsculas e o caracter sublinhado ( _ );
2. Devem comear por um caracter alfabtico ou pelo caracter sublinhado;
3. Podem ser seguidos por mais caracteres alfabticos ou numricos;
4. No so permitidos espaos em branco e caracteres especiais (@, $, #,+,!,%...);
5. No permitido usar palavras reservadas nos identificadores, ou seja, palavras que
pertenam linguagem de programao.
Alguns exemplos vlidos: Lambda, Y, CK32, K9, Nota, CBC, SALARIO, CONTADOR.
Alguns exemplos invlidos: 5Y, F(15), B:C, Nota1/2; WXZ*, B&CC,@143, a-b, Q:c.
importante observar que no desenvolvimento de algoritmos, o nome de identificador deve ser o mais significativo possvel, pois desta maneira, o entendimento do mesmo
se torna mais fcil.
3.4

CONSTANTES

Um dado constante o que no sofre nenhuma variao no decorrer do tempo. Seu


valor constante do incio ao fim da execuo do algoritmo, assim como constante para
execues diferentes no tempo. As definies das constantes so feitas antes das
declaraes das variveis. No formato apresentado logo a seguir, identificador o nome
da constante que est sendo criada.
Formato: identificador = valor;
Exemplos:
frase = No Fume;
nome = Bruna;
fator = 1,24;
Observao: importante observar que dados entre aspas caracterizam
caracteres,mesmo que possuam valores numricos. Veja os exemplos a seguir:
sorte = 13;
tmp = E%R#Y*;
lixo = Abc34F19;
numChar = 9,16;

3.5

VARIVEIS

Um dado classificado como varivel quando pode ter seu valor alterado em algum
instante durante a execuo do algoritmo. Exemplos: cotao do dlar, peso de uma
pessoa, ndice da inflao.
Embora uma varivel possa assumir diferentes valores, ela s pode armazenar um valor
a cada instante. Toda varivel identificada por um nome ou identificador.
Exemplo para ilustrar a diferena entre valores constantes e variveis: Construo de
um algoritmo para calcular o valor da rea de uma circunferncia. A frmula que expressa a rea da circunferncia R2, onde tem valor constante de 3,1416... independente de qual seja a circunferncia (vale para todas as ocasies em que calculamos a rea).
J o valor de R (raio) dependente da circunferncia que estamos calculando. Portanto,
varivel a cada execuo do algoritmo.
Algoritmos e Linguagens Lucilia Ribeiro

20

03 Itens Fundamentais

Formato: Tipo de Dado lista_de_identificadores;


Exemplos:
inteiro NUM, A;
real XYZ, Y;
caracter NOME, ENDERECO;
lgico RESPOSTA;

Observaes: Como visto anteriormente, os tipos primitivos que iremos trabalharso:


inteiro, real, caracter e lgico. No exemplo anterior, a varivel RESPOSTA o nome de um
local de memria que s pode conter valores do tipo lgico, ou seja, verdadeiro
(V) ou falso (F), assim como o identificador NUM o nome de um local de memria que s
pode conter valores do tipo inteiro e assim por diante.
No permitido que mais de uma varivel possua o mesmo identificador, visto que se
isso acontecer no ser possvel saber que varivel usar. S podemos guardar dados em
variveis do mesmo material, ou seja, uma varivel do tipo primitivo inteiro s poder
armazenar nmeros inteiros; uma varivel do tipo primitivo lgico, somente verdade (V)
ou falsidade (F) e assim por diante.
3.6

COMENTRIOS

Todo algoritmo deve conter comentrios, a fim de que as pessoas possam entend-lo
mais facilmente. Os comentrios so representados por um texto, ou simplesmente uma
frase, que aparece sempre aps o smbolo //. Os comentrios podem ser colocados em
qualquer ponto do algoritmo onde se faam necessrios.
Formato: // Comentrio ...
Exemplos:
real salario;
inteiro
3.7

//salrio do funcionrio

numPecas;

//nmero de peas

EXERCCIOS
17) Determine qual o tipo primitivo de informao presente nas sentenas a seguir:
a) A placa Pare tinha 2 furos de bala.
b) Josefina subiu 5 degraus para pegar uma ma boa.
c) Alberta levou 3,5 horas para chegar ao hospital onde deu luz uma menina.
d) Astrogilda pintou em sua camisa: Preserve o meio ambiente, e ficou devendo
23,00 ao vendedor de tintas.
e) Felisberto recebeu sua medalha de nmero 18 por ter alcanado a marca de 57,3
segundos nos 100 metros rasos.
18) Identifique o tipo dos dados: (I)nteiro, (R)eal, (C)aracter e (L)gico
(
(
(
(
(

)
)
)
)
)

verdadeiro
aula
0,342

(
(
(
(
(

)
)
)
)
)

45,0
c*d
35,23
354,0
897

(
(
(
(
(

)
)
)
)
)

1234
234
34
15,0
falso

(
(
(
(
(

)
)
)
)
)

0,0
1 2 3 4
18,589
falso
23

19) Assinale os identificadores vlidos e, para cada identificador no assinalado,


expli-que a razo de ele ser invlido.
a) (X)
f) KM/L
l) P{O}

b) U2
g) UYT
m) B52

Algoritmos e Linguagens Lucilia Ribeiro

c) AH!
h) ASDRUBAL
n) Rua

d) ALUNO
i) AB*C
o) CEP

e) #55
j) O&O
p) dia/ms

21
03 Itens Fundamentais

20) Supondo que as variveis NB, NA, NMAT, SX sejam utilizadas para armazenar a
nota do aluno, nome do aluno, o nmero da matrcula e o sexo, declare-as corretamente
na linguagem algortmica, associando o tipo primitivo adequado ao dado que ser armazenado.
21) Encontre os erros da seguinte declarao de variveis:
inteiro ENDERECO, NFILHOS;
caracter IDADE, X;

real XPTO, C, PESO, R$;


logico LAMPADA, C;

-x-

Algoritmos e Linguagens Lucilia Ribeiro

22

04 Expresses e Operadores

Expresses e Operadores
A chave usada sempre brilha
(Benjamim Franklin)

4.1

INTRODUO

Assim como na matemtica, realizamos diversas operaes dependendo do tipo de


dado utilizado nos algoritmos.
4.2

EXPRESSES ARITMTICAS

As expresses aritmticas so escritas linearmente usando a notao matemtica,


tendo como resposta sempre um valor numrico. Seus operandos so constantes ou variveis do tipo numrico (inteiro ou real) e seus operadores so operadores aritmticos, ou
seja, smbolos que representam as operaes bsicas da matemtica.
O conjunto de operaes bsicas adotadas nos algoritmos so: Adio, Subtrao,
Multiplicao e Diviso.
Operador

Funo

Exemplos

Adio

5 + 1, A + B

Subtrao

5 2, X Z

Multiplicao 4 * 2, Y * W

Diviso

27/3, B1/B2

As operaes de radiciao e potenciao sero realizadas atravs do uso das palavras-chave rad e pot, conforme tabela abaixo.
Operador
pot(X,Y)
sqrt(X)

Funo

Significado

Exemplos

Potenciao

X elevado a Y

pot(2,3)

Raiz quadrada Raiz quadrada de X

sqrt(9)

Algumas outras operaes matemticas no-convencionais, mas teis na construo


de algoritmos so: o resto da diviso e o quociente da diviso inteira, mostrados na tabela a seguir.
Operador

Funo

Exemplos

mod

Resto da diviso

9 mod 4 resulta em 1

div

Quociente da diviso

9 div 4 resulta em 2

Prioridades: Na resoluo das expresses aritmticas, as operaes guardam


umahierarquia entre si.
Operadores
1
2
3
4

Prioridade
parnteses mais internos
sqrt, pot
/, *, div, mod
+, -

Para operaes de mesma prioridade, devemos resolver a expresso na seqncia existente, ou seja, da esquerda para a direita. Para alterar a prioridade da tabela, utilizamos parnteses mais internos.

Algoritmos e Linguagens Lucilia Ribeiro

23

04 Expresses e Operadores

Exemplos:
a)
5 + 9 + 7 + 8/4
5 + 9 + 7 + 2
23

4.3

b)

1
1
1
1

4 * 3/6 pot(3,2)
4 * 3/6 9
12/6 9
2 9
10

c)

pot(5,2)
pot(5,2)
pot(5,2)
25 4/2
25 2 +
25

+
2

4/2 + sqrt(1 + 3 * 5)/2


4/2 + sqrt(1 + 15)/2
4/2 + sqrt(16)/2
4/2

EXPRESSES LGICAS

As expresses lgicas so expresses que trabalham com operadores relacionais ou


lgicos, tendo como resposta um valor lgico (verdadeiro ou falso).
Uma relao uma comparao entre valores do mesmo tipo primitivo. Esses valores
podem ser representados por constantes, variveis ou expresses aritmticas.
Os operadores relacionais utilizados esto listados na tabela a seguir. O resultado obtido de uma relao SEMPRE um valor lgico.
Operador

Descrio

==

Igual a

!=

Diferente de

<=

Menor ou Igual a

>=

Maior ou Igual a

<

Menor que

>

Maior que

Exemplos:
a)
A + B == C
(Essa relao retornar verdadeiro se o valor de A + B for igual ao de C, e retornar falso caso contrrio).
b)

2 * 4 ==
8 == 8

24 / 3

V
c)

15 mod 4 < 19 mod 6


F

Os operadores lgicos utilizados com expresses lgicas bem como as prioridades esto na seguinte tabela:
Operador Descrio Prioridade
E

Conjuno

OU

Disjuno

NO (!)

Negao

Tabela-verdade o conjunto de todas as possibilidades combinatrias entre os valores de diversas variveis lgicas e um conjunto de operadores lgicos.
Algoritmos e Linguagens Lucilia Ribeiro

24

04 Expresses e Operadores

OPERAO DE NEGAO (!)


A

! A

OPERAO DE CONJUNO (E)


A

AEB

OPERAO DE DISJUNO (OU)


A

A OU B

Exemplos:
a)
2 < 5 E 15 / 3 == 5
2 < 5 E 5 == 5 V
E V
V

4.4

b)

2 < 5 OU 15 / 3 = 5
2 < 5 OU 5 == 5
V OU V
V

c)

F OU 20 div (18/3) != (21/3) div 2


F OU 20 div 6 != 7 div 2
F OU 3 != 3 F
OU F
F

d)

NO V
NO V
NO V
NO V
F OU
V

OU
OU
OU
OU
V

pot(3,2)/3 < 15 35 mod 7


9/3 < 15 0
3 < 15
V

EXERCCIOS

22) Supondo que A, B e C so variveis do tipo inteiro, com valores iguais a 5, 10 e


8, respectivamente, e uma varivel real D, com valor de 1,5, quais os resultados das
expresses aritmticas a seguir?
a) 2 * A mod 3 C
b) sqrt(-2 * C) div 4
c) ((20 div 3) div 3) + pot(8,2)/2
d) (30 mod 4 * pot(3,3)) * 1
e) pot (-C,2) + (D*10)/A
f) sqrt(pot(A,B/A)) + C * D

Algoritmos e Linguagens Lucilia Ribeiro

25

04 Expresses e Operadores

23) Escreva as expresses algbricas em forma de algoritmo. No se preocupe nesse


momento em atribuir o resultado da expresso a uma varivel.
Exemplo: Expresso: x + vy
Algoritmo: x + v * y
a) a + bc + d
b) (a+b) c + d (a-2b)
c) (x+y) (x-y)
24) Verifique as expresses abaixo e diga qual o resultado das mesmas (verdadeiro
ou falso).
a) 3 * 5 div 4 <= pot(3,2) / 0,5
b) 2 + 8 mod 7 >= 3 * 6 15
25) Determine os resultados obtidos na avaliao das expresses lgicas seguintes.
a) X * X + Y > Z. Considere X = 1, Y = 2, Z = 5
b) X * X + Y > Z. Considere X = 4, Y = 3, Z = 1
c) (NOME == JORGE) E SIM OU (X < Z * 10).
Considere X = 2, Z = 9, NOME = MARIA, SIM = F
26) Determine o resultado das expresses a seguir:
a) NO (5 != 10/2 OU V E 2 5 > 5 2 OU V)
b) pot(2,4) != 4 + 2 OU 2 + 3 * 5 / 3 mod 5 < 0
27) Determine o resultado obtidos na avaliao das expresses lgicas apresentadas a
seguir, sabendo que A, B, C possuem os valores 2, 7 e 3,5 respectivamente, e que L uma
varivel lgica com o valor F.
a) B == A * C E (L OU V)
b) B > A OU B == pot(A,A)
c) L E B div A >= C OU NO A <= C

d) NO L OU V E sqrt(A+B) >= C
e) B/A == C OU B/A != C
f) L OU pot(B,A) <= C * 10 + A* B

28) Faa a declarao de 3 variveis do tipo inteiro, 2 variveis do tipo real, 2 variveis do tipo caracter e 1 varivel do tipo lgico.

-x-

Algoritmos e Linguagens Lucilia Ribeiro

26

05 Estrutura Sequencial

Estrutura Sequencial
Tente terminar e nunca vacile;
Nada mais difcil, mas a pesquisa descobrir.
(Robert Herrick

5.1

COMANDO DE ATRIBUIO

Um comando de atribuio usado para atribuir valores a variveis. O tipo do dado


deve ser compatvel com o tipo da varivel, ou seja, s se pode atribuir um valor lgico a
uma varivel capaz de comport-lo, isto , a uma varivel declarada como sendo do tipo
lgico. Na linguagem algortmica, o comando de atribuio tem o formato apresentado a
seguir, onde identificador o nome da varivel qual est sendo atribudo o valor, o
smbolo de atribuio e expresso pode ser uma constante, varivel, valor ou expres-so
cujo tipo seja compatvel com o da varivel qual o valor est sendo atribudo.
Formato: identificador

expresso;

Exemplos:
caracter cor;

real media, n1, n2;


logico teste;
inteiro X, Y, Z;
cor = Verde;
media = (N1+N2)/2;
teste = falso;
X = Y;
Z = 0;
importante ressaltar que do lado esquerdo do smbolo de atribuio deve existir apenas um identificador.
5.2

COMANDOS DE ENTRADA E SAIDA

Os comandos de entrada e sada tm como finalidade a interrupo do programa a fim


de que o usurio possa entrar com dados (entrada), atravs de unidades de entrada
(normalmente o teclado), ou o programa possa fornecer informaes a respeito dos dados (sada), atravs de unidades de sada (normalmente monitor ou impressora).
5.2.1 COMANDO DE ENTRADA
O comando denominado leia o comando de entrada de dados. Seu objetivo atribuir o dado a ser fornecido varivel identificada. O formato est listado a seguir. leia
a palavra-chave do comando de entrada, lista de identificadores o nome das variveis, separados por vrgula, nas quais sero armazenados os valores provenientes do meio
de entrada.
Formato: leia (lista de identificadores);
Exemplos:
leia (cod);
leia (nota1);
leia (nota2);
leia (nome);

leia (endereco);
5.2.2 COMANDO DE SADA
O comando denominado escreva o comando de sada de dados, que tem como objetivo mostrar o contedo de uma varivel, constante ou expresso. O formato apreAlgoritmos e Linguagens Lucilia Ribeiro

27

05 Estrutura Sequencial

sentado a seguir, onde escreva a palavra-chave do comando de sada; lista de identificadores e/ou expresses so os nomes das variveis, os nomes das constantes ouas
expresses, que se deseja fornecer como resultados.
Formato: escreva(lista de identificadores e/ou expresses);
Exemplos:
escreva(X);
escreva(Bom dia, NOME);
escreva(Voc pesa , P, quilos);

5.3

ESTRUTURA SEQUENCIAL

A estrutura seqencial de um algoritmo corresponde ao fato de que o conjunto de aes primitivas ser executado em uma seqncia linear de cima para baixo e da es-querda
para a direita, ou seja, na mesma ordem em que foram escritas.
As aes sero seguidas por ponto-e-vrgula (;). O ponto-e-vrgula objetiva separar
uma ao da outra e auxiliar na organizao seqencial das aes, visto que, aps encontrar um (;) o prximo comando da seqncia deve ser executado.
Exemplo 1:
Algoritmo nome { // identificao do incio do algoritmo
// declarao de variveis
// corpo do algoritmo
ao 1;
ao 2;
ao 3;
.
.
.

ao n;
}

// fim do algoritmo

Exemplo 2: Escreva um algoritmo que calcule a mdia aritmtica entre quatro


notasquaisquer fornecidas por um aluno.
algoritmo EX2 {
// declarao de variveis
real n1, n2, n3, n4, m; //variveis que armazenaro as quatro ,
//notas e a mdias das notas.
leia (n1);
leia (n2);
leia (n3);
leia (n4);
// processamento, ou seja, clculo da mdia aritmtica das notas
m = (n1 + n2 + n3 + n4) / 4;
// sada de dados
escreva(A mdia aritmtica das notas informadas : , m);
}
5.4

TESTE DE MESA

A simulao ou teste de mesa tem por objetivo detectar, caso existam, erros de lgica na descrio do algoritmo. Partindo de dados escolhidos (com resposta conhecida)
simulamos a execuo do algoritmo e comparamos a resposta obtida com a resposta
esperada. Se no houver coincidncia est detectado um erro, embora a recproca no seja
verdadeira.
A escolha dos dados para os testes de muita importncia na simulao. As amostras
de dados devem ser escolhidas de modo que provoquem a execuo de todas as instrues presentes no algoritmo, testando todas as possibilidades diferentes de sada.
Na simulao so listadas todas as variveis utilizadas no algoritmo e registrados todos os valores assumidos pelas variveis, na ordem em que ocorrem.
conveniente identificar com um nmero cada uma das instrues contidas no algoritmo. Dessa forma ser possvel localizar facilmente a varivel que foi definida ou alterada naquele momento.
Algoritmos e Linguagens Lucilia Ribeiro

28

05 Estrutura Sequencial

5.5

EXERCCIOS
29) Encontre os erros dos comandos de atribuio a seguir:
Logico = A;
real
B C;
inteiro D
A B = C; D
B;
C + 1 B + C;
C e B 3,5;
B = pot(6,2)/3 <= sqrt(9) * 4;
30) O que ser atribudo s variveis A, X e B?.
Logico A, B;
inteiro X;
X = 8 + 13 div 5;
A = B;
31) Dadas as declaraes abaixo, assinale os comandos de atribuio invlidos:
inteiro num;
real soma, x;

caracter simbolo, nome, cor, dia;


logico cod, teste, tudo;
(
(
(
(

)
)
)
)

SIMBOLO 5;
TESTE COR;
COR PRETO;
NUM *ABC*;

(
(
(
(

)
)
)
)

SOMA NUM + 2 * X;
TUDO SOMA;
X X + 1;
DIA SEGUNDA;

32) Explique o que est acontecendo em cada linha do trecho de algoritmo abaixo e
qual o resultado de cada ao executada:
algoritmo Exemplo {
Inteiro x, y;
real z;

leia (x);
escreva( x, elevado ao cubo = , pot(x,3));
leia (y);
escreva (x + y);
Z = x/y;
escreva(z);
z = z + 1;
x = (y + x) mod 2;
escreva(x);
}
33) Escreva um algoritmo que receba o valor do salrio de um funcionrio e o valor do
salrio mnimo. Calcule e escreva quantos salrios mnimos ganha esse funcionrio.
34) Faa um algoritmo que receba o nome e o salrio de um funcionrio, calcule e imprima o nome do funcionrio e o valor do imposto de renda a ser pago, sabendo que o
imposto equivale a 5% do salrio.
35) Faa um algoritmo que receba a idade de uma pessoa em anos, calcule e imprima
essa idade em: a) meses, b) dias, c) horas e d) minutos.
Algoritmos e Linguagens Lucilia Ribeiro

29

05 Estrutura Sequencial

36) Escreva um algoritmo que receba dois nmeros inteiros, calcule e escreva:
a) soma dos dois nmeros
b) subtrao do primeiro pelo segundo
c) subtrao do segundo pelo primeiro
d) multiplicao dos dois nmeros
e) diviso do primeiro pelo segundo
f) diviso do segundo pelo primeiro
g) o primeiro elevado ao quadrado
37) Sabe-se que o quilowatt de energia custa um quinto do salrio mnimo. Escreva
um algoritmo que receba o valor do salrio mnimo e a quantidade de quilowatts gasta por
uma residncia. Calcule e imprima:
a) o valor, em reais, de cada quilowatt;
b) o valor, em reais, a ser pago por essa residncia;
c) novo valor a ser pago por essa residncia, a partir de um desconto de 15%.
38) Faa um algoritmo que receba o ano do nascimento de uma pessoa e o ano atual.
Calcule e imprima: a) a idade dessa pessoa; b) essa idade convertida em semanas.
39) Escreva um algoritmo que calcule e imprima a rea de um retngulo. O algoritmo
deve solicitar ao usurio as informaes necessrias para esse clculo.
40) Faa um algoritmo que calcule e imprima o valor do FGTS a ser descontado de um
empregado, sabendo que o desconto do FGTS de 8% sobre o salrio bruto (forneci-do
pelo usurio). O algoritmo deve, ainda, calcular e imprimir o valor do salrio lquido. Nesse
exemplo, o valor do salrio lquido representado pelo salrio bruto menos o valor do
FGTS.
41) Escreva um algoritmo que leia 2 valores A e B e calcule o valor de C, sabendo que
C = (A + B) * B. O algoritmo deve imprimir os valores de A, B e C.

-x-

Algoritmos e Linguagens Lucilia Ribeiro

30

06 Estruturas Condicionais

Estruturas Condicionais
Numa sociedade de lobos, preciso aprender a uivar.
(Mme. Du Barry)

6.1

ESTRUTURA CONDICIONAL SIMPLES

Uma estrutura de seleo permite escolher um grupo de aes a ser executado quando determinadas condies so ou no satisfeitas. As condies podem ser representadas
por expresses lgicas ou relacionais.
Formato:
se (condio) {

C; // ao
}
Onde (condio) uma expresso que, quando avaliada, vai gerar um resultado lgico (verdadeiro ou falso). Na seleo simples, se (condio) for verdadeira, a ao primitiva (C) sob a clusula ento executada. Caso contrrio, nenhum comando executa-do.
Quando existirem diversas aes a serem executadas, necessrio usar um bloco,
delimitado por inicio e fim, conforme mostrado a seguir.
se (condio){
C1;
C2;
.
.
.
Cn;

// sequncia de comandos

}
Se (condio) for verdadeira, os comandos C1, C2, ..., Cn (bloco verdade) so executados. Caso contrrio ((condio) falsa), nenhum comando executado, encerrando-se
a seleo (fimse).
Exemplo 1: Escreva um algoritmo para calcular a mdia de quatro notas de um aluno e caso a mesma seja igual ou superior a 7, seu algoritmo deve imprimir uma mensagem sobre a aprovao do aluno.
algoritmo mediaAlunos {
real n1, n2, n3, n4, media;
escreva (Informe as quatro notas do aluno: );
leia (n1);
leia (n2);
leia (n3);
leia (n4);
media = (n1+n2+n3+n4)/4;
escreva(A mdia do aluno : , media);
se (media >= 7){
escreva(Aluno aprovado);
}
}
Algoritmos e Linguagens Lucilia Ribeiro

31
06 Estruturas Condicionais

6.2

ESTRUTURA CONDICIONAL COMPOSTA

Quando houver duas alternativas que dependem de uma mesma condio, uma da
condio ser verdadeira e a outra da condio ser falsa, usamos a estrutura de seleo
composta.
Formato:
se (condio){
C1;
C2;
.
.
.
Cn;
}

// inicio do bloco verdade


// seqncia de comandos

// fim do bloco verdade

senao {
B1;
B2;
.
.
.
Bn;
}

// incio do bloco falso


// seqncia de comandos

// fim do bloco falso

}
As regras para utilizao dos delimitadores inicio e fim tanto dentro do ento, quanto
dentro seno, so as mesmas apresentadas para a estrutura de seleo simples.
Exemplo 2: Escreva um algoritmo que verifique a igualdade de dois nmeros
inteirosfornecidos pelo usurio.
algoritmo numerosIguais {
inteiro num1, num2;
escreva(Informe dois nmeros inteiros: );
leia(num1);
leia(num2);
se (num1 == num2) {

escreva(Os nmeros informados so iguais.)


}
senao {
escreva(Os nmeros informados so diferentes.);
}
}
Exemplo 3: Escreva um algoritmo que receba como entrada trs nmeros
inteiros,realize sua soma e informe se essa soma maior ou igual a 100. Em caso contrrio,
in-forme uma mensagem que a soma menor do que 100.

Algoritmos e Linguagens Lucilia Ribeiro

32

algoritmo somaMaiorCem {
inteiro num1, num2, num3, soma;
escreva(Informe trs nmeros inteiros: );
leia (num1);
leia (num2);
leia (num3);
soma num1+num2+num3;
se (soma >= 100){
escreva(A soma dos nmeros maior ou igual a 100);
}
senao {
escreva(A soma dos nmeros menor do que 100);
}
}
6.3

06 Estruturas Condicionais

ESTRUTURA CONDICIONAL ENCADEADA

Quando agrupamos vrias selees, estamos formando uma seleo encadeada.


6.3.1 SELEO ENCADEADA HETEROGNEA
Quando no conseguimos identificar um padro lgico de construo em uma estrutura de seleo encadeada, temos uma estrutura de seleo encadeada heterognea.
Formato:
se(condio1){
se(condio2){

C1;
C2;
C3;
}

seno {
se (condio3){

C4;
C5;
C6;
}
senao {
se (condio4) {
se (condio5) {
C7
}

senao {
C8;
}
}
}
}

}
Para resumir as variaes possveis da seleo encadeada mostrada anteriormente,
temos a seguinte tabela de deciso:
Condio 1
V
F
F
F

Condio 2
V
-

Condio 3
V
F
F

Condio 4
V
F

Condio 5
V
-

Ao executada
C1, C2, C3
C4, C5, C6
C7
C8

6.3.2 SELEO ENCADEADA HOMOGNEA


Quando temos diversas estruturas de seleo encadeadas que seguem um determinado padro lgico, temos uma estrutura de seleo encadeada homognea.
Neste exemplo, aps cada ento existe outro se e no existem senes. Temos, ento,
uma estrutura de seleo encadeada homognea.
Algoritmos e Linguagens Lucilia Ribeiro

33

06 Estruturas Condicionais

Formato:
se(condio1){
se (condio2){
se (condio3){
se (condio4){
C1;
}
}

}
}
O exemplo anterior equivalente a:
se ((condio1) e (condio2) e (condio3) e (condio4)){
C1;
}

Exemplo 4: Supondo que uma varivel X possa assumir apenas quatro valores, V1,V2,
V3 e V4 e que exista um comando diferente a ser executado para cada valor arma-zenado
em X.. Nesse exemplo, somente um, e apenas um comando, pode ser executado nos
testes, ou seja, se X igual a V3, ele no igual a V1, nem a V2 e nem a V4.
se (X==V1){
C1;
}
se (X==V2){
C2;
}
se (X==V3){
C3;
}
se (X==V4){
C4;
}
X == V1
V
F
F
F

X == V2
F
V
F
F

X == V3
F
F
V
F

X == V4
F
F
F
V

Ao
C1
C2
C3
C4

No temos aqui uma estrutura de seleo encadeada, pois as selees no esto interligadas. Dessa maneira, todas as condies (X == Vn) esto sendo avaliadas e acontecero testes desnecessrios.
Com o objetivo de melhorar a performance do exemplo apresentado anteriormente,
podemos usar um conjunto de selees encadeadas, como mostrado a seguir.

Algoritmos e Linguagens Lucilia Ribeiro

34

06 Estruturas Condicionais

se (X==V1){

C1;
}
senao {
se(X==V2){
C2;
}
senao {
se (X==V3){
C3;
}
senao{
se (X==V4){
C4;

}
}
}
}
X == V1
V
F
F
F

X == V2
V
F
F

X == V3
V
F

X == V4
V

Ao
C1
C2
C3
C4

Nesse caso, o nmero mdio de testes a serem executados foi reduzido. Se o contedo de X for igual a V2, por exemplo, sero executados apenas dois testes (X==V1) e
(X==V2) e um comando (C2).
Na estrutura anterior, para esse exemplo de V2, so inspecionadas quatro condies,
embora um nico comando (C2) seja executado.
6.5

EXERCCIOS

42) A nota final de um estudante calculada a partir de trs notas atribudas respectivamente a um trabalho de laboratrio, a uma avaliao semestral e a um exame final. A
mdia das trs notas mencionadas anteriormente obedece aos pesos a seguir:
Nota
Trabalho de laboratrio
Avaliao semestral
Exame final

Peso
2
3
5

Faa um algoritmo que receba as trs notas, calcule e mostre a mdia ponderada e o
conceito segundo mostrado abaixo:
Mdia Ponderada
8,0 --- 10,0
7,0 --- 8,0
6,0 --- 7,0
5,0 --- 6,0
0,0 --- 5,0

Conceito
A
B
C
D
E

43) Faa um algoritmo que receba dois nmeros e mostre o maior.


44) Escreva um algoritmo que receba como entrada trs nmeros inteiros e verifique
se a soma dos mesmos maior ou igual a 100. O algoritmo deve emitir uma mensagem
em caso positivo.
45) Escreva um algoritmo que receba o valor de um depsito e o valor da taxa de juros, calcule e mostre o valor do rendimento e o valor total depois do rendimento.
Algoritmos e Linguagens Lucilia Ribeiro

35

06 Estruturas Condicionais

46) Escreva um algoritmo que receba uma medida em ps, faa as converses a seguir e mostre os resultados.
a) polegadas
b) jardas
c) milhas
Sabe-se que:

1 p = 12 polegadas
1 jarda = 3 ps
1 milha = 1760 jardas
47) Escreva um algoritmo que receba trs nmeros obrigatoriamente em ordem crescente e um quarto nmero que no siga esta regra. Mostre, em seguida, os quatro nmeros em ordem decrescente.
48) Escreva um algoritmo verifique a validade de uma senha fornecida pelo usurio. A
senha vlida um conjunto de caracteres ASDFG. O algoritmo deve imprimir uma
mensagem de permisso ou de negao de acesso.
49) Escreva um algoritmo que receba o valor do salrio mnimo, o nmero de horas
trabalhadas, o nmero de dependentes do funcionrio e a quantidade de horas extras
trabalhadas. Calcule e mostre o salrio do funcionrio de acordo com as regras a seguir:
- o valor da hora trabalhada igual a 1/5 do salrio mnimo;
- o salrio do ms igual ao nmero de horas trabalhadas multiplicado pelo valor da
hora trabalhada;
- para cada dependente acrescentar R$ 32,00;
- para cada hora extra trabalhada, calcular o valor da hora trabalhada acrescida de
50%;
- o salrio bruto igual ao salrio do ms mais o valor dos dependentes mais o valor
das horas extras;
- calcular o valor do imposto de renda retido na fonte de acordo com a tabela a seguir:
IRRF
Isento
10%
20%

Salrio bruto
Inferior a R$ 200,00
De R$ 200,00 at R$ 500,00
Superior a R$ 500,00

- o salrio lquido igual ao salrio bruto menos IRRF;


- a gratificao segue a tabela a seguir:
Salrio Lquido
At R$ 350,00
Superior a R$ 350,00

Gratificao
R$ 100,00
R$ 50,00

- o salrio do funcionrio igual ao salrio lquido mais gratificao.


50) Escreva um algoritmo que leia um nmero e, caso ele seja positivo, imprima seu
inverso. Caso contrrio, imprima seu valor absoluto.
51) Escreva um algoritmo para resolver equaes do 2 grau.
ax2 + bx + c = 0.
A varivel a deve ser diferente de zero.
< 0 no existe raiz real
= 0 existe uma raiz real x = -b/(2*a)
> 0 existem duas razes reais: x1 = (-b + )/(2*a) e x2 = (-b - )/(2*a)
52) Escreva um algoritmo que leia 2 valores A e B e calcule o valor de C, sabendo
que C == (A + B) * B. O algoritmo deve imprimir os valores de A, B e C.

Algoritmos e Linguagens Lucilia Ribeiro

36

06 Estruturas Condicionais

53) Deduza o que ficar armazenado nas variveis do trecho de algoritmo a seguir,
sabendo que as variveis armazenam valores do tipo inteiro.
se (a > b){
aux = a;
a= b;
b = aux;
}
se (a > c){
aux= a;
a= c;
c = aux;
}
se (b > c){
aux = b;
b = c;
c = aux;
}
54) Um supermercado deseja reajustar os preos de seus produtos usando o seguinte
critrio: o produto poder ter seu preo aumentado ou diminudo. Para alterar o preo, o
produto deve preencher pelo menos um dos requisitos a seguir:
Venda Mdia Mensal
< 500
>= 500 e < 1200
>= 1200

Requisitos
Preo Atual
< R$ 30,00
>= R$ 30,00 e < R$ 60,00
>= R$ 80,00

Reajustes
% de Aumento
% de Diminuio
10
15
20

Faa um algoritmo que receba o preo atual e a venda mensal mdia do produto, calcule e mostre o novo preo.
55) Escreva um algoritmo que receba e altura e o peso de uma pessoa. De acordo com
a tabela a seguir, verifique e mostre qual a classificao dessa pessoa.
Altura
Menores que 1,20
De 1,20 a 1,70
Maiores que 1,70

At 60
A
B
C

Peso
Entre 60 e 90 (inclusive)
D
E
F

Acima de 90
G
H
I

56) Escreva um algoritmo que receba a altura e o sexo de uma pessoa, calcule e imprima o seu peso ideal, usando as seguintes frmulas:
para homens: (72.7 * h) 58;
para mulheres: (62.1 * h) 44.7.
57) Escreva um algoritmo que receba a medida de um ngulo em graus (nmero inteiro). Calcule e mostre o quadrante em que se localiza esse ngulo. Considere os quadrantes da trigonometria e para ngulos maiores que 360 ou menores que -360, reduzi-los, mostrando tambm o nmero de voltas e o sentido da volta (horrio ou antihorrio).

Algoritmos e Linguagens Lucilia Ribeiro

37

06 Estruturas Condicionais

90

180

0
360

270

58) O IMC ndice de Massa Corporal um critrio da Organizao Mundial de Sade


para dar uma indicao sobre a condio de peso de uma pessoa adulta. A frmula IMC
= peso / (altura)2. Elabore um algoritmo que leia o peso e a altura de um adulto e mostre sua condio.
IMC em adultos
abaixo de 18.5
entre 18.5 e 25
entre 25 e 30
acima de 30

Condio
abaixo do peso
peso normal
acima do peso
obeso

59) Escreva um algoritmo que receba a idade de um nadador e imprima a sua categoria seguindo as regras:
Categoria
Infantil A
Infantil B
Juvenil A
Juvenil B
Snior

Idade
5 7 anos
8 10 anos
11 13 anos
14 17 anos
maiores de 18 anos

-x-

Algoritmos e Linguagens Lucilia Ribeiro

38

07 Seleo de Mltipla Escolha

Seleo de Mltipla Escolha


Numa sociedade de lobos, preciso aprender a uivar.
(Mme. Du Barry)

7.1

SELEO DE MLTIPLA ESCOLHA

Uma estrutura de seleo de mltipla escolha usada quando ocorrem situaes onde: se um comando for executado, os demais no sero, ou seja, quando um conjunto de
valores discretos precisa ser testado e aes diferentes so associadas a esses valo-res.
Observe o seguinte exemplo:
se (X==V1){
C1;
}
senao {
se (X==V2){
C2;
}
senao {
se (X==V3) {
C3;
}
senao {
se (X==V4){
C4;
}
}
}
}

Esse exemplo pode ser escrito usando uma seleo de mltipla escolha. O uso da estrutura escolha pode ser para variveis dos tipos inteiro, caracter e lgico.
escolha(X){
caso
caso
caso
caso

V1:
V2:
V3:
V4:

C1;
C2;
C3;
C4;

}
Para se executar um comando que possui mais de um valor em que se verifica sua
necessidade, todos esses valores so agrupados em um nico caso (os valores so separados por vrgula ou, caso seja um intervalo, separados por . .).
Para se executar um comando que se verifica com todos os outros valores, exceto os
discriminados caso a caso, se inclui outra situao: caso contrrio.
Se dentro de um caso for preciso colocar mais de um comando, necessrio usar os
delimitadores incio e fim.

Algoritmos e Linguagens Lucilia Ribeiro

39

07 Seleo de Mltipla Escolha

Exemplo:
se(X==V1){
C1;
}
senao {
se(X==V2){
C2;
}
senao{
se(X==V3){
C2;
}
senao{
se(X==V4){
C3;
}
senao{

se(X==V5){
C4;
}
senao{
C5;
}
}
}
}
}

Reescrevendo o exemplo anterior com a estrutura de mltipla escolha:


escolha(X){
caso
caso
caso
caso

V1:
V2,
V4:
V5:

C1;
V3: C2;
C3;
C4;

caso contrario: C5;


}

Exemplo 1: Escreva um algoritmo que diga se um caracter digitado : uma


vogalmaiscula, um nmero inteiro de 0 a 9 ou um operador aritmtico. Se o usurio
informar algo diferente do que foi mencionado anteriormente, imprimir uma mensagem
avisando-o desse fato.
algoritmo letras {
caracter

opcao;

escreva(Anlise de CaracterDigitado);
escreva(Informe um caracter: );
leia(opcao);
escolha(opo){
caso A:
caso E:
caso I:
caso O:
caso U:
escreva( uma vogal maiscula);

break;
caso 0:
.
.
.
Caso 9:
escreva( um nmero inteiro de 0 a 9);
break;

caso +:
caso -:
caso *:
caso/:
escreva( um operador matemtico);
break;
caso contrario:
escreva(Outro caracter);
}

}
Exemplo 2: Construa um algoritmo que, tendo como dados de entrada o preo deum
produto e seu cdigo de origem, mostre o preo junto de sua procedncia. Se o cdi-go
no for nenhum dos especificados, o produto deve ser encarado como importado.
Considere a tabela de cdigos apresentada abaixo:
Cdigo de origem
1
2
3
4
5 ou 6
7, 8 ou 9
10 at 20
25 at 30

Procedncia
Sul
Norte
Leste
Oeste
Nordeste
Sudeste
Centro-oeste
Nordeste

algoritmo produto {
real preco;
inteiro codigo;

escreva(Informe o preo do produto e seu cdigo de origem: );


leia(preco, codigo);
escolha(codigo){
caso 1:
escreva(Preo: , preco, Sul);
break;
caso 2:
escreva(Preo: , preco, Norte);
break;
caso 3:
escreva(Preo: , preco, Leste);
break;
caso 4:
escreva(Preo: , preco, Oeste);
break;
caso 5, 6, 25..30: escreva(Preo: , preco, Nordeste);
break;
caso 7, 8, 9: escreva(Preo: , preco, Sudeste);
break;

caso 10..20: escreva(Preo: , preco, Centro-oeste);


break;

caso contrario:escreva(Preo: , preco, Produto Importado);


}
}

Algoritmos e Linguagens Lucilia Ribeiro

40

07 Seleo de Mltipla Escolha

7.2

EXERCCIOS
60) Dado o algoritmo a seguir, responda:
algoritmo ex52 {
logico = A, B, C;
se(A){
C1;
}
senao{
se(B) {
se(C){
C2;
}
senao {
C3;
C4;
}
}
C5;
}
C6;
}
a) Se A = verdade, B = verdade, C = falsidade, quais comandos sero executados?
b) Se A = falsidade, B = verdade, C = falsidade, quais comandos sero executados?
c) Se A = falsidade, B = verdade, C = verdade, quais comandos sero executados?
d) Valores de A, B, C para que somente os comandos C5 e C6 sejam executados?
e) Quais so os valores de A, B, C para que somente o comando C6 seja executado?

61) Escreva um algoritmo que leia o cdigo de um determinado produto e mostre a


sua classificao de acordo com a tabela apresentada a seguir:
Cdigo
1
2, 3 ou 4
5 ou 6
7
8 at 15
Qualquer outro cdigo

Classificao
Alimento no-perecvel
Alimento perecvel
Vesturio
Higiene pessoal
Limpeza e utenslios domsticos
Invlido

-x-

Algoritmos e Linguagens Lucilia Ribeiro

41

08 Estruturas de Repetio

Estruturas de Repetio

Quem no compreende um olhar, tampouco compreender uma longa explicao.


(Mrio Quintana)
8.1

ESTRUTURAS DE REPETIO

As estruturas de repetio so usadas quando queremos executar uma mesma sequncia de comandos vrias vezes, provocando sempre um retrocesso para o incio dessa
sequncia. Isso ocasiona a repetio de certo trecho do algoritmo um nmero de vezes
(que pode ser indeterminado, porm finito).
Aos trechos do algoritmo que so repetidos damos o nome de laos de repetio, loops ou looping.
8.2

ESTRUTURA DE REPETIO COM VARIVEL DE CONTROLE

A estrutura de repetio com varivel de controle, conhecida como para, repete a execuo de um bloco de comandos um nmero predeterminado de vezes, pois possui
limites fixos.
Sintaxe:
para(i=0; i<10; i++){
escreva (i);
}

Saida de dados: 0 1 2 3 4 5 6 7 8 9
Onde: i a varivel de controle, i<10 a condio de parada, i++ o incremento
varivel i (valor at o qual ela vai chegar).
Exemplo 1: Escreva um algoritmo que imprima todos os nmeros inteiros de 1 a 50.
algoritmo numInt{
inteiro i;
escreva(Imprimindo os nmeros inteiros de 1 a 50);
para (i=1; i<=50; i++){
escreva(i, );
}
}
Exemplo 2: Escreva um algoritmo que imprima todos os nmeros inteiros de 1
at50, em ordem decrescente.
algoritmo numIntDecrescente{
inteiro i;
escreva(Nmeros inteiros de 1 a 50 em ordem decrescente);
para (i=50; i>=1; i--){
escreva(i, );
}
}

Algoritmos e Linguagens Lucilia Ribeiro

42

08 Estruturas de Repetio

8.3

ESTRUTURA DE REPETIO COM TESTE NO INCIO

uma estrutura de controle do fluxo de execuo que permite repetir diversas vezes
um mesmo trecho do algoritmo, sempre verificando antes de cada execuo se permitido executar o mesmo trecho.
A estrutura de repetio com teste no incio denomina-se enquanto e permite que um
bloco de comandos ou uma ao primitiva seja repetida enquanto uma determinada condio for verdadeira.
Quando o resultado da condio for falso, o comando de repetio abandonado. Caso o resultado da condio seja falso j da primeira vez, os comandos que se encontram
dentro do enquanto no so executados nenhuma vez.
Sintaxe:
enquanto (condicao){
C1;
C2;
. . .
Cn;
}
Exemplo 3: Clculo da mdia das 4 notas por aluno, considerando 50 alunos. Escrever mensagem de aprovado, caso a mdia seja maior ou igual a 7 e de reprovado, caso a
mesma seja menor do que 7. Cuidado com dados invlidos.
algoritmo medias {
real n1,n2,n3,n4,media;
inteiro cont; // declarao do contador
cont = 0;
enquanto (cont < 50){
escreva(Informe quatro notas: );
leia(n1);
leia(n2);
leia(n3);
leia(n4);
enquanto ((n1<0) ou (n1>10) ou (n2<0) ou (n2>10) ou (n3<0)
ou (n3>10) ou (n4<0) ou (n4>10)){
escreva(Notas invlidas. Informe novamente: );
leia(n1);
leia(n2);
leia(n3);
leia(n4);
}
media = (n1+n2+n3+n4)/4;
escreva (Mdia Anual: , media);
se (media >= 7,0){
escreva(Aluno Aprovado);
}
seno {
escreva(Aluno Reprovado);
}
cont= cont + 1;
}
}

Algoritmos e Linguagens Lucilia Ribeiro

43

8.4

ESTRUTURA DE REPETIO COM TESTE NO FINAL

A estrutura de repetio com teste no final (faa ... enquanto) consiste em uma estrutura de controle do fluxo de execuo que permite repetir diversas vezes um mesmo
trecho do algoritmo. Porm, diferentemente do enquanto, a condio testada sempre no
final.
Assim, o faa ... enquanto usado para realizar a repetio com teste no final,
permitindo que um bloco ou ao primitiva seja repetido at que uma determinada condio se torne verdadeira.
Dessa forma, possvel observar que um bloco (ou ao primitiva) executado pelo
menos uma vez, independente da validade da condio. Isto ocorre porque a inspeo da
condio feita aps a execuo do bloco, o que representa a caracterstica principal dessa
estrutura de repetio.
08 Estruturas de Repetio

importante ressaltar que a estrutura faa ... enquanto no possui inicio e fim quando se tem um bloco de comandos a ser executado dentro dela.
Sintaxe:
faa {
C1;
C2;
. . .
Cn;
}enquanto (condicao);
Exemplo4: Escreva um algoritmo que receba 2 notas de um aluno e calcule sua mdia. Para cada nota, se o usurio entrar com um valor maior do que 10 ou menor do que
zero, o programa deve sempre pedir para que ele digite novamente a nota correta em um
intervalo entre 0 e 10.
algoritmo notas {
real n1, n2;
faa {
escreva(Informe a primeira nota (entre 0 e 10): );
leia(n1);
} enquanto ((n1 < 0) ou (n1 > 10));
faa {
escreva(Informe a segunda nota (entre 0 e 10): );
leia(n2);
}enquanto((n2 < 0) ou (n2 > 10));
escreva(A mdia das duas notas : , (n1+n2)/2);
}
8.5

EXERCCIOS
62) Uma loja usa os seguintes cdigos para as transaes de cada dia:
d para compras vista em dinheiro;
c para compras a vista em cheque.

dada uma lista de transaes contendo o valor de cada compra e o respectivo cdigo da transao. Considere que houve 25 transaes no dia.
Faa um algoritmo que calcule e imprima:
- valor total das compras vista em dinheiro;
- valor total das compras vista em cheque;
- valor total das compras efetuadas.
63) Escreva um algoritmo que receba a idade de 10 pessoas, calcule e imprima a
quantidade de pessoas com idade maior ou igual a 18 anos.
Algoritmos e Linguagens Lucilia Ribeiro

44

64) Escreva um algoritmo que conte quantos nmeros pares existem de 0 a 20. (Use
a estrutura faa ... enquanto).
65) Escreva um algoritmo que calcule a tabuada de multiplicao (de 1 a 10) de um
nmero inteiro positivo qualquer digitado pelo usurio usando faa ... enquanto. Reescreva o mesmo algoritmo usando enquanto. O algoritmo pode ser executado vrias vezes
at que o usurio deseje sair do mesmo.

-x-

09 Vetores e Matrizes

Vetores e Matrizes
Lembrana quando, mesmo sem autorizao,
seu pensamento reapresenta um captulo
(Mrio Quintana)

9.1

ESTRUTURA DE DADOS

Estruturas de dados so tipos construdos, compostos de tipos primitivos. um conjunto de elementos.


9.2

VARIVEIS COMPOSTAS HOMOGNEAS

Varivel Composta Homognea composta de variveis com o mesmo tipo primitivo,


formando, assim, um conjunto homogneo de dados. Podem ser unidimensionais, tambm chamadas de Vetores ou bidimensionais, chamadas de matrizes.
9.3

VETORES - Variveis Compostas Unidimensionais

Os vetores so variveis compostas homogneas unidimensionais. Eles representam


uma seqncia de variveis, todas do mesmo tipo, com o mesmo identificador (mesmo
nome).
Como as variveis tm o mesmo nome, o que as distingue um ndice que referencia
sua localizao dentro da estrutura. Para declarar a varivel, utilizamos a seguinte sintaxe descrita abaixo, onde i a quantidade de elementos do vetor e tipo primitivo
qualquer um dos tipos bsicos.
Sintaxe:
tipo primitivo de dado

indentificador[i];

A figura a seguir mostra como o vetor VCLASSE pode ser representado. Nesse exemplo, a primeira posio do vetor 1 e a ltima 40.
VCLASSE
8,2

6,8

9,2

3,1

...

5,2

9,6

39

40

9.3.1 MANIPULAO DE VETORES


O nome do vetor determinado atravs do identificador que foi usado na definio de
variveis.
A posio determinada por meio de uma constante, de uma expresso aritmtica ou
de uma varivel que estiver dentro dos colchetes e tambm denominada ndice.
VCLASSE[4]

39

40

Aps isolar um nico elemento do vetor, podemos manipul-lo atravs de qualquer


operao de atribuio, entrada ou sada.
Atrituio:
VCLASSE[4] 8,6;
A[3] 6;
Algoritmos e Linguagens Lucilia Ribeiro

45

09 Vetores e Matrizes

Leitura de dados e atribuio dos mesmos a um


vetor: para (i=1; i<=15; i++){
leia(A[i]);
}

Escrita (ou impresso) dos elementos de um


vetor: para (i=1;i<=8; i++){
escreva(B[i]);
}

Exemplo 1: Escreva um algoritmo que calcule a mdia aritmtica geral de uma classe com 10 alunos e imprima a mdia e a quantidade de notas acima da mdia calculada.
algoritmo mediaAritmetica {
inteiro NotaAcima;
real A, B, C, D, E, F, G, H, I, J, mediaNota;
notaAcima= 0;
faa {
escreva(Informe 10 notas: );
leia(A,B,C,D,E,F,G,H,I,J);

} enquanto ((A<0)ou(A>10)ou(B<0)ou(B>10)ou(C<0)ou(C>10)ou(D<0)
ou(D>10)ou(E<0)ou(E>10)ou(F<0)ou(F>10)ou(G<0)ou(G>1
0)ou(H<0)ou (H>10)ou(I<0)ou(I>10)ou(J<0)ou(J>10));
mediaNota= (A+B+C+D+E+F+G+H+I+J) / 10;
se (A > mediaNota) {
notaAcimanotaAcima + 1;
}
se (B > MediaNota){
notaAcimanotaAcima + 1;
}
se (C > MediaNota)
{notaAcimanotaAcima + 1;
}
se (D > MediaNota){
notaAcimanotaAcima + 1;
}
se (E > MediaNota)
{notaAcimanotaAcima + 1;
}
se (F > MediaNota){
notaAcimanotaAcima + 1;
}
se (G > MediaNota)
{notaAcimanotaAcima + 1;
}
se (H > MediaNota){
notaAcimanotaAcima + 1;
}
se (I > MediaNota)
{notaAcimanotaAcima + 1;
}
se (J > MediaNota){
notaAcimanotaAcima + 1;
}
escreva(A mdia de: , MediaNota);
escreva(Existem , NotaAcima, notas acima da media!);
}

Algoritmos e Linguagens Lucilia Ribeiro

46

09 Vetores e Matrizes

O algoritmo desenvolvido no exemplo anterior torna impraticvel para uma grande


quantidade de notas. Imagine que existissem 100 alunos na sala. Teramos que declarar
100 variveis diferentes, uma para cada nota.
Assim, muito mais coerente usar uma nica varivel que comporte vrios dados, ou
seja, um vetor armazenando cada nota em uma posio diferente do mesmo.
Para acessar cada posio do vetor usaremos uma varivel como ndice.
Assim, reescrevendo o exerccio anterior usando um vetor, teremos:

algoritmo outroExemplo {
real A[10], soma, medianota;
inteironotaAcima, i; notaAcima
= 0;
soma = 0;
para(i=1; i<=10; i++){
escreva(Informe a nota do aluno: , i, : );
leia(A[i]);
enquanto ((A[i] < 0) ou (A[i] > 10)){
soma= soma + A[i];
}
}
medianota = soma/10;
para(i=0; i<=10; i++) {
se (A[i] > medianota) {

notaAcima =notaAcima + 1;
}
}
escreva(A mdia de: , medianota);
escreva(Existem , notaAcima, notas acima da media!);
}
9.4

MATRIZES - Variveis Compostas Multidimensionais

Os vetores tm como caracterstica principal a necessidade de apenas um ndice para


endereamento. So estruturas UNIDIMENSIONAIS. Uma estrutura que precisa de mais
de um ndice denominada de Estrutura Composta Multidimensional (ou Matriz).
No caso da estrutura ter duas dimenses temos uma Estrutura Composta Bidimensional.
9.4.1 DECLARAO DE MATRIZES
tipo primitivo

identificador [linha, coluna];

ondelinha a quantidade de linhas que a matriz ter e coluna a quantidade de colunas. Veja o exemplo de uma matriz A 5 x 5:

Algoritmos e Linguagens Lucilia Ribeiro

47

09 Vetores e Matrizes

9.4.2 MANIPULAO DE MATRIZES

9.4.3 PERCORRENDO UMA MATRIZ BIDIMENSIONAL


Exemplo 2: Seja a matriz abaixo. Descobrir qual a linha da matriz A que possui
amaior quantidade de 0s.

algoritmo linhaZerada {
inteiro mat[6,5], i,j,maiorqtde,numlinha,qtdelinha;
maiorqtde = 0;
numLinha = 0;
para(i=0; i<=6; i++) {
para(j=0; j<=5; j++) {

escreva(Informe o elemento (, i , , j, ): );
leia(mat[i,j]);
}
}
para(i=0; i<=6; i++) {
para(j=0; j<=5; j++) {

escreva(mat[i,j], );
}
}
para(i=0; i<=6; i++) {

qtdelinha = 0;
para(i=0; i<=5; i++) {
se (mat[i,j] = 0) {

qtdeLinha = qtdeLinha + 1;
}
}
se (qtdeLinha > maiorqtde){
numlinha = i;
maiorqtde= qtdeLinha;
}
}
se (numlinha != 0) {
escreva(Linha com maior qtde de zeros : , numlinha);
escreva(Essa linha possui , maiorqtde, zeros. );
}

Algoritmos e Linguagens Lucilia Ribeiro

48

09 Vetores e Matrizes

senao {
escreva(Nenhuma linha da matriz possui zeros);
}
}
Exemplo 3: Seja a matriz do exemplo anterior. Descobrir qual a coluna da matriz
Aque possui a maior quantidade de 0s.
algoritmo colunaZerada {
inteiro Mat[6,5], i,j,maiorqtde,numcoluna,qtdecol;
maiorqtde = 0;
numcol = 0;
para(i=1; i<=6; i++){
para(j=1; j<=5; j++){

escreva(Informe o elemento (, i , , j, ): );
leia(Mat[i,j]);
}
}
para(i=1; i<=6; i++){
para(j=1; j<=5; j++){

escreva(Mat[i,j], );
}
}
para(j=1; j<=5; j++){ qtdecol
= 0;
para(i=1; i<=6; i++){
se (Mat[i,j] = 0) {

qtdecol = qtdecol + 1;
}
}
se (qtdecol > maiorqtde){
numcoluna = j;
maiorqtde= qtdecol;
}
}
se (numcoluna != 0) {
escreva(Coluna com maior qtde de zeros : , numcoluna);
escreva(Essa colunaa possui , maiorqtde, zeros. );

seno {
escreva(Nenhuma coluna da matriz possui zeros);
}
}
}
9.5

EXERCCIOS

66) Escreva um algoritmo que preencha um vetor de 100 elementos inteiros, colocando 0 na posio correspondente a um nmero par e 1 na posio correspondente a um
nmero mpar.
67) Escreva um algoritmo que alimente os dados de dois vetores inteiros de 20 posies, efetue as respectivas operaes indicadas por um outro vetor de 20 posies de
caracteres tambm fornecido pelo usurio, contendo as quatro operaes aritmticas em
qualquer combinao e armazenando os resultados em um terceiro vetor.
68) Sendo o vetor V descrito abaixo e as variveis X = 2 e Y = 4, escreva o valor correspondente s solicitaes
2
1

a) V[X+1]
f) V[X*2]
l) V[V[4]]

6
2

8
3

3
4

b) V[X+2]
g) V[X*3]
m)V[V[V[7]]]

Algoritmos e Linguagens Lucilia Ribeir

10
5

9
6

1
7

c) V[X+3]
h) V[V[X+Y]]
n) V[V[1] * V[4]]

21
8

33
9

d) V[X*4]
i) V[X+Y]
o) V[X+4]

14
10

e) V[X*1]
j) V[8-V[2]]

49

09 Vetores e Matrizes

69) Construa um algoritmo que efetue a leitura, a soma e a impresso do resultado


entre duas matrizes quadradas inteiras que comportem 25 elementos.
70) Dada uma matriz B de dimenso N x M (N<=20 e M<=20), calcule C = K * B,
sendo K um escalar fornecido pelo usurio. Imprima a matriz original (B) e a matriz resultante da multiplicao de B por K. Seu algoritmo deve pedir ao usurio para informar a
dimenso da matriz a ser digitada, considerando as restries para N e M definidas
anteriormente.
71) Escreva um algoritmo que leia uma matriz quadrada A de dimenso N x N (N<=20)
de valores inteiros, calcule e imprima a soma dos elementos da diagonal se-cundria.
Coloque os elementos da diagonal secundria em um vetor V. Seu algoritmo deve pedir ao
usurio para informar a dimenso da matriz a ser digitada, considerando a restrio para
N definida anteriormente.
72) Dada uma matriz A de dimenso N x M (N<=20 e M<=20), calcule sua transposta. Imprima a matriz original e a sua transposta. Seu algoritmo deve pedir ao usurio para
informar a dimenso da matriz a ser digitada, considerando as restries para N e M
definidas anteriormente.

-x-

Algoritmos e Linguagens Lucilia Ribeiro

50

10 Registros

10

Registros
Lembrana quando, mesmo sem autorizao,
seu pensamento reapresenta um captulo
(Mrio Quintana)

10.1

ESTRUTURA DE DADOS

Conforme j foi visto, as variveis compostas homogneas so os vetores e as matrizes, pois so constitudos de elementos do mesmo tipo de dado. Estruturas de dados
formadas por elementos de vrios tipos de dados, so chamadas de Variveis Compostas
Heterogneas.
10.2

REGISTROS

Registro um conjunto em que os elementos no so do mesmo tipo, ou seja, um


conjunto heterogneo de dados.
Exemplo 1: Passagem de nibus
Nmero:___________________ Fumante: ( ) Sim ( ) No
De: _______________________________Para: ____________________________
Data: ___/___/___ Horrio: ______________Poltrona: _____________________
Nome do passageiro: ______________________________Idade: ______________

A passagem de nibus formada pelas seguintes informaes de tipos diferentes:


-Nmero da passagem (inteiro)
-Fumante (logico)
-Origem e Destino (caracter)
-Data (caracter)
-Horrio (caracter)
-Poltrona (inteiro)
-Nome do passageiro (caracter)
-Idade (inteiro)
Essas informaes so chamadas de CAMPOS. Assim, um registro composto por
campos.
10.2.1 DECLARAO DE UM REGISTRO
Considerando o exemplo mencionado anteriormente:
registropassagem{
inteiro NPass, NPol, idade;
caracter origem, destino, data, horario, nome;
logico fumante;
}
10.2.2. MANIPULAO DE UM REGISTRO
leia(passagem.NPol);
escreva(passagem.fumante);
utilizado o ponto ( .) para separar o nome do registro do nome do campo.
10.2.3. REGISTRO DE CONJUNTOS

Algoritmos e Linguagens Lucilia Ribeiro

51

10 Registros

O registro mostrado anteriormente possui apenas campos de dados de tipos primitivos (inteiro, caracter, logico). Entretanto, possvel termos campos que so compostos
tambm.
Exemplo 2: Estoque
Nome:__________________________________________________
Cdigo:_______________ Preo:_____________________________
Baixa:

registro produto {
inteiro baixa[6], cod;
caracternome;
real

preco;

Modificando o exemplo anterior, fazendo com que o registro de estoque de um produto possa conter as baixas de 4 semanas (usando uma matriz para isso). Exemplo 3:
Nome:__________________________________________________
Cdigo:_______________ Preo:_____________________________
Baixa:
1

1
2
3
4

registro produto {
inteiro baixa[4,6],cod;
caracter nome;
real preco;
}

10.2.4. MANIPULAO DE REGISTRO DE CONJUNTOS


- Acessa quanto foi vendido no terceiro dia da quarta semana.:produto.baixa[4,3]
-.Imprime as baixas da segunda semana:
para (i=1; i<=6; i++) {
escreva(produto.baixa[2,i]);
}

- Totaliza, por dia da semana, todas as baixas do ms.


para(j=1; j<=6; j++) {
total= 0;
para(i=1; i>=4; i++) {
total = total + produto.baixa[i,j];
}
escreva("No dia ", j, " houve ", total, " baixas no ms");
}
10.2.5. CONJUNTO DE REGISTROS
Em vetores e matrizes usamos tipos de dados primitivos sendo elementos dessas estruturas. Entretanto, podemos usar como componentes dessa estrutura no apenas um
tipo primitivo, mas tambm os registros!
Algoritmos e Linguagens Lucilia Ribeiro

52

10 Registros

Exemplo 4: nibus de viagem com 44 lugares.


Suponha que quisssemos manter um registro de informaes relativas s passagens
de todos os lugares de um nibus.
Assim, usaramos um registro referente a cada poltrona (Passagem) e para agrupar
todos eles utilizaramos um conjunto desses registros.
Como o nibus tem 44 lugares, numerados sequencialmente de 1 a 44, pode- se, para uni-los, criar um vetor no qual cada posio um elemento do tipo registro (Passagem).
1
2
3
4
.
.
.
.
.
44

Nmero:___________________ Fumante: ( ) Sim ( ) No


De: _______________________________Para: ____________________________
Data: ___/___/___ Horrio: ______________Poltrona: _____________________
Nome do passageiro: ______________________________Idade: ______________

Exemplo:
registro passagem {
inteiro NPass, NPol, idade;
caracter origem, destino, data, horario, nome;
logico fumante;
}
passagem = onibus[44];

Exemplo 5: Declarar um conjunto de registro que comporte as informaes de estoque de 500 produtos. Considere as informaes mostradas no registro do Exemplo 3.
registro produto {
inteiro baixa[4,6],cod;
caracter nome;
real preco;
}

produto = estoque[500]
10.2.6 MANIPULAO DE CONJUNTO DE REGISTROS
- Acessa a baixa do dcimo produto, da terceira semana e do quarto dia da semana:
estoque[10].baixa[3,4]
- Imprime o total de movimentao do estoque para cada um dos 500 produtos:
para (n=1; n<=500; n++) {
Total = 0;
para(i=1; i<=4; i++) {
para(j=1; j<=6; j++) {

total = total + produtos[n].baixa[i,j];


}
}
escreva("Movimentao do produto ",estoque[n].nome,"foi ",total);
}

Algoritmos e Linguagens Lucilia Ribeiro

53

10 Registros

10.3

EXERCCIOS

73) Faa um algoritmo que realize o cadastro de contas bancrias com as seguintes
informaes: nmero da conta, nome do cliente e saldo. O banco permitir o cadastramento de apenas 15 contas e no pode haver mais de uma conta com o mesmo nmero.
Crie o menu de opes a seguir:
1. Cadastrar contas
2. Visualizar todas as contas de um determinado cliente
3. Excluir a conta com o menor saldo (no existem saldos iguais)
4. Sair do programa
74) Escreva um algoritmo para ler o cdigo, o sexo (M masculino; F feminino) e o
nmero de horas/aulas dadas no ms dos professores de uma escola, sabendo que um
professor ganha R$ 24,00 hora/aula e que a escola possui dez professores. Aps a leitura, mostre:
a) Uma listagem contendo o cdigo, o salrio bruto, o desconto e o salrio lquido de todos os professores;
b) A mdia aritmtica dos salrios brutos dos professores do sexo masculino;
c) O cdigo da professora que ganha o maior salrio bruto.
Os descontos so assim calculados:
Sexo
Masculino
Feminino

At 70 ha ao ms
10%
7%

Mais que 70 ha ao ms
8%
5%

-x-

Algoritmos e Linguagens Lucilia Ribeiro

54

11 Modularizao

11

Modularizao
Algumas questes no resolvidas, atolam-se em detalhes.
(Stanislaw Lem)

11.1

DECOMPOSIO

Um problema complexo pode ser simplificado quando dividido em vrios subproblemas. Para acompanhar essa abordagem, sero apresentados conceitos e tcnicas que
permitem a diviso de um algoritmo em mdulos.
A decomposio de um problema fator determinante para a reduo da complexidade. Lembremos que Complexidade sinnimo de Variedade, ou seja, a quantidade de
situaes diferentes que um problema pode apresentar. Assim, quando decompomos um
problema em subproblemas, estamos invariavelmente dividindo tambm a complexidade
e, por conseqncia, simplificando a resoluo. Outra grande vantagem da decomposio
que permite focalizar a ateno em um problema pequeno de cada vez, o que ao final
produzir uma melhor compreenso do todo.
Passos para orientar o processo de decomposio:
1.
2.
3.
4.

Dividir o problema em suas partes principais.


Analisar a diviso obtida para garantir coerncia.
Se alguma parte ainda permanecer complexa, decomp-la tambm.
Analisar o resultado para garantir entendimento e coerncia.

Esse processo de decomposio tambm conhecido como Refinamentos Sucessivos, porque se parte de um problema complexo e abrangente, que
sucessivamentedividido at resultar em problemas mais simples e especficos.
tcnica de Refinamentos Sucessivos tambm se d o nome de Top-Down, uma vez
que se parte de conceitos mais abrangentes (abstratos) at atingir o nvel de detalhamento desejado.
Tambm existe, apesar de menos difundida, uma tcnica exatamente inversa, conhecida por Bottom-Up. Consiste em partir dos conceitos mais detalhados e ir agrupando-os
sucessivamente em nveis mais abrangentes, at atingir o nvel de abstrao desejado.
O processo de compreenso frequentemente mais natural quando se usa a tcnica
Top-Down. Por exemplo, mais fcil compreender um automvel partindo-se do todo ato
ltimo parafuso do que do parafuso at o todo. Certamente existem excees. Por exemplo, mais fcil entender operaes aritmticas mais abstratas, como potenciao e
radiciao, se antes soubermos somar e subtrair.
11.2

MDULOS

Depois de decompor um problema complexo em subproblemas, podemos construir um


subalgoritmo ou mdulo para cada subproblema.
Um mdulo um grupo de comandos, constituindo um trecho de algoritmo, com uma
funo bem definida e o mais independente possvel em relao ao resto do algo-ritmo.
Assim sendo, ao se elaborar um algoritmo para calcular o salrio lquido de um empregado, tem-se as seguintes etapas:
Algoritmo
Leia os dados do funcionrio;
Determine o salrio;
Escreva o salrio;
Algoritmos e Linguagens Lucilia Ribeiro

55

11 Modularizao

Fim Algoritmo
O comando Determine o salrio pode ser refinado assim:
Ref. Determine o salrio
Calcule as vantagens;
Calcule as dedues;
SalarioLiquido
Vantagens Dedues;
Fim Ref.
Na elaborao do refinamento acima, no houve preocupao de como o processo de
clculo das vantagens e das dedues seria efetuado. Essas aes constituem funes bem
definidas no algoritmo e que sero executadas por mdulos especficos. Nesta fase do
projeto do algoritmo, pode-se, ento, optar pela elaborao de mdulos para o clculo das
vantagens e clculo das dedues. O mesmo refinamento ficaria ento:
Ref. Determine o salrio
Ative o mdulo Clculo das vantagens;
Ative o mdulo Clculo das dedues;
SalarioLiquido
Vantagens Dedues;
Fim Ref.
A verso final modularizada do algoritmo ficaria ento constituda do algoritmo seguinte, mais os mdulos:
Algoritmo
Leia os dados do funcionrio;
Ative o mdulo Clculo das vantagens;
Ative o mdulo Clculo das dedues;
SalarioLiquido
Vantagens Deducoes;
Escreva SalarioLiquido;
Fim Algoritmo
Mdulo {Clculo das vantagens}
SalarioBruto
NumHoras * SalarioHora;
SalarioFamilia
NumFilhos * ValorFilho;
Vantagens
SalarioBruto + SalarioFamilia;
Fim mdulo
Mdulo {Clculo das dedues}
Inss
SalarioBruto * 0,08;
Irpf
SalarioBruto * Taxa;
Deducoes
Inss + Irpf;
Fim mdulo
A experincia recomenda que os mdulos de um programa tenham tamanho limitado.
Mdulos muito grandes so difceis de ser compreendidos e, em geral, so multifuncionais. Um outro aspecto importante a possibilidade de cada mdulo poder definir as
prprias estruturas de dados, suficientes e necessrias apenas para atingir o objetivo final
do mdulo. Todo mdulo constitudo por uma seqncia de comandos que operam sobre
um conjunto de objetos, que podem ser globais ou locais.
Objetos globais so entidades que podem ser usadas em mdulos internos a
outrosmdulos do algoritmo onde foram declaradas. Objetos locais so entidades que s
po-dem ser usadas no mdulo do algoritmo onde foram declaradas. Estes objetos no possuem qualquer significado fora deste mdulo. So exemplos de objetos globais ou locais:
variveis, arquivos, outros mdulos, etc.
A deciso pela modularizao traz benefcios tais como:
a) a independncia do mdulo permite uma manuteno mais simples e evita efeitos
colaterais em outros pontos do algoritmo;
b) a elaborao do mdulo pode ser feita independentemente e em poca diferente do
restante do algoritmo;
c) testes e correes dos mdulos podem ser feitos em separado;
Algoritmos e Linguagens Lucilia Ribeiro

56

11 Modularizao

d) um mdulo independente pode ser utilizado em outros algoritmos que requeiram o


mesmo processamento por ele executado.
Dentre as ferramentas para modularizao podemos destacar as sub-rotinas e as
funes. Essas ferramentas so mdulos de programao que servem basicamente atrs
objetivos:
Evitar que uma certa seqncia de comandos necessria em vrios locais de um
algoritmo tenha que ser escrita repetidamente nestes locais;
Dividir e estruturar um algoritmo em partes fechadas e logicamente coerentes
Aumentar a legibilidade de um algoritmo.
Sub-rotinas e funes so mdulos hierarquicamente subordinados a um algoritmo,
comumente chamado de mdulo principal. Da mesma forma, uma sub-rotina ou uma
funo pode conter outras sub-rotinas e funes aninhadas, como pode ser visto no diagrama hierrquico a seguir:
MP

S1

S3

S2

F3

F1

F2

S4

F4

Essa figura ilustra um algoritmo constitudo de um mdulo principal MP, as sub-rotinas


S1, S2, S3 e S4 e as funes F1, F2, F3 e F4. A notao algoritmica fica da se-guinte
forma:
Algoritmo
Void S1
Void S3
C1;
C2;
Fim Subrotina;
Funo F3
C3;
Fim Funo;
Fim Subrotina;
Void S2
C4;
C5;
Fim Subrotina;
Funo F1
C6;
Fim Funo;
Funo F2
Void S4
C7;
C8;
Fim Subrotina;
Funo F4
C9;
Fim Funo;
Fim Funo;
Fim Algoritmo.
Tendo em vista os conceitos de objeto local e global, a funo F3, declarada dentro da
sub-rotina S1 conhecida apenas em S1. Entretanto, a sub-rotina S2, declarada den-tro
do mdulo principal, conhecida em todo o algoritmo e pode ser ativada dentro de S1.
A declarao de uma sub-rotina ou funo constituda de um cabealho e de um
corpo. O cabealho, que identifica a sub-rotina ou funo, contm o seu nome e a lista
Algoritmos e Linguagens Lucilia Ribeiro

57

11 Modularizao

de parmetros formais. O corpo contm declaraes locais e os comandos da sub-rotina


ou funo. A ativao feita atravs da referncia a seu nome e a indicao dos parmetros atuais.
11.3

SUB-ROTINA

Uma sub-rotina declarada conforme a seguir, onde subrotina uma palavra chave,
NOME o nome dado sub-rotina e lista de parmetros formais a lista de objetosque
sero substitudos por outros objetos, fornecidos quando da chamada da sub-rotina.
Subrotina NOME(lista-de-parmetros-formais)
Declaraes dos objetos locais sub-rotina;
Comandos da sub-rotina;
Fim Subrotina;
A chamada de uma sub-rotina feita com uma referncia a seu nome e a indicao
dos parmetros reais no local do algoritmo onde a sub-rotina deve ser ativada, ou seja,
onde a sua execuo deve ser iniciada. A forma geral para o comando de ativao de uma
sub-rotina mostrada a seguir, onde NOME o nome dado sub-rotina, e lista
deparmetros reais a lista de objetos que substituiro os parmetros formais durante
aexecuo da sub-rotina. Os parmetros reais devem concordar em nmero, ordem e tipo
com os parmetros formais.
NOME(lista-de-parmetros-reais);
Ao terminar a execuo dos comandos de uma sub-rotina, o fluxo de controle retorna
ao comando seguinte quele que provocou a chamada. Desta maneira, a execuo de uma
sub-rotina se constitui de uma transferncia temporria da execuo do mdulo chamador
para a sub-rotina, retornando depois ao algoritmo que a chamou.
Exemplo 1: Dados trs valores distintos, coloca-los em ordem crescente.
Algoritmo ordemCrescente{
inteiro aux,n1,n2,n3;
leia (n1,n2,n3);
se ((n1 > n2) ou (n1 > n3)){
se (n2 < n3){

aux = n1;
n1 = n2;
n2 = aux;
}
senao {
aux = 1;
n1 = n3;
n3 = aux;
}
}
se (n2 > n3){

aux=
n2;
n2 = n3;
n3 = aux;
}
escreva (n1, n2, n3);
}
Observe que h repetio de um grupo de comandos que diferem entre si devido s
variveis utilizadas:
aux=
n1;
n1 = n2;
n2 = aux;
Algoritmos e Linguagens Lucilia Ribeiro

58

11 Modularizao

aux=
n1;
n1 = n3;
n3 = aux;
aux=
n2;
n2 = n3;
n3 = aux;
Todas estas repeties tm por objetivo a troca de valores de 2 variveis, podendo
ser substitudas por uma nica sub-rotina:
Algoritmo ordemCrescente {
Void TROCA(inteiro a, inteiro b)
inteiro aux;
aux= a;
a = b;
b = aux;
}
inteiro n1,n2,n3;
leia (n1,n2,n3);

se((n1 > n2) ou (n1 > n3)){


se (n2 < n3){

TROCA(n1, n2);
seno {
TROCA(n1, n3);
}
}
}
se (n2 > n3) {

TROCA(n2, n3);
}
escreva (n1, n2, n3);
}
Cada vez que a sub-rotina TROCA for ativada, os comandos dentro dela so executados tendo em vista os valores contidos nos parmetros atuais e, em seguida, a seqncia
do algoritmo retorna ao comando imediatamente seguinte ao da ativao.
A vinculao entre mdulos pode ser feita atravs da transferncia ou passagem de
parmetros, que associam parmetros reais com os parmetros formais. Dentre os modos de transferncia de parmetros, pode-se destacar a passagem por valor e por referncia.
11.3.1 PASSAGEM DE PARMETROS POR VALOR
A passagem de parmetro por valor caracteriza-se pela no alterao do valor do parmetro real quando o parmetro formal manipulado dentro da sub-rotina. Assim sendo, o valor passado pelo parmetro real copiado para o parmetro formal, que no caso
assume o papel de varivel local da sub-rotina. Desta forma, qualquer modificao que
ocorra na varivel local da sub-rotina no afetar o valor do parmetro real correspondente, ou seja, o processamento executado somente dentro da sub-rotina, ficando o
resultado obtido preso na sub-rotina. Como exemplo considere o exemplo a seguir:
Exemplo 2: Clculo do fatorial de um nmero
Algoritmo Fatorial{
void FATORIAL(inteiro 10){
inteiroi, fat;
fat= 1;
para(i=1; i<=10; i++){
fat= fat * i;
}
Algoritmos e Linguagens Lucilia
Ribeiro

59

11 Modularizao

escreva (fat);
}
inteiro limite;
escreva(Qual fatorial: );
leia (limite);
FATORIAL (limite);
}

Neste exemplo, indicado o uso da passagem de parmetro por valor. No caso, a varivel n o parmetro formal, que receber o valor fornecido varivel limite por meio
da sub-rotina FATORIAL. Esse valor estabelece o nmero de vezes que o looping deve ser
executado. Dentro do procedimento encontrado a varivel fat que ir realizar um efeito
de acumulador, tendo ao final do looping o valor da fatorial do valor informado para o
parmetro n. Ao trmino do looping, a instruo escreva(fat) imprime o valor da varivel fat, que somente vlida dentro da sub-rotina e por esta razo ficar preso dentro
da mesma. A passagem de parmetro por valor utilizada somente para a entrada de um
determinado valor.
11.3.2 PASSAGEM DE PARMETROS POR REFERNCIA
Ao utilizar a passagem de parmetros por referncia, eles devero ser indicados no
s no incio da sub-rotina, mas tambm junto do programa principal, uma vez que este
tipo de parmetro devolve para o mdulo principal do programa um resultado.
Exemplo 3: Clculo do fatorial de um nmero
Algoritmo Fatorial {
void FATORIAL(inteiro 10, fat){
inteiro i;
fat= 1;
para(i=1; i<=10; i++){
fat = fat * i;
}
}
inteiro limite, retorne;
escreva(Qual fatorial: );
leia (limite);
FATORIAL (limite,retorne);
escreva (retorne);

}
Neste exemplo, indicado o uso da passagem de parmetro por referncia (varivel
fat por meio do smbolo *). A varivel n neste exemplo continua sendo do tipo passagemde
parmetro por valor, pois ela receber o valor fornecido varivel limite, por meio da
sub-rotina FATORIAL. Esse valor estabelece o nmero de vezes que o looping deve ser
executado. Dentro do procedimento encontrada a varivel fat que do tipo passagem
de parmetro por referncia e possui no final o valor acumulado do clculo da fatorial. Ao
trmino do looping, o valor da varivel fat transferido para fora da rotina, ou seja,
transferido para a varivel retorne do programa principal. Ento, a instruo escreva(retorne) imprime o valor recebido de dentro da sub-rotina por meio da varivel fat.
Apassagem de parmetro por referncia utilizada para que se tenha a sada de um determinado valor de dentro de uma sub-rotina.
11.4

FUNO

As funes, embora bastante semelhantes s sub-rotinas, tm a caracterstica especial de retornar ao algoritmo que as chamou um valor associado ao nome da funo. Esta
caracterstica permite uma analogia com o conceito de funo matemtica.
A declarao de uma funo idntica de uma sub-rotina, com exceo de que
necessrio o seu tipo, ou seja, o tipo do valor que ser retornado. Alm de numricas, as
funes podem ser lgicas ou literais. No formato abaixo, funo uma palavra chave,
tipo o tipo do valor que ser retornado, NOME o nome dado funo e lista de paAlgoritmos e Linguagens Lucilia Ribeiro

60

11 Modularizao

rmetros formais a lista dos objetos que sero substitudos por outros objetos, fornecidos quando da chamada da funo.
Funo tipo NOME(lista-de-parmetros-formais)
Declaraes dos objetos locais funo;
Comandos da funo;
Fim Funo
A chamada de uma funo feita com uma referncia a seu nome e a indicao dos
parmetros reais em uma expresso. A seguir, apresenta-se a forma geral para a ativao da funo, onde NOME o nome dado funo, e lista de parmetros reais a
lista de objetos que substituiro os parmetros formais durante a execuo da funo. Os
parmetros reais devem concordar em nmero, ordem e tipo com os parmetros for-mais.
NOME(lista-de-parmetros-reais);
O fluxo de controle desviado para a funo, no momento em que ela ativada. Ao
terminar a execuo dos comandos da funo, o fluxo de controle retorna ao comando
seguinte quele onde ela foi ativada. So vlidas aqui as consideraes j feitas sobre
passagem de parmetros.
Exemplo 4: Escrever um algoritmo que retorne o valor da soma dos nmeros a e b.
Algoritmo calculo_Soma {
funcao real SOMA(real a, real b)
SOMA = a + b;
}
real n1, n2;
escreva(Informe o primeiro nmero: );
leia (n1);
escreva(Informe o segundo nmero: );
leia (n2);
escreva (A soma dos nmeros : , SOMA(n1,n2));
}
Exemplo 5: Escrever um algoritmo que apresente uma mensagem informando sedois
nmeros so iguais ou diferentes
Algoritmo Comparao{
funcao logica COMPARA(inteiro a, inteiro b){
COMPARA
a = b;
}
inteiro n1, n2;
escreva(Informe o primeiro nmero: );
leia (n1);
escreva(Informe o segundo nmero: );
leia (n2);
se (COMPARA(n1,n2){

escreva (Nmeros Iguais)


seno{
escreva (Nmeros Diferentes);
}
}
}
Exemplo 6: Criar uma funo que efetue o clculo, segundo o parmetro de operao fornecido. Assim, essa funo dever receber trs parmetros, sendo os dois nmeros mais o operador para clculo. Se for +, soma os nmeros, se for -, subtrai, se for
*, multiplica e se o operador for /, divide os valores.

Algoritmos e Linguagens Lucilia Ribeiro

61

11 Modularizao

Algoritmo Calculadora{
void ENTRADA{
escreva(Informe o primeiro nmero: );
leia (a);
escreva(Informe o segundo nmero: );
leia (b);
}
Funcao real CALCULO(real a,
escolha (op){
caso +: CALCULO = a
caso -: CALCULO = a
caso *: CALCULO = a
caso /: CALCULO = a

real b, caracter op){


+ b;
- b;
* b;
/ b;

}
}

voida SAIDA{
escreva(O resultado : ,r);
}
void SOMA{
escreva(Soma);
ENTRADA;

CALCULO(a, b, +);
SAIDA;
}
void SUBTRAI{
escreva(Subtrao);
ENTRADA;

CALCULO (a, b, -);


SADA;
}
Void MULTIPLICA
escreva(Multiplicao);
ENTRADA;

r CALCULO(a, b, *);
SADA;
}
Void DIVIDE
escreva(Diviso);
ENTRADA;

CALCULO(a, b, /);
SADA;
}
real r, a, b;
inteiro opcao;
opo = 0;
enquanto (opo != 5){
escreva(1 Soma);
escreva(2 Subtrai);
escreva(3 Multiplica);
escreva(4 Divide);
escreva(5 Sai do rograma);
leia(opcao);
se (opcao != 5){
escolha(opo){
Algoritmos e Linguagens Lucilia Ribeiro

62

11 Modularizao

caso
caso
caso
caso

1:
2:
3:
4:

SOMA;
SUBTRAI;
MULTIPLICA;
DIVIDE;

caso contrrio: escreva (Opo Invlida);


}
}
}

}
11.5

EXERCCIOS

75) Faa uma funo que retorne 1 se o nmero digitado for positivo ou 0 se o nmero for negativo.
76) Faa uma funo que receba dois nmeros positivos por parmetro e retorne a
soma dos N nmeros inteiros existentes entre eles.
77) Faa uma funo que receba trs nmeros inteiros: a, b e c, onde a maior que
1. A funo deve somar todos os inteiros entre b e c que sejam divisveis por a (inclusive
b e c) e retornar o resultado para a funo principal.
78) Faa uma funo que transforme e mostre segundos em horas, minutos e segundos. Todas as variveis devem ser passadas como parmetro, no havendo variveis
globais.
79) Faa uma funo que receba como parmetro um inteiro no intervalo de 1 a 9 e
mostre a seguinte tabela de multiplicao (no exemplo, n = 9):
1
2
3
4
5
6
7
8
9

4
6
8
10
12
14
16
18

9
12
15
18
21
24
27

16
20
24
28
32
36

25
30
35
40
45

36
42
48
54

49
56
63

64
72 81

80) Faa uma sub-rotina que receba as 3 notas de um aluno como parmetros e uma
letra. Se a letra for A o procedimento calcula a mdia aritmtica das notas do aluno, se for
P o procedimento calcula a mdia ponderada com pesos 5, 3 e 2. A mdia calculada deve
ser devolvida ao programa principal para, ento, ser mostrada.
81) Faa uma sub-rotina que receba, por parmetro, a hora de incio e a hora de trmino de um jogo, ambas subdivididas em dois valores distintos: horas e minutos. O procedimento deve retornar a durao expressa em minutos, considerando que o tempo
mximo de durao de um jogo de 24 horas e que o jogo pode comear em um dia e
terminar no outro.
82) Faa uma sub-rotina que leia cinco valores inteiros e retorne o maior e o menor
deles.
83) Faa uma funo que receba, por parmetro, uma matriz A[5,5] e retorne a so-ma
dos seus elementos.

-xAlgoritmos e Linguagens Lucilia Ribeiro

63

Listas de Exerccios

Algoritmos e Linguagens Lucilia Ribeiro

64

LISTA 1: LGICA
01.Com as informaes a seguir, determine a extenso, a altura, a quantidade de operrios e o ms previsto para o trmino da construo de cinco novos viadutos em uma
grande cidade:
a) O viaduto mais curto no tem uma altura de 160 metros.
b) A ponte cuja construo est prevista para terminar em janeiro e na qual trabalham 2850 operrios no ter uma extenso de 1900 metros, mas ter uma altura de 130 ou 160 metros.
c) Os 2800 operrios no trabalham na obra de um viaduto com 140 metros de altura.
d) O viaduto que ficar pronto em abril 300 metros mais extenso do que o mais alto entre os cinco viadutos em construo.
e) A ponte de 1600 metros, na qual trabalham 2750 operrios, no ficar pronta em
fevereiro nem em maio.
f) O viaduto cuja construo est prevista para terminar em maro ser mais alto do
que aquele de 1900 metros de extenso, porm ser mais baixo do que aquele que
est sendo construdo por 2900 trabalhadores.
g) O viaduto em cuja construo trabalham 2700 operrios no ser inaugurado em
fevereiro e no ser o mais longo de todos.
h) A ponte de 1600 metros no ter uma altura de 160 metros.

2. Cinco moradores de condomnios diferentes sofreram durante algum tempo com o


barulho de uma obra realizada perto de seus locais de moradia. Descubra a quantidade de
prdios de cada condomnio, a distncia da obra e a durao do inconveniente baru-lho:
a) A obra que tanto incomodou Alberto durou 3 meses a mais ou a menos do que a
obra mais distante.
b) A obra realizada mais rapidamente tinha uma distncia 50 metros menor do que
aquela realizada no condomnio em que mora Mariana e 100 metros maior do que
os barulhentos trabalhos que duraram 4 meses.
c) Beatriz tinha que aumentar constantemente o volume da televiso em funo de
uma obra 150 metros mais longe ou mais perto do que aquela realizada no condomnio com 10 prdios.
d) O barulho ouvido por Lcia, que no mora em um condomnio com 10 nem com 17
prdios, durou 2 meses a mais do que o barulho que tirou o sossego daque-le(a)
que reside em um condomnio de 12 edifcios e um ms a menos do que o barulho
vindo de uma obra 250 metros distante de uma das residncias.
e) A obra realizada no condomnio com 14 edifcios era mais distante do que a obra
suportada por Cludio e menos distante do que aquela que durou 6 meses.

Algoritmos e Linguagens Lucilia Ribeiro

65

LISTA 2: ESTRUTURASEQENCIAL
01. Faa um algoritmo que escreva seu nome, endereo e seu time favorito.
02. Faa um algoritmo que leia trs nmeros, calcule e escreva a multiplicao dos trs.
03. Faa um algoritmo que leia a idade do pai e a idade do filho, calcule e escreva
adiferena de idade dos dois.

04. Faa um algoritmo que dado um nmero inteiro de 3 algarismos, inverter a ordemde
seus algarismos e mostrar o novo nmero formado. Considere que os trs algarismos
sejam diferentes de zero.

05. Faa um algoritmo que leia as medidas de um retngulo (comprimento e


largura),calcule e escreva sua rea.

06. Joo faz economias em dlar e deseja saber quanto vale em reais, faa um algoritmo que leia a quantidade de dlares que ele possui e o valor atual do dlar, calcule e
escreva o valor convertido.

07. Uma pessoa construindo sua residncia resolveu colocar em sua casa uma caixapara
servir como reservatrio de gua. Considerando que a caixa seja retangular, faa um
algoritmo que leia as dimenses da caixa (comprimento, altura e largura), calcule e escreva
o volume de gua que pode ser armazenado.

08. O critrio de notas semestrais numa faculdade consiste em dois bimestres, sendoque,
cada nota varia de 0 a 10 e tem os respectivos pesos 4 e 6. Elabore um algoritmo que leia
as notas bimestrais, calcule e escreva a media semestral.

9. Um canal de notcias internacionais, previa temperatura mxima para Braslia de 85


graus Farenheit. Escrever um programa que lhe permita converter esta temperatura (e
qualquer outra) para graus Celsius, sabendo que a relao entre elas C=5/9*(F32).
10. A conta de gua de uma residncia o resultado da soma da tarifa de gua com a
tarifa de esgoto. Faa um algoritmo que leia a tarifa de gua, calcule a tarifa de esgoto
(80% da tarifa de gua) e escreva o valor da conta a ser paga.
11. O valor do ICMS pago na venda de um produto de 12%. Faa um algoritmo que leia
o valor do produto vendido, calcule e escreva o ICMS pago.
12. Maria e Jos resolveram abrir uma poupana conjunta, os dois tm economias
guardadas, faa um algoritmo que leia o valor da economia de cada um, calcule e escreva a porcentagem de participao de cada scio.
13. Luciana distribui sua renda mensal da seguinte forma: 10% sade, 25% educao,
30% alimentao, 10% vesturio; 5% lazer, 20% outros. Faa um algoritmo que leia a
renda mensal liquida de Luciana, calcule e escreva o valor aplicado em cada item acima
citado.
14. Faa um algoritmo que leia quantos minutos por dia uma pessoa pode estudar Algoritmos, calcule e escreva ao final de 90 dias quanto tempo em horas ela estudou.

Algoritmos e Linguagens Lucilia Ribeiro

66

15. Faa um algoritmo que leia a distncia em centmetros entre duas Universidades,
calcule e escreva a distncia em KM.
16. Faa um algoritmo que leia o salrio mensal de um funcionrio e o percentual de
reajuste a ser aplicado. Calcule e escreva o valor do novo salrio.
17. Uma instituio de ensino realizou uma pesquisa sobre os eleitores de um municpio
que participaram da ultima eleio. Faa um algoritmo que leia o total de votos brancos,
nulos e vlidos. Calcule e escreva o percentual que cada um representa em relao ao total
de eleitores.
18. Efetuar o clculo da quantidade de litros de combustvel gastos em uma viagem,
sabendo-se que o carro faz 12 Km com um litro. Devero ser fornecidos o tempo gasto na
viagem e a velocidade mdia. Utilizar as seguintes frmulas:
Distncia = Tempo x Velocidade
Litros Usados = Distncia / 12

O algoritmo dever apresentar os valores da velocidade mdia, tempo gasto na viagem,


distncia percorrida e a quantidade de litros utilizados na viagem.

19. Criar um algoritmo que leia o peso de uma pessoa, s a parte inteira, calcular e imprimir:
a) o peso da pessoa em gramas
b) novo peso, em gramas, se a pessoa engordar 12%
20. Criar um algoritmo que leia um nmero entre 0 e 60 e imprimir o seu sucessor, sabendo que o sucessor de 60 0. No pode ser utilizado nenhum comando de seleo e
nem de repetio.
21. Faa um algoritmo que dado um nmero inteiro que representa um nmero binrio
de cinco dgitos, determinar o seu equivalente decimal.

Algoritmos e Linguagens Lucilia Ribeiro

67

LISTA 3: ESTRUTURACONDICIONAL
01. Escreva um programa que verifique a igualdade de dois nmeros inteiros e informeao
usurio se os nmeros so ou no iguais.

02. Escreva um programa que receba como entrada trs nmeros inteiros, realize
suasoma, verifique se essa soma maior ou igual a 100 e informe ao usurio o valor da
so-ma e se a soma maior ou igual a 100 ou se menor do que 100.

03. Implemente um programa que receba como dados de entrada as quatro notas deum

aluno, calcule e imprima a mdia aritmtica das notas. O programa deve informar ao
usurio as seguintes mensagens: Aluno Aprovado para mdia superior ou igual a 7,0 ou
Aluno Reprovado para mdia inferior a 7,0.

04. Uma empresa resolve dar um aumento de 30% aos funcionrios que recebem

umsalrio inferior a R$ 500,00. Implemente um programa que receba como dado de


entrada o salrio de um funcionrio e imprima o valor do salrio reajustado, caso o
funcionrio tenha direito ao aumento. Se o funcionrio no tiver direito ao aumento,
informe isso atravs de uma mensagem.

05. Implemente um programa que verifique a validade de uma senha fornecida

pelousurio. A senha 1234567. O programa deve imprimir uma mensagem de permisso


ou de negao de acesso.

06. Implemente um programa que receba dois nmeros e imprima o menor deles.
07. Implemente um programa que receba a altura e o sexo de uma pessoa, calcule
eimprima o seu peso ideal, usando as seguintes frmulas:
homens: (72.7 * altura) - 58
mulheres: (62.1 * altura) - 44.7

8. Em uma determinada disciplina, a nota final do estudante calculada a partir de 3


notas atribudas a um trabalho, a um teste em laboratrio e a uma prova escrita em sala
de aula, respectivamente. As notas variam de 0 a 10 e a nota final a mdia ponderada
das 3 notas anteriormente citadas. A seguir so apresentados os pesos das notas:
Trabalho: peso 2
Teste em laboratrio: peso 2
Prova escrita em sala de aula: peso 6
Sabendo que foram dadas 64 aulas, implemente um programa que receba as 3 notas do
estudante e o nmero de faltas, calcule e imprima a mdia final e uma mensagem de
acordo com a seguinte regra:
Se o nmero de faltas for superior a 25% das aulas dadas, REPROVADO POR FALTA
Se o nmero de faltas for inferior ou igual a 25% das aulas dadas e a mdia final for
igual ou superior a 7,0: ALUNO APROVADO
Se o nmero de faltas for inferior ou igual a 25% das aulas dadas e a mdia final for
inferior a 7,0 mas superior ou igual a 5,0: PROVA FINAL
Se a mdia final for inferior a 5,0: ALUNO REPROVADO
09. Implemente um programa que receba a idade de uma pessoa e imprima
mensagemde acordo com os critrios:
Menor de 16 anos:MENOR
Entre 16 e 18 anos: EMANCIPADO
Maior de 18 anos: MAIOR

Algoritmos e Linguagens Lucilia Ribeiro

68

10. Implemente um programa que receba como entrada o salrio de um funcionrio da


empresa e imprima o salrio reajustado de acordo com as seguintes regras:
salrios at R$ 300,00, reajuste de 50%;
salrios maiores que R$ 300,00, reajuste de 30%.
11. Fazer um programa que leia trs valores inteiros, determine e imprima o menor de-

les.

12. Dados trs valores, X, Y, Z, verificar se eles podem ser os comprimentos dos lados
de um tringulo e, se forem, verificar se um tringulo eqiltero, issceles ou escaleno.
Se eles no formarem um tringulo, escrever uma mensagem.
Propriedade: o comprimento de cada lado de um tringulo menor que a soma dos
comprimentos dos outros dois lados
Eqiltero: trs lados iguais
Issceles: dois lados iguais
Escaleno: trs lados diferentes

13. Dados trs valores inteiros distintos, coloca-los em ordem crescente.


14. Desenvolva um programa que determine se um cliente de um banco excedeu o limite de crdito de sua conta. Os seguintes dados de cada cliente so solicitados:
Nmero da conta
Limite do Crdito
Saldo no incio do ms
Total de depsitos

Total de retiradas
O programa deve receber esses dados, calcular o novo saldo (= saldo inicial + total de
depsitos total de retiradas) e determinar se o novo saldo (caso negativo), supera o
limite de crdito do cliente. Se superar, imprimir o nmero da conta do cliente, e uma
mensagem indicando: CRDITO EXCEDIDO EM tantos reais.

15. Uma grande companhia qumica paga seus vendedores por comisso. Os vendedores recebem R$ 200,00 por semana mais 9 por cento de suas vendas brutas naquela semana. Por exemplo, um vendedor que vender o equivalente a R$ 500,00 em produtos em
uma semana recebe R$ 200,00 mais 9 por cento de R$ 500,00, ou um total de R$ 745,00.
Se por acaso, as vendas ultrapassarem R$ 1000,00, o vendedor recebe um pr-mio de R$
800,00. Desenvolva um programa que receba as vendas brutas de um vende-dor na ltima
semana, calcule seu salrio e o exiba.
16. Desenvolva um programa que determine o pagamento bruto de um empregado. A
companhia paga o valor de uma hora normal pelas primeiras 40 horas trabalhadas e
paga o valor de uma hora extra (uma vez e meia a hora normal) para cada hora trabalhada depois de completadas as primeiras 40 horas. Solicite o nmero de horas trabalhadas, o valor da hora normal do trabalhador e exiba o pagamento bruto do funcionrio.
17. Um palndromo um nmero que lido da mesma forma tanto da direita para a
esquerda como da esquerda para a direita. Por exemplo, cada um dos inteiros seguintes,
de cinco dgitos, palndromo: 12321, 55555, 45554 e 11611. Escreva um programa que
leia um nmero de cinco dgitos e determine se ele e palndromo ou no. (Sugesto: use
os operadores diviso e resto para separa o nmero em seus algarismos isolados)
18. Uma empresa deseja transmitir dados atravs do telefone, mas existe a preocupao de que seus telefones possam estar grampeados. Todos os seus dados so transmitiAlgoritmos e Linguagens Lucilia Ribeiro

69

dos como inteiros de quatro dgitos. A empresa pediu a voc que escrevesse um programa para criptografar os dados de forma que eles possam ser transmitidos com mais segurana. Seu programa deve ler um inteiro de quatro dgitos e criptograf-lo da seguinte
maneira: substitua cada dgito pelo resultado da expresso ((soma daquele dgito com7)
% 10) (ou seja, o resto da diviso por 10 do nmero obtido pela soma daquele dgitocom
7). Depois, troque o primeiro dgito pelo terceiro e troque o segundo dgito pelo quarto. A
seguir, imprima o inteiro criptografado.

19. Faa um programa que pea um nmero ao usurio e imprima se o nmero par ou
mpar.
20. A prefeitura de Aparecida de Goinia abriu uma linha de crdito para os funcionrios
estatutrios. O valor mximo da prestao no poder ultrapassar 30% do salrio bruto.
Fazer um algoritmo que permita entrar com o salrio bruto e o valor da prestao e informar se o emprstimo pode ou no ser concedido.

Algoritmos e Linguagens Lucilia Ribeiro

70

LISTA 4: SELEO DEMLTIPLAESCOLHA


01. O prefeito do Rio de Janeiro contratou uma firma especializada para manter os n-veis
de poluio considerados ideais para um pas do 1 mundo. As indstrias, maiores
responsveis pela poluio, foram classificadas em trs grupos. Sabendo-se que a escala
utilizada varia de 0,05 e que o ndice de poluio aceitvel at 0,25, fazer um algoritmo
que possa imprimir intimaes de acordo com o ndice e a tabela a seguir:
ndice
indstrias que recebero intimao
0,3
1 grupo
0,4
1 e 2 grupo
0,5
1, 2 e 3 grupos

02. Faa um algoritmo que leia um nmero que represente um determinado ms doano.

Aps a leitura escreva por extenso qual o ms lido. Caso o nmero digitado no esteja na
faixa de 1..12 escreva uma mensagem informando o usurio do erro de digita-o.

03. Faa um algoritmo que leia um nmero qualquer. Caso o nmero seja par menorque

10, escreva Nmero par menor que Dez; caso o nmero digitado seja mpar menor que
10, escreva Nmero mpar menor que Dez; caso contrrio escreva Nmero fora do
Intervalo.

04. Uma empresa ir dar aumento de salrio aos seus funcionrios de acordo com
acategoria de cada empregado. O aumento seguir as seguintes regras:
a) Funcionrios das categorias A, C, F e H recebero 10% de aumento.
b) Funcionrios das categorias B, D, E, I, J e T recebero 15% de aumento.
c) Funcionrios das categorias K e R recebero 25% de aumento.
d) Funcionrios das categorias L, M, N, O, P, Q, R e S recebero 35% de aumento.
e) Funcionrios das categorias U, V, X, Y, W e Z recebero 50% de aumento. Faa
um algoritmo que leia o nome, a categoria e o salrio do funcionrio e mostre o salrio
reajustado.

5. Elabore um algoritmo que calcule o que deve ser pago por um produto, considerando o preo normal de etiqueta e a escolha da condio de pagamento. Use os cdigos da
tabela a seguir para ler qual a condio de pagamento escolhida e efetuar o clculo adequado.
Cdigo
1
2
3
4

Condio de Pagamento
vista em dinheiro ou cheque, recebe 10% de desconto
vista no carto de crdito, recebe 5% de desconto
Em duas vezes, preo normal de etiqueta sem juros
Em trs vezes, preo normal de etiqueta mais juros de 10%

Algoritmos e Linguagens Lucilia Ribeiro

71

LISTA 5: REVISO
01. O nmero 3025 possui a seguinte caracterstica mostrada abaixo. Fazer um programa que leia um nmero inteiro de quatro dgitos e diga se tal nmero possui ou no tal
caracterstica
30 + 25 = 55
55 = 3025

02. Numa certa loja de eletrodomsticos, o funcionrio encarregado da seo de televi-

sores recebe, mensalmente, um salrio fixo mais comisso. Essa comisso calculada em
relao ao tipo e ao nmero de televisores vendidos por ms, obedecendo tabela abaixo:
TIPO
a cores
preto e
branco

N DE TELEVISORES VENDIDOS
maior ou igual a 10
menor do que 10
maior ou igual a 20
menor do que 20

COMISSES
R$ 50,00 por televisor vendido
R$ 5,00 por televisor vendido
R$ 20,00 por televisor vendido
R$ 2,00 por televisor vendido

Sabe-se, ainda, que ele tem um desconto de 8% sobre seu salrio fixo para o INSS. Se o
seu salrio total (fixo + comisses INSS) for maior ou igual a R$ 500,00 ele ainda ter
um desconto de 15%, sobre esse salrio total, relativo ao imposto de renda retido na fonte.
Faa um programa que leia o valor do salrio fixo, o nmero de televisores a cores e o
nmero de televisores preto e branco vendidos; calcule e escreva o seu salrio lqui-do.

3.

Numa fbrica trabalham homens e mulheres divididos em trs classes:


A os que fazem at 30 peas por ms;
B os que fazem de 31 a 35 peas por ms; C
os que fazem mais de 35 peas por ms.

A classe A recebe salrio-mnimo. A classe B recebe salrio-mnimo e mais 3% do sal-riomnimo por pea, acima das 30 iniciais. A classe C recebe salrio-mnimo e mais 5% do
salrio-mnimo por pea acima das 30 iniciais.
Fazer um programa que leia o nmero de peas fabricadas no ms, e calcule e escreva o
salrio do operrio. Considere o salrio mnimo como uma constante no valor de R$ 240,00.

04. Uma grande companhia qumica paga seus vendedores por comisso. Os vendedores recebem R$ 200,00 por semana mais 9 por cento de suas vendas brutas naquela semana. Por exemplo, um vendedor que vender o equivalente a R$ 500,00 em produtos em
uma semana recebe R$ 200,00 mais 9 por cento de R$ 500,00, ou um total de R$ 245,00.
Se por acaso, as vendas ultrapassarem R$ 1.000,00, o vendedor recebe um prmio de R$
800,00. Desenvolva um programa em Pascal que receba as vendas brutas de um vendedor
na ltima semana, calcule seu salrio e o exiba.

05. Uma empresa deseja transmitir dados atravs do telefone, mas existe a preocupao de que seus telefones possam estar grampeados. Todos os seus dados so transmitidos como inteiros de quatro dgitos. A empresa pediu a voc que escrevesse um programa para criptografar os dados de forma que eles possam ser transmitidos com mais segurana. Seu programa deve ler um inteiro de quatro dgitos e criptograf-lo da seguinte
maneira: substitua cada dgito pelo resultado da expresso ((soma daquele dgito com 9)
% 5) (ou seja, o resto da diviso por 5 do nmero obtido pela soma daquele dgito
Algoritmos e Linguagens Lucilia Ribeiro

72

com 9). Depois, troque o primeiro dgito pelo quarto e troque o segundo dgito pelo terceiro. A seguir, imprima o inteiro criptografado.

06. Um endocrinologista deseja controlar a sade de seus pacientes e, para isso, seutiliza

do ndice de Massa Corporal (IMC). Sabendo-se que o IMC calculado atravs da frmula
IMC= peso / altura2 , criar um algoritmo que apresente o nome do paciente e sua faixa
de risco, baseando-se na seguinte tabela:
IMC
abaixo de 20
a partir de 20 at 25
acima de 25 at 30
acima de 30 at 35
acima de 35

FAIXA DE RISCO
abaixo do peso
normal
excesso de peso
obesidade
obesidade mrbida

07. Desenvolva um programa que determine o pagamento bruto de um empregado.

Acompanhia paga o valor de uma hora normal pelas primeiras 40 horas trabalhadas e
paga o valor de uma hora extra (uma vez e meia a hora normal) para cada hora trabalhada depois de completadas as primeiras 40 horas. Solicite o nmero de horas trabalhadas, o valor da hora normal do trabalhador e exiba o pagamento bruto do funcionrio.

8.

Uma locadora de filmes tem a seguinte regra para aluguel de fitas:


Segunda, Tera e Quinta (2, 3 e 5), um desconto de 40% em cima do preo normal. E Quarta, Sexta, Sbado e Domingo (4, 6, 7 e 1), preo normal.
Aluguel de Fitas Comuns: preo normal e Aluguel de Lanamentos: 15% em cima
do preo normal
Desenvolver um programa para ler o preo normal da fita, o dia da semana (1 a 7) e se
ele lanamento (1) ou no (2). Calcule e imprima o preo final a ser pago pelo cliente.

9.

Em uma danceteria o preo da entrada sofre variaes. Segunda, Tera e Quinta (2,
3 e 5), ela oferece um desconto de 25% do preo normal de entrada. Nos dias de msicas ao vivo, o preo da entrada ainda acrescido em 15% em relao ao preo normal da
entrada. Fazer um programa que leia o preo normal da entrada, o dia da semana (1 a 7)
e se dia de msica ao vivo (1) ou no (2). Calcular e imprimir o preo final que dever
ser pago pela entrada.

10. Desenvolver um programa que determine imposto de renda cobrado de um funcionrio pelo governo. Seu programa dever ler o salrio anual do funcionrio e o imposto j
pago. O imposto calculado conforme a tabela abaixo:
SALRIO ANUAL
mais de 12 salrios mnimos
de 5 a 12 salrios mnimos
menos de 5 salrios mnimos

IMPOSTO BRUTO
20% do salrio anual
8% do salrio anual
Isento

O programa calcular e imprimir o imposto a ser pago ou devolvido, que a diferena


entre o imposto j pago e o imposto bruto. Se a diferena for negativa sair a mensagem
de imposto a restituir, caso contrrio imposto a receber. Aps a mensagem, imprima o
valor do imposto a pagar/restituir. Considere o salrio mnimo como uma constante no seu
programa igual a 240.00.
Exemplo: Salrio Anual = 12000,00. Imposto Pago = 700,00
Bem, o salrio anual maior que 12 salrios-mnimos (12*240), portanto utilizarei a taxa de 20% do salrio anual = 2400,00 (imposto bruto). Considerando que paguei 700,00,
o imposto lquido ser 2400 700 = 1700 a ser pago.
Algoritmos e Linguagens Lucilia Ribeiro

73

11. Um certo ao classificado de acordo com o resultado dos trs testes abaixo,
quedevem determinar se o mesmo satisfaz as seguintes especificaes:
Contedo de Carbono abaixo de 7
Dureza Rockwell maior do que 50

Resistncia trao maior do que 80.000 psi


Ao ao atribudo o grau 10 se passar por todos os testes; 9 se passar somente nos testes 1 e 2; 8 se passar no teste 1; 7 se no passar em nenhum dos 3 testes.
Desenvolver um programa que leia o contedo do carbono (CC), a dureza Rockwell (DR)
e a resistncia trao (RT) e fornea a classificao do ao.

12. Dado um nmero de 3 algarismos construir outro nmero de 4 algarismos de

acordocom a seguinte regra:


os trs primeiros algarismos, contados da esquerda para a direita so iguais aos do
nmero dado;
o quarto algarismo um dgito de controle calculado da seguinte forma: primeiro
algarismo + segundo algarismo * 3 + terceiro algarismo * 5; o dgito de controle
igual ao resto da diviso dessa soma por 7.
Exemplo: Nmero 479 (trs algarismos)
Novo Nmero: 974 (trs algarismos de trs para frente) e o quarto ser:
(4+(7*3)+(9*5))%7 = 70%7 = 0. O novo nmero ser 9740

Algoritmos e Linguagens Lucilia Ribeiro

74

LISTA 6: ESTRUTURAS DEREPETIO


01. Escreva um programa que apresente a srie de Fibonacci at o dcimo quinto ter-mo.
A srie de Fibonacci formada pela seqncia: 1, 1, 2, 3, 5, 8, 13, 21, 34, ... etc. Esta
srie se caracteriza pela soma de um termo atual como seu anterior subseqente, para
que seja formado o prximo valor da seqncia.

02. Elaborar um programa que calcule potncias. O usurio deve digitar a base e o expoente, e o programa deve apresentar o resultado. Esse programa dever ser executado
at que o usurio digite 0 (zero) para a base.

03. Elaborar um programa que apresente os resultados da soma e da mdia aritmticados


valores pares situados na faixa numrica de 50 a 70.

04. Elaborar um programa que possibilite calcular a rea total de uma residncia

(sala,cozinha, banheiro, quartos, rea de servio, quintal, garagem, etc.) O programa deve
solicitar a entrada do nome, a largura e o comprimento de um determinado cmodo. Em
seguida, deve apresentar a rea do cmodo lido e tambm uma mensagem solicitando do
usurio a confirmao de continuar calculando novos cmodos. Caso o usurio res-ponda
N (no), o programa deve apresentar o valor total acumulado da rea residencial.

05. Fazer um programa que leia um nmero indeterminado de dados contendo a idadede
um indivduo. O ltimo dado, que no entrar nos clculos, contm o valor da idade igual
a zero. Calcule e escreva a idade mdia deste grupo de indivduos.

06. Tem-se um conjunto de dados contendo a altura e o sexo (masculino, feminino) de10
pessoas. Fazer um programa que calcule e escreva:
A maior e a menor altura do grupo
A mdia de altura das mulheres
O nmero de homens

7. Uma certa firma fez uma pesquisa de mercado para saber se as pessoas gostaram ou
no de um novo produto lanado no mercado. Para isso, forneceu o sexo do entrevis-tado
e sua resposta (sim ou no). Sabendo-se que foram entrevistadas 10 pessoas, fazer um
programa que calcule e escreva:
O nmero de pessoas que responderam sim
O nmero de pessoas que responderam no
A porcentagem de pessoas do sexo feminino que responderam sim
A porcentagem de pessoas do sexo masculino que responderam no
08. A converso de graus Farenheit para centgrados obtida pela seguinte frmula: C=

5/9 (F 32). Fazer um programa que calcule e escreva uma tabela de centgrados em
funo de graus Farenheit, que variam de 50 a 150 de 1 em 1.

09. Foi feita uma pesquisa de audincia de canal de TV em vrias casas de uma

certacidade, num determinado dia. Para cada casa visitada, fornecido o nmero do canal
(4, 5, 7, 12) e o nmero de pessoas que o estavam assistindo naquela casa. Se a televiso
estivesse desligada, nada era anotado, ou seja, esta casa no entrava na pesquisa. Fazer
um programa que:
Leia um nmero indeterminado de dados, sendo que o FLAG corresponde ao
nmero do canal igual a zero
Calcule a porcentagem de audincia para cada emissora
Escreva o nmero do canal e a sua respectiva porcentagem

Algoritmos e Linguagens Lucilia Ribeiro

75

10. Fazer um programa que calcule e escreva o valor de S:


S = 1/1 + 3/2 + 5/3 + 7/4 + ... + 99/50
11. Fazer um programa que calcule e escreva o valor de S:
S = 37x38/1 + 36x37/2 + 35x36/3 + ... + 1x2/37
12. Fazer um programa que calcule e escreva o valor de S:
S = 1/1 + 2/4 + 3/9 + 4/16 + 5/25 + 6/36 + ... + 10/100
13. Fazer um programa que calcule e escreva o valor de S:
S = 1000/1 + 997/2 + 994/3 + 991/4 + ...
14. Fazer um programa que calcule e escreva o valor de S:
S = 480/10 + 475/11 + 470/12 + 465/13 + ...
15. Escreva um programa que some uma seqncia de inteiros. Admita que o primeiro
inteiro lido especifica o nmero de valores que ainda devem ser fornecidos. Seu programa deve ler apenas um valor cada vez que leia for executado. Uma seqncia tpica de
entrada poderia ser: 5 100 200 300 400 500, onde o 5 indica que os 5 valores
subseqentes devem ser somados.
16. Uma loja de venda de produtos por reembolso postal vende cinco produtos diferentes cujos preos de varejo so mostrados na tabela a seguir:
Nmero do Produto
1
2
3
4
5

Preo de Varejo
2,98
4,50
9,98
4,49
6,87

Escreva um programa que leia uma srie de pares de nmeros como se segue: (nmero
do produto, quantidade vendida em um dia). Seu programa deve usar uma instruo
escolha para ajudar a determinar o preo de varejo de cada produto. Seu programa deve calcular e mostrar o valor total de todos os produtos vendidos na semana passada.

17. Fazer um programa para ler a base e a altura de 10 tringulos e imprimir suas reas
18. Fazer um programa para ler um valor x qualquer e calcular
Y = (x+1)+(x+2)+(x+3)+(x+4)+...+(x+100)
19. Fazer um programa para gerar os termos da seguinte Progresso Geomtrica: 3, 9,
27, 81,.... Calcule e mostre o 20 termo e a soma dos termos da PG.
20. Dado um nmero indeterminado de funcionrios, onde so fornecidos o Nome, Nmero de Dependentes e o Nmero de Horas Trabalhadas. Pede-se um programa que imprima, para cada funcionrio, o seu Nome, Salrio Bruto, Salrio Lquido e o Valor Descontado. A empresa paga R$ 12,50 por hora de trabalho e R$ 125,55 por dependente, e
ainda faz um desconto de 12% sobre o salrio bruto. Pede-se ainda que seja impresso o
total de funcionrios da empresa e o total gasto com salrios. Para encerrar a entrada de
dados, considere o nome igual a FIM

Algoritmos e Linguagens Lucilia Ribeiro

76

LISTA 7: VETORES EMATRIZES


VETORES

01. Elabore um Programa que leia uma seqncia de nmeros, e os mostre por
ordeminversa.

02. Elabore um Programa que dada uma seqncia de nmeros, indique qual a porcentagem que cada um representa em relao ao total.

03. Elabore um programa que:

Leia 100 valores numricos e os armazene num vetor A


Calcule e escreva
Onde
ai o i-simo valor armazenado na varivel A

Calcule e escreva quantos termos da srie tm o numerador inferior ao denominador

04. Fazer um algoritmo que: a) leia uma frase de 80 caracteres, incluindo brancos;

b)conte quantos brancos existem na frase; c) conte quantas vezes a letra A aparece; d)
conte quantas vezes ocorre um mesmo par de letras na frase e quais so elas; e) imprima o que foi calculado nos itens b, c e d.

05. Dado um conjunto de 100 valores numricos disponveis num meio de entrada qualquer, fazer um algoritmo para armazen-los numa varivel
primir o valor do somatrio dado a seguir:
S = (b1 b100)3 + (b2 b99)3 + (b3 b98)3 + + (b50
Exemplo:
B
210
160

33
1
2
99

composta B, e calcular e im-

b51)3
97
100

S = (210 97)3 + (160 33)3 +

06. Fazer um algoritmo que: a) leia um conjunto de valores inteiro correspondentes a80

notas dos alunos de uma turma, notas estas que variam de 0 a 10; b) calcule a fre-qncia
absoluta (nmero de vezes em que aquela nota aparece no conjunto de dados); c) imprima
uma tabela contando os valores das notas (de 0 a 10) e suas respectivas fre-qncias
absoluta.

07. Fazer um programa que leia diversos pares de conjuntos numricos e que imprima

aidentificao dos pares de conjuntos disjuntos (aqueles que no possuem elementos comuns a ambos). Os elementos de cada par de conjuntos so precedidos pelo nome que
identifica o par e pelo nmero de elementos de cada conjuntos. Aps o ltimo par de
conjuntos vem como identificao do par o literal VAZIO. O nmero mximo de elementos de cada conjunto 250.
Algoritmos e Linguagens Lucilia Ribeiro

77

08. Uma grande firma deseja saber quais os trs empregados mais recentes. Fazer

umprograma para ler um nmero indeterminado de informaes (mximo de 300)


contendo o nmero do empregado e o nmero de meses de trabalho deste empregado e
imprimir os trs mais recentes. Obs.: A ltima informao contm os dois nmeros iguais
a zero. No existem dois empregados admitidos no mesmo ms.

09. Fazer um algoritmo para corrigir provas de mltipla escolha. Cada prova tem
10questes, cada questo valendo um ponto. O primeiro conjunto de dados a ser lido ser
o gabarito para a correo da prova. Os outros dados sero os nmeros dos alunos e suas
respectivas respostas, e o ltimo nmero, do aluno fictcio, ser 9999. o algoritmo dever
calcular e imprimir:
a) para cada aluno, o seu nmero e sua nota;
b) a porcentagem de aprovao, sabendo-se que a nota mnima 6;
GABARITO

NOTA

RESPOSTAS

10. Fazer um algoritmo que: a) leia o valor de M (M <= 30) e os M valores de uma varivel composta A; b) leia o valor de N (N <= 20) e os N valores de uma varivel composta B; c) determine o conjunto C = A U B (A unio com B), onde C no dever conter elementos repetidos (A e B no contm elementos repetidos); d) imprima os elementos
contidos em A, B e C.
Fazer um algoritmo que: a) lei o nmero de elementos do conjunto A (NA<=100) e seus
respectivos elementos em ordem crescente; b) lei o nmero de elementos do conjunto B
(NB<=100) e seus respectivos elementos em ordem crescente; c) crie e imprima um
conjunto C, ordenado, de tamanho NA + NB, a partir dos conjuntos originais de A e B.
11. Escreva um algoritmo que procure por um determinado elemento em um vetor e
imprima quantas vezes ele aparece no vetor (caso ele esteja no vetor). Seu algoritmo
deve, inicialmente, ler os valores e armazen-los em um vetor de 8 posies.
12. Escreva um algoritmo que descubra qual o maior elemento de um vetor e o coloque na ltima posio do mesmo, comparando pares de elementos e permutando-os
quando estiverem foram de ordem.
Exemplo com um vetor de 5 elementos: A = [8 7 3 1 2]

78
38
18
28
13.. Escreva um algoritmo que faa o mesmo procedimento do algoritmo do
exerccioanterior para todos os elementos do vetor.

14. Escreva um algoritmo que inverta a ordem de um vetor A de N posies (com


N<=100) sem usar um vetor auxiliar. Leia os elementos a serem colocados no vetor, bem
como a dimenso do mesmo.
15. Dados dois vetores A e B em ordem crescente (assuma que A e B sero digitados em
ordem crescente), construa um vetor C resultante da intercalao destes 2 vetores de
modo que C j seja gerado em ordem crescente. Considere que a dimenso mxima de C
100. Entretanto, os vetores podem ter dimenses distintas (ex.: A ter 6 elemen-tos e B
ter 3). Pea ao usurio para informar as dimenses e os elementos dos vetores. No
permitido colocar um vetor aps o outro em C e fazer a ordenao em seguida.
Algoritmos e Linguagens Lucilia Ribeiro

78

Observao: O primeiro vetor tem dimenso necessariamente >= 1. O usurio pode escolher a dimenso do primeiro vetor = 100. Neste caso, no h intercalao de vetores e
o vetor resultante o primeiro vetor. Caso contrrio, h intercalao de vetores e, neste
caso, o segundo vetor tem dimenso necessariamente >= 1.

16. Encontre o maior elemento de um vetor A e coloque-o na 1 posio do mesmo (Efetue uma troca com o maior elemento cuja posio dever estar armazenada na varivel
POS, se necessrio, isto , se o primeiro elemento j no for o maior de todos). Dimenso mxima do vetor = 100.
17. Ordene o vetor A em ordem decrescente, adotando o seguinte procedimento:
- coloque na 1 posio do vetor o maior elemento do mesmo
- coloque na 2 posio do vetor o segundo maior elemento do mesmo;
- coloque na 3 posio do vetor o terceiro maior elemento do mesmo etc....

18. Dado um vetor ordenado em ordem crescente de valores do tipo caracter (assuma
que os elementos do vetor sero digitados em ordem crescente), verifique se uma CHAVE (dada) pertence ao vetor (CHAVE elemento a ser pesquisado). Compare a CHAVE
com o elemento do meio do vetor. Se a CHAVE for maior que tal elemento, restrinja a
busca segunda metade do vetor. Em caso contrrio, pesquise na primeira metade. Repita o processo at que a CHAVE seja encontrada. Imprima a posio do vetor onde a
CHAVE ocorre ou uma mensagem, caso voc conclua que a pesquisa no foi bem sucedida.
Exemplo: Seja VET o vetor abaixo e CHAVE = G.
VET
A
1

B
2

C
3

D
4

E
5

CHAVE > VET[MEIO] procurar na segunda metade


E

F
6

G
7

H
8

CHAVE > VET[MEIO] procurar na segunda metade

Tal mtodo chama-se Pesquisa Binria.


Neste caso, a pesquisa foi concluda com sucesso. O elemento procurado se encontra na
posio POS = 7.
MATRIZES

19. Elabore um Programa que:

Leia uma matriz inteira A de M x N, onde os elementos de cada linha e os valores


de M e N so fornecidos ( M<=20, N<=10);
Imprima a matriz lida;
Calcule e imprima uma matriz modificada B (M x N+1), sendo que os elementos
da (N+1)-sima coluna so formados com os produtos dos elementos da mesma
linha.
EXEMPLO:
A
B
2
3
2 3 6
4
5
4 5 20

20. Elabore um Programa que leia e imprima uma matriz cujo contedo a populaodos
10 municpios mais populosos de cada um dos 26 estados brasileiros. Determinar e
imprimir o nmero do municpio mais populoso e o nmero do estado a que pertence.
Algoritmos e Linguagens Lucilia Ribeiro

79

Considerando que a primeira coluna contm sempre a populao da capital do estado,


calcular a mdia da populao das capitais dos 26 estados.
1

... 10

1
2
.
.
.
26

POPULAO[i,j]
Populao do j-simo municpio
do i-simo estado.

21. A composio dos custos das diversas atividades de construo de um prdio feitaa

partir da elaborao de um quadro de quantitativos dos diversos recursos envolvidos em


cada atividade. Estes recursos so de vrios tipos e envolvem principalmente os custos
mais diretos, como, por exemplo, matrias-primas, mo-de-obra, hora de equipamento
etc.
Sendo conhecidos os custos unitrios para cada recurso envolvido, chega-se facilmente
ao custo final unitrio de cada atividade. A este custo so acrescidos os percentuais de
custos indiretos (administrativos), impostos, depreciao de equipamentos, leis sociais
etc., totalizando o preo final para a execuo de cada fase.
Este procedimento bsico adotado em vrias empreiteiras de obras e o objetivo deste
trabalho fazer um algoritmo que execute estes clculos para auxiliar o analista de custos
de uma empreiteira.
Supondo-se que na execuo do prdio so realizados quatro tipos de atividades e que
cada uma consome os recursos especificados na tabela dada a seguir e que as despesas
indiretas (administrao) so levantadas a cada ms, fazer um programa que:
Leia o percentual de adminstrao do ms;
Leia os custos unitrios dos sete recursos envolvidos;
Leia um conjunto de 4 atividades contendo os quantitativos de recursos envolvi-dos
em cada atividade;
Calcule e imprima:
i.
O preo unitrio de custo (direto + administrao) de cada atividade;
ii.
O preo unitrio que a empreiteira deve cobrar em cada atividade, para que
tenha 36% de lucro;
iii.
Considerando o percentual de 16% para leis sociais, incidentes sobre a mo-deobra, quanto deve ser recolhido para cada unidade de atividade;
iv.
Considerando o percentual de administrao fornecido + 36% de lucro + 16%
de leis sociais, qual ser o preo a ser cobrado pela empreiteira para a construo de uma obra que envolva as seguintes atividades: 50 m3 de fundao;
132 m2 de alvenaria, 200 m3 de estrutura e 339 m2 de acabamento;
v.
Para a mesma obra acima, qual ser a quantidade total de cada recurso envolvido?
Recurso
Atividade
Fundao m3
Alvenaria m2
Estrutura m3
Acabamento m2

Cimento
(Kg)
50
20
70
40

Areia
(m3)
0,4
0,3
0,3
0,2

Brita
(m3)
0,6
0
0,7
0

Pedreiro
(h)
5
2
6
9

Servente
(h)
3
1
3
5

Tijolo
(un)
0
100
0
0

Betoneira
(h)
3
1
35
1

22. Escreva um algoritmo que leia uma matriz quadrada A de dimenso N x N (N<=20)de

valores inteiros, calcule e imprima a soma dos elementos da diagonal secundria. Coloque
os elementos da diagonal secundria em um vetor V. Seu algoritmo deve pedir ao usurio
para informar a dimenso da matriz a ser digitada, considerando a restrio para N definida
anteriormente.
Algoritmos e Linguagens Lucilia Ribeiro

80

23. Dada uma matriz A de dimenso N x M (N<=20 e M<=20), calcule sua transposta.
Imprima a matriz original e a sua transposta. Seu algoritmo deve pedir ao usurio para
informar a dimenso da matriz a ser digitada, considerando as restries para N e M
definidas anteriormente.
24. Fazer um programa que carregue o relacionado abaixo. O programa deve mostrar
para cada produto, a loja que tem o menor preo
Um vetor com oito posies com os cdigos das lojas;
Um outro vetor com quatro posies com os cdigos dos produtos;
Uma matriz com os preos de todos os produtos em cada loja;
25. Faa um programa que carregue uma matriz 3 x 4, calcule e mostre:

A quantidade de elementos pares;


A soma dos elementos mpares;
A mdia de todos elementos.

26. Faa um programa que:

Receba o preo de 10 produtos e armazene-os em um vetor;


Receba a quantidade estocada de cada um desses produtos em cinco armazns
diferentes, utilizando uma matriz 5 x 10.
Calcule e mostre:
a) A quantidade de produtos estocados em cada um dos armazns;
b) A quantidade de cada um dos produtos estocados em todos os armazns juntos;
c) O preo do produto que possui maior estoque em um nico armazm;
d) O menor estoque armazenado;
e) O custo de cada armazm.

27. Faa um programa que carregue uma matriz 4 x 5, calcule e mostre um vetor com
cinco posies, onde cada posio contm a soma dos elementos de cada coluna da matriz.
Mostre apenas os elementos do vetor maiores que 10. se no existir nenhum elemento
maior que 10 mostre uma mensagem.
28. Faa um programa que receba a idade de 8 alunos e armazene-as em um vetor, em
um outro vetor armazene o cdigo de 5 disciplinas e em uma matriz armazene a quantidade
de provas que cada aluno fez em cada disciplina. Calcule e mostre:
a) A quantidade de alunos com idade entre 18 e 25 anos e que fizeram mais de duas
provas em uma disciplina com cdigo digitado pelo usurio. O usurio pode digitar
um cdigo que no est cadastrado; nesse caso, mostrar mensagem.
b) Uma listagem com o nmero do aluno e o cdigo da disciplina dos alunos que
fizeram menos de trs provas. Analisar cada disciplina.
c) A mdia de idade dos alunos que no fizeram nenhuma prova em alguma disciplina.
Cuidado para no contar duas vezes o mesmo aluno.
29. Escreva um algoritmo que receba uma matriz de nmeros inteiros NxN, com N no
mximo 100, e mostre uma mensagem dizendo se a matriz digitada simtrica. Uma
matriz simtrica possui A[i,j] = A[j,i].
30. Escreva um algoritmo que receba uma matriz de nmeros inteiros NxN, com N no
mximo 100, e verifique se essa matriz forma o chamado quadrado mgico. Um quadrado mgico formado quando a soma dos elementos de cada linha igual soma dos
elementos de cada coluna e igual soma dos elementos da diagonal principal e igual,
tambm, soma dos elementos da diagonal secundria.

Algoritmos e Linguagens Lucilia Ribeiro

81

LISTA 8: REGISTROS
01. Considere as seguintes definies em seu algoritmo. Usando tais definies,
escrevaum algoritmo que imprima o produto de maior sada.
RegistroregProduto{ inteiro
baixa[4,6], cod;
caracter nome;
real preco;
}

regProduto produto[500];

02. Considerando as definies apresentadas para o exerccio anterior, elabore um algoritmo que imprima um relatrio com a semana de maior sada de cada produto.

03. Uma determinada biblioteca possui obras de cincias exatas, humanas e

biolgicas,totalizando 300 volumes, 100 de cada rea. O proprietrio resolveu informatizla e, pa-ra tal, agrupou as informaes sobre cada livro do seguinte modo:
Cdigo de Catalogao: ______ Doado: _______
Nome da Obra: _______________________________________________________
Nome do Autor: ______________________________________________________
Editora: _______________________________________ Nmero de pginas: _____
a) Construa um algoritmo que declare tal estrutura e rena todas as informaes de todas as obras em 3 vetores distintos para cada rea. Faa com que o cdigo de catalogao seja gerado automaticamente (iniciando pelo cdigo = 1). Cuidado com dados invlidos para doao e para nmero de pginas.
b) Elabore um trecho de algoritmo que, usando como premissa o que foi feito no item a),
realize uma consulta s informaes. O usurio fornecer o cdigo da obra e sua rea.
Existindo tal livro, o algoritmo informa os dados da obra. Caso contrrio, ele imprime uma
mensagem informando a no-existncia ou o no-cadastramento do livro naquela rea. A
consulta repete-se at que o usurio fornea o cdigo finalizador com valor -1.

04. Utilizando o exerccio anterior sobre biblioteca, escreva um programa que liste todasas
obras de cada rea que representem livros doados.

05. Faa um programa que realize o cadastro de contas bancrias com as


seguintesinformaes: nmero da conta, nome do cliente e saldo. O banco permitir o
cadastra-mento de apenas 15 contas e no pode haver mais de uma conta com o mesmo
nmero. Crie o menu de opes a seguir:
Menu de opes:
1. Cadastrar contas
2. Visualizar todas as contas de um determinado cliente
3. Excluir a conta com menor saldo (supondo a no existncia de saldos iguais)
4. Sair

Algoritmos e Linguagens Lucilia Ribeiro

82

LISTA 9: MODULARIZAO
01. A avaliao de aproveitamento de uma certa disciplina feita atravs de 4

provasmensais no valor de 20 pontos e uma prova final no valor de 40 pontos. A nota final
obtida somando-se as 3 melhores notas, dentre as provas mensais, com a nota da prova
final. O conceito final dados atendendo-se ao seguinte critrio:
Faixa
90 a 100
80 a 89
70 a 79
60 a 69
40 a 59
0 a 39

Conceito
A
B
C
D
E
F

Fazer uma sub-rotina que, recebendo como parmetro 4 (quatro) nmeros inteiros, devolva ao mdulo que a chamou a soma dos 3 maiores nmeros dentre os 4 nmeros recebidos.
Fazer um algoritmo que:
Leia um conjunto de 80 registros contendo, cada um, o nmero do aluno, as 4 notas mensais e a nota da prova final
Calcule, para cada aluno, sua nota final, utilizando a sub-rotina anterior
Verifique o conceito obtido por cada aluno
Escreva, para cada aluno, o seu nmero, sua nota final e seu conceito.

2. Construir uma funo que receba como parmetro de entrada um nmero inteiro
positivo e devolva um dgito verificador conforme o processo de clculo descrito a seguir.
Utilize como exemplo o nmero 811057, que usado como 8110573:
Cada algarismo do nmero multiplicado por um peso comeando de 2 e crescendo de 1, da direita para a esquerda: 8x7 , 1x6 , 1x5 , 0x4 , 5x3 , 7x2;
Somam-se as parcelas obtidas: 56 + 6 + 5 + 0 + 15 + 14 = 96;
Calcula-se o resto da diviso desta soma por 11: 96 / 11 = 8, e sobra resto 8
Subtrai-se de 11 o resto obtido: 11 8 = 3
Se o valor encontrado for 10 ou 11, o dgito verificador ser 0; nos outros casos, o
dgito verificador o prprio valor encontrado.
Escrever um algoritmo capaz de:
a) ler um conjunto de 100 registros contendo, cada um, o nome de uma pessoa e
seu nmero de CPF
b) imprimir, para cada pessoa, os seus dados de entrada mais a mensagem vlido ou invlido, conforme a situao do nmero de CPF.
c) utilize a funo acima para calcular os dgitos verificadores.
OBS.: um n de CPF validado atravs de seus dois ltimos dgitos (dgitos verificadores,
denominados controle). Por exemplo, o CPF 230.860.256-20 validado pelos dgitos verificadores 20. o esquema de verificao o seguinte:
230860256 (funo) dgito verificador igual a 2
2308602562 (funo) dgito verificador igual a 0

03.

Fazer
uma
sub-rotina,
cujo
cabealho

dado
por:
QUANTOSDIAS(dia,ms,ano,n),onde dia, ms e ano so parmetros de entrada; n um
parmetro de sada que conte-r o nmero de dias do ano at a data fornecida.
Para calcular quantos dias tem o ano at uma data fornecida, preciso verificar o nmero de dias de cada ms. O ms de fevereiro pode ter 28 ou 29 dias, dependendo de o
Algoritmos e Linguagens Lucilia Ribeiro

83

ano ser bissexto ou no. Um ano bissexto se for divisvel por 400, ou se for divisvel
por 4 e no o for por 100. Fazer um algoritmo que:
a) leia um conjunto de registro contendo, cada um, duas datas. O ltimo registro,
que ser utilizado como flag, conter os valores 0,0,0,0,0,0;
b) verifique se as datas esto corretas (ms entre 1 e 12, dia de acordo com o ms
e se ambas esto dentro do mesmo ano). Se alguma das datas no estiver correta, escreva
data invlida;
c) verifique, se as datas estiverem corretas, qual a diferena, em dias, entre essas
duas datas

4.

Fazer uma funo que converta graus para radianos.

05. Criar uma funo que possa calcular a raiz de um nmero em qualquer ndice. Esta

uma funo importante, pois a maioria das linguagens s oferece a funo raiz quadra-da.
Lembrando que An = exp(n * log(A)

06. Criar uma funo que verifique se um nmero primo (500 PG.410 EX.470)
07. Foi realizada uma pesquisa de algumas caractersticas fsicas de cinco habitantes

deuma certa regio. De cada habitante foram coletados os seguintes dados: sexo, cor dos
alhos (A azuis ou C castanhos), cor dos cabelos (L louros, P pretos ou C castanhos) e idade.
a) Faa uma funo que leia esses dados em um vetor. Determine, por meio de
outra funo, a mdia de idade das pessoas com olhos castanhos e cabelos pretos. Mostre esse resultado no programa principal.
b) Faa uma funo que determine e devolva ao programa principal a maior idade
entre os habitantes.
c) Faa uma funo que determine e devolva ao programa principal a quantidade
de indivduos do sexo feminino cuja idade est entre 18 e 35 (inclusive) e que tenham
olhos azuis e cabelos louros

8. Criar um algoritmo que funcione de acordo com o menu a seguir, sabendo-se que os
vetores tm dimenso 5. Os itens 1 a 5 so funes. Lembre-se de exibir uma mensa-gem
se a opo 3, 4 ou 5 for digitada antes da 1 e 2, pois so dependentes:
1
2
3
4
5
6

Dados do vetor A
Dados do vetor B
Imprime vetores
Soma vetores
Subtrai vetores
Sai do programa

Algoritmos e Linguagens Lucilia Ribeiro

84

Bibliografia
"S sei que nada sei (Scrates)

Esta apostila foi totalmente baseada nos livros:

FORBELLONE, A. L. V. e EBERSPACHER, H. F. Lgica de Programao A Construo


deAlgoritmos e Estrutura de Dados. 2 Edio. Makron Books. 2000
FARRER, Harry e outros. Algoritmos Estruturados. 3 Edio. LTC. 1999.

Algoritmos e Linguagens Lucilia Ribeiro

85