Escolar Documentos
Profissional Documentos
Cultura Documentos
Ranildo Lopes
APOSTILA 02
LGICA DE PROGRAMAO
Sumrio
I - CONCEITOS INICIAIS .......................................................................................................................................... 3
Lgica de programao......................................................................................................................................... 3
Algoritmo ............................................................................................................................................................... 3
Instruo................................................................................................................................................................ 4
EXERCCIOS ........................................................................................................................................................ 4
Programa de Computador..................................................................................................................................... 4
Fases..................................................................................................................................................................... 4
Diagrama de Blocos .............................................................................................................................................. 5
EXERCCIOS ........................................................................................................................................................ 5
II - VARIVEIS........................................................................................................................................................... 5
Tipos de Variveis ................................................................................................................................................. 6
Numricas ......................................................................................................................................................... 6
Cadeia ou String ou Alfanumricas .................................................................................................................. 6
Caractere .......................................................................................................................................................... 6
Lgico................................................................................................................................................................ 7
Constantes ............................................................................................................................................................ 7
III - EXPRESSES .................................................................................................................................................... 7
Operadores Aritmticos......................................................................................................................................... 7
Operadores Relacionais........................................................................................................................................ 7
Operadores Lgicos .............................................................................................................................................. 8
EXERCCIOS ........................................................................................................................................................ 9
IV COMANDOS BSICOS ................................................................................................................................... 10
Comando de Atribuio....................................................................................................................................... 10
Comando de Entrada .......................................................................................................................................... 10
Comando de Sada.............................................................................................................................................. 10
Primeiro Exemplo Portugus Estruturado e Pascal ......................................................................................... 10
EXERCCIOS - Estrutura Seqencial.................................................................................................................. 12
V ESTRUTURAS DE SELEO .......................................................................................................................... 13
Conceitos............................................................................................................................................................. 13
Seleo Simples.................................................................................................................................................. 13
I - CONCEITOS INICIAIS
Lgica de programao
a tcnica de encadear pensamentos para atingir determinado objetivo. O aprendizado desta
tcnica necessrio, para quem quer trabalhar com desenvolvimento de sistemas e programas.
Algoritmo
uma seqncia de passos finitos com o objetivo de solucionar um problema.
O estudo da lgica o estudo dos mtodos e princpios usados para distinguir o raciocnio correto
do incorreto. Naturalmente, essa definio no pretende afirmar que s possvel argumentar
corretamente com uma pessoa que j tenha estudado lgica. Afirm-lo seria to errneo quanto
pretender que s possvel correr bem, se estudou fsica e fisiologia, necessrias para a
descrio dessa atividade. Alguns excelentes atletas ignoram completamente os processos
complexos que se desenrolam dentro deles prprios quando praticam o esporte.
Assim tambm acontece no nosso dia-a-dia. Quantas vezes j vimos um algoritmo e no
sabamos que aquela seqncia de passos chamava-se algoritmo.
Um exemplo bem freqente quando queremos falar em algum telefone pblico.
Exemplo de algoritmo para falar em um telefone pblico
1 Retirar o telefone do gancho;
2 Esperar o sinal;
3 Colocar o carto;
4 Discar o nmero;
5 Falar no telefone;
6 Colocar o telefone no gancho.
O algoritmo exatamente esse conjunto de passos que resolveu o problema de uma
pessoa falar no telefone. como se fssemos ensinar uma mquina a fazer alguma tarefa
especfica.
Outro exemplo clssico um algoritmo para resolver o problema de fritar um ovo que
poderia estar escrito em forma de uma receita. A receita um algoritmo, pois formada de aes
que devem ser tomadas para fritar um ovo.
Exemplo de algoritmo para fritar um ovo
1 pegar frigideira, ovo, leo e sal;
2 colocar leo na frigideira;
3 acender o fogo;
4 colocar a frigideira no fogo;
5 esperar o leo esquentar;
6 colocar o ovo;
7 colocar o sal;
8 retirar quando estiver pronto.
Cada linha do algoritmo pode-se chamar de uma instruo, logo, podemos dizer que um
algoritmo um conjunto de instrues.
4
EDGAR TITO - INFORMTICA 2014 Prof. Ranildo Lopes
Assim como fritar um ovo, nos algoritmos computacionais no podemos trocar ou omitir
certas instrues, caso contrrio no obteremos o resultado esperado. Por exemplo, se omitirmos
a instruo acender o fogo, no teremos ao final do algoritmo um ovo frito.
Instruo
Indica a um computador uma ao elementar a ser executada.
At as coisas mais simples podem ser descritas por um algoritmo. Por exemplo:
Algoritmo para o fim de semana
1 vejo a previso do tempo;
2 se fizer sol
vou praia;
seno
vou estudar;
3 almoar;
4 ver televiso;
5 dormir.
EXERCCIOS
1 Fazer um algoritmo para tomar banho:
2 Crie um algoritmo para fazer uma prova:
3 Faa um algoritmo para somar dois nmeros:
Programa de Computador
Nada mais do que um algoritmo escrito numa linguagem de computador (C, Pascal, Fortran,
Delphi, Cobol, Java e outras). a traduo para o ingls do algoritmo feito em portugus. O mais
importante de um programa a sua lgica, o raciocnio utilizado para resolver o problema, que
exatamente o algoritmo.
A forma de escrever um algoritmo em pseudocdigo (algoritmo que no usa nenhuma
linguagem de programao) vai variar de autor para autor, pois, um traduz ao p da letra a
linguagem C, outro, o Pascal, outro, mistura as duas linguagens e assim por diante.
importante lembrar que estas variaes vo sempre ocorrer, podemos dizer que uma
variao de autores adotados.
Fases
A principal finalidade de um computador realizar a tarefa de processamento de dados, isto
, receber dados atravs de dispositivos de entrada que podem ser, por exemplo, teclado, mouse,
scanner, entre outros; realizar operaes com estes dados e gerar uma resposta que ser
expressa em um dispositivo de sada que pode ser, por exemplo, uma impressora, um monitor de
vdeo, entre outros.
Entretanto ao montar um algoritmo, precisamos primeiro dividir o problema apresentado em trs
fases fundamentais:
ENTRADA DE
PROCESSAMENTO
SADA DE DADOS
DADOS
DE DADOS
ENTRADA: So os dados de entrada do algoritmo.
PROCESSAMENTO: So os procedimentos utilizados para chegar ao resultado final.
5
EDGAR TITO - INFORMTICA 2014 Prof. Ranildo Lopes
SADA: So os dados j processados, os resultados, mostrados na tela do computador (monitor
de vdeo) ou impressora.
Diagrama de Blocos
uma forma padronizada para representar os passos lgicos de um determinado processamento.
Com o diagrama, tambm conhecido como fluxograma, podemos definir uma seqncia de
smbolos, com significado bem definido, portanto, sua principal funo a de facilitar a
visualizao dos passos de um processamento.
Simbologia do Diagrama de Bloco
Existem diversos smbolos em um diagrama de bloco. Veja no quadro abaixo alguns dos smbolos
que iremos utilizar:
Smbolo
Funo
Indica o incio ou fim de um processamento
Exemplo: Incio do algoritmo
TERMINAL
Processamento em geral
Exemplo: x<- 2+3
PROCESSAMENTO
Indica entrada de dados pelo usurio via teclado
Exemplo: Digite a nota da prova 1
ENTRADA MANUAL DE DADO
Mostra informaes ou resultados
Exemplo: Mostre o resultado do clculo
EXIBIR
EXERCCIOS
1.
Construir um diagrama de blocos que:
- leia quatro nmeros
- calcule a mdia
- mostre o resultado.
2.
Construa fluxograma que:
- leia o salrio de um empregado
- calcule o novo salrio sabendo que l teve um aumento de 15%
- mostre o resultado na tela
3.
II - VARIVEIS
um local na memria principal, isto , um endereo que armazena um contedo.
O contedo de uma varivel pode ser de vrios tipos: inteiro, real, caractere (literal), String
(cadeia), lgico, entre outros.
Uma vez definidos o nome e o tipo de uma varivel, no podemos alter-los no decorrer de um
algoritmo. Por outro lado, o contedo da varivel pode ser modificado no decorrer do programa, de
acordo com a necessidade.
Em algoritmos, as variveis so definidas no incio por meio do comando definido:
Exemplos:
A: inteiro;
X: real;
Nome: string (ou cadeia);
Regras para formao do nome de uma varivel:
1 O primeiro caractere uma letra;
2 Se houver mais de um caractere, poderemos usar letras ou dgitos;
3 Nomes de variveis escritas com letras maisculas sero diferentes de letras minsculas
em muitas linguagens de programao. Lembre-se: peso diferente de PESO;
4 Nenhuma palavra reservada poder ser nome de uma varivel.
Nomes Vlidos
Nome, profissao,n, n1,PESO, A
Nomes No-Vlidos
2X -> Comea por algarismo
peso do aluno -> espao no permitido
Tipos de Variveis
Numricas
So aquelas que armazenam dados numricos, podendo ser divididos em duas classes:
Inteiro: so aqueles que no possuem componentes decimais ou fracionrios, podendo ser
positivos ou negativos.
Normalmente uma varivel do tipo inteira poder ocupar 1, 2 ou 4 bytes na MP.
Exemplos:
10
nmero inteiro positivo
-10
nmero inteiro negativo
Real: so aqueles que podem possuir componentes decimais ou fracionrios, podendo
tambm ser positivos ou negativos.
Normalmente uma varivel do tipo real poder ocupar 4 ou 8 bytes na MP.
Exemplos:
25.03
nmero real positivo com duas casas decimais
235. nmero real positivo com zero casas decimais
-10.5
nmero real negativo com uma casa decimal
Cadeia ou String ou Alfanumricas
So aquelas que possuem letras e/ou nmeros. Pode em determinados momentos conter
somente dados numricos ou somente letras. Se usado somente para armazenamento de
nmeros, no poder ser utilizado para operaes matemticas.
O nmero de bytes possveis para armazenamento de uma varivel desse tipo depender da
quantidade de caracteres.
Exemplos:
Maria
String de comprimento 5
123
String de comprimento 3
A
String de comprimento 1
Caractere
aquele que armazena apenas uma letra ou dgito, uma string de comprimento 1. Se usado
para armazenar nmero no poder ser utilizado para operaes matemticas.
III - EXPRESSES
O conceito de expresso em termos computacionais est intimamente ligado ao conceito de
expresso (ou frmula) matemtica, onde um conjunto de variveis e constantes numricas
relaciona-se por meio de operadores compondo uma frmula que, uma vez avaliada, resulta num
valor.
Operadores Aritmticos
Os operadores matemticos so:
Operador
+
*
/
Div
Mod
Funo
Somar
Subtrair
Multiplicar
Dividir
Quociente inteiro
Resto da diviso
Descrio
Igual
<>
Diferente
<=
Menor ou igual
>=
Maior ou igual
>
Maior que
<
Menor que
Exemplo de relaes:
X=1
y=2
z=5
X *X+Y>Z
1 * 1 +2>5
1 + 2 >5
3 > 5
Resultado desta expresso: FALSO
Operadores Lgicos
Uma expresso lgica serve para combinar resultados de expresses aritmticas e/ou
relacionais, variveis e/ou constantes, retornando verdadeiro ou falso.
Exemplo de operadores lgicos, matematicamente conhecidos:
E
Ou
No
And
Or
Not
E / AND
Uma expresso AND (E) verdadeira se todas as condies forem
verdadeiras.
OR / OU
Uma expresso OR (OU) verdadeira se pelo menos uma condio for
verdadeira.
NOT / NO Uma expresso NOT (NO) inverte o valor da expresso ou condio,
se verdadeira inverte para falsa e vice-versa.
Tabela E (AND)
VeV=V
VeF=F
FeV=F
FeF=F
Tabela OU (OR)
V ou V = V
V ou F = V
F ou V = V
F ou F = F
Tabela NO (NOT)
No V = F
No F = V
5 - +, -, Ou
6 - =, < >, <, <=, >, >=.
Observao: em caso de empate entre as prioridades, resolver da esquerda para a direita.
EXERCCIOS
1. Identifique o tipo dos dados:
(a)
inteiro;
(b)
real;
(c)
lgico;
(d)
cadeia ou literal
( ) verdadeiro
( ) aula
( ) -0.342
2.
(a)
(b)
( ) c*d
( ) 897
( ) 35.23
( ) falso
( ) 345
( ) -23
( ) 1 2 3 4
( ) -18.589
( ) Maria
( ) ano
( ) media_salario
( ) mdia
( ) ai!
( ) A15B34
( ) aula
( ) 3/1
( ) nome-aluno
( ) 5
3.
Faa a declarao de 2 variveis do tipo inteira, 2 do tipo real, 2 de um nico
caractere e 2 do tipo cadeia de caracteres.
a)
b)
c)
d)
e)
a)
a = 2.0,
b = 9.0,
a + 1 > = raiz (b)
nome < > ana
profissao = mdico
nome = ana,
( )
( )
( )
profissao = advogado
b)
a = 6.0,
b = 121.0,
a + 1 > = raiz (b)
nome < > ana
profissao = mdico
c)
nome = pedro,
( )
( )
( )
profissao = mdico
resultado = verdadeiro
( )
10
IV COMANDOS BSICOS
Comando de Atribuio
Este comando utilizado para atribuir valores a variveis e, em portugol (portugus estruturado),
representado por <- (seta da direita para esquerda).
Exemplos de comandos de atribuio:
Cor <- verde;
Teste <- falso;
Media <- (n1 + n2) / 2;
X <- raiz (16);
Comando de Entrada
O comando de entrada LEIA utilizado para receber dados do teclado.
o comando que permite que o usurio digite dados, possibilitando um dilogo com o
computador. O dado digitado armazenado na varivel indicada no comando.
Lembre-se de que o nome de uma varivel representa uma posio de memria.
Sintaxe:
Leia (nome de uma varivel);
Exemplo:
Leia (n);
Comando de Sada
o comando responsvel por enviar um resultado, uma informao ao usurio. O valor de
cada varivel buscado na memria e mostrado em um dispositivo de sada. Atravs desse
comando o computador pode emitir os resultados e outras mensagens para o usurio atravs da
tela do computador (monitor) ou uma impressora.
Sintaxe:
Escreva (expresso ou varivel ou constantes);
Exemplos:
Escreva ( Aprender lgica com esta apostila ficou bem mais fcil!);
Escreva ( Digite o seu nome: );
Escreva ( A + B );
Escreva (A mdia das notas = , media);
Primeiro Exemplo Portugus Estruturado e Pascal
Algoritmo que l um nome digitado pelo usurio e mostra uma mensagem.
Portugus Estruturado
Programa exemplo1;
Var
nome: literal;
Incio
Escreva (Digite um nome: );
Leia (nome);
Escreva(nome, um nome muito
bonito! );
Fim.
Pascal
Program exemplo1;
Var
nome: string;
Begin
Write (Digite um nome: );
Read (nome);
um
nome
muito
End.
11
12
Faa um algoritmo que leia dois nmeros, calcule e imprima a soma desses dois nmeros.
2. Faa um programa que receba dois nmeros reais, calcule e mostre a subtrao do primeiro
nmero pelo segundo.
3. Faa um programa que receba dois nmeros inteiros, calcule e imprima a diviso do primeiro
nmero pelo segundo.
4.
Faa um programa que leia um nmero e informe a metade e o dobro desse nmero.
5. Escreva um programa que receba um nmero via teclado e informe em seguida a metade e o
quadrado desse nmero.
6. Escrever um programa que permita receber o nome e a idade de uma pessoa e em seguida,
informar o nome digitado e a idade da pessoa daqui a 30 anos.
7. Faa um programa que leia trs notas de um aluno, calcule e imprima a mdia aritmtica
entre essas notas.
8. Faa um programa que receba dois nmeros inteiros, calcule e imprima:
- soma do dois nmeros;
- subtrao do primeiro pelo segundo;
- subtrao do segundo pelo primeiro;
- produto dos dois nmeros;
- diviso do primeiro pelo segundo;
- quociente inteiro da diviso do primeiro pelo segundo;
- resto da diviso do primeiro pelo segundo.
9. Faa um programa que receba quatro nmeros inteiros, calcule e mostre a soma desses
nmeros.
10. Faa um programa que receba trs notas e seus respectivos pesos. Calcule e mostre a
mdia ponderada dessas notas.
11. Faa um programa que receba o valor do salrio de um funcionrio. Calcule e mostre o novo
salrio, sabendo-se que este sofreu aumento de 25%.
12. Faa um programa que receba o valor do salrio de um funcionrio e o percentual de
aumento, calcule e mostre o valor do aumento e o novo salrio.
13. Faa um programa que receba o valor do salrio-base de um funcionrio, calcule e mostre o
salrio a receber, sabendo-se que este funcionrio tem gratificao de 5% sobre o salrio-base e
paga imposto de 7% sobre o salrio-base.
14. Faa um programa que receba o valor do salrio-base de um funcionrio, calcule e mostre o
salrio a receber, sabendo-se que este funcionrio tem gratificao de R$ 1.000,00 e paga
imposto de 10% sobre o salrio-base.
13
V ESTRUTURAS DE SELEO
Conceitos
Os algoritmos at agora seguiram um mesmo padro: entrava-se com dados, estes eram
processados e alguma informao era mostrada na tela.
Dessa forma, o computador mais parecia uma mquina de calcular. O aprendizado de
novos conceitos, como a estrutura de seleo, nos dar uma viso maior da complexidade de
tarefas que ele poder executar.
Um exemplo do nosso dia-a-dia: imagine-se diante de um caixa eletrnico e suponha que
sua senha seja 1234:
Na tela aparece a mensagem:
- Digite sua senha :
E o cursor (
ou | ) fica piscando:
Voc digita os algarismos da sua senha.
Neste momento, a Unidade Lgica e Aritmtica (um dos componentes da CPU) verifica se os
nmeros que voc digitou so iguais a 1234. Caso tenha sido, a transao bancria continua;
mas, se voc digitou algo diferente, aparece na tela a mensagem: SENHA INVLIDA.
Sintaxes:
Seleo Composta
Seleo Simples
Se condio ento
Se condio ento
Incio
Comando (s);
Incio
Comando (s);
Fim
Seno
Incio
Fim;
Comando (s);
Fim;
Podemos constatar que esta estrutura faz parte do nosso cotidiano:
- Se eu no tiver prova, vou ao clube; seno vou estudar.
- Se eu tiver aumento, troco de carro; seno espero o 13 salrio.
- Se minha mdia for maior ou igual a sete, passo direto; seno fao exame final.
A nica coisa diferente a forma como iremos escrev-la, vamos adaptar os algoritmos para uma
linguagem especfica de um modo formal, obedecendo as regras da linguagem.
Exemplo
Algoritmo que l um nmero e mostra uma mensagem dizendo se o nmero digitado ou no
mltiplo de 5.
Pascal:
Portugus Estruturado:
Programa ExemploSe;
Var
num, resto: inteiro;
Incio
Escreva (Digite um nmero: );
Leia (num);
resto <- num mod 5;
Se resto = 0 ento
Escreva (num, mltiplo de
5)
Seno
Escreva (num, no mltiplo
de 5);
Fim.
Program ExemploSe;
Var
num, resto: integer;
Begin
Write (Digite um nmero: );
Read (num);
resto := num mod 5;
If resto = 0 then
Write (num, mltiplo de 5)
Else
Write (num, no mltiplo de
5);
End.
14
Observaes:
Antes de Else no se usa ponto e vrgula;
O Begin e o End so obrigatrios somente quando se tem mais de um comando dentro
do If e do Else.
EXERCCIOS Estrutura de Seleo
1.
Faa um programa que leia um nmero e informe se o dobro do nmero maior que 35.
2.
Faa um programa que leia um nmero e informe se a metade do nmero menor que 12.
3.
Faa um programa que leia dois nmeros e informe apenas se o primeiro maior que o
segundo.
4.
Faa um programa que leia dois nmeros e informa se o primeiro igual ao segundo.
5.
Faa um programa que leia dois nmeros e informe se o primeiro maior, menor ou igual
ao segundo.
6.
Faa um programa que leia trs nmeros e informe qual dos trs o maior.
7.
.
Fazer um programa que receba um nmero e mostre se ele positivo, negativo ou nulo (0)
8.
Elabore um algoritmo que leia um nmero e mostre o nmero com a mensagem par ou
mpar.
9.
Faa um programa que leia a altura e o sexo de uma pessoa, calcule e imprima seu peso
ideal, utilizando as seguintes frmulas:
Para homens: (72.7 * h) 58
Para mulheres: (62.1 * h) 44.7
(h = altura)
10.
Faa um programa que receba quatro notas de um aluno, calcule e imprima a mdia
aritmtica das notas e a mensagem de aprovado para mdia superior ou igual a 7.0 ou a
mensagem de reprovado para mdia inferior a 7.0.
11.
Faa um programa que calcule e imprima o salrio reajustado de um funcionrio de acordo
com a seguinte regra:
- salrios at R$ 300,00, reajuste de 50%
- salrios maiores que R$ 300,00, reajuste de 30%
12.
A prefeitura do Rio de Janeiro abriu uma linha de crdito para os funcionrios municipais. O
valor mximo da prestao no poder ultrapassar 30% do salrio bruto. Fazer um algoritmo que
permita entrar com o salrio bruto e o valor da prestao e informar se o emprstimo pode ou no
ser concedido.
13.
Ler um nmero qualquer e exibir na tela uma mensagem indicando se ele positivo,
negativo ou nulo (zero). Se ele for positivo, exibir tambm a raiz quadrada deste nmero. Se ele
for negativo voc deve escrever uma mensagem dizendo No possvel calcular a raiz deste
nmero.
15
14.
Ler um nmero inteiro e exibir na tela a mensagem Par se ele for um nmero par, ou
mpar se ele for um nmero mpar.
15.
Faa um programa que receba trs notas de um aluno, calcule e mostre a mdia
aritmtica e as mensagens de acordo com a tabela abaixo. Para os alunos de exame, calcule e
mostre a nota que dever ser tirada no exame para aprovao, considerando que a mdia no
exame de 6,0.
MDIA
[ 0,0 a ] 3,0
[ 3,0 a ] 7,0
[ 7,0 a 10,0 ]
16.
MENSAGEM
Reprovado
Exame
Aprovado
17.
Dados trs valores X, Y e Z, verificar se eles podem ser os lados de um tringulo e, se
forem, verificar se um tringulo eqiltero, issceles ou escaleno. Se eles no formarem um
tringulo informar ao usurio tal situao. Considerar que:
Condio para ser tringulo: O comprimento de cada lado de um tringulo menor que a soma
dos outros dois lados.
Chama-se tringulo eqiltero o tringulo que tem os trs lados iguais;
Chama-se tringulo issceles o que tem o comprimento de dois lados iguais;
Chama-se tringulo escaleno o tringulo que tm os trs lados diferentes.
18.
Faa um programa que receba o cdigo de origem de um produto e informe a sua
procedncia. A procedncia obedece a seguinte tabela:
Cdigo de origem
Procedncia
1
Sul
2
Norte
3
Leste
4
Oeste
5 ou 6
Nordeste
7, 8 ou 9
Sudeste
10 at 20
Centro-oeste
21 at 30
Noroeste
Alternativa de Mltiplas Escolhas
uma alternativa para quando o algoritmo tiver muitos SEs, deixando o programa com uma
estrutura melhor.
Sintaxe:
Alvo 2: comando 2;
Portugus Estruturado
Alvo n: comando n;
Caso <nome da varivel> seja
Fim;
Alvo 1: comando 1;
16
Pascal
Case <nome da varivel> of
Alvo 1: comando 1;
Alvo 2: comando 2;
Alvo n: comando n;
End;
Ou
Case <nome da varivel> of
Alvo 1: comando 1;
Alvo 2: comando 2;
Alvo 3: comando 4;
Else
comando 5;
End;
Observaes:
No Case tambm pode fazer uso do Else;
Antes do Else se usa ; (ponto e vrgula);
O Case no tem Begin, mas, tem End;
A varivel que far a verificao dever ser declarada do tipo Integer, Char ou Boolean.
Exemplo:
Este programa l a idade de um nadador e informa a sua categoria seguindo as seguintes regras:
Infantil A (5 - 7 anos), Infantil B (8 10 anos), Juvenil A (11 13 anos), Juvenil B (14 17 anos),
Snior (maiores de 18 anos).
Portugus Estruturado
Programa Exemplo;
var
idade: integer;
Incio
Escreva('Idade do nadador: ');
Leia (idade);
Caso idade seja
5..7: Escreva ('Categoria Infantil
A');
8..10:Escreva
('Categoria
Infantil
B');
11..13:Escreva('Categoria JuvenilA');
14..17:Escreva('Categoria JuvenilB');
18..99:Escreva('Categoria Snior');
Seno
Escreva('Idade invlida!');
Fim;
//Fim do Caso
Fim.
Pascal
Program Exemplo;
var
idade: integer;
Begin
Write ('Digite a idade do nadador:
');
Read(idade);
Case idade of
5..7: Write ('Categoria Infantil
A');
8..10:Write
('Categoria
Infantil
B');
11..13:Write('Categoria Juvenil A');
14..17:Write
('Categoria
Juvenil
B');
18..99:Write ('Categoria Snior');
Else
Write('Idade invlida!');
End;
//End do Case
End.
17
EDGAR TITO - INFORMTICA 2014 Prof. Ranildo Lopes
EXERCCIOS Alternativa de Mltiplas Escolhas
1. Faa um programa que receba o cdigo de origem de um produto e informe a sua
procedncia. (Obs.: este o exerccio 14 da estrutura de seleo se, mas, agora ele ser feito
utilizando o escolha caso.) A procedncia obedece a seguinte tabela:
Cdigo de origem
Procedncia
1
Sul
2
Norte
3
Leste
4
Oeste
5 ou 6
Nordeste
7, 8 ou 9
Sudeste
10 at 20
Centro-oeste
21 at 30
Noroeste
2. Faa um programa que leia um nmero digitado pelo usurio e o escreva por extenso se ele
estiver entre 1 e 5 inclusive, caso contrrio mostrar uma mensagem: Opo de nmero invlida!
3. Escrever um algoritmo que leia um peso na Terra e o nmero de um planeta e imprima o
valor do seu peso neste planeta. A relao de planetas dada a seguir juntamente com o valor
das gravidade relativas Terra:
N
gravidade relativa
Planeta
1
0.37
Mercrio
2
0.88
Vnus
3
0.38
Marte
4
2.64
Jpiter
5
1.15
Saturno
6
1.17
Urano
Para calcular o peso no planeta escolhido use a seguinte frmula:
Peso no Planeta = Peso / 10 * gravidade.
VI ESTRUTURAS DE REPETIO
Vamos supor que nossos algoritmos precisaro ser executados mais de uma vez e, para que
no tenhamos que reescrever trechos idnticos que aumentariam consideravelmente o tamanho
do programa, utilizaremos as estruturas de repetio.
Comando Enquanto (While - Do)
Esta estrutura recomenda quando o nmero de repeties for desconhecido. Para que
funcione corretamente necessrio observar:
necessrio um teste (uma condio) para interromper a repetio, esta estrutura testa
a condio e s executa o que est dentro dela se for verdadeira.
A varivel que testa a condio dever ter seu valor atribudo no incio do programa
atravs de um comando de leitura ou de atribuio, antes da estrutura do enquanto e dentro da
estrutura, como ltimo comando.
O Enquanto comea com Incio (Begin) e termina com Fim (End;)
Pode-se usar outras estruturas dentro do Enquanto (While), como: If, Case, etc.
18
Pascal:
WHILE condio DO
BEGIN
Comando 1;
Comando 2;
Comando n;
END;
Exemplo: Faa um programa que leia vrios nmeros e imprima a metade de cada nmero, o
programa termina quando o 0 (zero) for digitado:
PORTUGUS ESTRUTURADO:
PROGRAMA Enquanto1;
VAR
num: INTEIRO;
metade:REAL;
INCIO
ESCREVA (Digite um nmero inteiro
);
LEIA (num);
ENQUANTO num <> 0 FAA
INCIO
metade <- num/2;
ESCREVA (A metade de , num, ,
metade);
ESCREVA (Digite outro nmero ou zero
para sair do programa: );
LEIA (num);
FIM;
FIM.
PASCAL:
PROGRAM Enquanto1;
VAR
num: INTEGER;
metade:REAL;
BEGIN
WRITE ('Digite um nmero inteiro ');
READ(num);
WHILE num <> 0 DO
BEGIN
metade := num/2;
WRITELN ('A metade de ', num, ' ',
metade:0:1);
WRITELN ('Digite outro nmero ou zero
para sair do programa: ');
READ(num);
END;
END.
1.
Pascal
Repeat
comandos;
Until condio;
EXERCCIOS Comando Enquanto (WHILE)
2.
O IBGE fez uma pesquisa, ele quer saber quantos dentistas foram entrevistados. Fazer um
programa que pergunte aos entrevistados qual a sua profisso e ao final diga quantas pessoas
foram entrevistadas e quantas so dentistas (considerar dentista, Dentista e DENTISTA).
19
EDGAR TITO - INFORMTICA 2014 Prof. Ranildo Lopes
3.
Dado um pas A, com 5.000.000 de habitantes e uma taxa de natalidade de 3% ao ano, e
um pas B com 7.000.000 de habitantes e uma taxa de natalidade de 2% ao ano, calcular e
imprimir o tempo necessrio para que a populao do pas A ultrapasse a populao do pas B.
4.
de:
Uma pousada estipulou o preo da diria em R$ 40,00 e mais uma taxa de servios dirios
20
EDGAR TITO - INFORMTICA 2014 Prof. Ranildo Lopes
Regular
30% do salrio base.
O programa deve ler a matrcula do funcionrio, seu salrio base e seu nvel de abono. Calcular e
imprimir o salrio a ser pago (salrio a ser pago = salrio base + abono). O programa ser
encerrado quando for digitado 0 para matrcula.
13.
Faa um programa que receba vrios nmeros positivos ou negativos, terminada por zero.
O programa deve fornecer como sada, a soma dos nmeros positivos e a soma dos nmeros
negativos.
14.
Faa um programa que leia os dados de vrios alunos, contendo o nmero da matrcula, as
trs notas e a freqncia. Calcule e mostre: para cada aluno o nmero de matricula, a nota final e
a mensagem (aprovado ou reprovado); a maior e a menor nota da turma; o total de alunos
reprovados;
15.
Faa um programa que receba a idade, a altura e o peso de vrias pessoas. Calcule e
mostre:
PASCAL
Observaes:
21
EDGAR TITO - INFORMTICA 2014 Prof. Ranildo Lopes
1. O identificador (a varivel a no exemplo anterior) tem que ser declarada do tipo inteiro
(Integer).
2. A varivel que controla a repetio poder ser impressa se precisarmos dela para numerar
uma lista, posicionar, etc.
3. A varivel que controla a repetio jamais aparecer num comando de leitura dentro do
bloco de repetio.
Exemplo:
Algoritmo para escrever os nmeros de 1 at 10:
Portugus Estruturado
PASCAL
Programa para1;
Var
I : Inteiro;
Incio
Para i <- 1 at 10 faa
Incio
Escreva ( - , i);
fim;
Fim.
Program para1;
Var
I : Integer;
Begin
For i := 1 to 10 do
Begin
Write ( - , i);
End;
End.
11.
Criar um algoritmo que deixe escolher qual a tabuada de multiplicar que se deseja imprimir
Idade
At 15 anos
De 16 a 30 anos
De 31 a 45 anos
De 46 a 60 anos
Acima de 61 anos
16.
Faa um programa que leia uma srie de nmeros positivos inteiros. Calcule e mostre o
maior nmero digitado. A entrada de dados deve terminar quando um nmero negativo foi
digitado.
17.
Faa um programa que receba um nmero, calcule e mostre o fatorial desse nmero.
Sabe-se que: n! = 1*2*3*...*(n-1)*n;
0! = 1, por definio.
2.
Entram num restaurante para jantar trs mulheres, cada uma com duas filhas. S
existiam 7 lugares. Nenhuma ficou de p. Como isso possvel?
Pascal
:=
Program
String
Char
And
While n <> 0 do
Write (.....);
End
Begin
Integer
Read (nome da varivel);
Nome: array [1..10] of string;
Or
For i:= 1 to 10 do
If x > 10 then
Else
Var
APOSTILA 03
LGICA DE PROGRAMAO
Variveis x Dados
Varivel o local de memria onde sero armazenados os dados de forma temporria. Em
nossos algoritmos no nos preocuparemos com o endereo real dessas variveis, pois a maioria
das linguagens de programao tornam estes endereos transparentes ao programador.
Para exemplificarmos a diferena entre dados (constantes) e variveis, bem como entender
melhor o endereamento de variveis, podemos citar o exemplo de uma estante de prateleiras,
onde esto guardados livros ou quaisquer outros objetos (veja figura).
Os livros e objetos podem ser chamados de dados, contedo das variveis. Para nos
referenciarmos varivel necessrio darmos um nome mesma, pois no trabalharemos com
endereo de memria propriamente dito, e sim com identificadores.
aconselhvel que o nome da varivel expresse o que vai ser armazenado dentro dela, p.e.
nomeAluno, quantidade_alunos.
As variveis podem ainda ser simples ou compostas. As variveis simples so aquelas que
recebem um nico dado por vez, enquanto que as compostas podem armazenar vrios dados de
uma s vez, porm, esta ltima no objeto de nossa apostila.
Quando declaramos uma varivel, temos que associar a ela algumas caractersticas:
NOME ou IDENTIFICADOR
TIPO do dado
Como dissemos anteriormente, o endereo fsico da varivel no precisa ser declarado, a menos
que estejamos programando em alguma linguagem de baixo nvel, como o ASSEMBLER. As
linguagens de alto nvel procuram espaos livres na memria do computador para associarem
bytes varivel declarada.
Devemos evitar nomes do tipo: X, K, C1, ABC, etc... a menos que eles expressem algo real.
Nomes de varivel, na maioria das linguagens, NO devem:
Iniciar por nmeros:
permite nomes longos para variveis, j o CLIPPER, com apenas 10 bytes. O COBOL permite
separadores como hfens, barras, entre outros.
apenas o UnderLine (Nome_Aluno) como caracter separador. A maioria das linguagens apresenta
certas restries livre escolha dos nomes das variveis. A mais evidente a impossibilidade da
utilizao de palavras reservadas da prpria linguagem.
representa um comando para o COBOL. No possvel utilizarmos este nome como identificador
de qualquer varivel nesta linguagem. J para o CLIPPER, o MOVE pode ser um identificador.
Outras vezes, a linguagem traz consigo algumas variveis reservadas. Tratam-se de algumas
variveis que so automaticamente declaradas pela linguagem. Normalmente elas registram a
data e a hora do sistema operacional, ou algumas informaes internas como cdigos de
perifricos, endereos de memria para buffers, etc.
So variveis que aceitam contedos de qualquer natureza, portanto: nmeros, letras e smbolos
em geral, no podendo estes nmeros ser utilizados para operaes aritmticas.
Ex.: "MARIA JOSE"; "Recife"; "123"; "NOMES"
Observaes:
a) No confundir os valores numricos com os literais ou entre os literais. Vejamos os
casos a seguir.
Caso 1.
42 (inteiro) diferente de 42 (literal) Os tipos so diferentes, logo, seus valores em
memrias so diferentes;
Caso 2.
01(literal) diferente de 1 (literal) Os tipos so iguais, mas a representao em
memria diferente.
Tipo Lgico
Este tipo de varivel no permite o registro de dados numricos ou literais. Uma varivel lgica s
armazena um entre dois valores: VERDADEIRO ou FALSO.
Em nossa disciplina, no nos ateremos ao como exatamente, o computador registra esta
informao na memria. Pode ser por bytes zerados e no zerados, pelas letras V ou F, ou por
um outro mecanismo qualquer. O que nos interessa de fato que este tipo de varivel no
registra outro tipo de informao exceto Verdadeiro ou Falso.
Para efeito de representao, diremos que o contedo de uma varivel lgica ser representado
pelas letras V e F, representando respectivamente, Verdadeiro e Falso:
Ou ainda, em uma mesma linha, desde que sejam do mesmo tipo de dados.
Exemplo:
DECLARE IDADE, CONTADOR:inteiro; (obs.: tipo e tamanho iguais}
Observao: As vezes substitumos o comando Declare por Var ou Defina, dependendo da linguagem que estamos
querendo nos aproximar. Outros comandos podero sofrer variaes. Cabendo ao professor da
disciplina fazer os ajustes baseados no direcionamento que queira dar disciplina.
Operadores
Podemos atribuir a uma varivel o resultado de uma expresso numrica. Atribui uma ao que
as linguagens possuem e que representa o ato de preencher o espao da varivel com um
contedo, conforme o tipo de dado (veremos mais detalhadamente em tpico especfico).
Entendemos por expresso numrica um conjunto de operaes aritmticas combinadas entre
operandos e operadores. Mas alm das expresses numricas, existem expresses que exigem
tratamentos particulares, como veremos a seguir.
Operadores Numricos
So elementos (smbolos) utilizados para representar uma operao de cunho aritmtico.
+
indica SOMA
indica SUBTRAO
indica MULTIPLICAO
indica DIVISO
( )
Multiplicao e Diviso:
*, /
Soma e Subtrao: + , -
A := 2 * 6 / 3
12
Operadores Relacionais
4
para
realizarmos
operaes
de
=
igual
a
= igual a
<> diferente
Exemplos:
Dados A = 3, B = 2, C = Jose , D = Jose, NOME = JOSE
A>B
Retorna V
C=D
Retorna V
NOME = "JOSE"
Retorna V (Est sendo comparado o contedo da varivel NOME com a string JOSE.
NOME = D
Os operadores relacionais incidem sobre dados e variveis numricas e caracteres. Assim sendo,
podemos comparar no apenas nmeros, mas tambm palavras. Neste sentido, a comparao
respeitar a ordem alfabtica das iniciais de cada uma.
Exemplos:
"MARIA" > "ANA"
Retorna V
Operadores Lgicos
Estes elementos so necessrios quando voc deseja realizar comparaes entre resultados lgicos obtendo como
resposta outro valor lgico. Estranho, no? Mas exatamente isso que ocorre. Por exemplo: se voc ler um anuncio sobre
emprego que tenham as seguintes solicitaes:
Precisa-se de pessoas do sexo feminino e com idade mxima 40 anos. O que voc consegue extrair deste anuncio? A
resposta seria: duas exigncias, a saber, o SEXO da pessoa deve ser igual a feminino (F) e a IDADE deve ser menor ou
igual a 40 anos. Logo, estamos diante de duas sentenas, que, dependendo do que seja colocado como dados na
comparao, poderemos ter a possibilidade do resultado ser falso ou verdadeiro. Se o SEXO for igual a M (masculino), a
primeira sentena ser falsa. Para voc poder ocupar a vaga oferecida, necessrio que sejas do sexo feminino e sua idade
esteja na faixa etria solicitada. Para o programa, o raciocnio exatamente igual.
Para que gerenciarmos esta etapa da lgica, utilizaremos os operadores a seguir:
Operador
Detalhamento
Prioridade
de execuo
OU
(Opcionalidade)
E
(Simultaneidade)
NO
(Negao)
Observao: caso sejam colocados os parnteses na sentena, a prioridade de execuo ser alterada iniciando-se pelos elementos
contidos dentro destes. Caso exista mais de uma sentena nesta condio, observar-se-, alm do exposto acima, a
execuo dos comandos da esquerda para a direita da expresso.
Vejamos a TABELA VERDADE a seguir para entendermos melhor.
E
OU
Exemplos:
X = 90 E Z = 100
A >= 67 OU A <= 200
NOME <> "ANA" E NAO (NOME = "MARIA")
(NOME <> "ANA") E (NAO (NOME="MARIA") OU (NOME="PEDRO"))
Delimita o espao reservado para inserirmos um parmetro do comando. A maioria dos comandos das
linguagens possui parmetros.
[ ]
Delimita o espao reservado para inserirmos um parmetro opcional do comando, ou seja, tudo o que
vier entre colchetes nem sempre precisar ser especificado no comando.
Ex:
Observe ainda que os colchetes [ ] e os delimitadores maior/menor < > podem acumular-se
entre si, ou seja, dentro de um grupo de parmetros opcionais [ ], poderemos ter outros [ [..] ],
dependendo apenas da caracterstica do comando.
Atribuio de Valores a Variveis
At agora, vimos conceitos e exemplos de variveis. Agora vamos aprender a utiliz-las em
algoritmos.
Representaremos o comando de atribuio pela combinao de dois smbolos do teclado, que
so dois pontos e o sinal de igual, sem espaos entre eles(:=). Este smbolo representar a
atribuio de um dado a uma varivel.
IDADE := 25;
ALTURA := 1,67;
Dados tipo Real, possuem uma vrgula como delimitador entre a parte decimal e a parte inteira
(linguagens comerciais adotam o ponto).
DEPENDE := F;
ALTURA := IDADE;
Tambm podemos atribuir o resultado de uma expresso numrica, ou de outro tipo, a uma
varivel:
SOMA := QUOEF * (VALOR + 10) / DIVISOR;
Estruturao do Algoritmo
Existem alguns formatos para organizar um algoritmo, porm adotaremos o mais global,
facilitando assim o aprendizado. Vejamos a seguir:
Algoritmo <nome do programa>;
Declare {Local para declarao das variveis}
Incio
{Local para inicializao das variveis / mensagens montando a tela}
{Local para receber dados, processar dados e dar sada nos dados / mensagens}
Fim
wnome:literal;
Widade:Inteiro;
A execuo do comando LEIA provoca uma pausa na execuo do programa. O programa fica
em estado de espera, aguardando a digitao de algo que deva ser atribudo s variveis
especificadas na sintaxe do comando. bom deixar claro que o LEIA, permite um
preenchimento por vez. Se voc desejar digitar vrias informaes referente a mesma
varivel, ter que utilizar uma estrutura de repetio (veremos mais adiante) e fazer com
que o fluxo do programa passe pelo mesmo local onde o LEIA est posicionado
No exemplo acima, veja que o computador aguarda que o usurio digite dois valores distintos
atravs do teclado. Estes dois valores iro ocupar, respectivamente, as variveis NOME e IDADE.
Comando ESCREVA (lista informaes no vdeo)
Escreva <string>[, <varivel>][, <operao>];
Ou
Escreva (<string>[, <varivel>][, <operao>] );
Importante! Pelo menos um dos parmetros deve ser informado quando da utilizao deste comando.
<string> -
<varivel> -
<operao> -
Algum clculo executado durante a exibio. Neste caso o processador realiza a operao de clculo e
depois libera o resultado para a exibio na tela.
Por dentro dos termos: string = conjunto de caracteres dentro de uma mesma varivel.
Exemplo:
Algoritmo exemplo;
Declare wnome:Literal;
INICIO
ESCREVA NOME ..:;
LEIA wnome;
ESCREVA "Seu nome ",
FIM;
NOME;
Manipulaao de valores
1)
Dados 2 nmeros digitados via teclado, faa um algoritmo capaz de exibir a soma deles no vdeo.
Algoritmo soma;
Declare X:Inteiro;
Y:Inteiro;
SOMA:Inteiro;
Inicio
Leia X;
Na soluo acima, declaramos 3 variveis de memria. X e Y foram criadas para armazenar os dois nmeros que
seriam digitados pelo usurio, e SOMA serviu para armazenar o resultado final da operao com essas duas variveis.
Mas quase sempre existe mais de uma maneira de solucionarmos um problema, no ? Com
algoritmos no diferente. Tente repensar o algoritmo acima utilizando apenas 2 variveis, em
vez de 3 ! Como voc pode observar, existem no mnimo duas solues para este problema:
Algoritmo soma;
Declare X:Inteiro;
Y:Inteiro;
SOMA:Inteiro;
Inicio
Leia X;
Leia y;
X := X + Y;
Escreva X;
Fim
Ou ainda:
Algoritmo soma;
Declare X:Inteiro;
Y:Inteiro;
SOMA:Inteiro;
Inicio
Leia X;
Leia y;
Y := X + Y;
Escreva Y;
Fim
Conceitos Fundamentais
Contador x Acumulador
Estes nomes so dados a expresses que realizam adio de dados, porm, no primeiro caso,
CONTADOR, a expresso de adio que contabiliza valores fixos e predeterminados. No
segundo caso, ACUMULADOR, a expresso de adio que contabiliza valores variveis.
Exemplo de Contador:
QtdFem := QtdFem + 1 (note que o valor adicionado a quantidade de femininos ser sempre
1)
Exemplo de Acumulador:
SomaIdade := SomaIdade + Idade (note que o valor adicionado a soma das idades ser
varivel)
Observao: na maioria das vezes, estes elementos so iniciados com o 0 (zero).
Percentuais
Encontramos algumas dificuldades quando tratamos estes temas. Aqui daremos algumas regras
bsica para que voc se sinta a vontade no momento do clculo.
Encontrando um valor percentual:
100 %
x
(50 = Todo)
Chegaremos a concluso:
X % = 25 x
100 / 50
Maior Valor
Existiro momentos em que voc sentir necessidade de identificar o maior elemento dentro de
um conjunto de dados processados. S existe uma forma de sabermos qual o maior valor:
comparando as grandezas do conjunto. Para descobrirmos qual ser o maior elemento,
inicializaremos uma varivel, que armazenar o maior valor do conjunto, com um valor bem
pequeno para a situao, e, cada dado existente no conjunto iremos comparar com esta dita
varivel. Caso o valor encontrado seja superior, este ser colocado como contedo da varivel
maior, j que este novo dado representa a maior grandeza neste momento do processamento.
Encontrando o maior valor dentro de um conjunto:
Obs.: para entender melhor esse exemplo, bom estar familiarizado com a estrutura de repetio
comentada mais adiante.
Algoritmo
maior;
Declare MAIOR_ID:Inteiro;
Idade:Inteiro;
Cont:Inteiro;
Inicio
MAIOR_ID := 0;
Para cont := 1 at 10 Faa
Inicio
Leia Idade;
Se Idade > MAIOR_ID ento
Inicio
MAIOR_ID := Idade;
Fim
Fim
Escreva A maior idade , MAIOR_ID;
Fim
Menor Valor
De igual forma iremos trabalhar para encontrar o elemento que possui o menor valor. Para tanto,
iremos inicializar uma varivel, que armazenar o menor valor do conjunto, com um valor bem
alto adequado para a situao, e, cada dado existente no conjunto iremos comparar com esta dita
varivel. Caso o valor encontrado seja inferior, este ser colocado como contedo da varivel
menor, j que este novo dado representa a menor grandeza neste momento do processamento.
Encontrando o menor valor dentro de um conjunto:
Algoritmo
Menor;
Declare menor_ID:Inteiro;
Idade:Inteiro;
Cont:Inteiro;
Inicio
Estruturas Condicionais
Sabemos que as linhas de um programa estruturado so executadas de cima para baixo de forma
seqencial (na orientao ao objeto, apenas os mtodos seguem este conceito). Mas
freqentemente precisamos mudar este curso natural de acordo com decises a serem tomadas.
Por exemplo, imagine se dentro de um conjunto de alunos voc desejasse verificar a quantidade
de homens. S existiria uma forma para sabermos o resultado: fazendo uma pergunta sobre se os
dados processados continham na varivel SEXO o contedo igual a M.
O comando que realiza esta pergunta o SE, que possui trs situaes bem definidas dentro da
programao: Estrutura Condicional Simples, Composta ou Encadeadas(Ninhos de SEs).
Estrutura Condicional SE (Smples)
Se <condio> ento
inicio
<sequncia de comandos>;
Fim
<condio> -
<sequncia de comandos> So comandos que sero executados caso o resultado da expresso lgica seja verdadeira.
Esses comandos devem ser escritos entre as delimitaes da gerncia do comando, ou seja, entre as
palavras Incio e fim.
exemploSE1;
Idade, Numrico, 3
Nome, Caracter , 35
Sexo, Caracter , 1
Inicio
Leia Nome;
Leia Sexo;
Leia Idade;
Se Sexo = M ento
Inicio
Escreva "A idade de ", Nome, , Idade;
Fim
Escreva "Fim da transacao";
Fim
<condio> -
<sequncia de comandos 1> So comandos quaisquer que sero executados caso o resultado da expresso lgica seja
verdadeira (V).
<sequncia de comandos 2> So comandos quaisquer que sero executados caso o resultado da expresso lgica seja
falsa (F)
Seno - Variao do comando, para atender o tratamento de informao que no foi contemplada na <condio>, por ser
falso o resultado. S deve ser utilizado para otimizar ou se precisar tratar a negativa da <condio>.
exemploSE2;
Idade: Inteiro;
Nome : Literal;
Sexo : Literal;
Inicio
Leia Nome;
Leia Sexo;
Leia Idade;
Se Sexo = M ento
Inicio
ESCREVA "A idade de ", Nome, , Idade, Sexo Masculino;
Fim
seno
Inicio
SE Sexo = F ENTAO
Inicio
ESCREVA "A idade de ", Nome, , Idade, Sexo Feminino;
Fim
Fim
Escreva "Fim da transacao";
Fim
(Encadeada).
Se
PositivoNegativo;
Num1:Inteiro;
Num2:Inteiro;
SOMA:Inteiro;
Inicio
Leia Num1, Num2;
SOMA:= Num1 + Num2;
Se SOMA > 0 ENTAO
Inicio
Escreva SOMA, Valor Positivo;
Fim
Seno
Inicio
Escreva num1, num2;
SE SOMA = 0 ento
Inicio
Escreva "Valor Igual a Zero";
Fim
Seno
Inicio
Escreva "Valor Negativo";
Fim
Fim
Fim
Note que a esttica, apesar de no influenciar no resultado da execuo do programa, de extrema importncia para o
bom entendimento do mesmo. Perceba que todos os comandos subordinados ao primeiro SE ficam descolados na mesma
margem. Apenas a clusula SENAO fica na mesma margem do SE. O mesmo ocorre com o segundo SE e com todos os
que vierem. A isto damos o nome de EDENTAO.
Veja que o comando Escreva num1, num2 executado independente da condio do segundo SE. por isto que eles
foram escritos aps o SENO do primeiro SE.
Exerccios de Aprendizagem
1) Dados 2 nmeros digitados via teclado, faa um algoritmo capaz de exibir no vdeo o maior deles.
Algoritmo maior;
Declare X:Inteiro;
Y:Inteiro;
Inicio
Leia X;
Leia Y;
Se X > Y Ento
Note que, para descobrirmos qual o maior entre trs nmeros, precisamos codificar 2 comandos SE encadeados. Se
fossem 4 variveis, seriam 3 SEs.
3) Dados 2 nmeros distintos digitados via teclado, faa um algoritmo capaz de exibi-los em ordem crescente.
Algoritmo Ordenacao;
Declare A:Inteiro;
B:Inteiro;
Inicio
Leia A;
Leia B;
SE A > B Ento
Inicio
Escreva B, A;
Fim
Seno
Inicio
Escreva A, B;
Fim
Fim
Como voc solucionaria este problema se tivssemos de utilizar apenas um comando ESCREVA
?
A primeira imagem que nos vem mente que seria impossvel, tendo em vista que uma
informao ao ser colocada em uma varivel simples ir ocupar o lugar da informao j
existente na outra varivel. Mas em informtica podemos utilizar todas as tcnicas disponveis
para solucionarmos um problema, evitando solues extensas ou complicadas.
Inicio
Leia
Leia
Se
troca;
A:Inteiro;
B:Inteiro;
X:Inteiro;
A;
B;
A > B Ento
Inicio
X := A;
A := B;
B := X;
Fim
Escreva A , B;
Fim
Comentrio:
Para economizarmos comandos ESCREVA, observe que invertemos os valores de A e B toda vez que a varivel A fosse
maior que B. Assim, independente dos valores de A e B, sempre exibiremos A e B nesta ordem. Para propiciar esta
inverso utilizamos uma varivel auxiliar X.
Se voc no entendeu muito bem o porque da varivel X ter sido utilizada no algoritmo acima,
preste bastante ateno agora:
Deseja-se trocar os valores de duas variveis: A e B, por exemplo.
A
B
10
15
2 passo
X:=A
10
3 passo
15
A:=B
B:=X
10
1 passo
Estruturas de Repetio
Algumas vezes, sentimos necessidade de escrevermos repetidamente o mesmo comando. Em
alguns casos, a quantidade de vezes que temos de escrever indeterminada ou depende de uma
condio.
Existem algumas formas de definir as estruturas de repeties. Algumas lembram at esta ou
aquela linguagem. Em nosso curso iremos no ater a duas estruturas, as quais podemos
representar tranqilamente em qualquer ambiente de programao.
As estruturas so: Enquanto e Para. Cada uma delas possui uma caracterstica que lhe peculiar.
normal ouvir a pergunta: quando iremos utilizar esta ou aquela estrutura?. A resposta
simples, pois depende da habilidade de cada um. Existem momentos que podemos resolver a
mesma questo com todas as duas formas, mas existem momentos que no possvel. Por isso
o segredo encontra-se no exercitar.
Bem, vamos desmistificar estas estruturas.
Comando ENQUANTO
O comando ENQUANTO prende um trecho do programa a um lao (looping), ou seja, podemos
determinar que um certo bloco de comandos seja executado repetidamente enquanto uma
condio for verdadeira.
.
Enquanto <condio> Faa
Inicio
< comandos >;
Fim
1o. Caso
S entra no lao de repetio, se e somente se, a condio for verdadeira. Para sair da repetio, a condio tem que ser
satisfeita.
Enquanto <condio> Faa
incio
< comandos > ;
Fim
2o. Caso
Entra no lao independente da condio, mas para sair, a condio 2 tem que ser verdadeira. Caso a condio no seja
satisfeita, dizemos que o programa entrou em loop.
Enquanto <condio> Faa
incio
Se < condio 2 > Ento
Incio
sair
Comando PARA
O comando PARA executa um bloco de comandos, gerenciando esta execuo em cima de uma
contagem. Enquanto ela no for satisfeita, ou seja, o valor final no for ultrapassado, os
comandos do bloco sero repetidos a cada nova verificao da condio e obteno de resultado
falso;
Para <var> := <valor_inicial>
Inicio
< comandos > ;
Fim
at
Se voc utilizar este comando, ir poupar a inicializao da varivel, pois esta assumir como
valor inicial o declarado como <valor_inicial>; no precisar contar a quantidade de vezes que
o lao foi executado, pois esta estrutura tem como uma de suas caractersticas, o adicionar um
determinado valor a varivel <var> baseado no valor utilizado como incremento (+) ou decremento
(-) utilizado no parmetro incr[...] estabelecendo uma contagem at que o valor declarado como
<valor_final> seja alcanado e realizando a ltima execuo dos comandos existentes entre o
Inicio e o Fim. Se o parmetro Incr [ +/- valor] for omitido, o programa assumir por Default
sempre o incremento de + 1.
Vamos utilizar um exemplo para esclarecer cada uma dessas instrues dentro de suas
respectivas estruturas de repeties. Digamos que temos de fazer o computador escrever o
somatrio de 5 idades informadas na tela. Usaremos os comandos aprendidos at agora.
Com a estrutura ENQUANTO
Algoritmo
Declare widade:Inteiro;
Wcont:Inteiro;
Wsomaid:Inteiro;
Inicio
Wcont := 0;
Wsomaid := 0;
Leia widade;
Enquanto wcont < 5 Faa
Inicio
Wcont
:= wcont + 1;
Wsomaid := wsomaid + widade;
Leia widade;
Fim
Escreva O total das idades , wsomaid;
Exerccios de Aprendizagem
1)
2)
Elabore um algoritmo capaz de receber um nmero e, em seguida, listar todos os nmeros de 1 at ele.
exemplo2;
Algoritmo
Declare NUMERO:Inteiro;
LIMITE:Inteiro;
Inicio
Leia LIMITE;
NUMERO:=1
ENQUANTO NUMERO <= LIMITE FAA
Inicio
Escreva NUMERO;
NUMERO := NUMERO + 1;
Fim
Fim
Comentrio:
3)
Note que, utilizamos uma varivel numrica chamada NUMERO que recebeu, inicialmente, o valor 1, e da em diante
foi ciclicamente incrementada de 1 (NUMERO:=NUMERO+1) at que a condio imposta pelo ENQUANTO tornasse
falsa.
Este programa similar ao anterior. A nica sofisticao implementada foi a flexibilizao do limite. Isto tornou o
algoritmo mais genrico, servindo para listar a seqncia de qualquer nmero, e no apenas a do 10. Para alcanar
esta sofisticao, foi necessrio o uso da varivel LIMITE que de fato limitou o lao do Enquanto ao seu contedo,
contedo este que fora recebido logo no incio da execuo do programa, com o comando Leia LIMITE.
Sofisticando ainda mais o programa da 3 questo, vamos fazer com que, alm de listar todos os nmeros de 1 at um
determinado nmero digitado via teclado, ele mostre a soma de todos esses nmeros no final da listagem.
exemplo2;
Algoritmo
Declare NUMERO :Inteiro;
LIMITE :Inteiro;
SOMA
:Inteiro;
Inicio
Leia LIMITE;
NUMERO := 1;
SOMA
:= 0;
Enquanto NUMERO <= LIMITE Faa
Inicio
Escreva NUMERO;
Perceba que, para acumular os valores parciais assumidos pela varivel NUMERO, precisamos lanar mo de uma
outra varivel, a qual chamamos de SOMA. Assim, a cada ciclo do Enquanto acrescentamos ao valor de SOMA o
novo valor de NUMERO
(SOMA :=SOMA+NUMERO).
Observe tambm que ao declaramos SOMA, na prtica das linguagens, temos que tomar o
cuidado dela ter capacidade de absorver o resultado da expresso. fcil entender por que!
Como SOMA ser um Acumulador dos valores de NUMERO, ela sempre ter valores maiores
que NUMERO, podendo seu montante, exceder a capacidade definida em NUMERO.
Tcnicas de Algoritmizao
Como dissemos anteriormente, no h qualquer receita de bolo para resolvermos um determinado
problema atravs da algoritmizao. Cada caso um caso bem particular. Entretanto, alguns
procedimentos sistemticos podem auxiliar a elucidao de alguns problemas.
Montando o Algoritmo
Algoritmo exemplo;
Declare AcumSal:Real;
Cont
:Inteiro;
Salrio: Real;
Media :Real;
Nome
:Literal;
Inicio
AcumSal := 0
Para cont := 1 at 50 faa
Inicio
Leia Matricula;
Leia Nome;
Leia Salrio;
AcumSal := AcumSal + Salrio;
Fim
Media := AcumSal / 50;
Escreva A mdia Salarial , Media;
Fim
Faclimo, no!
Com estas competncias adquiridas nesse mdulo, voc deve exercitar e chegar num estgio de
habilidade que lhe permitir obter sucesso nas demais competncias que sero ministradas a
voc em sala de aula.
Lembre-se: Os exerccios que esto na apostila dedicada s para este fim, devem ser praticados e
esgotados, pois isto o far crescer em situaes as mais adversas dentro do mundo da
programao.
Sucesso a todos!
Desafios Resolvidos
Algoritmo resolvidos1;
Declare
Ma_idade:Inteiro;
Qt_maid :Inteiro;
Cont
:Inteiro;
Widade :Inteiro;
Inicio
Ma_idade := 0;
Qt_maid := 0;
Para cont := 1 at 50 faa
Inicio
Leia widade;
Se widade > Ma_idade ento
Inicio
Ma_idade := widade;
Qt_maid := 1;
Fim
Seno
Inicio
Se widade = Ma_idade ento
Inicio
Qt_maid := Qt_maid + 1;
Fim
Fim
Fim
Escreva A maior idade ..........................: , Ma_idade;
Escreva Quantidade de pessoas com a maior idade...: , Qt_maid;
Fim
Como fazer para descobrir a quantidade de elementos iguais aos dois maiores
elementos do conjunto?
Agora ficou mais fcil. Precisamos atentar para um pequeno detalhe:
quando encontrarmos um elemento que superior ao primeiro, este ltimo
passa a ser o segundo maior. Para no perdermos o contedo original do
maior, passaremos seus contedos para as respectivas variveis e depois
procederemos naturalmente colocando o elemento maior no seu referido
lugar. Vejamos parte do cdigo a seguir.
:=
:=
:=
:=
Ma_idade1;
Qt_maid1;
widade;
1;
Algoritmo
Declare
Ma_idade1:Inteiro;
Ma_idade2:Inteiro;
Qt_maid1 :Inteiro;
Qt_maid2 :Inteiro;
Cont
:Inteiro;
Widade
:Inteiro;
Inicio
Ma_idade1 := 0;
Ma_idade2 := 0;
Qt_maid1 := 0;
Qt_maid2 := 0;
Para cont := 1 at 50 faa
Inicio
Leia widade;
Se widade > Ma_idade1 ento
Inicio
Ma_idade2 := Ma_idade1;
Qt_maid2 := Qt_maid1;
Ma_idade := widade;
Qt_maid := 1;
Fim
Seno
Inicio
Se widade = Ma_idade1 ento
Inicio
Qt_maid1 := Qt_maid1 + 1;
Fim
Seno
Inicio
Se widade > Ma_idade2 ento
Inicio
Ma_idade2 := widade;
Qt_maid2 := 1;
Fim
Seno
Inicio
Se widade = Ma_idade2 ento
Inicio
Qt_maid2 := Qt_maid2 + 1;
Fim
Fim
Fim
Fim
Fim
Escreva A maior idade ..........................:
Escreva Quant. de pessoas com a maior idade.......:
Escreva A segunda maior idade ..................:
Escreva Quant. de pessoas com Seg. maior idade....:
Fim
,
,
,
,
Ma_idade1;
Qt_maid1;
Ma_idade2;
Qt_maid2;
APOSTILA 05
LGICA DE PROGRAMAO
INTRODUO
Aautomatizaodetarefasumaspectomarcantedasociedademoderna.Oaperfeioamentotecnolgicoalcanado,
comrespeitoaisto,temcomoelementosfundamentaisaanliseeaobtenodedescriesdaexecuodetarefasemtermos
deaessimplesosuficiente,talquepudessemserautomatizadasporumamquinaespecialmentedesenvolvidaparaestefim,
OCOMPUTADOR.
Emcinciadacomputaohumprocessodedesenvolvimentosimultneoeinterativodemquinas(hardware)edos
elementosquegerenciamaexecuoautomtica(software)deumadadatarefa.Eessadescriodaexecuodeumatarefa,
comoconsideradaacima,chamadaalgoritmo.
OobjetivodessecursoaLgicadeProgramaodandoumabasetericaeprtica,suficientementeboa,paraque,o
alunodomineosalgoritmoseestejahabilitadoaaprenderumalinguagemdeprogramao.Sermostradotambmumgrupode
algoritmosclssicosparatarefascotidianas,taiscomo:ordenaoepesquisa.
DEFINIODEALGORITMO
Sebuscarmosnaliteratura,veremosqueiremosencontrarumgrandequantidadedeconceitosrelacionadosdefinio
deALGORITMO.Aseguirsolistadasvriasdessasdefinies.
"OconceitocentraldaPROGRAMAOedaCINCIADACOMPUTAOoconceitodealgoritmos,isto,programar
basicamenteconstruiralgoritmos."
adescrio,deformalgica,dospassosaseremexecutadosnocumprimentodedeterminadatarefa.
"O algoritmo pode ser usado como uma ferramenta genrica para representar a soluo de tarefas independente do
desejo de automatizlas, mas em geral est associado ao processamento eletrnico de dados, onde representa o
rascunhoparaprogramas(Software)."
"Serve como modelo para programas, pois sua linguagem intermediria linguagem humana e s linguagens de
programao,sendoento,umaboaferramentanavalidaodalgicadetarefasaseremautomatizadas."
"Um algoritmo uma receita para um processo computacional e consiste de uma srie de operaes primitivas,
interconectadas devidamente, sobre um conjunto de objetos. Os objetos manipulados por essas receitas so as
variveis."
Oalgoritmopodetervriosnveisdeabstraesdeacordocomanecessidadederepresentarouencapsulardetalhes
inerentesslinguagensdeprogramao.Ex:Certamenteumalgoritmofeitocomoobjetivodeservircomomodelopara
uma linguagem de 3 gerao diferente daquele para uma linguagem de IV gerao. Mas isso no impede que a
ferramentaemsipossaserusadaemambosocaso.
Como qualquer modelo, um algoritmo uma abstrao da realidade. A abstrao o processo de identificar as
propriedades relevantes do fenmeno que esta sendo modelado. Usando o modelo abstrato, podemos nos centrar
unicamentenaspropriedadesrelevantesparans,dependendodafinalidadedaabstrao,eignorarasirrelevantes.
aformapelaqualdescrevemossoluesdeproblemasdonossomundo,afimde,seremimplementadasutilizandoos
recursosdomundocomputacional.Comoestepossuseveraslimitaesemrelaoaonossomundo,exigeque,sejam
impostas algumas regras bsicas na forma de solucionar os problemas, para que, possamos utilizar os recursos de
HARDWAREeSOFTWAREdisponveis.Pois,osalgoritmos,apesardeservirempararepresentarasoluodequalquer
problema,nocasodoProcessamentodeDados,elesdevemseguirasregrasbsicasdeprogramaoparaquesejam
compatveiscomasLINGUAGENSDEPROGRAMAO.
SegundoWirth,programassoformulaesconcretasdealgoritmosabstratos,baseadosemrepresentaeseestruturas
especficasdedados
Deformabemsimples,umalgoritmopodeserdefinidocomoumconjuntodepassoslgicos,bemdefinidos,
quedescreveasoluodeumproblema.
Aopensarmosnasoluodeumproblema,encontramosaesimperativasquesoexpressaspor
comandos.OsalgoritmosnosoaplicadosapenasaomundodaInformtica;pelocontrrio,usamosatsem
perceberalgoritmosemtodososmomentosdenossavida.Umareceitadecozinhaclaramenteumalgoritmo.
EXEMPLO1:FaaumalgoritmoparaIrdecasaparaotrabalhodenibus
Soluo1
AlgoritmoTrajeto_Casa
incio
1) Andaratopontodenibus
2) Aguardaronibus
3) Aoavistaronibuscorreto,fazersinal
4) Entrarnonibuspelaportatraseira
5) Pagarpassagem
6) Escolherumassentoesentar
7) Quandochegarprximodolocalasaltar,darosinalparadescida
8) Noponto,descerdonibus,pelaportadianteira
9) Andaratotrabalho
fim
Observasequeessealgoritmofoiresolvidoem9passos.Noentanto,fatoquesenpessoasbuscaremsolues
paraomesmoproblema,provavelmente,teremosnrespostasdiferentes.Istodecorrenormalmente,daabstraodoproblema,
davisodoproblemasobngulosdiferentes,commaioroumenorriquezadedetalhes.
Poroutrolado,devemospercebesequeoalgoritmodescritorevelaumasituaoperfeita,semcondicionais,sem
excees.Assimcomonanossarotina,improvveltermossituaesperfeitas,essasexceestambmocorremnosprogramas
decomputador.
Vamosrefazerestealgoritmodeformaaintroduziralgumascondies.
Soluo2
AlgoritmoTrajeto_Casa
incio
1) Andaratopontodenibus
2) Aguardaronibus
3) Quandoavistaronibuscorreto,fazersinal
seonibusnoparar,ento
Empensamento,xingaromotorista
Reclamarparasiquevaichegaratrasado
seestivermuitoatrasadoento
PegarumaVan
Senao
VoltarparaoPasso2
fimse
senao
sePessoa>=65anosento
Entrarpelaportadianteira
senao
Entrarpelaportatraseira
Pagarpassagem
sehouvertrocoento
Aguardartroco
fimse
fimse
sehouverlugardisponvelento
Sentar
seno
Escolheromelhorlugarempealipermanecer
fimse
fimse
4) Quandochegarprximodolocalasaltar,darosinalparadescida
5) Noponto,descerdonibus,pelaportadianteira
6) Andaratotrabalho
fim
Com certeza, a brincadeira que fiz da condio Se o nibus no parar deve ter levado vocs a pensarem em
inmerasnovascondies,comoporexemplo:qualseriaasuareao,senumdiadechuva,onibuspassasseporsobreuma
poaelhesujassetodaaroupa?
Veja quo complexo pode se tornar um simples algoritmo. Devemos lembrar que detalhes so essenciais na
confecodeumalgoritmo,todavia,elesdevemestardeacordocomocontexto.Almdisso,importantequevenhamosa
relatarapenasosdetalhesrelevantes.
Por exemplo, a soluo 2 est apropriada para ensinarmos uma pessoa que no est acostumada a andar de
nibus. Todavia, este algoritmo causaria problemas se estivssemos programando um rob. Considerando esta situao,
deveramos ser mais precisos no passo Quando chegar prximo do local a saltar, dar o sinal de descida. Nesse caso,
deveramosdizerAxmetrosdolocalasaltar,darosinaldedescidaouNaalturaxdaRuay....
Assim,lembremsedeusaroBOMSENSO!
FLUXODECONTROLEEMALGORITMOS
Um algoritmo um texto esttico, onde temos vrios passos que so lidos e interpretados de cima para baixo.
Para que venhamos a obter o(s) resultado(s) deste algoritmo, necessitamos executlo, o que resulta em um processo
dinmico.
Nofluxodecontroleidentificamosemcadapassodaexecuoqualoprximocomandoaserexecutado.
A compreenso da lgica de programaode um algoritmo est diretamente ligadaa
compreenso de seu fluxo de controle. A partir de uma compreenso correta, podemos traar as
diversasexecuespossveisdeumalgoritmo.Setestarmostodasessaspossibilidades,eobtivermos
resultadoscorretos,podemostercertezadeestarentregandoumprodutofinalconfivel.
Osiniciantesnomundodaprogramaoencontramalgumadificuldadeemdiminuira
distncia conceitual que separa a representao esttica de um algoritmo do(s) processo(s)
dinmico(s)desuaexecuo.
importantefrisarquequandonospropomosa
entender um algoritmo, lidamos fisicamente com um texto, mas mentalmente temos
processos.
CRIANDOALGORITMOS
Toda linguagem composta de sintaxe e semntica, onde a sintaxe corresponde forma e a semntica
correspondeaocontedo.
importantequeseaprendaasintaxedoscomandos,masaprincipalpreocupaodeveserdecomousaresses
comandos.
Regrasparacriaodebonsalgoritmos
1.
2.
3.
4.
5.
6.
7.
8.
Use comentrios com freqncia. Isto torna o algoritmo mais legvel e facilita o entendimento da lgica
empregada. Seus algoritmos devero ser lidos e entendidos por outras pessoas (e por voc mesmo) de tal
formaquepossamsercorrigidoserecebermanuteno.
Obs: No se esquea de atualizar os comentrios, em caso de manuteno. Pior do que um programa sem
comentrios,umprogramacomcomentrioserrados.
Usecomentrios,tambm,nocabealhodoalgoritmo,incluindo,principalmente:
- descriodoquefazoalgoritmo
- autor
- datadecriao
Escolhanomesdevariveissignificativos,todaviaevitenomesmuitolongos.
Ex:
PrefiraSalBrutoouSalarioBrutoaoinvsdeSBouVAR1
PrefiraTotAlunosAprovDiretaaoinvsde
TotalAlunosAprovacaoDireta
Destaqueaspalavraschavedasestruturasdecontroleecomandoscomsublinhado.
Ex:
semedia>=7ento
...
senao
...
fimse
Utilizeespaoselinhasembrancoparamelhoraralegibilidade.
Coloque apenas um comando por linha. Vrios comandos em uma linha causam ilegibilidade e dificulta a
depurao.
Utilizeparntesesparaaumentaralegibilidadeeprevenirsedeerros.
Useidentaonoscomandosdeacordocomonvelqueestejam,ouseja,alinhecomandosdemesmonvele
desloquecomandosdenvelinferior.
Ex.:
incio
comando1;
secondicao1ento
comando2;
comando3;
senao
comando4;
comando5;
fimse
comando6;
fim
Mtodoparadesenvolvimentodealgoritmos
1.
Faa uma leitura de todo o problema at o final, a fim de formar a primeira impresso. A seguir, releia o
problemaefaaanotaessobreospontosprincipais.
7.
8.
Verifique se o problema foi bem entendido. Questione, se preciso, ao autor da especificao sobre suas
dvidas.Releiaoproblemaquantasvezesforprecisoparatentarentendlo.
Extraiadoproblematodasassuassadas.
Extraiadoproblematodasassuasentradas.
Identifiquequaloprocessamentoprincipal.
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
apareceronaturalmente.
Testecadapassodoalgoritmo,comtodososseuscaminhosparaverificarseoprocessamentoestgerandoos
resultadosesperados.
Crievaloresdetesteparasubmeteraoalgoritmo.
Revejaoalgoritmo,checandoasboasnormasdecriao.