Sunteți pe pagina 1din 41

ETB Curso Bsico de Lgica de Programao

Captulo 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.

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;
1
ETB Curso Bsico de Lgica de Programao
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.

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 retirar quando estiver pronto.

Cada linha do algoritmo podemos chamar de uma instruo, logo, podemos dizer que
um algoritmo um conjunto de instrues.
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

2
ETB Curso Bsico de Lgica de Programao
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
ETB Curso Bsico de Lgica de Programao
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, J ava 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:



4
ETB Curso Bsico de Lgica de Programao





PROCESSAMENTO
DE DADOS

SADA DE DADOS


ENTRADA DE
DADOS
Onde:
ENTRADA: So os dados de entrada do algoritmo.
PROCESSAMENTO: So os procedimentos utilizados para chegar ao resultado final.
SADA: So os dados j processados, os resultados, mostrados na tela do
computador (monitor de vdeo) ou impressora.

DIAGRAMA DE BLOCO

Diagrama de bloco: 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



TERMINAL

Indica o incio ou fim de um processamento
Exemplo: Incio do algoritmo



PROCESSAMENTO

Processamento em geral
Exemplo: x<- 2+3
5
ETB Curso Bsico de Lgica de Programao



ENTRADA MANUAL DE DADO

Indica entrada de dados pelo usurio via teclado
Exemplo: Digite a nota da prova 1



EXIBIR

Mostra informaes ou resultados
Exemplo: Mostre o resultado do clculo


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. Agora faa um algoritmo para o exerccio 2.






6
ETB Curso Bsico de Lgica de Programao
Captulo II

VARIVEL

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:
Nome da varivel: tipo da varivel;


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 Nomes No-Vlidos
Nome, profissao,n, n1,PESO, A 2X ->Comea por algarismo
peso do aluno ->espao no permitido

7
ETB Curso Bsico de Lgica de Programao
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 aqueles 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.
8
ETB Curso Bsico de Lgica de Programao
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.

Normalmente uma varivel do tipo caractere ocupar 1 byte na MP.

Exemplos:
A caractere que armazena uma letra
5 caractere que armazena um nmero

Lgico

Tambm conhecido como booleano. representado no algoritmo pelos dois nicos
valores lgicos possveis: verdadeiro ou falso. Porm comum encontrar em outras
referncias outros pares de valores lgicos como: sim/no, 1/0, true/false, verdadeiro/falso.

Constantes

Constante um determinado valor fixo que no se modifica ao longo do tempo,
durante a execuo de um programa. Conforme seu tipo, a constante classificada como
sendo numrica, lgica ou literal.
As declaraes das constantes em um algoritmo so feitas antes das declaraes das
variveis:
Sintaxe:
Nome da constante =valor da constante;
9
ETB Curso Bsico de Lgica de Programao
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.
Os operadores matemticos so:

Operador Funo
+ Somar
- Subtrair
* Multiplicar
/ Dividir
Div Quociente inteiro
Mod Resto da diviso

Os operadores Div e Mod s podem ser aplicados com operandos inteiros.
O operador / sempre conduz a um resultado real.
Com os operadores +, - e * , se pelo menos um dos operandos for real, ento o
resultado ser real.
Exemplos de expresses aritmticas:
3 * 3 =9
9 / 2 =4.5
9 DIV 2 =4
9 MOD 2 =1
2 / 9 =0.22
2 +4.6 =6.6




10
ETB Curso Bsico de Lgica de Programao
Expresso Relacional

Uma expresso relacional uma comparao realizada entre dois valores de mesmo
tipo, tendo como resposta sempre um valor booleano (verdadeiro ou falso). Estes valores so
representados na relao atravs de constantes, variveis ou expresses aritmticas.
Os operadores matemticos so:

Smbolo 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

Expresso Lgica

Uma expresso lgica serve para combinar resultados de expresses aritmticas e/ou
relacionais, variveis e/ou constantes, retornando verdadeiro ou falso.
Como exemplo de operadores lgicos, matematicamente conhecidos temos:

11
ETB Curso Bsico de Lgica de Programao
E And
Ou Or
No 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) Tabela OU (OR) Tabela NO (NOT)
V e V =V V ou V =V No V =F
V e F =F V ou F =V No F =V
F e V =F F ou V =V
F e F =F F ou F =F


As prioridades entre os operadores so:
1 - ( )
2 - funes
3 - No
4 - *, / , Div, Mod, E
5 - +, -, Ou
6 - =, <>, <, <=, >, >=.
Observao: em caso de empate entre as prioridades, resolver da esquerda para a
direita.





