1.Conceitos Bsicos
O ser humano desde o inicio de sua existncia tem procurado meios para solucionar
seus problemas. Com a evoluo da espcie ele foi criando recursos, ferramentas e
mquinas para ajud-lo. A revoluo industrial foi o estopim para que a tecnologia
comeasse a avanar e nos dias de hoje o computador uma das ferramentas mais
utilizadas. Na maior parte das profisses o encontramos auxiliando nas tarefas mais
simples at as mais complexas.
Para muitos ainda, os computadores so seres abstratos, muitos acreditam que os
eles fazem tudo sozinhos, mas sabemos que isso no uma verdade. O computador
s executa o que programamos. justamente neste ponto que entramos. Como
fazer programas de computadores? Muitos de vocs conhecem o computador como
usurios e talvez nem saibam como desenvolver um programa. isso que iremos
aprender! Fazer um programa! Mas o que um programa? Voc deve estar se
perguntando!
Um programa a codificao de em portugol em uma determinada linguagem de
programao, Ascencio, (1999).
Alguns de meus alunos acham que programar sentar em frente ao micro e sair
digitando cdigos de programao. Essa maneira de pensar errnea, o bom
raciocnio lgico revela o bom programador.
Nosso raciocnio vai influenciar diretamente a lgica de programao. Para isso,
temos algumas formas de representao da Lgica, que veremos adiante.
Programas
Os programas de computadores nada mais so do que algoritmos escritos numa
linguagem de computador, voc j deve ter ouvido falar em algumas linguagens de
programao, tais como Java, C, C++, (Pascal Delphi) Essas linguagens so
interpretados e executados por uma mquina, no caso um computador.
Representao da lgica.
Acima falamos que para desenvolver um programa preciso ter um bom raciocino
lgico, para representarmos est lgica utilizamos as simbologias dos algoritmos. Na
linguagem computacional temos trs tipos de algoritmos mais utilizados, so eles:
descrio
narrativa,
fluxograma
pseudocdigo
ou
portugol,
que
descreveremos a seguir.
O teu algoritmo dever se simples o suficiente de tal maneira que uma pessoa
que no trabalha com informtica entenda.
Fases de um Algoritmo
Se no soubermos desenvolver um bom algoritmo dificilmente conseguiremos ser
um bom programador. Portanto, antes de sentarmos diante do computador para
desenvolver um programa preciso definir nossas metas.
principais.
2. Verifique se o problema foi bem entendido. Questione, se preciso, ao autor da
especificao sobre suas dvidas. Releia o problema quantas vezes for preciso
para tentar entend-lo.
3. Extraia do problema todas as suas sadas.
4. Extraia do problema todas as suas entradas.
5. Identifique qual o processamento principal.
6. Verifique se ser necessrio algum valor intermedirio que auxilie a
transformao das entradas em sadas. Esta etapa pode parecer obscura no
incio, mas com certeza no desenrolar do algoritmo, estes valores aparecero
naturalmente.
7. Teste cada passo do algoritmo, com todos os seus caminhos para verificar se o
processamento est gerando os resultados esperados.
Crie valores de teste para submeter ao algoritmo.
8. Reveja o algoritmo, checando as boas normas de criao.
Agora, voc sabia que no dia-a-dia executamos vrios tipos de algoritmos? Sabe
como? Imagine a seguinte situao: O objetivo levantar s 6:00h e sair para
trabalhar.
Anote a:
solues diferentes.
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
Escovar os dentes.
____________________________________________________________________
Mandar um e-mail.
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
Por exemplo, vamos trabalhar um exemplo simples, imagine que te peam para
somar 2 nmeros, o que voc faria? Ah, mas isso muito fcil, voc deve estar
pensando. Eu peo os dois nmeros, fao a soma e dou o resultado. Exatamente!
Essa a resposta! Portanto, temos que ficar atentos a trs passos bsicos:
Entrada
Processamento
Percepo
das impresses
sensorial
Sada
Saida dos
resultados
Processamento
do pensamento
Com o auxilio de
nosso pensamento,
calculamos, dividimos,
enfim, executamos
as tarefas.
1. Entender o problema.
2. Verificar que dados so necessrios para garantir a
resoluo de meu problema.
3. Analisar qual ser a resposta dada de acordo com o que foi
Importante:
pedido.
Fonte: http://www.inf.ufrgs.br/~binsely/logica.pdf
Tipos de Algoritmos
Descrio Narrativa
A descrio narrativa consiste em entender o problema proposto e escrever sua
soluo atravs da linguagem natural, ou seja, a lngua portuguesa.
Vantagem
Desvantagem
novo.
Basta
escrever
dificultar
transio
desse
Fluxograma
Atravs de um conjunto de smbolos (tabela abaixo): voc define os passos para a
soluo do problema apresentado.
Desvantagem
Pseudocdigo ou Portugol
Programa soma_nmeros;
Variveis num1,num2,soma: inteiro;
Inicio
Imprima Digite dois nmeros
Ler num1, num2;
Soma num1+num2;
Fim.
No se preocupe agora em entender esta estrutura, mais adiante voc ver como
funciona cada uma delas. Agora, vamos a prtica!
Estrutura Sequencial
um conjunto de instrues / comandos que sero executadas na ordem em que
foram escritas, ou seja, esses comandos sero executados numa sequncia linear
de cima para baixo.
10 Exemplo: Suponha que algum te pea para pedir 3 notas, tirar a mdias dessas
notas e mostrar o resultado.
Pseudocdigo
Programa media_notas;
variveis n1,n2,n3,media;
Inicio
Ler n1,n2,n3;
7
8
Entrada:
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
Processamento:
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
Sada:
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
10
Variveis
Quando somamos mentalmente trs nmeros, por exemplos, armazenamos os
valores em nossa mente. Pois bem, o computador precisa tambm armazenar esses
valores assim que o usurio digita alguma coisa. Alm disso, o computador precisa
identificar que tipo de informaes ser trabalhado. Sero nmeros, caracteres,
frases? E de que tipos sero? Nmeros reais? Inteiros?
Por analogia podemos comparar a memria do computador como uma sequncia
finita de caixas, onde cada caixa guarda um tipo de informao,.
O computador, para poder trabalhar como alguma destas informaes, precisa saber
onde, na memria, o dado est localizado.
Portanto, cada caixa ou posio de memria, possui um endereo, ou seja, um
nmero representado atravs da notao hexadecimal que indica o endereo de
memria onde est armazenada a informao.
Endereo Fsico
Informao
7000: B128
Joyce
8900: 138D
23695
2000: 0007
Sendo os endereos lgicos caixas, que num dado momento guardam algum tipo
de informao importante saber que esses dados no permanecem por muito
tempo, ou seja, no so permanentes. Vimos no exemplo acima que os dados
podem ser diversos, a caixa com o endereo 7000 : B128 recebeu o texto: Rumo ao
Hexa, mas em outro momento ele pode receber uma outra frase qualquer. Com isto
queremos dizer que o contedo destas caixas (endereos lgicos) podem mudar a
qualquer momento e sofrer alteraes em seus contedos. Da vem o nome utilizado
para esta representao: variveis, pois variam durante cada execuo do
programa. Os nomes das variveis so atribudos pelo usurio
11
TIPO
Descrio
INTEIRO:
REAL:
CARACTER:
LGICO:
12
Nome
1
255
Letra
J
Obs.:
Variveis
Nome: CADEIA[80]
Inicio
Fim
Desta forma, o espao ocupado por uma varivel STRING(Cadeia) passa de
255 bytes para apenas 80 bytes, na memria.
13
Digite 3 notas:
6.5
7.0
8.0
Linha 8: fim
14
Programa media_notas;
2.
variveis n1,n2,n3,media;
3.
Inicio
Imprima Digite trs notas
4.
5.
Ler n1,n2,n3;
6.
7.
8.
Entrada
Processamento
Sada
fim;
Fluxograma
inicio
n1,n2,n3
media n1+n2+n3
FIM
Anote a:
15
Entrada:
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
Processamento:
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
Sada:
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
Pseudocdigo
1. Programa dias_vividos
2. Constante Dias 365
3. variveis nome: caractere;
a. dias_vivido, idade: inteiro;
4. Inicio
5.
6.
Ler nome
16
8.
Ler idade
a. dias_viv dias *idade;
Observao:
Voc deve ter notado algo diferentes acima, na linha 2, trata-se de uma
estrutura chamada Constante, nela declaramos qual varivel ter um
valor fixo que no ir se alterar durante o programa
Fluxograma
inicio
ENTRADA
nome,idade
dias_viv365*idade
dias_viv
PROCESSAMENTO
SAIDA
FIM
17
Pseudocdigo:
Programa salario;
Variveis HT, VH,PD,TD,SB,SL: real;
Inicio
Imprima Digite as horas trabalhadas:
Ler HT
Imprima Digite o valor das horas trabalhadas
Ler VH;
Imprima Digite o porcentual de desconto
Ler PD;
SB HT * VH;
TD (PD/100) * SB;
SL SB-TD;
Imprima Salrio Bruto : , SB
Imprima Total de Descontos: , TD
Imprima Salrio Liquido: , SL
Fim.
18
Fluxograma:
Inicio
Entrada
HT,VH,PD
SBHT*VH;
TD (PD/100) *SB
SL=SB-TD
SB
TD
SL
Processamento
Sada
FIM
Entrada:
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
Processamento:
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
19
Voc percebeu que utilizamos alguns operadores lgicos para resolver este
exemplo. Para fazermos clculos matemticos, comparaes e expresses, temos
operadores prprios que veremos a seguir.
Tenha em mente:
Para ser um bom programador preciso exercitar muito.
Procure sempre fazer os exerccios e tentar melhor-los a
medida que voc aumenta seus conhecimentos.
Importante:
Operadores
Como citado acima, para fazermos determinados clculos matemticos usa-se uma
simbologia especfica para algoritmos e programao, denominados Operadores
Aritmticos.
Operador
Referncia do operador
Adio
Subtrao
Multiplicao
Diviso
DIV
Quociente
MOD
Resto da diviso
**
Exponenciao
20
Operadores Relacionais
Operador
Referncia do operador
Igual
<>
Diferente
>=
Maior ou igual
<=
Menor ou igual
>
Maior
<
Menor
Operadores Lgicos
Operador
Referncia do operador
AND
OR
OU
NOT
NO
XOR
NO OU
Exemplo:
Operador AND:
VERDADEIRO
AND
VERDADEIRO
VERDADEIRO
VERDADEIRO
AND
FALSO
FALSO
FALSO
AND
VERDADEIRO
FALSO
FALSO
AND
FALSO
FALSO
Operador OR:
VERDADEIRO
OR
VERDADEIRO
VERDADEIRO
VERDADEIRO
OR
FALSO
VERDADEIRO
21
OR
VERDADEIRO
VERDADEIRO
FALSO
OR
FALSO
FALSO
Operador NOT:
NOT VERDADEIRO
FALSO
NOT FALSO
VERDADEIRO
Operador XOR:
VERDADEIRO
XOR
VERDADEIRO
FALSO
VERDADEIRO
XOR
FALSO
VERDADEIRO
FALSO
XOR
VERDADEIRO
VERDADEIRO
FALSO
XOR
FALSO
FALSO
soma e subtrao
Operador Lgico No
Operador Lgico E
Operador Lgico Ou
22
Exerccios propostos
1. Dadas s expresses abaixo mostre os resultados:
a) 3 / 5
b) 4 DIV 3
c) 4 MOD 1
d) ( 400 DIV 10 ) MOD 4
e) 7**2 + 5 *2
f) 5 *19+25
g) 6,5* 5,0 +(3*3)
h) 2/5+2.3
i) 29,0/7+4
j) 3/6,0-7
a) 2 > 3
b) ( 6 < 8 ) OR ( 3 > 7 )
c) ((( 10 DIV 2 ) MOD 6 ) > 5 ) XOR ( 3 < ( 2 MOD 2 ) )
d) NOT ( 2 < 3 )
a) (A+C) > B
( )
23
( )
c) C = (B A)
( )
d) (B + A) <= C
( )
e) (C+A) > B
( )
( )
( )
Exerccios resolvidos
1.Calcule e mostre a soma dos trs nmeros.
Pseudocdigo
Programa soma_nmeros;
variveis num1, num2, num3,soma: inteiro;
Inicio
Imprima Digite trs nmeros
Ler num1, num2, num3
soma num1+num2+ num3
Imprima soma
Fim.
Fluxograma:
24
Inicio
n1,n2,n3
soma n1+n2+n3
soma
Fim
Entrada:
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
Processamento:
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
Sada:
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
25
Programa mdia_peso
Constantes p16; p24;
variveis n1, n2, media: inteiro;
Imprima Digite 2 notas
Ler n1, n2
media (n1 * p1 + n2 * p2 ) / (p1 + p2 )
Imprima media
Fim.
Fluxograma:
Inicio
Constantes
p1=6
p2=4
n1,n2
media (n1*p1+n2*p2)/(p1+p2)
media
Fim
26
Pseudocdigo
Programa novo_salrio;
variveis salario, novo_sal : inteiro;
Imprima Digite o salrio
Ler salario
Novo_sal sal + (sal *10/100)
Imprima Seu novo salrio ser: , novo_sal;
Fim.
27
Fluxograma:
Inicio
salario
novo_salsalario+(salario*10/100)
novo_sal
Fim
29
Fluxograma:
Inicio
salario,perc
desc sal*perc/100
desc
novo_sal salario-desc
Fim
30
Pseudocdigo
Programa gratificao_imposto;
variaveis salario, sal_receber, gratif, p_dentar: real;
Imprima Digite seu salrio:
ler salario
gratif salario * 10/100
p_dentar salario * 2/100
sal_receber (salario + gratif) p_dentar;
Imprima sal_receber
Fim
31
salario
gratfsalario*10/100
p_dentsalario*2/100
sal_recebersalario+gratf-p_dent
sal_receber
fim
Entrada:
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
Processamento:
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
Sada
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
32
Exerccios propostos
Sugesto: Faa os exerccios abaixo em Portugol e fluxograma
33
segundo.
Obs: Sabemos que no existe diviso por zero. Mas por enquanto no
se preocupe com isso, mais adiante veremos como resolver este
problema
____________________________________________________________________
____________________________________________________________________
34
35
36
8. Pea a idade de uma pessoa. Calcule e mostre quantos dias essa pessoa viveu.
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
38
39
10. Carlos entrou no cheque especial, seu banco cobra 2,5% de juros ao ms.
Calcule e mostre os juros a pagar de acordo com o saldo de Carlos.
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
40
Estrutura Condicional
As estruturas Condicionais so utilizadas quando se preciso tomar decises. Por
exemplo, o exerccio acima pede para dividir um nmero pelo outro, suponha que o
usurio na hora de digitar o segundo nmero digite zero? Certamente teremos um
resultado errado, pois no existe este diviso por zero. Para solucionarmos este
problema usa-se a estrutura condicional se e seno. Esta estrutura pode ser
tambm utilizada para comparaes, como veremos nos exemplos mais adiante.
Caso a condio se tenha mais de uma condio preciso colocar inicio e fim, o
mesmo vale para o seno, veja abaixo:
se <condio> ento
inicio
comando 1.....
comando 2.....
fim
seno <condio> ento
inicio
comando 1....
comando 2.....
comando 3.....
fim.
se <condio> ento
inicio
se (X Y) ento
se (X>Y) ento
se <condio> ento
comandos....
Maior X
senao
seno
comandos
fim do se
seno
comandos
10 Exemplo
Pea dois nmeros, calcule e mostre a diviso do primeiro pelo segundo
Pseudocdigo
Programa diviso
Variveis n1,n2,divi : inteiros
Inicio
Imprima Digite dois nmeros
Ler n1,n2
se n2 =0 ento //Caso a condio n2=0 for verdadeira (V) teremos:
Imprima ERRO: No h diviso por zero
seno // caso contrrio, ou seja, se n2 0 (F) teremos:
divi=n1/n2
42
Fluxograma:
Inicio
n1,n2
n2=0
ERRO: No h
diviso por
zero
divi n1/n2
resultado
fim
43
Entrada:
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
Processamento:
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
Sada
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
44
20 Exemplo
Pea 3 notas de um aluno, calcule e mostre o resultado, caso o aluno tire maior ou
igual a 7 exiba que ele estar aprovado, caso contrrio reprovado.
Pseudocdigo
1. Programa media_notas;
2. variveis n1,n2,n3,media;
3. Inicio
4.
5.
Ler n1,n2,n3;
6.
7.
8.
9.
10.
11.
12. fim;
Condio: mdia>=7
seno
Imprima REPROVADO
A estrutura seno
identifica quando a
condio mdia>=7 no
verdadeira
45
Fluxograma:
inicio
n1,n2,n3
media n1+n2+n3
media >=7
REPROVADO
APROVADO
FIM
30 exemplo
Pea o salrio de um funcionrio, caso a pessoa ganhe um salrio inferior a R$
500,00 d um aumento de 15% caso contrrio exiba a mensagem que no haver
aumento.
Programa reajuste;
Variveis sal, aum: real;
Inicio
Imprima Digite seu salrio:
Ler sal
If sal <500
Inicio da estrutura se
inicio
aum sal* 15/100
Imprima Novo salrio: , aum
Fim da estrutura se
fim
seno
Imprima Voc no tem direito a aumento
Fim.
Seguindo nossa estrutura de Entrada, Processamento e sada, temos:
47
Estrutura Case
A estrutura de deciso CASO mais utilizada quando se precisa testa uma nica
expresso que produz um resultado, ou, ento, o valor de uma varivel, em que est
armazenado um determinado contedo. Compara-se, ento, o resultado obtido no
teste com os valores fornecidos em cada clusula Caso.
Sua sintaxe :
Escolha (varivel)
Caso (opo 1): Instrues;
Caso (opo 2): Instrues;
ou ainda
Escolha (varivel)
Caso (opo 1): Instrues;
Caso (opo 2): Instrues;
seno Instrues;
Fim Escolha
48
Um exemplo prtico:
Exemplo:
Receba um nmero qualquer e d as seguintes opes:
1- Raiz quadrada
2- Quadrado
3- Cubo
Exiba o valor correspondente ao que foi solicitado
Pseudocdigo
Programa escolha_case
Variaveis numero, opo,total: inteiro
Inicio
Imprima Digite um nmero
Ler numero;
Imprima Digite sua opo: 1- Raiz Quadrada / 2 Quadrado / 3 Cubo
Ler opo
Escolha (opo)
case 1 : total
numero
49
Fluxograma
Inicio
numero
opcao
opcao
Opo 1
Opo 2
total numero
Totalnumero*numero
Opo 3
Totalnumero*numero*
numero
fim
Caso a condio
sal<500 seja
verdadeira, executase os dois comandos
abaixo:
If sal <500
inicio
aum sal* 15/100
Importante:
fim
seno
Imprima Voc no tem direito a aumento
51
Exerccios resolvidos
Vamos agora, acrescentar aos exerccios anteriores estruturas :
Programa maior_idade;
Variveis idade: inteiro;
Inicio
Imprima Digite sua idade:
Ler idade
se idade >= 18
Imprima Maior de idade
seno
imprima Menor de idade
fim.
52
Fluxograma
Inicio
idade
idade>=18
Menor de
idade
Maior de idade
Fim
53
2. Pea trs notas calcule e mostre a mdia ponderada sabendo que seus pesos
correspondem respectivamente a p1=3, p2=4 e p3=3. Calcule e mostre a mdia
ponderada dessas notas. A mdia das trs notas mencionadas anteriormente
obedece aos pesos a seguir:
MDIA PONDERADA
CONCEITO
Pseudocdigo
Programa media_peso
Constantes p13; p24; p33
variveis n1, n2, n3,media: inteiro;
Imprima Digite 3 notas
Ler n1, n2, n3,
media (n1 * p1 + n2 * p2 + n3 * p3) / (p1 + p2 + p3)
Imprima media
se (media >= 9) e (media <= 10)
Imprima "Obteve conceito A"
54
Fim.
Fluxograma:
55
Inicio
p1=3
p2=4
p3=3
N1,N2,N3
media=(p1*n1+p2*n2+p3*n3)10
media >=9 e
<=10
media>=7 e
<=9
media>=6 e
<=7
Conceito A
Conceito B
Conceito C
media>=5 e
<=6
media>=0 e
<=5
Conceito D
Conceito E
fim
56
Anote a:
Trata-se do operador lgico E visto acima.
57
Salrio
Aumento
Primrio
Salrio <900,00
Aumento de 20%
Ginsio
Salrio <=1200,00
Aumento de 15%
Superior
Salrio <=3000,00
Aumento de 5%
Pseudocdigo
Programa aumento_salario;
variveis
salrio,aumento:inteiro
categoria: caractere
Inicio
Imprime Digite seu salrio:
Ler salrio
Imprima Digite sua categoria: P- primrio; G- ginsio; S- superior
Ler categoria
If (categoria = p) e (salario <900)
aumento salario*20/100
If (categoria = g) e (salario <1200)
aumento salario*15/100
If (categoria = s) e (salario <3000)
aumento salario*5/100
Imprima Voc ter um aumento de , aumento
Fim .
58
Fluxograma:
Inicio
Salario
categoria
Categoria =p
e
salario <900
aumento salario*20/100
Categoria =g
e
salario <1200
aumento salario*15/100
Categoria =s
e
salario <3000
aumento salario*5/100
Aumento
Fim
59
60
Pseudocdigo
Programa equacao
Variveis a, b, c, delta, r1, r2 inteiro
Inicio
Imprima Digite os valores das variveis a, b e c
Ler a, b, c
if a = 0
Imprima Valor invlido para a resoluo desta equao
seno
delta (b * b) (4 * a * c)
se delta < 0
Imprima No existe raiz real
se delta = 0
inicio
Imprima Existe uma raiz real
X1 - b / (2 * a)
Imprima x1
fim
se delta > 0
inicio
Imprima Existem duas razes reais
x1 (- b + delta ) / (2 * a)
x2 (- b - delta ) / (2 * a)
Imprima x1, x2
fim
fim
61
Fluxograma:
Inicio
a,b,c
a=0
delta(b*b)-(4*a*c)
Valor invlido
delta=0
No existe
raiz Real
delta=0
x1 -b/(2*a)
delta >0
X1
x1 ( b delta ) /( 2 * a )
x 2 ( b delta ) /( 2 * a )
X1
X2
FIM
62
REQUISITOS
REAJUSTES
PREO ATUAL
% DE AUMENTO
% DE DIMINUIO
< 500
< R$ 30,00
10
15
>= 1.200
>=R$ 80,00
20
63
Programa reajuste_preco
Variveis pre, venda, novo_pre: real
Inicio
Imprima Digite o preo e o valor da venda
Ler pre, venda
se (venda<500) ou (pre<30)
novo_pre pre + (10 * pre)/100
se (venda>1200) ou (pre>=80)
novo_pre pre (20 * pre)/100
Imprima novo_pre
Fim
64
Fluxograma:
Inicio
pre,venda
venda<500
ou
pre<30
novo_prepre+(pre*10)/100
venda>=500
e venda<1200 ou
pre>30 e pre<80
novo_prepre+(pre*15)/100
venda>1200
ou
pre>=80
novo_prepre-(pre*20)/100
novo_pre
FIM
65
66
Exerccios propostos
Mdia
Mensagem
Reprovado
Exame
Exame
67
68
Tempo de servio
Aumento
20%
29%
35%
Acima de 12 anos
40%
Gratificao
R$ 350,00
R$ 500,00
Acima de 55
R$ 600,00
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
69
5) O ndice de Massa Corporal (IMC) uma frmula que indica se um adulto est
acima do peso, se est obeso ou abaixo do peso ideal considerado saudvel. A
frmula
para
calcular
ndice
de
Massa
Corporal
Condio
IMC em
IMC em
Mulheres
Homens
abaixo do peso
< 19,1
no peso normal
19,1 - 25,8
20,7 - 26,4
25,8 - 27,3
26,4 - 27,8
27,3 - 32,3
27,8 - 31,1
> 32,3
> 31,1
marginalmente
acima
< 20,7
do peso
acima do peso ideal
Obeso
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
70
cdigo descrio
Estoque
Televisor
25
Mquina lavar
15
Microondas
14
Fogo
36
Geladeira
23
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
71
9) Faa em portugol que dado altura e o sexo da pessoa calcule o peso ideal
conforme a frmula a seguir:
sexo masculino: (72,7*altura ) -62
sexo feminino: (62,1 *altura) -48,7
Para ambos os sexos, caso o peso exceder 10 quilos do peso ideal, mostre uma
mensagem
alertando.
____________________________________________________________________
____________________________________________________________________
72
10) Faa um fluxograma e em portugol que receba o sexo da pessoa, verifique se ela
do sexo masculino ou feminino, caso contrrio mostre a mensagem de erro.
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
73
Estrutura de Repetio
Quando precisamos fazer repetir uma determinada instruo devemos utilizar uma
estrutura de repetio, tambm conhecido como lao.
Esta estrutura composta em Enquanto, Repita e Para. Todas elas tm a mesma
funcionalidade: a repetio. Entretanto, dependendo do problema a ser resolvido,
cada um deles apresenta uma caracterstica mais adequada.
74
Voc deve ter notado que nenhum dado foi pedido para o
usurio. A soma foi feita de maneira independente.
Na estrutura para no necessrio incrementar a varivel i.
Quando comearmos a programar em Pascal iremos ter uma
viso melhor deste conceito, entretanto, no fluxograma
precisamos indicar que h uma incrementao na varivel de
Importante:
controle.
75
Fluxograma:
inicio
i =1
somasoma+i
i<=10
ii+1
soma
Fim
20 exemplo
Pea duas de quatro alunos, calcule e mostre a mdia de cada aluno
individualmente.
Pseudocdigo
Programa lao_para
Variaveis n1,n2,i: inteiro
media : real
Inicio
para i=1 at 4 faa
76
Fluxograma:
inicio
i=1
i<=4
n1,n2
media(n1+n2)/2
Media>=7
APROVADO
REPROVADO
II+1
Fim
77
Sintaxe
fim enquanto
Pseudocdigo
1.Programa votao
2.Variveis cont_ze, cont_mane, cont_popo, cont_bigu, voto: inteiro; resp:
caractere
3. Inicio
4. resp=s
5.
6.
inicio
78
8.
9.
2- Mane do Pilo
10.
11.
4 Bigu do brejo
12.
ler voto
13.
if voto =1
14.
15.
16.
17.
18.
19.
20.
cont_ze= cont_ze +1
if voto =2
cont_mane= cont_mane +1
if voto =3
cont_popo= cont_popo +1
if voto =4
cont_bigu= cont_bigu +1
21.
22.
Ler resp
23.
Fim do enquanto
79
Fluxograma
inicio
voto
Candidato 1
Candidato 2
cont_zecont_ze+1
cont_manecont_mane+1
voto
Candidato 3
cont_popocont_popo+1
Candidato 4
cont_bigucont_bigu+1
Deseja
continuar? (S/
N)
resp
Resp = S
Mostrar
votao
fim
80
Importante:
10 exemplo
Faa um algoritmo que receba a seguinte enqute: Voc tem computador em casa?
Levante o nmero de pessoas que no possuem e as que possuem. Para sair d a
opo de escolha.
Pseudocdigo
Programa enquete
Variaveis voto,resp: caractere
cont_s,cont_n: inteiro
Inicio
81
82
inicio
Resp=sim
voto
cont_n=cont_n+1
Voto
cont_s=conts_+1
Deseja
continuar?
Resultado
da votao
FIM
83
Exerccios resolvidos
1) Faa um algoritmo utilizando a estrutura condicional Enquanto que receba mostre
os nmeros pares de 1 a 20.
Pseudocdigo
Programa soma_nmeros
Variaveis i:inteiro
Inicio
i 1
Enquanto i<=20 faa
inicio
se resto i/2 = 0 ento
Imprima Nmero par
else
Imprima Nmero impar
Fim.
84
Inicio
i=1
i<=20
resto i/2=0
impar
par
ii+1
Fim
85
Programa Fatorial
Variaveis n, i, fat inteiro
Inicio
Imprima Digite um numero:
Ler n
fat 1
para i 1 ate n faa
fat fat * i
Imprima O fatorial de ,n , , fat
FIM
Fluxograma:
Inicio
fat1
i =n
fatfat* i
fat
Fim
86
Programa nmeros_pares
Variaveis n1,n2,i,soma: inteiro
Inicio
Imprima Digite o primeiro nmero do intervalo:
Ler n1
Imprima Digite o segundo nmero do intervalo:
Ler n2
para i n1 ate n2 faa
inicio
if (n1>20) then
somasoma+n1
fim do para
Imprima som
fim.
87
Fluxograma:
Inicio
n1,n2
n1 =n2
Soma<--soma+n1
n1n1+1
soma
Fim
88
89
cont= 1
cont=12
temp
cont =1
maiortemp
mes_maior cont
menortemp
mes_menoscont
alt>maior
maioralt
mes_maiori
alt<menor
menoralt
mes_menori
A
Temperaturas
fim
90
91
Exerccios propostos
92
93
6) Faca um programa que calcule e mostre o produto dos nmeros primos entre 92 e
1.478
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
Deseja-se saber:
a) qual o maior e o menor ndice de infectados e a que cidades pertencem:
b) qual a mdia de infectados nas cinco cidades juntas;
c) qual a mdia de mortos de pessoas com mais de 40 anos
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
9) Receba a base para calcular a rea de um tringulo.No permita que sejam
digitados valores invlidos, ou seja, valores menor que zero. Use a estrutura Repita
____________________________________________________________________
____________________________________________________________________
95
96
Vetor
At o momento armazenamos nossos dados em variveis comuns, com isso no tnhamos
acesso a determinados valores porque eles se perdiam ou eram substitudos por outros
valores. Por exemplo, no caso do exerccio acima sobre achar a maior e a menor
temperatura, com o uso do vetor o algoritmo ficaria bem mais vivel.
temperatura
35
ndice= [ i ]
25
26
27
28
29
30
31
32
33
32
30
10
11
12
Estrutura do vetor
O vetor acima unidimensional, ou seja, possui apenas uma linha. Neste caso
representando as temperaturas, os valores abaixo, de 1 a 12 representam o ndice do vetor.
Similarmente, podemos definir vetores como posies de memria, identificadas por um
mesmo nome, individualizadas por ndices e cujo contedo de mesmo tipo.
Sintaxe da declarao de um vetor:
35
ndice= [ i ]
25
26
27
28
29
30
31
32
33
32
30
10
11
12
97
para i1 at 10
inicio
Imprima Digite o ,i, numero;
Ler num[ i ]
Importante:
fim do lao
Pseudocdigo
Programa bimestre
Varivel notas: vetor [1:4] de inteiros
Inicio
para i1 at 4 faa
inicio
Imprima Digite a ,i, nota
ler notas [ i ]
fim do lao para
98
Veja que podemos referenciar o vetor e colocarmos o dado digitado pelo usurio, ou seja, no
caso acima chamamos nota[bim] a varivel bim dentro do colchetes ir identificar a posio
desejada do usurio.
20 exemplo
Faa um algoritmo que receba o ndice correspondente ao dia da semana, conforme tabela
abaixo:
99
Dia da semana
ndice
Dia da semana
Domingo
quinta-feira
segunda-feira
sexta-feira
tera-feira
sbado
quarta-feira
Programa dia_da_semana
Variveis dia: vetor [1:7] de caracteres
cod: inteiro
Inicio
dia[1] domingo
dia[2] segunda-feira
dia[3] tera-feira
dia[4] quarta-feira
dia[5] quinta-feira
dia[6] sexta-feira
dia[7] sbado
Imprima Cdigo da semana:
Ler cd
Imprima Dia da semana: , dia[cd]
Fim.
Fluxograma
Inicio
dia[1]domingo
dia[2]segunda
dia[3]tera
dia[4]quarta
dia[5]quinta
dia[6]sexta
dia[7]sabado
Dia da semana
Dia da semana
Fim
100
Pseudocdigo
Programa temperatura
Variveis temp: vetor[1:12] de inteiro
media, soma: real
i: inteiro;
Inicio
para i 1 at 12 faa
Imprima Digite a temperatura
Ler temp[ i ]
101
Fluxograma
Inicio
i1, 12
idade
somasoma+temp
media soma/12
Media das
temperaturas
Fim
102
Programa maior_menor_temperatura
variveis cont, maior, mes_maior, menor, mes_menor :inteiro
temp: vetor[1:12] de inteiros
Inicio
para cont 1 ate 12 faa
inicio
Imprima Digite a temperatura do ms : ,i
Ler temp[ cont ]
fim do para
103
Entrada:
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
Processamento:
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
_______________________________________________________________
Sada
_______________________________________________________________
_______________________________________________________________
_____________________________________________________________________
_____________________________________________________________________
104
Exerccios resolvidos
1) Faa um algoritmo que pea 30 nmeros, verifique entre eles quais so primos e
mostre a posio deles.
Programa primo;
Variveis
n: vetor[1:30]
i,j,cont : inteiro
Inicio
para i 1 at 12 faa
inicio
Imprima Digite o nmero:
Ler n[ i ]
para j 1 at n faa
inicio
se (n MOD 2)= 0 faa
contcont+1;
se cont<=2
Imprima n[ i ]
Imprima Posio: , i
Fim
Fim
Fim.
105
Programa ordenao
Variveis
nome: vetor[1:10] de caracteres
i ,j : inteiro
ordena: caractere
Inicio
para i1 at 10 faa
inicio
Imprima Nome:
Ler nome
fim do para
para i1 at 10 faa
inicio
para ji*1 at 10 faa
inicio
se nome[ i ]>nome[ j ] ento
inicio
ordena nome[ i ]
nome[ i ] nome [ j ]
nome[r] ordena
fim do se
fim do para
fim do para
para i1 at 10 faa
Imprima nome[ i ]
Fim.
106
Exerccios propostos
Sugesto: faa os exerccios em portugol e em fluxograma
1) Faa um algoritmo que pea a altura de 10 jogadores e suas respectivas idades.
Verifique e mostre os jogadores com mais de 1.90 e calcule a mdia de idade de
todos os jogadores.
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
2) Faa um algoritmo que receba 2 notas de 50 alunos. Calcule e mostre a mdia de
cada um e exiba os que foram reprovados (media inferior a 7.0).
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
107
Nome aluno
Prova 1
Prova 2
Mdia
Situao
Flvio
9,5
10,0
9.75
APROVADO
Marcos
5,5
4,5
3,5
REPROVADO
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
10) Carregue um vetor com 20 posies, crie um segundo vetor substitudo os
valores maiores que 10 por 0.
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
110
Matrizes
As matrizes so estruturas de dados que permitem o armazenamento de um
conjunto de dados de mesmo tipo, porm em dimenses diferentes, ou seja, possuem linha
e colunas
Sintaxe:
Nome da matriz : matriz [1:4, 1: 5 ] de <tipo bsico da matriz >
onde:
1:4 nmero de linhas, ou seja, 4 linhas
1:5 nmero de colunas, ou seja, 5 colunas
Colunas
Linhas
Joo
Carlos
25
18
Fernando Macedo
Beatriz
nome
2
76
34
33
idade
3
profisso
4
cidade natal
Cear
So Paulo
Macap
Acre
Manaus
111
10 Exemplo
Faa um algoritmo que represente uma matriz 3x5 de nmeros inteiros. Calcule e
mostre a soma de todos os elementos.
Pseudocdigo
Programa matriz
Variveis numero: matriz[1:3, 1:5] de inteiros
linha, coluna,soma: inteiro
Inicio
para linha1 at 3 faa
inicio
para coluna1 at 5 faa
inicio
Imprima Digite os nmeros
Ler numero[linha, coluna]
somasoma+numero[linha,coluna]
fim para
fim para
Imprima Soma = , soma
Fim.
112
Fluxograma
inicio
para
linha=1:3
para
coluna=1:5
numero[linha,coluna]
somasoma+numero[linha,coluna]
soma
fim
113
Faa um algoritmo que represente uma matriz 5x5 com nmeros inteiros, localize o
nmero 300 e mostre em que posio ele se encontra.
345 24
145
369
353
775
Pseudocdigo
Programa matriz2
Variveis numeros: matriz[1:5,1:5] de inteiros
lin, col,num:inteiro
Inicio
para lin1 at 5 faa
inicio
para col 1 at 5 faa
Imprima Digite 25 nmeros
Ler nmeros[lin,col]
se numeros[lin,col] = 300 ento
Imprima O nmero 300 est na posio: ,lin,col
fim para
fim para
fim.
114
inicio
para
linha=1:5
para
coluna=1:5
numero[linha,coluna]
Numero[lin,col]=300
O numero 300
est na
posio, lin,col
fim
115
Exerccios resolvidos
1) Faa um algoritmo que carregue:
uma matriz 5x4 com o preo dos cincos carros em quatro lojas diferentes
Calcule uma segunda matriz 5.x4 com valores dos impostos de cada produto, sendo que
cada produto obedece a seguinte tabela:
Preo
% imposto
At 52.000,00
42%
56 %
Acima de 100.000,00
60%
Programa carros
Variaveis modelo: vetor[1:5] de caracteres
preco, imp[1:5, 1:4] de inteiros
cor: vetor[1:5] de caractere
lin,col, final: inteiro
inicio
para lin 1 at 5 faa
inicio
Imprima Modelo:
Ler modelo[lin]
fim do para
116
para i1 at 5 faa
inicio
Imprima Modelo , modelo[lin]
Imprima Cor , cor[lin]
para col1 at 4 faa
inicio
finalpreco[lin,col] +imp[lin]col] + cor[lin]
Imprima Imposto na loja, col, = , imp[lin,col]
Imprima Preo na loja, col, = , preco[lin,col]
Imprima Preo final na loja, col, = , imp[lin,col]
fim do para
fim
fim
117
Exerccios propostos
Sugesto: faa os exerccios em portugol e em fluxograma
1) Faa um algoritmo para ler e exibir uma matriz 3x5 de nmeros inteiros.
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
2) Dado uma matriz de 6x6 faa um algoritmo que:
a) Calcule o produto dos elementos da segunda coluna;
b) Faa a soma dos elementos da terceira linha;
c) Faa a soma de todos os elementos da matriz;
d) Faa a soma do diagonal principal;
118
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
3) Receba o tamanho da matriz NxN, faa um algoritmo que verifique se a matriz
simtrica (alinha,coluna=alinha,coluna).
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
4) Dada uma matriz 3x5 de valores inteiro faa um algoritmo que faa a leitura
destes valores e ao final da leitura de todos, imprimir o seguintes relatrio:
a) Listar os valores que so menores que a mdia dos valores;
b) Quais os elementos da diagonal secundria;
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
119
5) Dado uma matriz 3x3 de valores inteiros faa um algoritmo coloque os elementos
ordenados primeiro por linha.
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
6) Dado duas matrizes A 3x3 e B 3x3 faa a multiplicao de A por B e gere uma
terceira matriz C com os resultados.
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
120
7) Dado uma matriz 5x3 de valores inteiros determine a sua matriz transposta .
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
____________________________________________________________________
121