Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
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
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
01 Viso Geral
Viso Geral
As coisas so sempre melhores no comeo
(Blaise Pascal)
1.1
DADOS E INFORMAES
1.2
1.3
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
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
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
TIPOS DE DADOS
1.6
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:
01 Viso Geral
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
A16
1
A16
4
A16
A15
A16
A16
4
A15
A16
1
12
7
01 Viso Geral
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
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:
01 Viso Geral
CICLO DE PROCESSAMENTO
PROCESSAMENTO
SADA
PROGRAMA
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
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-
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
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)
j) Pare.
-x-
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
LGICA DE PROGRAMAO
13
02 Noes de Lgica
2.3
ALGORITMO
PROGRAMAO
Problema
Fase da resoluo do
problema
Soluo em
forma de
algoritmo
Soluo como
programa
Fase da implementao
2.5
IMPORTNCIA DE UM ALGORITMO
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.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.
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.
15
02 Noes de Lgica
16
02 Noes de Lgica
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-
18
03 Itens Fundamentais
Itens Fundamentais
Quantas mas caram na cabea de Newton at ele ter inspirao!
(Robert Frost)
3.1
INTRODUO
3
Joo
7
4
25
8
3.2
Tabela de Smbolos
POSIO DA MEMRIA
1
2
TIPOS DE DADOS
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
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
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
b) U2
g) UYT
m) B52
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;
-x-
22
04 Expresses e Operadores
Expresses e Operadores
A chave usada sempre brilha
(Benjamim Franklin)
4.1
INTRODUO
EXPRESSES ARITMTICAS
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)
sqrt(9)
Funo
Exemplos
mod
Resto da diviso
9 mod 4 resulta em 1
div
Quociente da diviso
9 div 4 resulta em 2
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.
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
EXPRESSES LGICAS
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)
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
! A
AEB
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)
d)
NO V
NO V
NO V
NO V
F OU
V
OU
OU
OU
OU
V
EXERCCIOS
25
04 Expresses e Operadores
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-
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
expresso;
Exemplos:
caracter cor;
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
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;
)
)
)
)
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-
30
06 Estruturas Condicionais
Estruturas Condicionais
Numa sociedade de lobos, preciso aprender a uivar.
(Mme. Du Barry)
6.1
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
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;
}
senao {
B1;
B2;
.
.
.
Bn;
}
}
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) {
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
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
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.
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
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
Gratificao
R$ 100,00
R$ 50,00
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).
37
06 Estruturas Condicionais
90
180
0
360
270
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-
38
7.1
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.
39
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;
}
}
}
}
}
V1:
V2,
V4:
V5:
C1;
V3: C2;
C3;
C4;
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;
40
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?
Classificao
Alimento no-perecvel
Alimento perecvel
Vesturio
Higiene pessoal
Limpeza e utenslios domsticos
Invlido
-x-
41
08 Estruturas de Repetio
Estruturas de Repetio
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
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, );
}
}
42
08 Estruturas de Repetio
8.3
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;
}
}
43
8.4
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
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
39
40
45
09 Vetores e Matrizes
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!);
}
46
09 Vetores e Matrizes
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
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:
47
09 Vetores e Matrizes
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. );
}
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]]]
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
-x-
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
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;
}
52
10 Registros
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++) {
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-
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.
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
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
S1
S3
S2
F3
F1
F2
S4
F4
57
11 Modularizao
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);
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){
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
}
}
voida SAIDA{
escreva(O resultado : ,r);
}
void SOMA{
escreva(Soma);
ENTRADA;
CALCULO(a, b, +);
SAIDA;
}
void SUBTRAI{
escreva(Subtrao);
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;
}
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.
63
Listas de Exerccios
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.
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.
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.
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
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.
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
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
68
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
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.
70
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%
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
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.
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
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.
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
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
74
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.
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
75
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
76
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.
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
b51)3
97
100
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
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.
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
F
6
G
7
H
8
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
... 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
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:
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.
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.
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.
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.
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
84
Bibliografia
"S sei que nada sei (Scrates)
85