12
ETB Curso Bsico de Lgica de Programao
EXERCCIOS

1. Identifique o tipo dos dados:
(a) inteiro;
(b) real;
(c) lgico;
(d) cadeia ou literal

( ) verdadeiro ( ) c*d ( ) falso ( ) 1 2 3 4
( ) aula ( ) 897 ( ) 345 ( ) -18.589
( ) -0.342 ( ) 35.23 ( ) -23 ( ) Maria

2. Indique os identificadores como vlidos ou invlidos:
(a) identificador vlido
(b) identificador invlido

( ) ano ( ) ai! ( ) 3/1
( ) media_salario ( ) A15B34 ( ) nome-aluno
( ) mdia ( ) aula ( ) 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.

4. Indique qual o resultado das expresses aritmticas abaixo:
Sendo: x =6.0 y =2 z =4.0 a =8 b =7.5 c =7.7
d =12 p =4 q =3 r =10 s =2.5
a) x +y z * a = f) ((z / a) +b * a) d =
b) d div y = g) 100 * (q div p) +r =
c) d mod y = h) p * (r mod q) q/2
d) y div d = i) raiz (r (q * q ) ) =
e) y mod d = j) (a +r) * r =
13
ETB Curso Bsico de Lgica de Programao

5. Dadas as informaes abaixo, informe qual o valor das ralaes (verdadeiro ou
falso):

a) a =2.0, b =9.0, nome =ana, profisso =advogado
a +1 >=raiz (b) ( )
nome <>ana ( )
profisso =mdico ( )

b) a =6.0, b =121.0, nome =pedro, profisso =mdico
a +1 >=raiz (b) ( )
nome <>ana ( )
profisso =mdico ( )

c) x =3, y =4, z =16, nome =maria, resultado =verdadeiro
( x +y >z ) and (nome =maria) ( )
resultado or ( y >=x ) ( )
not resultado and ( z div y +1 =x ) ( )
nome =jos and ( x +y +z <( y * y )) ( )








14
ETB Curso Bsico de Lgica de Programao
CAPTULO III
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.
15
ETB Curso Bsico de Lgica de Programao
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);

Exemplo: Algoritmo que l um nome digitado pelo usurio e mostra uma mensagem.

Portugus Estruturado
Programa exemplo1;
Var
nome: literal;
Incio
Escreva (Digite um nmero: );
Leia (nome);
Escreva(nome, um nome muito
bonito! );
Fim.

Pascal
Program exemplo1;
Var
nome: string;
Begin
Write (Digite um nmero: );
Read (nome);
Write (nome, um nome muito
bonito! );
End.

EXERCCIOS - Estrutura Seqencial

1. 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.
16
ETB Curso Bsico de Lgica de Programao
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.






17
ETB Curso Bsico de Lgica de Programao
CAPTULO IV
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 Simples

Se condio ento
Incio
Comando (s);

Fim;



Seleo Composta
Se condio ento
Incio
Comando (s);
Fim
Seno
Incio
Comando (s);
Fim;
18
ETB Curso Bsico de Lgica de Programao
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.

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.
Pascal:
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.


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, do contrrio opcional.
19
ETB Curso Bsico de Lgica de Programao
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 o 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)

20
ETB Curso Bsico de Lgica de Programao
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 J aneiro 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. 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.
21
ETB Curso Bsico de Lgica de Programao
Sintaxe:
Portugus Estruturado

Caso <nome da varivel>seja
Alvo 1: comando 1;
Alvo 2: comando 2;
Alvo n: comando n;
Fim;

Ou
Caso <nome da varivel>seja
Alvo 1: comando 1;
Alvo 2: comando 2;
Alvo 3: comando 4;
Seno
comando 5;
Fim;


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.
22
ETB Curso Bsico de Lgica de Programao

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 J uvenilA');
14..17:Escreva('Categoria J uvenilB');
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 J uvenil A');
14..17:Write ('Categoria J uvenil B');
18..99:Write ('Categoria Snior');
Else
Write('Idade invlida!');
End;//End do Case
End.




23
ETB Curso Bsico de Lgica de Programao
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 J piter
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.
24
ETB Curso Bsico de Lgica de Programao
CAPTULO V

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.

