Академический Документы
Профессиональный Документы
Культура Документы
e lgica da
programao
Ricardo Sobjak
Sumrio
1
Variveis ....................................................................................................................................... 26
Constantes................................................................................................................................... 29
Expresses ................................................................................................................................... 30
5
Modularizao ........................................................................................................................ 53
Mecanismo de Funcionamento ............................................................................................. 54
Definio de Subalgoritmos ................................................................................................... 55
Procedimentos ........................................................................................................................... 56
Funes ........................................................................................................................................ 57
10
Registros ...................................................................................................................................... 71
Atribuio .................................................................................................................................... 72
Leitura e escrita .......................................................................................................................... 73
Exemplo ....................................................................................................................................... 73
Apresentao
Prezado estudante,
Saber construir algoritmos um fator primordial para que se possam desenvolver
programas em linguagens de computadores, isso depende do entendimento da estrutura
lgica de funcionamento. Em cursos de nveis tcnico e superior, que possuam relao com
desenvolvimento de software, ou at mesmo, algumas engenharias, preveem unidades
curriculares que tratam, em seus ementrios, de contedos referentes construo de
algoritmos e desenvolvimento da lgica da programao.
Este material foi elaborado com o objetivo apresentar a maioria desses conceitos,
para que voc possua utiliz-lo como ferramenta de apoio na compreenso e apropriao
destes conhecimentos.
Este material ainda est em fase de construo e formulao do seu contedo,
portanto, em breve ser disponibilizado uma verso mais elaborada.
Introduo lgica da
programao
Lgica
O conceito de lgica est relacionado com a ideia de ter
um raciocnio estruturado, partindo-se do pressuposto que o
pensamento deve ter uma linha coerente de estruturao.
Dentro da programao, a lgica um aspecto essencial para
que seja possvel encadear os pensamentos, de forma que estes
sejam raciocinados com justeza e preciso, a fim de que se
possam atingir objetivos previamente determinados. Todo o desenvolvimento de sistema
necessita que o meio para se atingir um objetivo, seja organizado dentro de uma sequencia
lgica de aes e decises.
A aprendizagem de lgica no se constitui como um fim, mas um meio de garantir
que nosso pensamento se faz para atingir objetivos verdadeiros.
Sequencia Lgica
Uma sequencia lgica pode ser considerada como a organizao sequencial de
passos lgicos que so executados para atingir um determinado objetivo na soluo de
um problema. No contexto de programao, estes passos ou pensamentos podem ser
descritos como uma sequencia de instrues que so escritas em linguagem computacional
para ser interpretadas por um determinado compilador. Na Figura 1.1 possvel visualizar
Instrues
Na linguagem comum, entende-se por instrues um conjunto de regras ou
normas definidas para a realizao ou emprego de algo. Em informtica, porm, instruo
a informao que indica a um computador uma ao elementar a executar.
Convm ressaltar que uma ordem isolada no permite realizar o processo completo,
para isso necessrio um conjunto de instrues colocadas em ordem sequencial lgica.
Por exemplo, se quisermos fazer uma omelete, precisaremos colocar em prtica
uma srie de instrues, que basicamente seria: quebrar os ovos, bater a clara e a gema,
fritar a mistura, entre outros. evidente que essas instrues tm que ser executadas em
uma ordem adequada, pois no se pode fritar a mistura antes de quebrar os ovos.
Dessa maneira, uma instruo tomada em separado no tem muito sentido. Para
obtermos o resultado, precisamos colocar em prtica o conjunto de todas as instrues, na
ordem correta.
Algoritmos
Algoritmo a descrio de um conjunto de comandos que, obedecidos, resultam
numa sucesso finita de aes. Um algoritmo pode ser pensado como uma receita, que
formada por uma sequencia de instrues ordenadas de forma lgica para a resoluo de
uma determinada tarefa ou problema. Estas tarefas no podem ser redundantes nem
subjetivas na sua definio, devem ser claras e precisas.
Deve ser fcil de interpretar e codificar, ou seja, ele deve ser o intermedirio
entre a linguagem falada e a linguagem de programao;
Pegar a bala;
Retirar o papel;
Chupar a bala;
Retngulo A
Retngulo B
Resultado
Programas
Os programas de computadores nada mais so do que algoritmos escritos numa
linguagem de computador (Pascal, C, Cobol, Fortran, Visual Basic, Java, PHP, entre outras) e
que so interpretados e executados por uma mquina, no caso um computador. Notem
que dada esta interpretao rigorosa, um programa por natureza muito especfica e rgida
em relao aos algoritmos da vida real.
As
Figura 1.2etapas e os elementos envolvidos na atividade de programao podem
ser visualizados na Figura 1.2, nela possvel perceber que a etapa inicial da programao
a existncia de um problema, que consequentemente necessita de uma soluo. A partir do
problema necessrio conhecer (ou procurar) a sua soluo. Uma vez conhecendo a
soluo do programa necessrio adapt-la ao mundo da mquina. Esta adaptao
produz o algoritmo, o qual independente de linguagem de programao e contm a
essncia do programa. Por fim, o passo que exige um maior esforo codificao, em que
o programador transcreve o algoritmo seguindo as regas de uma linguagem de
programao, que por sua vez, depois de compilado ir gerar o programa executvel.
O algoritmo tem um papel fundamental por ser o elo entre os dois mundos.
Percebe-se que a atividade de programao tem incio com a construo do algoritmo.
MUNDO REAL
MUNDO COMPUTACIONAL
Linguagem de
Programao
Problema
Algoritmo
Codificao
Programa
fonte
Traduo
Adaptao
Soluo
Programa
executvel
Exerccios
1)
2)
3)
10
Representao de algoritmos
Representao de algoritmos
Existem diversas formas de representao de algoritmos, algumas delas tratam os
Descrio Narrativa;
Fluxograma Convencional;
Subir na escada;
11
Representao de algoritmos
Ligar o interruptor;
Subir na escada;
Subir na escada;
12
Representao de algoritmos
Ligar o interruptor;
Subir na escada;
Podemos considerar ainda que a lmpada nova pode no funcionar. Nesse caso
devemos troc-la novamente, quantas vezes forem necessrias, at que a lmpada acenda:
Ligar o interruptor;
Subir na escada;
Retirar a lmpada;
Retire a lmpada
13
Representao de algoritmos
Retire a lmpada
Uma verso final do algoritmo, que repete aes at alcanar o seu objetivo: trocar
a lmpada queimada por uma que funcione, apresentada abaixo.
Ligar o interruptor;
Subir na escada;
Retirar a lmpada;
14
Representao de algoritmos
15
Representao de algoritmos
16
Representao de algoritmos
Representao em Pseudocdigo
Os algoritmos so descritos em uma linguagem chamada pseudocdigo, que so
independentes das linguagens de programao. Esta forma de representao de algoritmos
rica em detalhes, como a definio dos tipos das variveis usadas no algoritmo. Por
assemelhar-se bastante forma em que os programas so escritos, encontra muita
aceitao. Ao contrrio de uma linguagem de programao no existe um formalismo
rgido de como deve ser escrito o algoritmo.
O algoritmo deve ser fcil de interpretar e fcil de codificar. Ou seja, ele deve ser o
intermedirio entre a linguagem falada e a linguagem de programao.
Na verdade, esta representao suficientemente geral para permitir a traduo de
um algoritmo nela representado para uma linguagem de programao especfica seja
praticamente direta.
A forma geral da representao de um algoritmo na forma de pseudocdigo a
seguinte:
1
2
3
4
5
6
Algoritmo <nome_do_algoritmo>
<declarao_de_variveis>
<subalgoritmos>
Incio
<corpo do algoritmo>
Fim
Temos que:
17
Representao de algoritmos
as
variveis globais
usadas
no algoritmo principal
e,
Comentrios
Todo programador deve ter a preocupao com a clareza de seu algoritmo, ou seja,
a facilidade com que outras pessoas podero entender a lgica da resoluo de um
problema, para entend-lo e/ou alter-lo. Os comentrios tem um papel fundamental no
algoritmo, pois a partir deles so feitas observaes, explicaes e colocadas outras
informaes relevantes.
Os comentrios em um algoritmo devem estar entre chaves {}, ou barra dupla //
no incio da linha.
Exemplo:
18
Representao de algoritmos
{O texto de comentrio deve estar entre chaves, neste caso, usa-se chaves
quando o comentrio excede limite de uma linha};
//Ou com duas barras no incio da linha, quando usar apenas uma linha.
Fases de um algoritmo
importante ressaltar que qualquer tarefa que siga determinado padro pode ser
descrita por um algoritmo, como por exemplo: Como fazer uma canjica? Ou ento, como
calcular a folha de pagamento de uma empresa?
Entretanto ao montar um algoritmo, precisamos primeiro dividir o problema
apresentado em trs fases fundamentais. Onde temos:
19
Representao de algoritmos
ENTRADA
PROCESSAMENTO
SADA
Os dados so dispostos:
A informao gerada:
ROUPA
A
DE
RATO
REI
O
DO
O RATO ROEU A
ROUPA DO REI DE
ROMA
ROMA
ROEU
Figura 2.2 Fases de um algoritmo.
20
Representao de algoritmos
Teste de Mesa
Aps desenvolver um algoritmo ele dever sempre ser testado. Este teste
chamado de teste de mesa, que significa seguir as instrues do algoritmo de maneira
precisa para verificar se o procedimento utilizado est correto ou no.
Tomando como exemplo o algoritmo para clculo da mdia de quatro provas,
mostrado a seguir:
P2
P3
P4
MEDIA
21
Representao de algoritmos
Exerccios
1. Identifique os dados de entrada, processamento e sada no algoritmo abaixo:
Receba cdigo da pea
Receba valor da pea
Receba Quantidade de peas
Calcule o valor total da pea (Quantidade * Valor da pea)
Mostre o cdigo da pea e seu valor total
2.
Um homem quer atravessar um rio com um barco que pode carregar a cada
viajem, ele mesmo e apenas mais uma de suas trs cargas: um lobo, um carneiro e
um mao de alfafas. O homem no pode deixar juntos na margem do rio o lobo
com o carneiro, nem o carneiro com o mao de alfafas. O que o homem deve
fazer para atravessar o rio sem perder nenhuma de suas cargas?
3.
Elabore um algoritmo que mova 5 discos de uma torre de Hani, que consiste em
3 hastes (A-B-C), uma das quais serve de suporte para os cinco discos de tamanhos
diferentes (1-2-3-4-5), os menores sobre os maiores. Pode-se mover um disco de
cada vez para qualquer haste, sendo que nunca deve ser colocado um disco maior
sobre um menor. O objetivo transferir os cinco discos da haste A para haste C.
Faa um algoritmo para Calcular o estoque mdio de uma pea, sendo que
ESTOQUEMDIO = (QUANTIDADE MNIMA + QUANTIDADE MXIMA) / 2.
22
Tipos de dados
Tipos de dados
Como visto na unidade 2, os dados fazem parte da fase de entrada de um
Numricos
Esse tipo de dados especfico para representao de nmeros, que, dentro da
linguagem de programao, podero ser utilizados para clculos. Os dados numricos so
divididos basicamente em duas categorias: inteiros e reais.
Inteiro
O tipo de dados inteiro representa nmeros positivos, negativos e nulo, ocupam 2
bytes na memria do computador, com isso possvel representar um intervalo de -32768
at +32767. Exemplos: -10, 1, 0, 565.
Real
O tipo de dados real representa os nmeros positivos, negativos e nulo, podem ser
inteiros ou fracionrios, que possuem casas decimais, ocupam 6 bytes na memria, sendo
23
Tipos de dados
possvel armazenar dados num intervalo de 2.9 x 10-39 at 1.7 x 1038. Exemplos: -4, 134.34,
0.
Alfanumricos
Os dados alfanumricos so usados especificamente para representar dados que
contenham letras e/ou nmeros. Pode, em determinados momentos, conter somente dados
numricos ou somente literais. Se usado somente para armazenamento de nmeros, no
poder ser utilizada para operaes matemticas. Dados alfanumricos so classificados
basicamente em duas categorias: caractere e cadeia.
Caractere
Esse tipo de dados utilizado para representar apenas um caractere, que pode ser
um nmero, letra ou smbolo. Para utilizar esse tipo de dados, o caractere deve ser
especificado entre aspas simples (). No computador, utiliza 1 byte da memria.
Exemplo: pode ser usado para representar a abreviao do sexo de uma pessoa,
como M ou F.
Cadeia
O tipo de dados cadeia, refere-se a um conjunto de caracteres, que pode conter
nmeros, letras e/ou smbolos. Para utilizar esse tipo de dados, os caracteres devem ser
especificados entre aspas duplas (). Podem ocupar entre 1 a 255 bytes na memria de um
computador, ou seja, com esse tipo de dados, podemos representar frases de at 255
caracteres. Dados de cadeia de caracteres tambm so conhecidos como string, literal ou
texto.
Exemplos: armazenamento do nome de uma pessoa, como Juca da Silva, nome de
uma cidade, como Foz do Iguau.
Lgicos
Dados do tipo lgico so representados apenas como Verdadeiro (true) ou Falso
(false). Na memria de um computador, ocupa apenas 1 byte, com isso para representar o
24
Tipos de dados
valor lgico verdadeiro, usamos apenas a letra V, e para representar o valor lgico falso,
usamos a letra F.
Exerccios
1)
Classifique os dados especificados abaixo de acordo com seu tipo, assinalando com I
os dados do tipo inteiro, com R os reais, com C os caracteres, com S os literais
(strings), com L os lgicos e com N aqueles que so invlidos ou no possvel de se
definir.
(___) 0.21
(___) .V.
(___) Verdadeiro
(___) 1
(___) +3456
(___) abc
(___) V
(___) a
(___) F
(___) 0.
(___) +3456
(___) Malu
(___) 1%
(___) +6786.
(___) +54
(___) Julio
(___) -0.0
(___) Melo
(___) 1.34
(___) .F.
(___) $%dgf435$3f.
(___) .F.
(___) 3
(___) -0.554
(___) -0.001
(___) r
(___) -0554
2)
3)
25
algoritmos.
Variveis
Varivel a representao simblica dos elementos de um conjunto de dados. Cada
varivel corresponde a uma posio de memria, cujo contedo pode ser alterado durante
a execuo de um programa. Embora uma varivel possa assumir diferentes valores, ela s
pode armazenar um valor a cada instante. Em uma equao matemtica (A+B=7), A e B
representam as posies de memria que contero as parcelas da equao.
A seguir, na Figura 4.1 apresentado um exemplo de utilizao de variveis, onde
se tm trs variveis que poderiam ter valores diferentes em momentos diferentes. Num
dado momento, a varivel BASE poderia ter o valor 5 e a varivel ALTURA poderia ter o
valor 2, neste caso, de acordo com a representao, a varivel AREA_RETANGULO receberia
o valor 10 (2 x 5).
Variveis
26
duas variveis como o mesmo nome, esse identificador deve ser nico para cada varivel.
Estas mesmas regras servem para compor o nome identificador de constantes e funes,
que sero vistos nos prximos tpicos.
Exemplos de nomes de variveis:
Meu_Nome
vlido
MEU_NOME
vlido
meu_nome
vlido
vArIaVeL
vlido
_Linha
vlido
Exemplo123
vlido
23var
A...B
#maior
Um%dois
Exemplo 123
VALOR DA VARIVEL
Juca da Silva
34
M
3.800,00
27
nmero, que indica onde cada informao est localizada. Este nmero representado
atravs da notao hexadecimal, tendo o tamanho de quatro, ou mais bytes.
O endereamento das posies de memria atravs de nmeros hexadecimais
perfeitamente compreendido pela mquina, mas para ns humanos torna-se uma tarefa
complicada. Pensando nisto, as linguagens de computador facilitaram o manuseio, por
parte dos usurios, das posies de memria da mquina, permitindo que, ao invs de
trabalhar diretamente com os nmeros hexadecimais, fosse possvel dar nomes diferentes a
cada posio de memria. Tais nomes seriam de livre escolha do usurio. Com este recurso,
os usurios ficaram livres dos endereos fsicos (nmeros hexadecimais) e passaram a
trabalhar com endereos lgicos (nomes dados pelos prprios usurios). Desta forma, a
representao do nome lgico da varivel referenciado com a posio da fsica da memria
pode ser visualizada na Figura 4.2:
Representao da Memria
Valor
4
Endereo 3000:
009d
3
2100:
009e
Mara
009f:
3433
F
00aa:
4fa0
55
3aaa:
00ab
45.55
11aa:
00ac
4
33ed:
00ad
V
ae4e:
00ae
2011
11ee:
00af
NOME DA VARIVEL
X
Y
nome
sexo
idade
valor
quantidade
cliente
ano
Figura 4.2 Esquema de representao da ligao lgica entre o nome de uma
varivel com o endereamento da memria do comutador.
Portanto, podemos dizer que uma varivel uma posio de memria,
representada por um nome simblico (atribudo pelo usurio), a qual contm, num
determinado instante, um conjunto de dados.
28
Toda varivel deve ser declarada com um nome seguido de um tipo, conforme o
seu contedo. Se declararmos uma varivel como numrica, no poderemos armazenar
textos ou valores lgicos. Em portugus estruturado, utilizaremos a seguinte sintaxe para
declarao de variveis:
1
2
Var
<nome da varivel> : <tipo de dado>
Var
nome
sexo
idade
salario
:
:
:
:
literal
caracter
inteiro
real
Constantes
Uma constante compreende a mesma ideia de uma varivel, mas com um porem, o
seu valor no pode variar, isto , o seu valor ser sempre o mesmo, no poder ser
modificado durante a execuo do algoritmo. Quando existir a necessidade de mudar o seu
valor, isso dever ser feito no cdigo do algoritmo e no em tempo de execuo. Como as
constantes so compreendidas como variveis fixas, ela podem ser dos mesmos tipos de
dados que as variveis: numricos, caracteres ou lgicos. A regra para identificao dos
nomes tambm segue o mesmo padro das variveis.
Exemplos:
a) PI = 3,14
b) NATAL = 25 de dezembro
Toda constante deve ser declarada com um nome seguido de um tipo, conforme o
seu contedo. Em portugus estruturado, utilizaremos a seguinte sintaxe para declarao
de constantes:
1
2
Var
Constante <nome da constante> : <tipo de dado>
Var
Constante pi
: real
Constante nascimento : literal
29
Expresses
Uma expresso pode ser a combinao de uma ou mais constantes, variveis,
operadores e/ou funes. As expresses mais comuns so as aritmticas que contm os
operandos (constantes, variveis e/ou funes) ligados por um ou mais operadores (+, -, *,
/).
Exemplos:
a) valor * 10
b) salario - imposto
c) total - (total * 0,2)
d) Sr. + nome
Exerccios
1)
2)
Supondo que as variveis NB, NA, NMAT e SX sejam utilizadas para armazenar a nota
do aluno, o nome do aluno, o nmero da matrcula e o sexo, declare-as corretamente
em pseudocdigo, associando o tipo adequado ao dado que ser armazenado.
3)
Faa o teste de mesa no diagrama de blocos abaixo e preencha a tabela ao lado com
os dados do teste:
Incio
SALARIO
ABONO
SALNOVO
600,00
60,00
Ler
SALARIO
350,00
50,00
Ler
ABONO
SALNOVO
SALARIO + ABONO
SALNOVO
Fim
30
Operaes bsicas
Operaes bsicas
Os operadores so representados por smbolos, funcionando como relacionamentos
Atribuio
Essa operao coloca um valor determinado para uma varivel ou constante
especificada. importante que o tipo do valor, seja compatvel com o tipo da varivel, pois
na implementao a incompatibilidade ir gerar erros ou resultados inesperados.
A atribuio pode ser feita determinando-se diretamente um valor compatvel com
o tipo de dados da varivel ou obtendo-se o atravs do resultado de uma expresso ou
tambm, com o resultado da execuo de uma funo, assunto que ser abordado adiante.
Em algoritmos de Portugol, trataremos as operaes de atribuio com o smbolo
. A seguir so mostrados alguns exemplos de atribuio:
a) VARIAVEL_INTEIRO 34 (atribuio direta de nmero inteiro);
b) VARIAVEL_REAL 7.45 (atribuio direta de nmero real);
c) VARIAVEL_CARACTERE M (atribuio direta de caractere);
d) VARIAVEL_CADEIA Rua Argentina, 3455 Centro (atribuio direta de
texto);
e) TOTAL PRECO * QUANTIDADE (resultado de uma expresso, obtendo-se
um valor de nmero real);
f)
Algoritmo Atribuicao
Var
letra
: caracter
texto
: cadeia
num_inteiro : inteiro
num_real
: real
Incio
letra a
31
Operaes bsicas
9
10
11
12
Operadores Aritmticos
Os operadores matemticos, mostrados na Tabela 5.1, so usados para realizar
operaes aritmticas com variveis e constantes, esto em ordem de prioridade (cima para
baixo) em que as operaes so efetuadas.
Tabela 5.1 Operadores aritmticos
Operao
Exponenciao
Multiplicao
Diviso
Adio
Subtrao
Inteiro de Diviso
Resto da Diviso
Operador
^
*
/
+
div
mod
Exemplo de utilizao:
a) PI * raio;
b) A + B 3
c) 10 mod 2
Operadores Relacionais
Os operadores relacionais servem para comparar dois valores de mesmo tipo, e
nesta relao poderemos encontrar constantes, variveis ou expresses. Os operadores
relacionais esto apresentados na Tabela 5.2, a seguir:
Tabela 5.2 Operadores relacionais
Operao
Igual a
Diferente de
Menor que
Maior que
Operador
=
<>
<
>
32
Operaes bsicas
<=
>=
in
Operadores Lgicos
Os operadores lgicos tambm comparam valores de mesmo tipo para criar uma
lgica verdadeira ou falsa, sim ou no, utilizando a lgica booleana. Os operadores lgicos
esto apresentados na Tabela 5.3:
33
Operaes bsicas
Operador
E
OU
NO
XOU
34
Operaes bsicas
No item a, ser verdadeiro se, somente se, as duas questes forem verdadeiras. O
operador lgico OU retornar verdadeiro se pelo menos uma das duas operaes for
verdadeira. Para o operador de negao, o que teremos o inverso da operao analisada.
O operador XOU retorna verdadeiro se um operando for verdadeiro e o outro falso.
Na tabela verdade, mostrada a seguir (Tabela 5.4), temos o valor de duas
proposies p e q, que apresentam todas as possibilidades de valores que elas podem
assumir durante a execuo de um programa. Na tabela verdade tambm so apresentadas
as expresses de operao lgica E, OU, NO e XOU entre as duas proposies, e
mostrados os valores que pode se ter de resultado em cada instante.
Tabela 5.4 Tabela verdade
p
V
V
F
F
q
V
F
V
F
pEq
V
F
F
F
p OU q
V
V
V
F
NO p
F
F
V
V
NO q
F
V
F
V
p XOU q
F
V
V
F
Para exemplificar a utilizao da tabela verdade, vamos imaginar que o seu pai faa
a seguinte promessa para voc: Se voc for aprovado no vestibular, eu comprarei um carro
e uma moto. Diante dessa afirmativa, podemos separ-la em duas proposies p e q, onde
a proposio p seria meu pai vai comprar um carro e a proposio q seria meu pai vai
comprar uma moto. Para que a promessa feita pelo seu pai seja verdadeira, as duas
proposies p e q devem ser verdadeiras, ou seja, ele deve comprar um carro e uma moto.
Se o pai comprar apenas o carro, ou apenas a moto, ele no estaria cumprindo a promessa.
Porm, se o pai mudasse o conectivo e para ou na promessa que fez, ficaria assim: Se
voc for aprovado no vestibular, eu comprarei um carro ou uma moto. Portanto, se o pai
comprar qualquer um dos dois, o carro ou a moto, a promessa seria cumprida, assim como
se ele comprar os dois juntos, a promessa tambm seria verdadeira. Entretanto, se a
promessa sofresse mais uma alterao, adicionando mais um conectivo ou, ela ficaria
assim: Se voc for aprovado no vestibular, eu comprarei ou um carro, ou uma moto.
Perceba que nesse caso, temos uma exclusividade na promessa feita, em que o pai ir
35
Operaes bsicas
Operador de caractere
O operador de strings representado pelo sinal de adio (+), utilizado para
combinar duas ou mais sries de caracteres. Supondo que A e B so variveis do tipo
caractere, a expresso A+B resultaria um nico literal formado pelo contedo de A seguido
do contedo de B.
Como exemplo, suponhamos que:
A = Charles Babbage
B = conhecido como
C = o pai do computador.
Teremos:
Portanto, o operador + caso seja usado entre variveis do tipo CHAR ou STRING,
causar uma ao conhecida por concatenao, ou seja, juntar os caracteres ou STRINGs
usados na operao em uma s STRING.
36
Operaes bsicas
Algoritmo Concatena
Var
Letra1, Letra2
: caracter
Nome1, Nome2, Nome
: cadeia
Incio
Letra1 D
Letra2 a
Nome1 Joao
Nome2 Silva
Nome Nome1 + Letra1 + Letra2
Fim
+ Nome2
Prioridade de Operadores
Durante a execuo de uma expresso que envolve vrios operadores, necessria
a existncia de prioridades representando um padro a ser seguido, pois, caso contrrio
poder se obter valores que no representam o resultado esperado. Utilizaremos a
prioridade de operadores definida abaixo pela simplicidade e compatibilidade com a
maioria das linguagens, mas as linguagens de programao apresentam pequenas
variaes nessas prioridades:
5 - Operadores Relacionais;
6 - Operadores Lgicos.
37
Operaes bsicas
Exerccios
1)
2)
3)
b.
B
C onde A= 2, B= 6, C = 3, D=4, E=8, F=4
X
E
D
F
2
2 X 3 X X 1
X 1
2
X
Y
onde X = 2
X
2
A
4)
5)
6)
correto definir uma varivel como sendo caracter e atribuirmos a ela o valor:
PEDRO? E se a varivel fosse definida como literal, a mesma poderia receber um
38
Operaes bsicas
8)
Algoritmo Exerccio
Var
Maria
: literal
idade
: inteiro
letra
: caracter
Maria
: real
Incio
idade 23
idade 678
idade letra
letra ABC
letra A
letra 2
Fim
Letra A
Nome Joo
39
importantes: a fase de entrada dos dados e a fase de sada, que por sua vez apresenta a
informao. No ambiente computacional, os objetos processados so as variveis, sabemos
que um programa tem como principal objetivo a resoluo de problemas do mundo real.
Desta forma, num algoritmo ser preciso representar a troca de informaes que ocorrer
entre o mundo do computacional e o mundo real. Para isso, devemos utilizar comandos de
entrada e sada, onde esses comandos iro indicar que determinadas variveis recebero
valores, os quais sero informados por um indivduo do meio externo ou que os valores de
determinadas variveis ou expresses sero enviados para o meio externo.
Em nvel de algoritmo esses comandos representam apenas a entrada e a sada da
informao, independe do dispositivo utilizado (teclado, discos, impressora, monitor, entre
outros), pois para a lgica da soluo do problema basta saber que informao esta
entrando e saindo. Mas no mundo da programao esse meio externo representado
pelos perifricos de entrada e sada e as linguagens de programao possuem comandos
especficos para cada tipo de unidade de Entrada/Sada, mas, em algoritmos no teremos
essa preocupao.
Algoritmo Ler_dados
Var nome : cadeia
40
3
4
5
6
7
8
9
idade : inteiro
X, X, Z : real
Incio
Leia nome
Leia idade
Leia X, Y, Z
Fim
Algoritmo Escrever_dados
Var nome : cadeia
idade : inteiro
41
4
5
6
7
8
9
10
Incio
Escreva Informe o seu nome:
Leia nome
Escreva Informe a sua idade:
Leia idade
Escreva Obrigado + nome + . Voc tem + idade + anos.
Fim
Exerccios
1)
Faa um algoritmo para ler trs nmeros inteiros e escrever a mdia dos nmeros
lidos.
2)
3)
4)
5)
Faa um algoritmo para ler o preo de compra e o percentual de lucro desejado por
um vendedor e calcular o preo de venda.
6)
Faa um algoritmo para ler duas variveis inteiras e trocar o seu contedo.
7)
8)
Faa um algoritmo para ler o valor do saque realizado pelo cliente de um banco e
escrever quantas notas de cada valor sero necessrias para atender ao saque com a
menor quantidade de notas possvel. Sero utilizadas notas de 100, 50, 20, 5 e 1 reais.
9)
Faca um algoritmo para ler o horrio (hora, min e seg) de inicio e a durao, em
segundos, de uma experincia biolgica, em seguida informar o horrio (hora, min,
seg) de termino da mesma.
10) Faa um algoritmo para ler as seguintes informaes de uma pessoa: Nome, Idade,
Sexo, Peso, Altura, Profisso, Rua, Bairro, Cidade, Estado, CEP, Telefone.
42
11) Dado as seguintes informaes de um funcionrio: Nome, idade cargo e o seu salrio
bruto considere:
c. O salrio bruto teve um reajuste de 38%.
d. O funcionrio receber uma gratificao de 20% do salrio bruto.
e. O Salrio total descontado em 15%.
Faa um algoritmo e um algoritmo para:
Imprimir Nome, idade e cargo.
Imprimir o salrio bruto.
Imprimir o salrio lquido.
12) Faa um algoritmo para ler a base e a altura de um tringulo. Em seguida, escreva a
rea do mesmo.
Obs.: rea = ( Base * Altura ) / 2
13) Faa um algoritmo para:
a. Ler uma CADEIA em forma de data. Exemplo : 26/09/95.
b. Escrever o dia, ms e ano desta data.
14) Uma empresa tem para um determinado funcionrio uma ficha contendo o nome,
nmero de horas trabalhadas e o n0 de dependentes de um funcionrio.
Considerando que:
a. A empresa paga 12 reais por hora e 40 reais por dependentes.
b. Sobre o salrio so feito descontos de 8,5% para o INSS e 5% para IR.
Faa um algoritmo para ler o Nome, nmero de horas trabalhadas e nmero de
dependentes de um funcionrio. Aps a leitura, escreva qual o Nome, salrio bruto, os
valores descontados para cada tipo de imposto e finalmente qual o salrio lquido do
funcionrio.
15) O preo de um automvel calculado pela soma do preo de fbrica com o preo
dos impostos (45% do preo de fbrica) e a percentagem do revendedor (28% do
preo de fbrica). Faa um algoritmo que leia o nome do automvel e o preo de
fbrica e imprima o nome do automvel e o preo final.
43
Processos de Seleo
Processos de Seleo
At o momento, os algoritmos demonstrados foram executados numa sequencia
linear, seguindo-se as aes de cima para baixo, sem que haja desvio ou seleo de cdigo
a ser executado. Nesta unidade, veremos sobre as estruturas condicionais. Elas so
processos de seleo que permitem a escolha de aes serem executadas quando
determinada condio for ou no satisfeita.
As estruturas condicionais abordadas so: Se-Ento-Seno e Escolha-Caso.
O item <condio> deve ser substitudo pela expresso lgica que ser avaliada,
ento, se o resultado da expresso lgica for verdadeiro, sero executados os comandos
especificados no lugar de <comandos>. Um exemplo da estrutura SE, com analogia ao
mundo real, pode ser entendida como: Se no chover, ento Vou praia. Percebe-se que a
condio avaliada no chover e a ao praticada ir praia, portanto, eu irei praia
somente se a condio for verdadeira, ou seja, somente se no chover.
44
Processos de Seleo
Vejamos o exemplo de um algoritmo que faz uso estrutura SE, tendo como
enunciado faa um algoritmo que leia um valor inteiro, referente a idade de uma pessoa, e
imprima uma mensagem informando que ela pode votar somente se tiver 16 anos ou mais:
1
2
3
4
5
6
7
8
9
10
45
Processos de Seleo
Neste caso, quando a condio analisada resultar no valor lgico falso, sero
executados os comandos que esto logo abaixo do desvio Seno. Continuando a analogia
ao mundo real, a frase pode ser complementada da seguinte forma: Se no chover, ento
Vou praia, seno vou ao shopping. Portanto, se a condio no chover for avaliada e
resultar no valor lgico verdadeiro, ento eu poderei ir praia, mas, se a condio resultar
no valor lgico falso, ou seja, se estiver chovendo, ento eu irei ao shopping.
Na sequencia, apresentado o mesmo exemplo de algoritmo mostrado
anteriormente, mas com uma modificao no enunciado para que seja usado uma estrutura
SE composta. Sendo, faa um algoritmo que leia um valor inteiro, referente a idade de uma
pessoa, e imprima uma mensagem informando que ela pode votar somente se tiver 16
anos ou mais, caso contrrio informe que ela no pode votar:
1
2
3
4
5
6
7
8
9
10
11
12
46
Processos de Seleo
Exerccios: Se-Ento-Seno
1)
Faa um algoritmo para ler um nmero inteiro e informar se este maior que 10.
2)
Faa um algoritmo para ler dois nmeros inteiros e informar se estes nmeros so
iguais ou diferentes.
3)
Faa um algoritmo para ler um nmero inteiro e informar se o nmero par ou mpar.
4)
Faa um algoritmo para ler dois nmeros inteiros A e B e informar se A divisvel por
B.
5)
6)
Faa um algoritmo para ler dois nmeros inteiros e escrev-los em ordem crescente.
7)
Faa um algoritmo para ler duas variveis inteiras A e B e garantir que A e B fiquem
em ordem crescente, ou seja, a varivel dever armazenar o menor valor fornecido e a
varivel B o maior.
8)
9)
Elabore um algoritmo para testar se uma senha digita igual a Patinho Feio. Se a
senha estiver correta escreva Acesso permitido, do contrario emita a mensagem
Voc no tem acesso ao sistema.
10) Faa um algoritmo para ler trs valores reais e informar se estes podem ou no formar
os lados de um tringulo e qual tipo de tringulo seria: equiltero, issceles ou
escaleno.
11) Faa um algoritmo para ler trs nmeros positivos e escrev-los em ordem crescente.
12) Faa um algoritmo para ler o nome, as trs notas e o nmero de faltas de um aluno e
escrever qual a sua situao final: Aprovado, Reprovado por Falta ou Reprovado por
Mdia. A mdia para aprovao 5,0 e o limite de faltas 27. A reprovao por falta
sobrepe a reprovao por Mdia.
13) Elabore um algoritmo que indique se um nmero digitado est compreendido entre
20 e 90, ou no.
14) Um comerciante comprou um produto e quer vend-lo com um lucro de 45% se o
valor da compra for menor que R$ 20,00; caso contrrio, o lucro ser de 30%. Elabore
um algoritmo que leia o valor do produto e imprima o valor de venda para o produto.
47
Processos de Seleo
15) Faa um algoritmo para ler um salrio e atualiz-lo de acordo com a tabela abaixo.
Faixa salarial
Aumento
at 600,00
30%
600,01 a 1.100,00
25%
1100,01 a 2.400,00
20%
2400,01 a 3.550,00
15%
Acima de 3.550,00
10%
48
Processos de Seleo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Algoritmo Verifica_Dia_Semana
Var
dia : inteiro
Incio
Escreva Informe o dia da semana (1 a 7):
Leia dia
Selecione dia
Caso 1 Faa Escreva Domingo
Caso 2 Faa Escreva Segunda-feira
Caso 3 Faa Escreva Tera-feira
Caso 4 Faa Escreva Quarta-feira
Caso 5 Faa Escreva Quinta-feira
Caso 6 Faa Escreva Sexta-feira
Caso 7 Faa Escreva Sbado
Seno Escreva Dia invlido!
Fim_selecione
Fim
Exerccios: Selecione-Caso
1)
2)
3)
Criar um algoritmo que leia dois nmeros inteiros, e que solicite ao usurio qual a
operao deseja realizar entre esses nmeros. Caso o usurio digitar o caractere *
ser realizada uma multiplicao, caso seja digitado o caractere / ser realizada uma
diviso, caso seja digitado o caractere + ser realizado uma adio, e caso seja
digitado o caractere ser realizada uma subtrao.
4)
49
Processos de Repetio
Processos de Repetio
Serve para efetuar um conjunto de aes repetidas vezes. Assim como as selees
serviam para tomar decises permitindo executar uma sequncia especfica, os comandos
de repetio servem para indicar se uma sequncia deve continuar sendo executada,
permitindo resolver problemas que necessitem que uma determinada sequncia seja
executada vrias vezes at que o resultado esperado seja obtido. Esse recurso vai ampliar
bastante o leque de problemas que podem ser resolvidos atravs de algoritmo/programas,
pois a grande maioria dos problemas do mundo real exigem iteratividade e isso representa
a grande vantagem no uso dos computadores para resolver problemas do nosso mundo,
pois o mundo da mquina extremamente rpido e nesse tipo de problema h uma
grande disparidade no tempo de resoluo entre os mtodos convencionais e os
computacionais.
50
Processos de Repetio
Nesta estrutura, possvel verificar que podemos utilizar outros tipos de estruturas
dentro de uma estrutura de repetio, esta situao comum para qualquer tipo de
estrutura. O comando Interrompa, fora um salto, na sequencia, para os comandos que
esto logo aps a expresso FimEnquanto, e seu uso no obrigatrio.
Algoritmo tabuada
Var
num : inteiro
Incio
Repita
Escreva Informe um nmero:
Leia num
Escreva 1 x , num, = ,
Escreva 2 x , num, = ,
Escreva 3 x , num, = ,
Escreva 4 x , num, = ,
Escreva 5 x , num, = ,
Escreva 6 x , num, = ,
Escreva 7 x , num, = ,
Escreva 8 x , num, = ,
num*1
num*2
num*3
num*4
num*5
num*6
num*7
num*8
51
Processos de Repetio
16
17
18
19
1
2
3
4
5
6
7
8
9
10
Algoritmo tabuada
Var
num, cont
: inteiro
Incio
Escreva Informe um nmero:
Leia num
Para cont De 1 at 10 Passo 1 Faa
Escreva cont, x , num, = , num * cont
Fim_para
Fim
52
Modularizao
Modularizao
A modularizao consiste num mtodo utilizado para facilitar a construo de
53
Modularizao
Mecanismo de Funcionamento
Um algoritmo completo composto por um algoritmo principal e diversos
subalgoritmos (tantos quantos forem necessrios e/ou convenientes). O algoritmo principal
aquele por onde a execuo do algoritmo sempre se inicia. Este pode eventualmente
invocar os demais subalgoritmos, como representado na Figura 9.1.
Algoritmo principal
subalgoritmo 1
subalgoritmo 2
subalgoritmo 1
subalgoritmo 2
54
Modularizao
Definio de Subalgoritmos
A definio de um subalgoritmo consta de:
55
Modularizao
Procedimentos
Um procedimento um subalgoritmo que executa alguma tarefa especfica e no
retorna valores ao algoritmo ou subalgoritmo chamador. possvel interagir com o
algoritmo chamador atravs de variveis globais, mas nunca explicitamente, como no caso
de funes, que veremos no tpico seguinte. Portanto, a chamada de um procedimento
nunca surge no meio de expresses, como no caso de funes. Pelo contrrio, a chamada
de procedimentos s feita em comandos isolados dentro de um algoritmo, como as
instrues de entrada (Leia) e sada (Escreva) de dados.
A sintaxe da definio de um procedimento :
1
2
3
4
5
Temos que:
<nome> o nome simblico identificador pelo qual o procedimento
invocado por outros algoritmos;
<parmetros> so os parmetros do procedimento;
<variveis locais> so as definies das variveis locais ao procedimento.
Sua forma anloga da definio de variveis num algoritmo;
<comandos> o conjunto de instrues do corpo do procedimento, que
executado toda vez que o mesmo invocado.
O exemplo a seguir um exemplo simples, onde um procedimento usado para
escrever o valor das componentes de um vetor.
1
2
Algoritmo Exemplo_procedimento
Var vet : matriz[1..10] de real
56
Modularizao
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Procedimento ESC_VETOR()
Var i : inteiro
Inicio
Para i de 1 at 10 faa
Escreva vet[i]
Fimpara
Fim
Procedimento LER_VETOR()
Var i : inteiro
Inicio
Para i de 1 at 10 faa
Leia vet[i]
Fimpara
Fim
Inicio
LER_VETOR()
ESC_VETOR()
Fim
Funes
As funes so utilizadas para a execuo de operaes mediante a passagem ou
no de argumentos e, sempre retornam um valor.
O conceito de funo originrio da ideia de funo matemtica (por exemplo, raiz
quadrada, seno, cosseno, tangente, logaritmo, entre outras), onde um valor calculado a
partir de outro(s) fornecido(s) funo.
A sintaxe da definio de uma funo dada a seguir:
1
2
3
4
5
Temos que:
57
Modularizao
Algoritmo Exemplo_de_funo
Var X, Y : real
Funo Quad(w : real) : real
Var Z : real
Inicio
Z w * w
Retorne Z
Fim
Incio
Escreva "Digite um nmero
Leia X
58
Modularizao
14
15
16
Y Quad(X)
Escreva X, " elevado ao quadrado = ", Y
Fim
Exerccios: Funes
1)
Faa uma funo que recebe, por parmetro, a altura e o sexo de uma pessoa e
retorna o seu peso ideal. Para homens, calcular o peso ideal usando a frmula PESO
IDEAL = 72.7 * ALTURA 58 e, para mulheres, a frmula PESO IDEAL = 62.1 * ALTURA
44.7.
2)
Escreva uma funo que recebe uma nota e verifica se uma nota vlida (de 0 a 10),
retornando um valor lgico indicando se a nota vlida ou no.
3)
Escreva uma funo que recebe um valor inteiro e verifica se o valor par ou mpar. A
funo deve retornar um valor lgico.
4)
Escreva uma funo que recebe 3 notas de um aluno e uma letra. Se a letra for A, o
procedimento deve calcular a mdia aritmtica das notas do aluno, se a letra for P,
deve calcular a mdia ponderada (pesos: 5, 3 e 2). A mdia calculada deve ser
retornada.
5)
6)
Escreva uma funo que conte quantos algarismos possui um nmero inteiro. O
nmero de algarismos deve ser retornado.
7)
Escreva uma funo que retorne a soma dos algarismos de um nmero inteiro
qualquer que passado como parmetro.
8)
Escreva uma funo que recebe 3 valores reais X, Y e Z e verifique se esses valores
podem ser os comprimentos dos lados de um tringulo e, neste caso, retornar qual o
tipo de tringulo formado. Para que X, Y e Z formem um tringulo necessrio que a
seguinte propriedade seja satisfeita: o comprimento de cada lado de um tringulo
59
Modularizao
menor do que a soma do comprimento dos outros dois lados. O procedimento deve
identificar o tipo de tringulo formado observando as seguintes definies:
Tringulo equiltero: os comprimentos dos 3 lados so iguais;
Tringulos Issceles: os comprimentos de 2 lados so iguais;
Tringulo Escaleno: os comprimentos dos 3 lados so diferentes.
9)
Faa uma funo que recebe a mdia final de um aluno e retorna o seu conceito,
conforme a tabela abaixo:
Nota
Conceito
de 0,0 a 4,9
D
de 5,0 a 6,9
C
de 7,0 a 8,9
B
de 9,0 a 10,0
A
60
10
61
Neste vetor, temos a representao dos valores referente altura de cinco pessoas
distintas, no qual se tem o valor 1.74 armazenado na posio 1 do vetor, at o valor 1.75
que est na posio 5 do vetor.
Declarao de vetores
Na declarao dos vetores devemos informar o seu nome, seu tipo (inteiro, real,
caracter, ...) e seu tamanho (nmero de elementos). Cada elemento do vetor identificado
por um ndice (unidimensional), o qual indica a sua posio no vetor.
A declarao de um vetor feita da seguinte forma:
Var
<nome> : vetor[<nmero de elementos>] de <tipo do vetor>
A palavra reservada vetor indica que a varivel altura ser uma varivel estruturada
homognea. O nmero 5, entre colchetes, indica a quantidade de posies do vetor. A
palavra de, indica o tipo de informaes que sero armazenadas dentro do vetor, neste
caso nmeros reais.
Leitura e escrita de dados nos vetores
Para fazer a leitura dos dados e a atribuio de dados num vetor, escritos num
algoritmo, so necessrios informar o nome do mesmo e a posio dentro do vetor na qual
queremos interagir.
Quando o vetor criado, ele no possui valor inicial, podendo ser visualizado da
seguinte forma:
altura
1
Desta forma, estamos atribuindo para a posio 1 do vetor altura o valor real 1.74.
A representao do vetor, depois de atribudo um valor, ficaria da seguinte maneira:
altura
1.74
1
62
Nesse exemplo, quando um valor for informado pelo usurio do algoritmo, ele ser
atribudo posio 5 do vetor.
Se quisermos atribuir valores a todas as posies do vetor, teramos que usar o
comando Leia para cada uma das posies, que ficaria assim:
Leia
Leia
Leia
Leia
Leia
altura[1]
altura[2]
altura[3]
altura[4]
altura[5]
Algoritmo Leitura_vetor
Var
cont : inteiro
altura : real
Incio
Para cont de 1 at 5 Passo 1 Faa
Leia altura[i]
Fimpara
Fim
De mesma forma que usamos uma estrutura de repetio para fazer a atribuio de
dados para as posies do vetor, podemos utiliz-la para imprimir todos os valores de um
vetor.
63
Algoritmo leitura_escrita_vetor
Var
cont : inteiro
nomes : literal
Incio
//Leitura dos valores
Para cont de 1 at 5 Passo 1 Faa
Escreva Informe o nome de uma pessoa:
Leia nomes[cont]
Fimpara
//Escrita dos valores
Para cont de 1 at 5 Passo 1 Faa
Escreva nomes[cont]
Fimpara
Fim
Antnio
Carlos
Keila
Mauro
Maria
idades
36
25
18
65
29
sexos
nomes
...
...
100
...
...
100
...
...
100
64
Algoritmo vetores
Var
cont
: inteiro
nomes
: vetor[100] de literal
idades : vetor[100] de inteiro
sexos
: vetor[100] de caracter
Incio
Para cont de 1 at 100 faa
Escreva Digite o nome da pessoa :
Leia nomes[cont]
Escreva Digite a idade da pessoa :
Leia idades[cont]
Escreva Digite o sexo da pessoa :
Leia sexos[cont]
Fimpara
Fim
65
Exerccios: Vetores
10) Faa o teste de mesa para os algoritmos abaixo:
a) Algoritmo 1
1
2
3
4
5
6
7
8
9
10
11
12
b)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
c)
1
2
3
4
5
6
7
8
9
10
11
12
13
Algoritmo "dez_nomes"
Var
nomes : vetor[10] de cadeia
i : inteiro
Inicio
Para i de 1 at 10 faa
nomes[i] "Joao"
Fim_para
Para i de 1 at 10 faa
Escreva nomes[i], " na posicao ", i
Fim_para
Fim
Algoritmo 2
Algoritmo "vetor2"
Var
t : vetor[10] de inteiro
i, n : inteiro
Incio
Escreva "Digite um numero: "
Leia n
Para i de 1 at 10 faa
t[i] i * n
Fim_para
Para i de 1 at 10 faa
Escreva i ," X ", n , " = " , t[i]
Fim_para
Fim
Algoritmo 3
Algoritmo "varias_notas"
Var
notas : vetor[5] de real
cont : inteiro
Incio
Para cont de 1 at 5 faa
Escreva "Digite a nota do aluno ", cont
Leia notas[cont]
Fim_para
Para cont de 1 at 5 faa
Escreva "o aluno " , cont , " tirou nota " , notas[cont]
Fim_para
Fim
11) Escreva uma funo que recebe um vetor de inteiros de qualquer tamanho e retorne a
quantidade de nmeros pares positivos contidos no vetor.
12) Faa uma funo que verifique a existncia de um determinado valor em um vetor de
inteiros. Se encontrar retorna a posio, seno retorna -1.
13) Faa um algoritmo que leia um vetor de 500 posies de nmeros inteiros e divida
todos os seus elementos pelo maior valor contido no vetor. Mostre o vetor aps os
clculos. Sugesto: escreva uma funo que encontre o maior valor do vetor.
66
14) Dados 3 vetores (A, B e C) com as mesmas dimenses (tamanho), faa um programa
que some os vetores A e B e armazene o vetor resultante em C.
15) Escreva um algoritmo que leia dois vetores de 50 posies e faa a multiplicao dos
elementos de mesmo ndice, colocando o resultado em um terceiro vetor. Mostre o
vetor resultante.
16) Escreva um algoritmo que leia 2 vetores X(10) e Y(10). Crie, a seguir, um vetor P, que
seja:
a) A unio de X e Y
b) A interseo entre X e Y
c) A intercalao de X e Y
Escreva um vetor P para cada operao.
17) Escreva uma funo que recebe um vetor de 20 nmeros inteiros, por parmetro, e
retorna a soma dos elementos do vetor.
18) Escreva um algoritmo que ordene um vetor de 50 posies em ordem crescente
usando o mtodo bolha (buble sort).
19) Escreva um algoritmo que l um vetor N(20) e o escreve. Troque, a seguir, o primeiro
elemento com o ltimo, o segundo com o penltimo, e assim por diante, at o dcimo
com o dcimo primeiro e escreva o veto N modificado.
20) Escreva um algoritmo que inverta o contedo de dois vetores A e B de 50 posies,
conforme ilustrado a seguir:
A
Aps a inverso
A
4
0
17
10.7
...
15.8
...
100
67
nmero de seu carto e o seu nmero de acertos, assinalando com uma mensagem
quando tiver 3, 4 ou 5 acertos.
7.5
6.0
9.5
..
..
..
..
4.0
8.0
7.0
9.2
..
..
..
..
5.8
7.0
5.5
10.0
..
..
..
..
7.0
9.0
8.0
8.7
..
..
..
..
6.5
A forma que os dados so dispostos na matriz deve ser definida pelo programador.
Neste caso optou-se por criar quatro colunas onde cada coluna apresenta as notas de uma
avaliao (Por exemplo, prova 1, prova 2, prova 3 e prova 4 respectivamente) e em cada
linha esto representadas as notas de um aluno (Na linha 1, esto as quatro notas do
primeiro aluno e assim por diante). A clula formada pelo cruzamento da linha i com a
coluna j armazena a nota do aluno i na prova j.
Por exemplo, para imprimir a nota do aluno 3 na prova 2 deve ser mostrado o valor
armazenado na terceira linha e na segunda coluna da matriz, neste caso 9,2.
1
68
1
2
3
..
..
..
..
30
7.5
6.0
9.5
..
..
..
..
4.0
8.0
7.0
9.2
..
..
..
..
5.8
7.0
5.5
10.0
..
..
..
..
7.0
9.0
8.0
8.7
..
..
..
..
6.5
Exerccios: Matrizes
1)
2)
Escreva um algoritmo que l 3 matrizes M(4,6), N(4,6) e O(6,4), gerando uma matriz
que seja:
a. a soma de M com N
b. a diferena de M com N
c. o produto de N por O
Escrever as matrizes calculadas.
3)
Faa um algoritmo que leia uma matriz de 50x50 de nmeros reais. A seguir,
multiplique cada linha pelo elemento da diagonal principal daquela linha. Mostre a
matriz aps as multiplicaes.
69
4)
5)
Escreva um algoritmo que leia um nmero inteiro A e uma matriz 30x30 de inteiros. A
seguir, crie uma funo que retorne a quantidade de valores iguais a A que esto na
matriz.
6)
Faa um algoritmo que leia uma matriz 20x20 de reais e some cada uma das linhas,
armazenando o resultado da soma em um vetor. A seguir, multiplique cada elemento
pela soma da sua linha. Mostre a matriz resultante.
7)
Branca
1
2
3
5
11
50
0
Preta
-1
-2
-3
-5
-11
-50
0
5
1
0
0
0
0
-1
-5
3
1
0
0
0
0
-1
-3
2
1
0
0
0
0
-1
-2
11 50
1 1
0 0
0 0
0 0
0 0
-1 -1
-50 -11
2
1
0
0
0
0
-1
-2
3
1
0
0
0
0
-1
-3
5
1
0
0
0
0
-1
-5
70
11
Existem quatro tipos de dados primitivos que o computador manipula, sendo que j
conhecemos e utilizamos, so eles: os reais, os inteiros, os literais e os lgicos. Com eles
podemos definir novos tipos que possibilitam agrupar um conjunto de dados homogneos
(mesmo tipo) sob um nico nome (a exemplo dos vetores e matrizes), ou de tipos
heterogneos (tipos diferentes). Esse tipo de dados heterogneos conhecido como
registro.
Registros so conjuntos de dados logicamente relacionados, mas de tipos diferentes.
As matrizes so tipos de variveis que agrupam dados similares, enquanto que os
registros agrupam, geralmente, dados desiguais. Aos itens de dados de um registro d-se o
nome de membros ou componentes, enquanto que aos itens de uma matriz (ou vetor)
d-se o nome de elementos.
Registros
uma estrutura composta por um conjunto de variveis de tipos diferentes,
primitivos e/ou construdos, logicamente relacionados que podem ser referenciados por um
mesmo nome (identificador do tipo registro) ou individualmente. Este tipo de estrutura
utilizada para relacionar dados pertencentes a um mesmo objeto. Ex: fichrio de um
funcionrio.
Sintaxe para criao de um registro:
1
2
3
Registro = <nome_do_registro>
<componentes_do_registro>
Fim_registro
Temos que:
71
Registro = Data
dia : inteiro
ms : literal[10]
ano : inteiro
Fim_registro
Registro = Aluno
matricula : inteiro
nota[3], media : real
Fim_registro
Registro = Dados
nome : literal[40]
idade : inteiro
sexo : caracter
salario : real
Fim_registro
Atribuio
A atribuio de valores a um registro segue o mesmo padro de atribuio em uma
varivel de tipo de dado primitivo, mas com o diferencial que devemos especificar o nome
do registro e o nome do campo contido no registro, separados por um ponto.
Sintaxe:
<nome do registro>.<nome campo> valor
Exemplo de um algoritmo que faz a atribuio de valores para uma estrutura que
armazena data:
6
7
8
9
10
11
= Data
inteiro
inteiro
inteiro
72
12
13
14
15
16
17
18
19
20
Fim_registro
Var nascimento_joao : Data
Incio
nascimento_joao.dia 25
nascimento_joao.mes 5
nascimento_joao.ano 1965
Fim
Leitura e escrita
Para fazer a leitura e escrita de um registro, devemos seguir a mesma ideia de
atribuio de valores ao registro, devendo fazer a leitura e/ou escrita individual de cada um
dos campos contidos no registro.
Sintaxe para leitura:
Leia <nome_do_registro>.<nome_do_campo>;
Exemplo
Neste exemplo, mostrado um algoritmo que utiliza um vetor, para armazenar
dados de 10 funcionrios.
Nome:
Fone:
Salrio:
Idade:
Nome:
Fone:
Salrio:
Idade:
1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Nome:
Fone:
Salrio:
Idade:
2
Nome:
Fone:
Salrio:
Idade:
3
Nome:
Fone:
Salrio:
Idade:
...
10
73
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
Incio
OP : inteiro
OP 1
CONT 1
Enquanto OP <> 3 faa
Escreva 1 - Cadastrar
Escreva 2 - Consulta
Escreva 3 - Sair
Leia OP
Selecione OP
Caso 1 : CADASTRAR()
Caso 2 : MOSTRAR()
Caso 3 : Escreva FIM!
Seno : Escreva Opo invlida
Fim_selecione
Fim_enquanto
Fim
Procedimento CADASTRAR()
Incio
Enquanto CONT <= 100 faa
Escreva Informe nome do funcionrio:
Leia VFUNC[CONT].NOME
Escreva Informe telefone do funcionrio:
Leia VFUNC[CONT].FONE
Escreva Informe salrio do funcionrio:
Leia VFUNC[CONT].SALARIO
Escreva Informe idade do funcionrio:
Leia VFUNC[CONT].IDADE
CONT CONT+1
Fim_enquanto
Se CONT > 100 ento
Escreva Vetor completo!
Fim_se
Fim
Procedimento MOSTRAR()
Var
CONT1 : inteiro
Incio
CONT1 1
Se CONT <= 1 ento
Escreva No existem elementos cadastrados!
Seno
Enquanto CONT1 <= 100 faa
Escreva Nome do funcionrio , CONT1, :, VFUNC[CONT1].NOME
Escreva Telefone do funcionrio , CONT1, :, VFUNC[CONT1].FONE
Escreva Salrio do funcionrio , CONT1, :, VFUNC[CONT1].SALARIO
Escreva Idade do funcionrio, CONT1, :, VFUNC[CONT1].IDADE
Fim_enquanto
Fim_se
Fim
Exerccios
4)
Para cada uma das situaes a seguir crie um tipo de dados registro e faa um
algoritmo para armazenar o que se pede na quantidade que se pede:
a. Um apicultor necessita armazenar os dados de 100 colmeias, que so: cdigo,
74
b.
5)
Faa um algoritmo que crie os tipos com os campos abaixo e depois leia todas as
informaes de 40 registros em um vetor de registros. Depois de ler, buscar e mostrar
uma listagem de todos os funcionrios(as) cujo SALRIO seja maior que R$ 500,00, o
Estado Civil igual CASADO(A) e que reside no estado de SP.
Registro: Cadastro
Nome
Identidade
Salrio
Endereo
CPF
Estado Civil
Idade
Sexo
Registro: Endereo
Rua
Nmero
Complemento
Cidade
Estado
6)
7)
8)
75
Nome da obra
Nome do autor
Editora
rea
Palavras-chaves para localizao do livro
Construir um algoritmo que faa os seguintes passos:
a. Leia todos as informaes dos 1500 volumes e considere que o usurio poder
inserir os livros em qualquer ordem de reas ou cdigo de catalogao;
b. Use o mtodo da bolha para ordenar os livros, usando o cdigo de catalogao
como chave de ordenao;
c. Mostre quantos livros existem de cada rea existem na biblioteca;
d. Permita ao usurio consultar diversas vezes as informaes que foram
cadastradas. Ele pode fazer a consulta por cdigo catalogao ou por palavra
chave ou tambm pode sair. Pergunte ao usurio o que ele deseja fazer. Depois
que ele escolher, pea que ele digite um cdigo de catalogao ou uma palavra
chave, dependendo da escolha realizou. Procure nos campos referentes ao tipo
de pesquisa. Encontrando livros que atendam ao que o usurio pediu, todas as
informaes do livro devero ser exibidas. Caso no encontre nenhum livro,
deve-se exibir uma mensagem de aviso ao usurio que no existe livro com
aquela palavra chave ou cdigo.
9)
Suponha que voc esteja realizando uma pesquisa e precise obter os seguintes dados
de um conjunto de 1000 pessoas.
NOME;
SEXO;
COR DOS OLHOS;
ALTURA;
PESO ;
DATA DE NASCIMENTO;
O campo SEXO apresenta o valor 1 quando indica sexo masculino e o valor 0 quando
representa as mulheres. Crie um algoritmo que realize a leitura desses dados e
imprima duas listagens.
10) Faa um algoritmo que, utilizando registros, leia o nome e data de nascimento (dia,
ms, ano) de 40 pessoas, calcule e mostre a idade de cada pessoa e o nome da
pessoa mais velha. Suponha que no temos duas (ou mais) pessoas com a mesma
idade.
11) Uma companhia resolveu facilitar a sua folha de pagamentos. Para tal, mandou criar
uma listagem de todos os funcionrios que recebam mais de 30 salrios mnimos.
Escreva um algoritmo para criar a listagem pedida, sabendo que os registros possuem
os seguintes campos:
NOME DO FUNCIONRIO
CARGO
SALRIO
76
12) Uma indstria faz a folha mensal de pagamentos de seus 80 empregados baseado
numa listagem em papel com os dados de cada funcionrio, os quais so:
matrcula
nome
salrio bruto
Escreva um programa que permita ao usurio ler os dados dessa listagem e depois de
processar os dados dessa tabela e emitir, para cada funcionrio, seu contracheque, no
seguinte formato:
MATRCULA:
NOME:
SALRIO BRUTO:
DEDUO INSS:
SALRIO LQUIDO:
Informaes adicionais:
O desconto do INSS de 11% do salrio bruto;
O salrio lquido a diferena entre o salrio bruto e a deduo do INSS.
13) Em uma biblioteca deseja-se implantar um sistema informatizado de busca de livros e
teses. As teses possuem os seguintes campos:
Ttulo do Trabalho;
Nome do Autor;
Universidade;
Orientador;
Ano;
Cidade;
3 palavras chaves utilizadas para busca.
Os livros possuem os seguintes campos:
Autor;
Editora;
Ttulo;
Ano;
ISBN;
3 palavras chaves utilizadas para busca.
A partir dessas informaes faa um algoritmo que
Crie tipos de registro para armazenar os dados das teses e dos livros;
Implemente um cadastro para livros e teses, permitindo armazenar 30 teses
e 140 livros e uma forma de realizar a leitura destes livros e teses.
Depois de cadastrar disponibilize as seguintes opes para o usurio:
a. Permita ao usurio buscar as teses que possuem uma palavra-chave digitada
por ele;
b. Buscar todos os livros de um determinado autor escolhido pelo usurio;
c. Buscar as teses de um determinado Ano;
d. Sair do Sistema.
77
Com base nessas informaes faa um algoritmo que permita ao usurio utilizar as
seguintes opes:
a. Iniciar todas as mesas: Nessa opo todas as mesas tero suas quantidades de
pedidos zeradas e tornar a mesa disponvel para uso.
b. Alterar o valor de um item: Nessa opo ser possvel alterar o preo de um
item digitando-se o cdigo do item que se deseja alterar e o novo preo. O
programa deve mostrar o preo antigo e o novo preo.
c. Iniciar uma mesa: Nessa opo ser utilizada quando uma ou mais pessoas
solicitarem uma mesa, o sistema procura a primeira mesa disponvel. Assim que
encontrar a passar para indisponvel e informar ao(s) cliente(s) o nmero da
mesa (imprimindo este nmero). Depois disso, o(s) cliente(s) indicaro se
desejam colocar o nome de um deles na nota. Se precisar(em) deve-se ler este
nome e incluir na ficha da mesa. Seno, por padro inclui-se o nome
"Consumidor". O cliente tambm far a opo de pagar ou no gorjeta (a cota
de gorjeta de 10% do total parcial). Estas informaes tambm iro para a
ficha da mesa.
d. Incluir um pedido na ficha: O garom ir entregar um papel com as seguintes
informaes: o cdigo da mesa, o cdigo do item e a quantidade deste item. As
informaes de descrio e preo unitrio sero buscadas no vetor de itens e
includas na ficha da mesa.
78
e.
f.
Fechar uma mesa: Quando o cliente pedir a conta para fechar a mesa, ele ir at
o caixa e informar o nmero da mesa que estava, os itens sero totalizados e
apresentado da seguinte forma:
79