Sintaxe:
Portugus Estruturado:
ENQUANTO condio FAA
INCIO
Comando 1;
Comando 2;
Comando n;
FIM;
Pascal:
WHILE condio DO
BEGIN
Comando 1;
Comando 2;
Comando n;
END;


25
ETB Curso Bsico de Lgica de Programao
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.


Comando Repita (Repeat - Until)

Estrutura recomendada quando o nmero de repeties for desconhecido, sendo
necessria uma chave (um teste) para interromper a repetio.
Sua diferena em relao ao enquanto que ela testa a condio ao final, significando
que ela executa o trecho pelo menos uma vez.
26
ETB Curso Bsico de Lgica de Programao
Muitas pessoas no entendem por que existe esta estrutura se a estrutura Enquanto
(While) pode fazer o que ela faz. Na verdade tem muito programador que no faz uso dela.

Sintaxe:
Portugus Estruturado:
Repita
comandos;
At condio;
Pascal
Repeat
comandos;
Until condio;



EXERCCIOS Comando Enquanto (WHILE)

1. Entrar com vrios nmeros e imprimir quantos nmeros foram digitados.

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).

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. Uma pousada estipulou o preo da diria em R$ 40,00 e mais uma taxa de servios
dirios de:
- R$ 15,00, se o nmero de dias for menor que 10;
- R$ 8,00, se o nmero de dias for maior ou igual a 10.
Criar um algoritmo que imprima o nome, o valor da conta de cada cliente e ao final o
total arrecadado pela pousada.
27
ETB Curso Bsico de Lgica de Programao

6. Criar um algoritmo que entre com vrios nmeros inteiros e positivos e informe a
quantidade de nmeros mltiplos de 3 (trs). O programa ser encerrado quando o
usurio digitar 0 (zero) ou menos.

7. Criar um algoritmo que entre com vrios nmeros inteiros e positivos e informe a
mdia dos nmeros mltiplos de 3 (trs). O programa ser encerrado quando o
usurio digitar 0 (zero) ou menos.

8. Uma fbrica produz e vende vrios produtos e para cada um deles tem-se o nome,
quantidade produzida e quantidade vendida. Criar um algoritmo que mostre:
- Para cada produto, nome, quantidade no estoque e uma mensagem se o produto
tiver menos de 50 itens no estoque.

9. Faa um programa que leia a idade e a altura de vrias pessoas. Calcule e informe a
mdia das alturas das pessoas com mais de 50 anos. Para encerrar o programa digite
zero para idade.

10. Faa um programa que leia vrios nmeros, quando o zero for digitado o programa
ser finalizado. Mostre no final desse programa a soma dos nmeros positivos, a
soma dos negativos e a soma total dos positivos e negativos juntos.

11. O GDF realizou uma pesquisa entre vrios habitantes do DF, coletando dados sobre o
rendimento familiar e o nmero de filhos de cada famlia. O GDF quer saber:
- A mdia dos rendimentos da populao;
- Mdia do nmero de filhos.

12. Uma empresa decidiu fazer um levantamento em relao aos candidatos que se
apresentarem para preenchimento de vagas no seu quadro de funcionrios. Suponha
que voc seja o programador dessa empresa, criar um programa que leia para cada
candidato a idade, o sexo e se tem experincia no servio (S ou N). Para encerrar o
programa, digite zero para idade. Calcule e escreva:
28
ETB Curso Bsico de Lgica de Programao
- O nmero de candidatos do sexo feminino;
- O Nmero de candidatos do sexo masculino;
- A idade mdia dos homens que j tem experincia no servio.

13. Uma empresa classifica seus funcionrios em trs nveis de acordo com um ndice de
produtividade. So eles (1) Excelente, (2) Bom e (3) Regular. Cada nvel acrescenta
um abono ao salrio base do funcionrio, de acordo com a seguinte tabela:
- Excelente 80% do salrio base;
- Bom 50% do salrio base;
- 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.



Comando Para (For)

Esta estrutura de repetio utilizada quando se sabe o nmero de vezes em que um
trecho do programa deve ser repetido.
Sintaxe:
Portugus Estruturado

PARA a<-valor inicial AT valor final FAA
INCIO
Comando 1;
Comando 2;
FIM;
PASCAL

FOR a :=valor inicial AT valor final DO
INCIO
Comando 1;
Comando 2;
END;




29
ETB Curso Bsico de Lgica de Programao
Observaes:
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

Programa para1;
Var
I : Inteiro;
Incio
Para i <- 1 at 10 faa
Incio
Escreva ( - , i);
fim;
Fim.
PASCAL

Program para1;
Var
I : Integer;
Begin
For i :=1 to 10 do
Begin
Write ( - , i);
End;
End.


EXERCCIOS Comando Para (For)

1. Imprimir todos os nmeros de 100 at 1.

2. Criar um algoritmo que imprima todos os nmeros pares no intervalo de 1 a 100.

3. Criar um algoritmo que entre com cinco nmeros e imprima o quadrado de cada
nmero.
30
ETB Curso Bsico de Lgica de Programao

4. Entrar com 10 nmeros e imprimir a metade de cada nmero.

5. Criar um algoritmo que imprima todos os nmeros de 1 at 100 e a soma deles.

6. Escreva um programa que receba a idade de 10 pessoas, calcule e imprima a
quantidade de pessoas maiores de idade (idade >=18 anos).

7. Entrar com nome, idade e sexo de 10 pessoas. Imprimir o nome se a pessoa for do
sexo masculino e tiver mais de 21 anos.

8. Em uma eleio presidencial, existem trs candidatos. Os votos so informados
atravs de cdigo. Os cdigos utilizados so:
1,2,3 votos para os respectivos candidatos;
4 votos em branco
5 votos nulos
Escreva um programa que calcule e imprima:
- total de votos para cada candidato;
- total de votos nulos;
- total de votos em branco.

9. Criar um algoritmo que entre com quatro notas de cada aluno de uma turma de 20
alunos e mostre:
- A mdia de cada aluno;
- A mdia da turma;
- Quantos alunos foram aprovados (mdia 7.0)

10. Imprimir as tabuadas de multiplicar de 1 at 10.

11. Criar um algoritmo que deixe escolher qual a tabuada de multiplicar que se deseja
imprimir.
31
ETB Curso Bsico de Lgica de Programao



12. Um empresa est fazendo a estatstica de seus funcionrios, ela precisa saber quantas
funcionrias tm com mais de 40 anos para encaminh-las para exames de
mamografia. Fazer um programa que leia o nome, a idade e o sexo de seus 100
funcionrios e imprima o nome se for do sexo feminino e tiver mais de 40 anos.


















32
ETB Curso Bsico de Lgica de Programao
CAPTULO VI

Estrutura Homognea: Vetores

Apesar de ter feito uso das estruturas de repetio que permitiam a entrada de vrios
dados, ainda no foi possvel o armazenamento de todos esses dados de uma s vez, pois
lhe faltava conhecer a estrutura de vetor.
Um vetor um arranjo de elementos armazenados na MP, um aps o outro, todos
com o mesmo nome. A idia a mesma de uma matriz linha da matemtica, isto , vrias
colunas e uma linha.

2 4 5 8 12 3 56 34
1 2 3 4 5 6 7 8

A [2 4 5 8 12 3 56 34]

Esse um vetor de 8 elementos, isto , tem 8 variveis, todas com o mesmo nome e
diferentes por sua posio dentro do arranjo que indicada por um ndice.
Quando se tem somente uma linha, podemos omiti-la e colocar somente a coluna.
A
1
=2, A
2
=4, A
3
=5, A
4
=8, A
5
=12, A
6
=3, A
7
=56, A
8
=34

Em algoritmos, representamos da seguinte forma:

A[1] =2 A[2] =4 A[3] =5 A[4] =8 A[5] =12 A[6] =3 A[7] =56 A[8] =34


Um algoritmo com vetor implica vrios trechos para que possa funcionar corretamente.
Esses trechos so independentes.

1 - TRECHO DE DIMENSIONAMENTO
33
ETB Curso Bsico de Lgica de Programao
Para dimensionar um vetor, usamos o seguinte comando na declarao de variveis:

Portugus Estruturado
Var
Nome: arranjo [dimenso] de tipo;
Pascal
Var
Nome: array [dimenso] of tipo;

Onde dimenso, na prtica, o nmero de elementos:
No exemplo acima seria:
Portugus Estruturado - A: arranjo [1..8] de Inteiro;
Pascal - A: array [1..8] of Integer;


2 TRECHO DE ENTRADA DE DADOS

- normalmente, utiliza uma estrutura de repetio.
- se for a estrutura Para (For), dever ter o valor final igual ltima posio do vetor.
- se for a estrutura Enquanto (While), dever ter uma varivel que ser incrementada e
nunca poder assumir um valor maior do que a ltima posio do vetor.

Portugus Estruturado

PARA L <- 1 AT tamanho do vetor FAA
INCIO
ESCREVA (....);
LEIA (nome do vetor [ L ] );
FIM;
Pascal

FOR L :=1 TO tamanho do vetor DO
BEGIN
WRITE (....);
READ (nome do vetor [ L ] );
END;


- Este trecho poder ser incrementado com outros comandos como: estrutura de seleo (if),
outro para (for), etc.

3 - TRECHO DE SADA

- normalmente, utiliza uma estrutura de repetio.
34
ETB Curso Bsico de Lgica de Programao
- se for a estrutura Para (For), dever ter o valor final igual ltima posio do vetor.
- se for a estrutura Enquanto (While), dever ter uma varivel que ser incrementada e
nunca poder assumir um valor maior do que a ltima posio do vetor.

Portugus Estruturado

PARA L <- 1 at tamanho do vetor FAA
INCIO
ESCREVA (nome do vetor [ L ] );
FIM;
Pascal

FOR L :=1 TO tamanho do vetor DO
BEGIN
WRITE (nome do vetor [ L ] );
END;


- O trecho anterior poder ser incrementado com outros comandos;
- Jamais dever aparecer um comando Leia (Read) no trecho de sada;
- Este trecho poder ser incrementado com outros comandos como: estrutura de seleo (if),
outro para (for), etc.

Exemplo:
1 - Criar um algoritmo que entre com dez nomes e imprima uma listagem contendo
todos os nomes:
Dever aparecer na tela o seguinte resultado:

Digite nome 1: MARIA
Digite nome 2: J OANA
Digite nome 3: MARCOS
Digite nome 4: FERNANDA
Digite nome 5: ANA
Digite nome 6: MARIANA
Digite nome 7: PEDRO
Digite nome 8: TEREZA
Digite nome 9: FILIPE
Digite nome 10: REGINA
OBS: aps digitar esses dados e
pressionar a tecla Enter dever aparecer:
MARIA
J OANA
MARCOS
FERNANDA
ANA
MARIANA
PEDRO
TEREZA
FILIPE
REGINA
35
ETB Curso Bsico de Lgica de Programao
Portugus Estruturado

Programa lerimp;
var
L: inteiro;
nomes: arranjo [1..10] de literal;
INCIO
Para L <- 1 at 10 faa
Incio
Escreva (Digite nome , L, : );
Leia (nomes [L]);
Fim;
Para L <- 1 at 10 faa
Incio
Escreva (nomes [ L]);
Fim;
FIM.

Pascal

Program lerimp;
var
L: Integer;
nomes: array [1..10] of string;
BEGIN
For L :=1 to 10 do
Begin
Write ('Digite nome ', L, ' : ');
Read (nomes [L]);
End;
For L :=1 to 10 do
Begin
Writeln (nomes [ L]);
End;
END.


Exemplo 2 Criar um algoritmo que armazene nome e duas notas de 5 alunos e
imprima uma listagem contendo nome, as duas notas e a mdia de cada aluno.

Portugus Estruturado
Programa imprimemedia;
Var
i: Inteiro;
nomes: arranjo [1..4] de literal;
pr1,pr2, media: arranjo [1..5] de real;
INCIO
Para L <- 1 at 4 faa
Incio
36
ETB Curso Bsico de Lgica de Programao
Escreva (Nome do aluno ,L, : );
Escreva(Nome do(a) aluno(a) ,i,: );
Leia (nomes[L]);
Escreva (Digite a 1 nota: );
Leia (pr1[L]);
Escreva (Digite a 2 nota: );
Leia (pr2[L]);
media [L] <- (pr1 [L] +pr2[L]) / 2;
Fim;
Escreva ( Relao Final);
Para L <- 1 at 4 faa
Incio
Escreva (L, , nomes [L], 1 nota: , pr1[L], 2 nota: , pr2[L], mdia: ,media[L]);
Fim;
FIM.

Pascal

Program imprimemedia;
Var
i: Integer;
nomes: array [1..4] of String;
pr1,pr2, media: array [1..4] of real;
BEGIN
For i :=1 to 4 do
Begin
Write (Nome do aluno ,I, : );
Write(Nome do(a) aluno(a) ,i,: );
Read (nomes[I]);
Write (Digite a 1 nota: );
Read (pr1[I]);
37
ETB Curso Bsico de Lgica de Programao
Write (Digite a 2 nota: );
Read (pr2[I]);
media [I] :=(pr1 [I] +pr2[I]) / 2;
End;
Writeln ( Relao Final);
For i :=1 to 4 do
Begin
Writeln (I, , nomes [I], 1 nota: , pr1[I]:0:1, 2 nota: , pr2[I] :0:1, mdia:
,media[I] :0:1);
End;
END.


Veja o resultado deste programa:

Nome do aluno 1: MARCOS
Digite a 1 nota: 10
Digite a 2 nota: 5
Nome do aluno 2: PEDRO
Digite a 1 nota: 8
Digite a 2 nota: 6
Nome do aluno 3: MARIANA
Digite a 1 nota: 5
Digite a 2 nota: 7
Nome do aluno 4: ANA
Digite a 1 nota: 10
Digite a 2 nota: 9

Relao Final
1 MARCOS 1 nota: 10 2 nota: 5 mdia: 7.5
2 PEDRO 1 nota: 8 2 nota: 6 mdia: 7
38
ETB Curso Bsico de Lgica de Programao
3 - MARIANA 1 nota: 5 2 nota: 7 mdia: 6
4 ANA 1 nota: 10 2 nota: 9 mdia: 9.5



EXERCCIOS VETORES


1. Armazenar 10 nomes em um vetor NOME e imprimir uma listagem numerada.

2. Armazenar 15 nmeros inteiros em um vetor NUM e imprimir uma listagem numerada
contendo o nmero e uma das mensagens: par ou mpar.

3. Armazenar 8 nmeros em um vetor e imprimir todos os nmeros. Ao final, teremos o
total de nmeros mltiplos de 3.

4. Armazenar nomes e notas da prova 1 e prova 2 de 15 alunos. Calcular e armazenar a
mdia. Armazenar tambm a situao do aluno: AP ou RP. Imprimir uma listagem
contendo nome, mdia e situao de cada aluno.

5. Armazenar nome e salrio de 20 pessoas. Calcular e armazenar o novo salrio
sabendo-se que o reajuste foi de 8%. Imprimir uma listagem numerada com nome e
novo salrio.

6. Ler um vetor de 10 elementos e obter outro vetor, cujos componentes so o triplo dos
respectivos componentes do primeiro vetor.

7. Entrar com nmeros inteiros em um vetor A[50] e um vetor B[50]. Gerar e imprimir o
veto C[50] que ser a soma dos vetores A e B.


39
ETB Curso Bsico de Lgica de Programao
ANEXO I

Questes de Racioccio Lgico:


1. Preencha o quadro a seguir de tal maneira que a soma dos nmeros que ficam
sobre uma linha, ou sobre uma coluna, ou sobre uma diagonal, d sempre 15 e
todos os nmeros t de ser diferentes:





2. Entram num restaurante para jantar trs mulheres, cada uma com duas filhas. S
existiam 7 lugares. Nenhuma ficou de p. Como isso possvel?

3. Tenho 3 camisas: A, B e C. Uma VERDE, uma BRANCA e outra AZUL, no
necessariamente nesta ordem. Sabe-se somanete que a a camisa A VERDE, B
no VERDE e C No AZUL. Quais as cores de A, B, e C, nessa ordem?

4. Dentro de uma caixa fechada, h uma bola branca e uma bola preta. Numa
segunda caixa fechada, h duas bolas brancas e, numa terceira caixa fechada, h
duas bolas pretas. Cada caixa possui uma etiqueta indicando o contedo das
caixa, mas algum misturou as trs etiquetas de modo que todas as etiquetas
esto erradas. Voc seria capaz de escolher apenas uma das seis bolas e modo
tal que, olhando sua cor, voc possa dizer o contedo de cada uma das caixas?

40
ETB Curso Bsico de Lgica de Programao
ANEXO II

Veja como seria a transferncia de alguns comandos de algoritmo para
Pascal:

OBS: Os dados da tabela esto em ordem alfabtica.

Portugus Estruturado Pascal
<- (atribuio) :=
Algoritmo ou Programa Program
Cadeia (de caracteres) ou Literal String
Caracter Char
E And
Enquanto n <>0 faa While n <>0 do
Escreva (.....); Write (.....);
Fim End
Incio Begin
Inteiro Integer
Leia (nome da varivel); Read (nome da varivel);
Nome:arranjo [1..10] de cadeia (ou string); Nome: array [1..10] of string;
Ou Or
Para i<-1 at 10 faa For i:=1 to 10 do
Se x >10 ento If x >10 then
Seno Else
Var ou Variveis Var

41

S-ar putea să vă placă și