Vous êtes sur la page 1sur 115

Universidade de Mogi das Cruzes

ALGORITMOS
Estruturas Simples
O professor pode ser excelente, o mtodo de ensino
maravilhoso, mas sem a sua participao caro aluno,
o aprendizado no acontece.

Mogi das Cruzes, SP


2008

Algoritmos para Estruturas Simples

AUTORES

A presente apostila est sendo elaborada com a colaborao dos professores da UMC,
que ministram e/ou ministraram as disciplinas Tcnicas de Programao e/ou Algoritmos para
Estruturas Simples e compostas, a saber:

Marcia A. S. Bissaco

Andra Ono Sakai

Cibele Mattos

Marco Antnio Porto Alvarenga

Marco Antnio Sawada (in memorium)

Roberta Panzera

Sebastio Varotto

Viviane Guimares Ribeiro

Para esclarecimento de dvidas, sugestes ou crticas entre em contato atravs do e-mail


marciab@umc.br ou do telefone 4798-7112.
Se tiver interesse de saber um pouquinho sobre mim, veja os anexos.

ltima atualizao: 22/4/2008; 11:51:05

2/115

Algoritmos para Estruturas Simples

SUMRIO
1. CONCEITOS BSICOS............................................................................................... 5
1.1. LGICA DE PROGRAMAO E ALGORITMOS.............................................. 5
1.2. FORMAS DE REPRESENTAO DE ALGORITMOS ....................................... 6
1.2. 1. Descrio Narrativa................................................................................. 6
1.2. 2. Pseudocdigo.......................................................................................... 7
1.2. 3. Fluxograma............................................................................................. 8
1.2. 4. Diagrama de Chaplin............................................................................. 10
1.2. 5. Transformao do algoritmo em um programa ...................................... 11
1.3. EXERCCIOS PROPOSTOS ............................................................................... 13
1.3. 1. Responda as questes abaixo................................................................. 13
1.3. 2. Elaborao de algoritmos descritivos..................................................... 14
1.3. 3. Transcrevendo algoritmo em fluxograma para pseudocdigo e vice-versa16
2. PROGRAMAO ESTRUTURADA ........................................................................ 22
2.1. INTRODUO ................................................................................................... 22
2.2. TIPOS DE DADOS, VARIVEIS E OPERADORES.......................................... 22
2.2.1. Tipos de dados ........................................................................................ 22
2.2.1.1. Dados numricos inteiros ............................................................ 23
2.2.1.2. Dados numricos reais................................................................. 23
2.2.1.3. Dados literais .............................................................................. 23
2.2.1.4. Dados lgicos.............................................................................. 24
2.2.2. Variveis................................................................................................. 24
2.2.3. Variveis versus alocao de memria .................................................... 25
2.2.4. Operadores.............................................................................................. 28
2.2.4.1. Operador de atribuio ................................................................ 28
2.2.4.2. Operadores aritmticos e funes ................................................ 28
2.2.4.3. Operadores Lgicos..................................................................... 29
2.2.4.4. Operadores relacionais ................................................................ 30
2.2.4.5. Prioridade para execuo das operaes no computador .............. 30
2.2.5. Exerccios propostos ............................................................................... 30
2.3. TCNICA DE PROGRAMAO ESTRUTURADA .......................................... 35
2.3. 1. Estrutura Seqencial.............................................................................. 35
ltima atualizao: 22/4/2008; 11:51:05

3/115

Algoritmos para Estruturas Simples

2.3.1.1. Sintaxe ....................................................................................... 35


2.3.1.2. Exemplos ................................................................................... 35
2.3.1.3. Exerccios propostos................................................................... 42
2.3.2. Estrutura Condicional.............................................................................. 50
2.3.2.1. Sintaxe ....................................................................................... 50
2.3.2.2. Exemplos ................................................................................... 54
2.3.2.3. Exerccios propostos................................................................... 63
2.3.3. Estrutura Repetio................................................................................ 68
2.3.3.1. Sintaxe ....................................................................................... 68
2.3.3.2. Exemplos ................................................................................... 70
2.3.3.3. Exerccios propostos................................................................... 75
2.4. EXERCCIOS PROPOSTOS COMPLEMENTARES .......................................... 84
2.5. RESUMO........................................................................................................... 106
REFERNCIAS BIBLIOGRFICAS........................................................................... 111
ANEXOS...................................................................................................................... 112
A.1. Como ser reprovado em Algoritmos e/ou Laboratrio de Programao.............. 112
A.2. Sobre o autor ..................................................................................................... 114

ltima atualizao: 22/4/2008; 11:51:05

4/115

Algoritmos para Estruturas Simples

1. CONCEITOS BSICOS
Programar basicamente construir algoritmos.

1.1. LGICA DE PROGRAMAO E ALGORITMOS


Qualquer problema solucionado seguindo um ou mais caminhos. Para isto, usa-se a
lgica, ou seja, raciocnios coerentes que conduzem a solues eficazes para o problema. Por
exemplo:
1. A gaveta est fechada.
2. A caneta est dentro da gaveta.
3. Portanto, primeiro preciso abrir a gaveta para depois pegar a caneta.

Quando o problema a ser solucionado de processamento de dados (computador),


necessrio usar a lgica de maneira formal, ou seja, adequar os raciocnios a simbolizao usada
na programao, de modo a obter o resultado do que deseja programar com qualidade. Neste
caso, usamos a expresso lgica de programao, que representada por algoritmos.
Os algoritmos fazem parte da nossa vida diria, constantemente estamos fazendo uso
dele. Alguns exemplos so:

Indicaes dadas para se chegar at uma determinada rua;

Um receita culinria;

Uma planta serve ao mesmo propsito num projeto de construo;

Instrues para o uso de medicamentos, equipamentos;

Indicaes de como montar um aparelho.

Algoritmos so, portanto, uma seqncia ordenada e sem ambigidade de passos


executveis (ou seja, instrues/aes), precisamente definidos, que manipulam um conjunto de
dados a fim de resolver um dado problema.

ltima atualizao: 22/4/2008; 11:51:05

5/115

Algoritmos para Estruturas Simples

1.2. FORMAS DE REPRESENTAO DE ALGORITMOS


Um algoritmo deve possuir aes bem definidas de modo a no dar margem dupla
interpretao. Ele parte de um ponto inicial, passando pelas aes at alcanar o resultado final.
No importando a representao a ser escolhida, para solucionar o problema devem ser
empregadas corretamente as leis do pensamento para obter o resultado esperado.
Um algoritmo pode ser representado atravs de descrio narrativa, fluxograma,
pseudocdigo e diagrama de chaplin, formas de represetao descritas nos itens seguintes.

1.2. 1. Descrio Narrativa

Nesta forma de representao, os algoritmos so expressos diretamente em Linguagem


Natural. Por exemplo, observe a soluo dos problemas apresentados abaixo referente troca de
uma lmpada velha e ao clculo da mdia aritmtica de duas notas.

ALG01 Trocar uma lmpada velha


1.
2.
3.
4.
5.
6.

Pegar uma escada;


Posicionar a escada embaixo da lmpada;
Buscar uma lmpada nova;
Subir na escada;
Retirar a lmpada velha;
Colocar a lmpada nova.

ALG02 Calcular a mdia aritmtica de um aluno


1. Pegar as notas N1 e N2;
2. Calcular a mdia aritmtica (M  (N1 + N2)/2);
3. Mostrar o resultado;

A Linguagem Natural muitas vezes PROLIXA (cansativa, longa, irritante) e


IMPRECISA, podendo ocasionar problemas, tais como:

ltima atualizao: 22/4/2008; 11:51:05

6/115

Algoritmos para Estruturas Simples

M interpretao;

Perda de informao;

Dificuldade de se transmitir a informao desejada.

Por exemplo, descreva um caminho para sair de onde voc est no momento e ir at a
estao do metr Tiete em So Paulo.
1.2. 2. Pseudocdigo

Nesta forma de representao, os algoritmos so expressos numa linguagem simplificada,


tambm conhecida por portugol ou portugus estruturado.
No momento do desenvolvimento de um algoritmo, preciso saber quais dados sero
recebidos do mundo externo e tambm quais informaes exteriorizar. No interessa, portanto,
saber se os dados entraro via teclado, pela leitura de um arquivo de dados ou por qualquer outro
meio. Para dar entrada ou sada nesses dados, so utilizados os verbos LER, ESCREVER e
IMPRIMIR. O comando ler (ou leia) espera receber um determinado dado (sem importar a
origem). O comando escrever (ou escreva) mostra a informao produzida no vdeo. O comando
imprimir (ou imprima) faz a impresso em papel da informao produzida. A sintaxe dos
comandos :

leia (varivel1, varivel2, ... , varivel n);


escreva (lista de constantes, variveis e/ou expresses );
imprima (lista de constantes, variveis e/ou expresses );

Exemplos:
Leia (numero1);
numero2 numero1 * 2;
escreva (O dobro do nmero , numero2);
imprima (O triplo do nmero , numero1 * 3);

A seguir so apresentados os algoritmos ALG01 e ALG02, que ilustram uma soluo


para a troca de lmpada velha e para o clculo da mdia aritmtica de um aluno,
respectivamente.

ltima atualizao: 22/4/2008; 11:51:05

7/115

Algoritmos para Estruturas Simples

ALG01 Pseudocdigo do algoritmo para trocar uma lmpada velha


Algoritmo Troca_lmpada;
Incio
Escreva (Pegar uma escada);
Escreva (Posicionar a escada embaixo da lmpada);
Escreva (Buscar uma lmpada nova);
Escreva (Subir na escada);
Escreva (Retirar a lmpada velha);
Escreva (Colocar a lmpada nova).
Fim

ALG02 Pseudocdigo do algoritmo que calculaa mdia aritmtica de duas notas


Algoritmo CalcMedia;
Var
N1, N2, M : Numrico;
Incio
Leia (N1, N2);
M  (N1 + N2)/2);
Escreva (M);
Fim.

Note que ambos os algoritmos comeam e terminam com as palavras Algoritmo, incio e
fim, sendo que a palavra algoritmo seguida de um identificador, que corresponde a um nome
representativo do problema a ser solucionado. Em ALG02 tem tambm as palavras chaves Var e
Numrico, que so utilizadas para declarao de variveis e seus tipos de dados que fazerm
parte da soluo do problema. Estas sero esclarecidas mais a frente. Por enquanto, importante
saber que estas palavras chaves compem a sintaxe do pseudocdigo.
1.2. 3. Fluxograma

Nesta forma de representao, os algoritmos so expressos numa linguagem grfica,


sendo que algumas das formas geomtricas que simbolizam algumas das aes mais realizadas
so:

ltima atualizao: 22/4/2008; 11:51:05

8/115

Algoritmos para Estruturas Simples

Descrio

Representao grfica

Inicio/Fim

Descrio

Representao grfica

Processamento

Entrada de dados

Deciso

Sada de dados

Repetio

Conectores

Direo do fluxo

Veja a soluo dos problemas da troca da lmpada velha e do clculo da mdia utilizando
o fluxograma.

ALG01 - Trocar uma lmpada velha


inicio

Pegar uma escada;


Posicionar a escada embaixo da lmpada;
Buscar uma lmpada nova;
Subir na escada;
Retirar a lmpada velha;
Colocar a lmpada nova;

fim

ltima atualizao: 22/4/2008; 11:51:05

9/115

Algoritmos para Estruturas Simples

ALG02 Calcular a mdia aritmtica


Incio

{Incio do algoritmo}

{Entrada de dados, isto , das notas N1 e N2}


N1, N2

M  (N1 + N2)/2

{Processamento, isto , clculo da mdia}

{Sada de dados: mostrando resultado}

{Fim do algoritmo}
Fim

O fluxograma tambm conhecido pelos profissionais da rea de Tecnologia da


Informao de diagrama de blocos, embora tenham sigificados diferentes.
1.2. 4. Diagrama de Chaplin

Nesta forma de representao, os algoritmos so expressos num diagrama de quadros,


que apresenta uma viso hierrquica e estruturada da lgica do programa. Tem um ponto de
entrada e um ponto de sada e composto pelas estruturas bsicas: seqncia, seleo e
repetio. Veja o exemplo a seguir.
ALG02 Diagrama de chaplin do algoritmo que calcula a mdia aritmtica de duas notas e
mostra mensagem Aprovado ou Reprovado

ltima atualizao: 22/4/2008; 11:51:05

10/115

Algoritmos para Estruturas Simples

1.2. 5. Transformao do algoritmo em um programa

Quando o verbo programar mencionado, imediatamente vem mente a palavra


programa (ou software), que na realidade consiste num algoritmo traduzido para uma forma
inteligvel para o computador.
Quem realiza essa traduo um outro programa denominado Linguagem de
Programao, tal como Pascal, Delphi, Visual Basic, C, etc. A funo bsica da Linguagem de
Programao converter um cdigo-fonte, isto , o algoritmo escrito numa sintaxe
compreensvel pelo programador para a Linguagem de Mquina ou Linguagem Binria.
Assim sendo, programa uma combinao de algoritmo mais linguagem de
programao, sendo que para elaborar o algorimto necessrio pensar de forma lgica para
solucionar o problema real que se apresenta (Figura 1).

Figura 1 - Esquema algoritmo-programa

Os programadores devem iniciar o desenvolvimento de um programa elaborando antes o


fluxograma ou pseudocdigo a fim de demonstrar a linha de raciocnio lgico para resoluo do
problema, isto , para estabelecer a seqncia de operaes a ser realizada pelo programa
desejado1.
A codificao do algoritmo pode ser realizada em qualquer Linguagem de Programao.
Lembrando que estas apresentam sintaxes diferentes, mas so similares em muitas outras
particularidades, como por exemplo, o paradigma de programao empregado (programao
estruturada, orientada a eventos ou orientada a objetos). A seguir so apresentadas as
ltima atualizao: 22/4/2008; 11:51:05

11/115

Algoritmos para Estruturas Simples

implementaes em PASCAL dos algoritmos ALG01 e ALG02, mencionado o que exibido no


monitor quando cada uma das linhas de cdigo executada pelo computador.
ALG01 Codificao em PASCAL do
problema da troca da lmpada
Program Troca_lampada;
Uses WinCrt;
Begin
writeln (Pegar uma escada;);
writeln (Posicionar a escada embaixo da
lmpada; );
writeln (Buscar uma lmpada nova; );
writeln (Subir na escada; );
writeln (Retirar a lmpada velha; );
writeln (Colocar a lmpada nova.);
End.

Aparece no monitor durante execuo do


programa
Nada
Nada
Nada
Pegar uma escada;
Posicionar a escada embaixo da lmpada;

ALG02 Codificao em PASCAL do


clculo da mdia aritmtica de 2 notas
Program CalcMedia;
Uses WinCrt;
Var N1, N2, M : real;
Begin

Aparece no monitor durante execuo do


programa
Nada
Nada
Nada
Nada
Nada
Digite Nota 1:
<Deve ser digitado algum valor pelo teclado>
Digite Nota 2
<Deve ser digitado algum valor pelo teclado>
Nada
Nada
Nada
Nada

Writeln (Digite Nota 1:);


Readln (N1);
Writeln (Digite Nota 2:);
Readln (N2);
M := (N1 + N2)/2);
Writeln (A mdia = , M:5:2);
End.

Buscar uma lmpada nova;


Subir na escada;
Retirar a lmpada velha;
Colocar a lmpada nova.
Nada

Os programas geralmente tm uma estrutura padro que consiste em: Entrada 


Processamento  Sada. Os dados necessrios resoluo do problema so entrados via teclado
e armazenados na memria do computador em posies denominadas de varivel. O
processamento realizado pela Unidade Lgica e Aritmtica (ULA) e a sada de dados
processados (informaes/valores calculados) ocorre atravs do monitor.
Para desenvolver um programa com entrada, processamento e sada, importante
responder as seguintes perguntas durante a elaborao do algoritmo: O que tenho? O que quero?
Como fazer?

ltima atualizao: 22/4/2008; 11:51:05

12/115

Algoritmos para Estruturas Simples

1.3. EXERCCIOS PROPOSTOS


1.3. 1. Responda as questes abaixo

a. O que lgica de programao?


b. O que algoritmo?
c. Como os algoritmos podem ser representados?
d. O que descrio narrativa?
e. D um exemplo de algoritmo representado em descrio narrativa.
f. Qual a desvantagem de se utilizar a descrio narrativa para representar os algoritmos?
g. O que pseudocdigo?
h. D um exemplo de pseudocdigo.
i. O que fluxograma?
j. D um exemplo de utilizao do fluxograma.
k. Fale sobre o diagrama de Chaplin.
l. D exemplo de um algoritmo representado pelo diagrama de Chaplin.
m. Como se transforma um algoritmo num programa?
n. O que linguagem de programao?
o. O que um programa?
p. Como os programadores devem proceder para desenvolver um programa?
q. Como pode ser realizada a codificao de algoritmo para transforma-lo num programa de
computador?
r. Exemplifique a codificao do algoritmo da troca de lmpada velha em PASCAL.
s. Exemplifique a codificao do algoritmo do clculo da mdia em PASCAL.
t. Qual a estrutura bsica de um programa?
u. Durante a fase de elaborao do algoritmo, que perguntas devem ser respondidas?
v. Onde ocorre o processamento dos dados dentro do computador?
w. Como so entrados no computador os dados necessrios resoluo do problema?

ltima atualizao: 22/4/2008; 11:51:05

13/115

Algoritmos para Estruturas Simples

x. Cite alguns dispositivos utilizados para entrar dados na memria do computador.


y. Cite alguns dispositivos utilizados para sada das informaes no computador.
z. O que memria?
aa. Coloque falso (F) ou verdadeiro (V)
( )
( )
(
(
(
(

)
)
)
)

Programadores no devem iniciar o desenvolvimento de um programa elaborando


antes o fluxograma ou o pseudocdigo
Fluxograma ou pseudocdigo so construdos a fim de demonstrar a linha de
raciocnio lgico para resoluo do problema
Pascal, Java, Delphi, C e Windows so linguagens de programao
O algoritmo pode ser codificado em qualquer Linguagem de Programao
Os dados necessrios resoluo do problema no so entrados via teclado
Os dados so armazenados na memria do computador em posies denominadas de
varivel.

1.3. 2. Elaborao de algoritmos descritivos

Elabore algoritmos descritivos para ensinar uma pessoa totalmente leiga a realizar as
seguintes tarefas:
1) Chupar bala;
2) Estourar pipoca numa panela usando o fogo.
3) Trocar uma lmpada queimada que est no teto, supondo que temos uma escada com
altura suficiente e uma caixa com lmpadas de diferentes potncias.
4) Estourar pipoca numa panela usando o fogo, utilizando somente os verbos acender,
colocar, desligar e misturar, bem como usar somente os objetos panela, tigela, fogo, sal,
milho de pipoca, pipoca e manteiga.
5) Trocar a lmpada queimada empregando somente os verbos colocar, descer, escolher,
girar e subir. Alm disso, usar tambm apenas os objetos escada, lmpada queimada,
lmpada nova, soquete.
6) Colocar exatamente 4 litros de gua num garrafo que tem capacidade para 5 litros. Podese usar tambm outro garrafo com capacidade de 3 litros e a fonte de gua a vontade.
7) Atravessar trs jesutas e trs canibais para o outro lado de um rio. Para isso, h um barco
com capacidade para duas pessoas. Por medidas de segurana, no se deve permitir que
em alguma margem a quantidade de jesutas seja inferior dos canibais. Qual a soluo
para efetuar a travessia com segurana? Elabore um algoritmo mostrando a resposta,
indicando as aes que concretizam a soluo deste problema.
ltima atualizao: 22/4/2008; 11:51:05

14/115

Algoritmos para Estruturas Simples

8) Solucionar o problema da Torre de Hani, que envolve um ambiente formado por uma
base com 3 pinos (pA, pB e pC). No pino pA h uma pilha de 3 discos furados com
dimetros diferentes (dP, dM e dG), ordenados de tal forma que o disco maior (dG) est
em baixo e o menor (dP) em cima, formando assim uma torre conforme a figura a seguir:

Figura 2 - Ambiente da Torre de Hani.

O problema consiste em transferir-se a torre do pino pA para o pino pC


obedecendo as seguintes restries:
a) S possvel movimentar um disco por vez para qualquer pino;
b) Um disco maior nunca poder ser colocado sobre um menor;
c) A soluo dever ser encontrada com o menor nmero de passos possvel.
9) Mostrar os passos necessrios para trocar um pneu furado, considerando as seguintes
situaes:
a) Trocar o pneu traseiro esquerdo;
b) Trocar o pneu traseiro esquerdo e, antes, verificar se o pneu reserva est em
condies de uso;
c) Verificar se existe algum pneu furado, se houver verificar o pneu reserva e, ento,
trocar o pneu correto.
Tome como exemplo os algoritmos desenvolvidos para solucionar o problema da troca de
lmpadas. Para cada algoritmo faa um refinamento do anterior, introduzindo novas
aes e alterando o fluxo de execuo de forma compatvel com as situaes
apresentadas.

ltima atualizao: 22/4/2008; 11:51:05

15/115

Algoritmos para Estruturas Simples

1.3. 3. Transcrevendo algoritmo em fluxograma para pseudocdigo e vice-versa

Fluxograma

Pseudocdigo
Programa ALG03;
Inicio
Escreva (Meu primeiro programa);
Fim.

Inicio

Estou aprendendo
a

desenvolver algoritmos

Fim

Inicio

10

Fim

ltima atualizao: 22/4/2008; 11:51:05

16/115

Algoritmos para Estruturas Simples

Fluxograma

Pseudocdigo
Programa ALG06;
Var
x: Inteiro;
Inicio
x  10;
Fim.

Programa ALG07;
Var
y: Inteiro;
Inicio
y  10;
Escreva(y);
Fim.

Inicio

y  10

y = , y

Fim

ltima atualizao: 22/4/2008; 11:51:05

17/115

Algoritmos para Estruturas Simples

Fluxograma

Pseudocdigo

Inicio

N1  2
N2  3

N1 = , N1

N2 = , N2

Fim

Programa ALG10;
Var
N1,N2: Inteiro;
Inicio
N1  2;
N2  3;
Escreva (N1 = , N1, N2 = ,N2);
Fim.

ltima atualizao: 22/4/2008; 11:51:05

18/115

Algoritmos para Estruturas Simples

Fluxograma

Pseudocdigo
Programa ALG11;
Var
a: Inteiro;
b: Real;
nome:caracter;
teste:lgico;
Inicio
a  1;
b  1.25;
nome  Maria;
teste  verdadeiro;
Escreva (a);
Escreva (b);
Escreva (nome);
Escreva (teste);
Fim.

Inicio

a  15;
b  3;

Soma = , a + b

Fim
Programa ALG13;
Var
a,b,soma: Inteiro;
Inicio
a  15;
b  3;
soma  a + b;
Escreva ( Soma = , soma);
Fim.

ltima atualizao: 22/4/2008; 11:51:05

19/115

Algoritmos para Estruturas Simples

Fluxograma

Pseudocdigo
Programa ALG14;
Var
letra:caracter;
Inicio
letra  A;
Escreva(letra);
Fim.

Inicio

Digite um nmero real

Programa ALG15;
Var
n:real;
Inicio
Escreva (Digite um nmero real:);
Leia (n);
Escreva (n);
Fim.

Nn

Fim

Programa ALG16;
Var
num1,num2:real;
Inicio
Escreva(Digite dois nmeros reais:);
Leia(num1,num2);
Escreva(Primeiro numero = ,num1);
Escreva(Segundo numero = ,num2);
Fim.

ltima atualizao: 22/4/2008; 11:51:05

20/115

Algoritmos para Estruturas Simples

Fluxograma

Pseudocdigo

Inicio

Digite o primeiro nmero

num1

Digite o segundo nmero

num2

1 = , num1

2o = , num2

Fim

ltima atualizao: 22/4/2008; 11:51:05

21/115

Algoritmos para Estruturas Simples

2. PROGRAMAO ESTRUTURADA
Algoritmos s se aprende fazendo.

2.1. INTRODUO
Segundo alguns especialistas, qualquer programa de computador pode ser escrito
utilizando apenas trs estruturas bsicas: Seqncia, Condio e Repetio. Isto significa que, na
construo de um algoritmo, deve ser criado um fluxo de aes a ser executado seqencialmente,
ou seja, de cima para baixo e da esquerda para a direita.
Antes, porm, necessrio fazer as seguintes perguntas: quais dados sero utilizados para
solucionar o problema? De que tipo eles so (inteiro, real, literal ou lgico)? Qual o tamanho
desses dados?
Portanto, nos itens seguintes so abordados descrio e exemplos a respeito de tipos de
dados e demais assuntos relacionados. So tambm apresentados exemplos de utilizao das
estruturas bsicas e uma lista de exerccios para fixao dos conceitos.

2.2. TIPOS DE DADOS, VARIVEIS E OPERADORES


Uma relao dos tipos de dados, dos operadores de atribuio, aritmticos, lgicos e
relacionais que podem ser utilizados pelo computador bem como o conceito de varivel so
mostrados a seguir.
2.2.1. Tipos de dados

Uma informao manipulada pelo computador pode ser classificada como instrues ou
dados. Sendo que, uma instruo comanda o funcionamento da mquina e determina como
devem ser tratados dos dados. E os dados, correspondem poro das informaes a serem
processadas pelo computador. Os tipos de dados manipulados pelo computador so trs:

Dados numricos

Dados literais

Dados lgicos

ltima atualizao: 22/4/2008; 11:51:05

22/115

Algoritmos para Estruturas Simples

Recordando:
Conjunto dos nmeros naturais (N)
N = { 1, 2, 3, 4, ...}
Conjunto dos nmeros inteiros (Z)
Z = {..., -3, -2, -1, 0, 1, 2, 3, ... }
Conjunto dos nmeros fracionrios (Q)
Q = { p/q | p, q pertencem a Z}
Conjunto dos nmeros reais (R) formado pela unio do conjunto Q.

2.2.1.1. Dados numricos inteiros


Este tipo de dados so nmeros pertencentes ao conjunto dos nmeros inteiros (Z).
Podendo assumir valores negativos, nulo e positivos. Exemplos:

24 nmero inteiro positivo


0 nmero inteiro
-12 nmero inteiro negativo
2.2.1.2. Dados numricos reais
Este tipo de dados so nmeros pertencentes ao conjunto dos nmeros fracionrios (Q).
Podendo assumir valores negativos, nulos e positivos. Exemplos:

24.01 nmero real positivo com duas casas decimais.


144 nmero real positivo com zero casas decimais.
-13.3 nmero real negativo com uma casa decimal.
0 nmero real com zero casas decimais.
2.2.1.3. Dados literais
Este tipo de dados so caracteres tais como: letras, dgitos e/ou smbolos especiais.
Podem ser chamados tambm como: dados alfanumricos, cadeias de caracteres ou
string. No algoritmo, estes dados so delimitados pelo apostrofo (cadeia de caracteres).
Exemplos:
qual ?

- literal de comprimento 6.

ltima atualizao: 22/4/2008; 11:51:05

23/115

Algoritmos para Estruturas Simples

- literal de comprimento 1.

1-2+3=

- literal de comprimento 6.

AbCdeF

- literal de comprimento 7.

- literal de comprimento 1.

2.2.1.4. Dados lgicos


Estes tipos de dados so chamados de booleanos. Eles representam dados lgicos com
Verdadeiro e falso. Nos algoritmo seus valores so delimitados pelo ponto (.V.). Exemplos:

.V. valor lgico verdadeiro


.F. valor lgico falso

2.2.2. Variveis

Varivel um nome (rtulo) dado a uma parte da memria, cujo contedo (valor) pode
ser alterado durante a execuo do programa. Embora seja possvel alterar o valor armazenado
na memria (na varivel), possvel armazenar s um valor de cada vez. A varivel composta
de dois elementos bsicos: a) contedo valor atual da varivel e b) identificador nome dado
varivel.
O identificador deve obrigatoriamente iniciar com uma letra e os caracteres seguintes
com letras ou nmeros. Exemplos:

A  5 (O valor 5 armazenado na varivel A)


B 6 (O valor 6 armazenado na varivel B)
C  A+B (O valor que est em A somado ao valor em B, e o resultado armazenado
na varivel C.)

Vale lembrar que quando um valor armazenado numa varivel, o valor antigo ser
perdido.
Identificadores permitidos: A, Nome, N1 e S2N. Identificadores no permitidos: 2N, A
B, N[1], A*2
Todas as variveis usadas em um algoritmo (pseudocdigo) devem ser declaradas antes
de serem usadas. Isto faz necessrio para permitir a reserva de espao na memria.
ltima atualizao: 22/4/2008; 11:51:05

24/115

Algoritmos para Estruturas Simples

Sintaxe da declarao:

Var
<nome_da_varivel> : <tipo_de_dados>;
Regras:

A palavra Var deve aparecer uma nica vez;

Para um mesmo tipo de dado, podem ser listadas vrias variveis (seus nomes devem

ser separados por vrgula);

Variveis de tipos diferentes devem ser declaradas em linhas diferentes.

Exemplos:
Var
nome,endereo: caracter;
idade:inteiro;
salrio:real;
tem_filhos:lgico;
2.2.3. Variveis versus alocao de memria

O particionamento da memria para armazenamento de dados realizado aps anlise do


problema a ser resolvido. necessrio responder as seguintes perguntas:

Qual o problema a resolver?

Quais os dados devem ser armazenados?

Que tipo dado a ser utilizado?

Qual o tamanho dos dados a serem utilizados?

Como resolver o problema?

Digamos que o problema a ser resolvido : somar dois nmeros quaiquer, tais como:

ltima atualizao: 22/4/2008; 11:51:05

25/115

Algoritmos para Estruturas Simples

Neste caso, os dados que devem ser armazenados, considerando os valores 2 e 3, so:

Onde 2 o Primeiro nmero escolhido, 3 o Segundo nmero escolhido e 5 o Resultado, ou


seja, o total da soma dos dois nmeros. Ento, posso rotular as partes da memria do
computador, onde os valores 2, 3 e 5 sero armazenados, como sendo Primeiro, Segundo e
Resultado respectivamente.
Estas partes de memria podem receber tambm outros valores tais como: 4, 4 e 8; 289,
97 e 386; 232, 1 e 233; 398, 0 e 398; e etc. Estas partes da memria so, portanto, chamadas de
variveis e sempre que um novo valor for colocado nelas, o contedo anterior perdido ou
sobrescrito.
No exemplo acima, pode-se concluir que os dados so do tipo inteiro.

Portanto, a poro de memria a ser reservada para as variveis rotuladas (Primeiro,


Segundo e Resultado) ter um dimensionamento apropriado para o tipo inteiro.
A memria do computador pode ser particionada para armazenar dados de outros tipos
tambm, tais como dados do tipo real, literal e lgico. A diferena destes tipos de dados consiste
apenas no tamanho da poro de memria a ser reservada, como ilustra tabela a seguir.

TIPO DE DADO
Inteiro
Literal [1] (1 caracter)
Real
Lgico

TAMANHO
2 bytes
1 byte
4 bytes
1 byte

Lembrando: 1 byte = 8 bits; 1 bit pode assumir apenas um de dois valores (0 ou 1).
Cada tipo de dado pode assumir de um valor mnimo a um valor mximo, como mostra a
tabela abaixo:

ltima atualizao: 22/4/2008; 11:51:05

26/115

Algoritmos para Estruturas Simples

Relembrando o exemplo da soma dos dois nmeros, se os nmeros a serem somados


esto dentro da seguinte faixa de valores:

Ento, a poro de memria a ser reservada se enquadra no tipo inteiro.


importante ressaltar tambm que o processo de rotular as partes da memria com
nomes, isenta o programador de conhecer os endereos da memria expressos em hexadecimal.
A figura a seguir ilustra o particionamento da memria (a numerao hexadecimal foi substituda
pela decimal apenas para facilitar o entendimento).

Figura 3 - Esquema de memria

Voltando ao problema da soma de dois nmeros, pode-se agora responder a ltima


pergunta Como resolver o problema?. A resposta : definir variveis e ....

ltima atualizao: 22/4/2008; 11:51:05

27/115

Algoritmos para Estruturas Simples

A figura a seguir ilustra todo o processo.

Figura 4 - Variveis versus mapeamento de memria

2.2.4. Operadores

2.2.4.1. Operador de atribuio


O operador de atribuio () usado para fornecer um valor a uma dada varivel.
Exemplificando:

A  5 (Atribuindo o valor 5 varivel A)


B  A (Atribuindo o valor da varivel A, valor igual a 5, varivel B)
A  B + C (Atribuindo o valor da soma dos valores nas variveis B e C varivel C)
2.2.4.2. Operadores aritmticos e funes
Para realizar clculos matemticos necessrio saber qual a representao dos smbolos
de operaes matemticas, a saber:
ltima atualizao: 22/4/2008; 11:51:05

28/115

Algoritmos para Estruturas Simples

Operador
+
*
/

Operao
Adio
Subtrao
Multiplicao
Diviso (onde o resultado ser um nmero real)
Diviso (onde o resultado ser um nmero inteiro)

DIV
MOD
** ou exp(a, b)
Sqrt (x)
Exp(ln(x)*n)

Resto de uma diviso


Exponenciao
Raiz quadrada
Exponenciao xn

Exemplo
2 + 5 =7
20 10 = 10
3 * 5 = 15
5 / 2 = 2,5
10 div 2 = 5
7 div 2 = 3
7 mod 2 = 1
5 ** 2 ou exp(5, 2)
Sqrt(5)
Exp(ln(5)*3)

Exemplificando atravs da elaborao de um algoritmo que resolve:


a) x = ab

b) y = a

Algoritmo A;
Var x, a, b:real;
inicio
a 10;
b 2;
x Exp(ln(a)*b);
escreva(x);
fim.

Algoritmo A;
var y, a:real;
inicio
a 16;
y Sqrt(a);
escreva(y);
fim

2.2.4.3. Operadores Lgicos


Os operadores usados em expresses lgicas so os Operadores Lgicos apresentados na
tabela a seguir.
Operador

Relao

E (And)

E lgico

Ou (Or)

Ou lgico

No (Not) Negao lgica

Descrio
Conjuno (as duas
ao mesmo tempo )
Disjuno Inclusiva

(Flag = .V.) .Ou. (Cont > 50)

Negao

No (Sei_nada)

Ou-X (Xor) Ou Exclusivo

Exemplo
(Media > 5) .E. (Freq > 75)

(Sal < 500) Ou-X (N_dep > 2)

Veja a tabela verdade apresentada a seguir para entender melhor os operadores lgicos,
onde P e Q so variveis do tipo lgico.
P
F
F
V
V

Q
F
V
F
V

P.e. Q
F
F
F
V

P .ou. Q
F
V
V
V

P .ou-X. Q
F
V
V
F

ltima atualizao: 22/4/2008; 11:51:05

No (P .e. Q) No (P .ou. Q) No (P .ou-X. Q)


V
V
V
V
F
F
V
F
F
F
F
V

29/115

Algoritmos para Estruturas Simples

2.2.4.4. Operadores relacionais


Alm de operaes matemticas, freqente a comparao de informaes.

Por

exemplo, se a mdia aritmtica do aluno for maior ou igual a 5 ento o professor toma a deciso
de aprovar o aluno. Para isso, so usados os operadores relacionais listados na tabela a seguir.
Operador

Relao

Igualdade

ou <>

Diferente

>

Maior que

Exemplo
Nome = Joo da Silva
Saldo 100,00
Salrio > 3000,00
Idade > 18

ou >=
<
ou <=

Maior ou igual que

Mdia 5,0

Menor que

Renda < 10000

Menor ou igual que

Aluguel 400

2.2.4.5. Prioridade para execuo das operaes no computador


O computador avalia as expresses e executa as operaes mistas na seguinte ordem:
Ordem
Operaes
1
Parnteses e funes (resolvidos da esquerda para a direita)
2

Multiplicao (*), Diviso ( / e div ) e Resto ( Mod )


esquerda para a direita)

soma e subtrao

4
5

Operadores relacionais: >, <, , , =,


Operador Lgico No

Operador Lgico E

Operador Lgico Ou

(resolvidos

da

2.2.5. Exerccios propostos

1) Responda as questes abaixo:

a) O que varivel?
b) O que tipo de dado?
ltima atualizao: 22/4/2008; 11:51:05

30/115

Algoritmos para Estruturas Simples

c) O que voc entende por memria do computador?


d) Quais as regras para compor o nome (rtulo ou identificador) de uma varivel?
e) Quais as regras para a declarao de uma varivel?

2) Relacione as colunas
Tipo de dado
a) Numrico
inteiro
b) Numrico real
c)

Literal

d) Lgico

Descrio
( ) So caracteres tais como: letras, dgitos e/ou smbolos especiais. Pode-se tambm
chamar estes dados de : alfanumricos, cadeia de caracteres ou string. No
algoritmo estes dados so delimitados pelo apstrofo.
( ) So chamados de boleanos. Pode assumir dois valores: Falso e Verdadeiro. No
algoritmo seus valores so delimitados pelo ponto (.V.).
( ) So nmeros pertencentes ao conjunto dos nmeros inteiros (Z), podendo
assumir valores negativos, nulos e positivos.
( ) So nmeros pertencentes ao conjunto dos nmeros fracionrios (Q), podendo
assumir valores negativos, nulos e positivos.

3) Classifique os dados abaixo de acordo com seu tipo (inteiro, real, literal ou lgico).
Dado
0.7845
+35987
.V.
.F.
32
32.0
-0.0
24.01
1-2+3=
qual?

Tipo de dado

Dado
Tipo de dado
abc
.F.
-0.0
+36
-1
2
Teste
144
AbCdeF
-13.3

4) Na lista seguinte, assinale com V os nomes de variveis vlidos e com I os invlidos.


(
(
(
(
(
(

)
)
)
)
)
)

Abc
123a
_
A123
A1_v3
AB CDE

(
(
(
(
(
(

)
)
)
)
)
)

3abc
_a
Aa
_1
_a123
etc...

(
(
(
(
(
(

)
)
)
)
)
)

A
acd1
1
A0123
B214
guarda-chuva

5) Indique a prioridade na avaliao das expresses


Soma e subtrao
Operador lgico E
Operador Lgico No
Parnteses e funes (resolvidos da esquerda para a direita)
Operadores relacionais: >, <, >=, <=, <>
Multiplicao (*), Diviso (/ e Div) e Resto (Mod) (resolvidos da esquerda para a direita)
Operador lgico Ou

ltima atualizao: 22/4/2008; 11:51:05

31/115

Algoritmos para Estruturas Simples

6) Dadas as declaraes de variveis abaixo, monte as tabelas de smbolos correspondentes.


a) VAR
a,b,c : real;
delta : real;
positivo : lgico;
raiz1, raiz2 : real;

Nome simblico
A

Posio inicial
1

Tipo de dado
Real

b) VAR

Nome simblico

Posio inicial

Tipo de dado

x,y : inteiro;
nome, profissao : literal [20];
rua : literal [30];
numero : inteiro;
renda : real;

7) Elabore um exerccio sobre o contedo apresentado at o presente momento. Pode ser


criativo.

8) Dado os enunciados abaixo, identifique as variveis necessrias na elaborao do algoritmo.


D nome para essas variveis e identifique os tipos de dados possveis:

8.1) Crie um algoritmo que calcule a soma de dois nmeros inteiros.


8.2) Crie um algoritmo que calcule a mdia de um aluno composta por duas provas.
8.3) Crie um algoritmo que calcule o salrio lquido de um funcionrio, considerado:
a) os dados do funcionrio: nome, RG e telefone.
b) salrio bruto de R$ 2500,00
c) descontos de R$ 300,00

9) Dados os identificadores abaixo, assinale somente os que so aceitos em Algoritmos.


(
(
(
(
(
(
(
(

) Valor
) abc
) B248
) A/B
) X2
)a
) salrio
) Nome

(
(
(
(
(
(
(
(

)3x4
) MARIA
) KM/H
) 3E
) Valor Pago
) NoTa
) _a123
) Contador

(
(
(
(
(
(
(
(

) A1B2C3
)1
) Nota
) XYZ
) AH!
) Nota
) _a
) acd1

(
(
(
(
(
(
(
(

) Placa-Carro
) SALA125
) NOTA
) Algoritmo_1
) Nome_da_empresa
) SALRIO-LQUIDO
) 1 algoritmo
) Nota*do*aluno

(
(
(
(
(
(
(
(

) notadoaluno
) _1
)_
) algo 1
) 123
) Mdia
) inicio
) vetor

(
(
(
(
(

) AB CDE
) Algoritmo1
) A123
) a123
) 3abc

10) Ligue os valores aos seus tipos de dados correspondentes


ltima atualizao: 22/4/2008; 11:51:05

32/115

Algoritmos para Estruturas Simples

11) Indique os tipos de dados (inteiro, real, literal, lgico) que podem ser armazenados nas
variveis abaixo:
Var
Nota:
Idade:
Cidade:
Salario:
Sexo:
12) Na hora de criar o nome da varivel (identificador) necessrio seguir regras. Indique com V
regra verdadeira e F para regra falsa.
(

(
(
(
(

)
)
)
)

No pode usar smbolos especiais


(%, &, *, -, / , etc);
Pode haver espaos;
No pode iniciar com um nmero;
Deve iniciar com uma letra;
Pode usar smbolos especiais (%,
&, *, -, / , etc);

(
(
(
(

)
)
)
)

O nico smbolo permitido o ( _ )


underline.
No pode haver espaos;
Pode ter acento agudo ou crase;
Pode iniciar com nmero
Pode usar nmeros para compor o restante
do nome aps iniciar com letra;

13) Sendo P, Q, R e S, variveis numricas, cujo os contedos so iguais a 2, 3, 12 e 4.5,


respectivamente, quais os valores fornecidos por cada uma das expresses abaixo.
a) 100 * Q DIV P + R
b) P * R MOD 5 Q/2
c) Q*Q R/4 * P 3
d) S MOD (P+1) Q * R
e) S+ R * (3 2*P)/5 + 5*Q
14) Dada as variveis numricas A e B, as variveis literais NOME e PROFISSAO, completar o
quadro a seguir com os resultados lgicos (falso ou verdadeiro) obtidos como resultado das
relaes, tendo em vista os valores atribudos a estas variveis.

ltima atualizao: 22/4/2008; 11:51:05

33/115

Algoritmos para Estruturas Simples

15) Considerando as variveis do exerccio anterior e mais a varivel lgica TESTE contendo o
valor lgico falso, avaliar as expresses a seguir, para cada uma das trs combinaes de valores
apresentadas:
a) A+1 >= B/4 .ou. NOME <> ANA
b) A+5 <= B*2 .e. PROFISSO = MDICO
c) NOME <> ANA .ou. PROFISSO = PROFESSOR .e. A+1 >= B/2
d) PROFISSO = CONTADOR .ou. TESTE
e) no TESTE .e. (A+2 >B/6 .ou. no PROFISSO = ENGENHEIRO)
f) no (A+2 >= B .e. TESTE)
16) Sejam as variveis lgicas P, Q, R, S contendo, respectivamente, os valores verdadeiro,
falso, falso, verdadeiro. Indique o resultado das operaes:
a) P .e. S
b) P .e. R
c) Q .e. S
d) Q .e. R
e) P .ou. S

f) P .ou. R
g) Q .ou. S
h) Q .ou. R
i) No P
j) No R

17) Dadas as expresses aritmticas abaixo, escreva-as de forma que o compilador de uma
linguagem de programao como o PASCAL, por exemplo, entenda:
a) 2 (A + B) 7B
b) X + 2 3 Y 3B
3

2
3
C
+Y
5( 2W + )
A+ B
Y
c) X 1
4Z

ltima atualizao: 22/4/2008; 11:51:05

34/115

Algoritmos para Estruturas Simples

2.3. TCNICA DE PROGRAMAO ESTRUTURADA


A seguir so apresentadas as estruturas que compem a tcnica de programao
estruturada e alguns exemplos.
2.3. 1. Estrutura Seqencial

Esta estrutura permite a execuo de um grupo de aes sequencialmente.


2.3.1.1. Sintaxe
A seguir apresentada a sintaxe utilizada para elaborar o pseudocdigo e o fluxograma.
Pseudocdigo

Fluxograma

Comando_1;
Comando_2;
...
Comando_n;

2.3.1.2. Exemplos
Os algoritmos ALG01 a ALG17, apresentados acima, so exemplos de algoritmos
elaborados utilizando a estrutura seqencial. Alm deles, observe tambm os algoritmos
apresentados a seguir, que realizam: soma de dois valores (ALG18); clculo da hipotenusa
(ALG19), converso de um valor em horas e em minutos para um valor em minutos (ALG20),
converso da temperatura em graus Celsius para graus Fahreinheit (ALG21), aumento do salrio
de um funcionrio de acordo com certo percentual de aumento (ALG22) e clculo da rea do
crculo (ALG23).

ltima atualizao: 22/4/2008; 11:51:05

35/115

Algoritmos para Estruturas Simples

ALG18 Soma de dois nmeros


Anlise do problema
Descrio narrativa
1 O que tenho?
Dois valores (A e B)
2 O que quero?
1 - Fornecer valores A e B;
Soma dos dois valores (S)
2 - S  A + B;
3 Como ?
3 - Mostra o resultado (S).
Fornecer valores A e B;
S  A + B;
Mostra o resultado (S).
Pseudocdigo

Fluxograma

Algoritmo SomaAB;
Var
A, B, S : inteiro;
Incio
Leia (A, B);
S  A + B;
Escreva (S);
Fim

Codificao em PASCAL

Program SomaAB;
Uses WinCrt;
Var
A, B, S : integer;
Begin
Writeln (Digite A:);
Readln (A);
Writeln (Digite B);
Readln (B);
S := A + B;
writeln (Soma = , S);
End.

ltima atualizao: 22/4/2008; 11:51:05

Aparece no monitor quando o programa


executado
Nada
Nada
Nada
Nada
Nada
Digite A:
<Digitar o valor de A pelo teclado>
Digite B:
<Digitar o valor de B pelo teclado>
Nada
Soma = <valor armazenado em S>
Nada

36/115

Algoritmos para Estruturas Simples

ALG19 Clculo da hipotenusa


Anlise do problema
Descrio narrativa
1 O que tenho?
Os catetos Oposto e Adjacente (A e B)
2 O que quero?
1 - Fornece valores A e B;
Hipotenusa (H)
2 - H  raiz (A * A + B * B);
3 Como ?
3 - Mostra o resultado (H).
Fornece valores A e B;
H  raiz (A * A + B * B);
Mostra o resultado (H).
Pseudocdigo

Fluxograma

Algoritmo CalcHip;
Var
C1, C2, hip : inteiro;
Incio
Leia (C1, C2);
hip  raiz (C1 * C1 + C2 * C2);
Escreva (hip);
Fim

Codificao em PASCAL

Program CalcHip;
Uses WinCrt;
Var
A, B, H : integer;
Begin
Writeln (Cateto Oposto);
Readln (A);
Writeln (Cateto Adjacente);
Readln (B);
H := sqrt (A * A + B * B);
writeln (Hipotenusa = , H:5:2);
End.

ltima atualizao: 22/4/2008; 11:51:05

Aparece no monitor quando o programa


executado
Nada
Nada
Nada
Nada
Nada
Cateto Oposto
<Digitar algum valor pelo teclado>
Cateto Adjacente
<Digitar algum valor pelo teclado>
Nada
Hipotenusa = <valor armazenado em H>
Nada

37/115

Algoritmos para Estruturas Simples

ALG20 Converso de um valor em Horas e Minutos para apenas minutos


Anlise do problema
Descrio narrativa
1 O que tenho?
Tempo em horas (H) e minutos (M)
2 O que quero?
1 - Fornece valores de Horas (H) e Minutos
Tempo apenas em minutos (M)
(M);
3 Como ?
2 - Mt  H * 60 + M;
Fornece os valores H e M;
3 - Mostra o resultado (Mt).
Mt  H * 60 + M;
Mostra o resultado (Mt).
Pseudocdigo

Fluxograma

Algoritmo ConvHMin;
Var
H, M, Mt: inteiro;
Incio
Leia (H, M);
Mt  H * 60 + M;
Escreva (Mt);
Fim

Codificao em PASCAL

Program CalcHMin;
Uses WinCrt;
Var
H, M, Mt : integer;
Begin
Writeln (Horas);
Readln (H);
Writeln (Minutos);
Readln (M);
Mt := H * 60 + M;
writeln (Minutos = , Mt);
End.

ltima atualizao: 22/4/2008; 11:51:05

Aparece no monitor quando o programa


executado
Nada
Nada
Nada
Nada
Nada
Horas
<Digitar algum valor pelo teclado>
Minutos
<Digitar algum valor pelo teclado>
Nada
Minutos = <valor armazenado em Mt>
Nada

38/115

Algoritmos para Estruturas Simples

ALG21 Converso de uma temperatura em graus Celsius para Fahrenheit


Anlise do problema
Descrio narrativa
1 O que tenho?
Temperatura em graus Celsius (C)
2 O que quero?
1 - Fornece valor da temperatura em Celsius
Temperatura em graus Fahreinheit (F)
(C)
3 Como ?
2 - F  32 + 1.8 * C;
Fornece a temperatura em Celsius;
3 - Mostra o resultado (F).
F  32 + 1.8 * C
Mostra o resultado (F).
Pseudocdigo

Fluxograma

Algoritmo ConvCF;
Var
C, F: real;
Incio
Leia (C);
F  32 + 1.8 * C;
Escreva (F);
Fim

Codificao em PASCAL

Program CalcCF;
Uses WinCrt;
Var
C, F : real;
Begin
Write (Digite Graus Celsius: );
Readln (C);
F := 32 + 1.8 * C;
writeln (Fahrenheit = , F);
End.

ltima atualizao: 22/4/2008; 11:51:05

Aparece no monitor quando o programa


executado
Nada
Nada
Nada
Nada
Nada
Digite graus Celsius:
<Digitar algum valor pelo teclado>
Nada
Fahrenheit = <valor armazenado em F>
Nada

39/115

Algoritmos para Estruturas Simples

ALG22 Clculo do novo salrio de um funcionrio segundo um percentual de aumento


Anlise do problema
Descrio narrativa
1 O que tenho?
Salrio atual (S) e percentual de aumento
(p)
2 O que quero?
1 - Fornece valores de salrio atual (S) e o
Novo salrio (NS)
percentual de aumento (p);
3 Como ?
2 - NS  S + S* p/100;
Fornece os valores do salrio atual (s) e do
3 - Mostra o resultado (NS).
percentual de aumento (p);
NS  S + S * p/100;
Mostra o resultado (NS).
Pseudocdigo

Fluxograma

Algoritmo ReajustaSal;
Var
S, NS, p: real;
Incio
Leia (S, p);
NS  S + S * p/100;
Escreva (NS);
Fim

Codificao em PASCAL

Program ReajustaSal;
Uses WinCrt;
Var
S, NS, p: real;
Begin
Writeln (Salrio atual:);
Readln (S);
Writeln (Reajuste em %);
Readln (p);
NS := S + S* p/100;
writeln (Novo salrio = , NS);
End.

Aparece no monitor quando o programa


executado
Nada
Nada
Nada
Nada
Nada
Salrio atual:
<Digitar valor do salrio pelo teclado>
Reajuste em %:
<Digitar percentual pelo teclado>
Nada
Novo salrio = <valor armazenado em NS>
Nada

ALG23 Clculo da rea do crculo


Anlise do problema
Descrio narrativa
1 O que tenho?
1 - Fornecer valor do raio (R);
ltima atualizao: 22/4/2008; 11:51:05

40/115

Algoritmos para Estruturas Simples

Raio do crculo (R) e valor do Pi


2 O que quero?
rea do crculo (A)
3 Como ?
Fornecer o valor do raio
Encontrar o valor do Pi (3,1415);
A  R * R * 3.1415;
Mostra o resultado (A).
Pseudocdigo

2 - Encontrar o valor do pi (3.1415)


3 - A  R * R * 3.1415
4 - Mostrar o resultado (A).

Fluxograma

Algoritmo CalcAreaC;
Var
A, R: real;
Incio
Leia (R);
A  R * R * 3.1415;
Escreva (A);
Fim

Codificao em PASCAL

Program CalcAreaC;
Uses WinCrt;
Var
A, R: real;
Begin
Writeln (Raio do crculo:);
Readln (R);
A := R * R * 3.1415;
writeln (rea do crculo = , A:5:2);
End.

Aparece no monitor quando o programa


executado
Nada
Nada
Nada
Nada
Nada
Raio do crculo
<Digitar valor do raio pelo teclado>
Nada
rea do crculo = <valor armazenado em A>
Nada

Quando fizer o fluxograma coloque alguns comentrios do lado. Isto ajuda a lembrar o
que cada passo realiza. Veja os exemplos a seguir.

ltima atualizao: 22/4/2008; 11:51:05

41/115

Algoritmos para Estruturas Simples

ALG18 Soma de dois nmeros

ALG20 Converso de um valor em Horas e


Minutos para apenas minutos

{ Incio do algoritmo}

{ Incio do algoritmo}

{L valores A e B}

{L Horas e Minutos}

{Converte
{Calcula a soma de A e B}

horas

em

minutos e soma os minutos}

{Mostra minutos}
{Mostra valor calculado}

{Fim do algoritmo}

{Fim do algoritmo}

2.3.1.3. Exerccios propostos


1. Elabore um programa que leia um comprimento em polegadas, calcule e exiba o
comprimento em milmetros, considerando que 1 polegada equivale a 25,4 milmetros.
2. Elabore um programa que leia a massa de uma amostra de carbono, calcule e exiba o nmero
de moles de carbono na amostra. Considere que o mol C igual a 12 e a frmula n de
moles = massa da amostra / 12
3. Elabore um programa que leia a fora F aplicada sobre um corpo e a velocidade V do corpo,
calcule e exiba a potncia P. Considere P = F . V.
4. Numa loja existe um total mensal de vendas. Fazer a leitura do nome da loja e do total de
vendas mensal em um ano. Mostre o nome da loja e os totais de vendas por trimestre.
5. Ler o nome de um cliente de fast food e a quantidade de cada item do menu que ele vai pedir.
Exiba o nome do cliente e o total da compra.
ITEM
Hot dog
Hamburguer
Cheeseburguer
Refrigerante em lata
Batatas fritas

PREO
R$ 1,20
R$ 1,60
R$ 2,00
R$ 1,20
R$ 2,5

6. Ler a cotao do dlar no dia e a quantidade de dlares para trocar por real. Exiba a
quantidade em reais.
ltima atualizao: 22/4/2008; 11:51:05

42/115

Algoritmos para Estruturas Simples

7. Calcular o lucro obtido de um investimento, aps um perodo de um ano, para uma taxa
anual. Todos os valores usados para o clculo devero ser escritos pelo programa.
8. A acelerao de um corpo em movimento a mudana da velocidade do corpo em relao a
um intervalo de tempo. {a = (v2 v1)/t}. Escrever um algoritmo que calcule a acelerao de
um corpo em movimento conhecendo-se as velocidades inicial e final, e o intervalo de tempo
medido.
9. Fazer o algoritmo que obtenha as duas notas de um aluno, que calcule e apresente a sua
mdia final (mdia aritmtica).
10. Calcular e apresentar o valor do volume de uma lata de leo. v = *r2*h
11. Construa um algoritmo que, tendo como dados de entrada dois pontos quaisquer no plano,
P(x1,y1) e P(x2,y2), escreva a distncia entre eles. A frmula que efetua tal clculo :
d=

((x2 x1)

+ ( y 2 y1)

12. Escreva um algoritmo que leia trs nmeros inteiros e positivos (A, B, C) e calcule a
seguinte expresso: D =

R+S
2
2
onde R = ( A + B ) e S = (B + C ) .
2

13. Faa um algoritmo que leia a idade de uma pessoa expressa em anos, meses e dias e mostre-a
expressa apenas em dias.
14. Faa um algoritmo que leia as 3 notas de um aluno e calcule a mdia final deste aluno.
Considerar que a mdia ponderada e que o peso das notas : 2, 3 e 5, respectivamente.
15. Faa um algoritmo que leia o tempo de durao de um evento em uma fbrica expressa em
segundos e mostre-o expresso em horas, minutos e segundos.
16. Escrever um algoritmo que l: a percentagem do IPI a ser acrescido no valor das peas, o
cdigo da pea 1, valor unitrio da pea 1, quantidade de peas 1, o cdigo da pea 2, valor
unitrio da pea 2, quantidade de peas 2. O algoritmo deve calcular o valor total a ser pago
e apresentar o resultado. Frmula: valor_total = (valor1*quant1 + valor2*quant2)*(IPI/100 +
1)
17. Elabore um programa que leia um valor de temperatura em graus celsius, calcule e exiba a
temperatura equivalente em graus kelvin, sabendo que: K = C + 273.
18. Elabore um Algoritmo para converter um valor em minutos num formato com dias, horas e
minutos.

ltima atualizao: 22/4/2008; 11:51:05

43/115

Algoritmos para Estruturas Simples

19. Elabore um Algoritmo que dados dois lados de um tringulo rectngulo calcule a respectiva
hipotenusa
20. Elabore um Algoritmo que dados os litros gastos e os km percorridos por um automvel,
calcule os gastos de combustvel em R$/km e em l/100km (1l custa R$ 1.98).
21. Suponha que um quadrado cujo lado (L) mede 5 cm esteja inscrito em um crculo e um
crculo menor esteja inscrito no quadrado como ilustra a figura abaixo. Os crculos e o
quadrado possuem centro comum. Desenvolver um algoritmo para encontrar a rea
hachurada. AC = raio2 * 3.14, AQ = L2

22. Escrever um algoritmo que converta segundos em minutos e segundos. Por exemplo, 252
segundos equivalem a 4 minutos e 12 segundos.
23. Escrever um algoritmo que calcule a taxa de consumo de um automvel durante um perodo,
conhecendo-se os valores de quilmetros percorridos e a quantidade de gasolina consumida.
24. A acelerao de um corpo em movimento a mudana da velocidade do corpo em relao a
um intervalo de tempo. (a = (v2 v1)/t. Escrever um algoritmo que calcule a acelerao de
um corpo em movimento conhecendo-se as velocidades inicial e final, e o intervalo de tempo
medido.
25. Calcular o lucro obtido de um investimento de R$ 42.5000,00, aps um perodo de um ano,
para uma taxa anual de remunerao de 17.55%. Todos os valores usados para o clculo
devero ser escritos pelo programa.

ltima atualizao: 22/4/2008; 11:51:05

44/115

Algoritmos para Estruturas Simples

26. O que o algoritmo abaixo faz? Faa o fluxograma correspondente.


Pseudocdigo

Fluxograma

Algoritmo areas;
Var {declarao dos tipos de identificadores}
lr1, lr2, lt1, lt2, lt3, ht, rc: reais;
ar, pr, at, pt, ac, pc: reais;
nicio
{Entrada de dados}
escreva (Insira valor do 1 lado do retngulo );
leia (lr1);
escreva (Insira valor do 2 lado do retngulo );
leia (lr2);
escreva (Insira valor do 1 lado do tringulo );
leia (lt1);
escreva (Insira valor do 2 lado do tringulo );
leia (lt2);
escreva (Insira valor do 3 lado do tringulo );
leia (lt3);
escreva (Insira valor da altura do tringulo );
leia (ht);
escreva (Insira valor do raio do crculo );
leia (rc);
limpar a tela;
{calculo da rea e do permetro do retngulo}
ar lr1 * lr2;
pr 2 * (lr1 + lr2);
{calculo da rea e do permetro do triangulo}
at lt2 * ht / 2;
pt lt1 + lt2 + lt3;
{ calculo da area e do permetro do crculo}
ac pi * rc * rc;
pt 2 * pi * rc;
{sada de dados}
escreva ( A rea do retngulo , ar:5:2);
escreva ( O permetro do retngulo , pr:5:2);
escreva ( A rea do tringulo , at:5:2);
escreva ( O permetro do tringulo , pt:5:2);
escreva ( A rea do crculo , ac:5:2);
escreva ( O permetro do crculo , pc:5:2);
{encerramento do programa}
escreva;
escreva (Digite qualquer tecla)
leia especial;
fechar a tela do windows;
fim.

ltima atualizao: 22/4/2008; 11:51:05

45/115

Algoritmos para Estruturas Simples

27. Analise o algoritmo, responde as questes ao lado.


Pseudocdigo
Programa lanchonete;
Var
Iqtd1, qtd2, qtd3, qtd4, qtd5: inteiro;
Valortotal: real;
Nome : literal [20];
Incio
{ Entrada de Dados}
Escreva ( Digite nome do cliente:);
Leia (Nome);
Escreva ( Digite quantidade de Hot Dogs: );
Leia (qtd1);
Escreva (Digite quantidade de Hamburguers: );
Leia (qtd2);
Escreva (Digite quantidade de Cheeseburguer:);
Leia (qtd3);
Escreva (Digite a quantidade de Refrigerante em Latas: );
Leia (qtd4);
Escreva (Digite a quantidade de Batata Fritas: );
Leia (qtd5);
{Clculos}
valortotal qtd1*1.2+qtd2*1,6+qtd3*2+qtd4*1.2+qtd5*2.5;
{ sada de dados}
Escreva (Nome, gastou ...........R$ ,valortotal);

Anlise do problema

1) o que tenho?

2) o que quero?

3) Como obtenho o que quero?

Fim.

28. Crie algoritmos para solucionar os problemas abaixo nas trs formas de representao
conhecidas (Descrio Narrativa, Fluxograma e Pseudocdigo):

a)
b)
c)
d)
e)
f)
g)
h)

Imprimir o seu nome.


Ler e imprimir o seu nome.
Ler seu nome e idade e imprimi-los.
Imprimir o produto de 12 e 43.
Imprimir a mdia aritmtica entre 8, 9 e 7.
Ler trs valores numricos do tipo inteiro e imprimir a mdia aritmtica entre eles.
Ler um nmero inteiro e imprimir seu sucessor e seu antecessor.
Ler o lado de um quadrado e calcular a rea deste quadrado e mostrar o resultado.

29. Diga qual o valor armazenado em cada varivel (TESTE DE MESA) aps a execuo de
cada um dos comandos do algoritmo abaixo.

Algoritmo ALGXX;
Var
N, A, R, B, C : Inteiro;
V, X : real:
Incio

ltima atualizao: 22/4/2008; 11:51:05

46/115

Algoritmos para Estruturas Simples

A  10;
R  3;
V  14.0;
B  150;
C  V MOD 2;
X  B * R;
X  R / A;
X  X 2 * A;
B  B + 3;
N  30 + X;
B  B DIV N;
V  N V + X * R;
Fim.

30. O algoritmo abaixo realiza o clculo do determinante. Identifique Entrada, Sada e


Processamento.
Pseudocdigo
Algoritmo CalcDet;
Var
a, b, c, D: Inteiro;
Incio
Leia (a, b,c);
D  b*b 4*a*c;
Escreva (D);
Fim.

Anlise do problema
Entrada (O que tenho?):

Sada (O que quero?):

Processamento (Como?):

31) Dado o algoritmo abaixo (em pseudocdigo) que separa dia, ms e ano de uma data digitada
no formato ddmmaa e mostra estes valores.
Pseudocdigo

Fluxograma

Programa A1;
Var
data, dia, mes, ano: Inteiro;
Inicio
Escreva(Digite uma data no formato ddmmaa:);
Leia (data);
dia  data div 1000;
mes  data mod 100000 div 100;
ano  data mod 100;
escreva (dias: , dia,
escreva (mes: , mes);
escreva (ano: , ano);
Fim.

ltima atualizao: 22/4/2008; 11:51:05

47/115

Algoritmos para Estruturas Simples

32) Dado o Fluxograma abaixo, indique o pseudocdigo correto


Pseudocdigo
Fluxograma
( ) Algoritmo A2_v1;
Var a, b: Real;
Inicio
Escreva (Digite um nmero :); Leia (a);
a  a mod 100 div 10; Escreva (b);
Fim.
( ) Algoritmo A2_v2;
Var a, b: Inteiro;
Inicio
Escreva (Digite um nmero :); Leia (a);
b  a mod 100 div 10;
Fim.
( ) Algoritmo A2_v3;
Var A, B: Inteiro;
Inicio
Escreva (Digite um nmero :); Leia (A);
B  A mod 100 div 10; Escreva (B);
Fim.

33) Dado o fluxograma do exerccio 2, qual seria o valor de sada se fosse digitado o valor 3200?
a) 2,2

b) 3,2

c) 32

d) 2,0 e) 22

34) Dado o fluxograma abaixo, faa apenas a declarao das variveis em pseudocdigo.
Pseudocdigo (declarao variveis)

ltima atualizao: 22/4/2008; 11:51:05

Fluxograma

48/115

Algoritmos para Estruturas Simples

35) Dado o enunciado abaixo, faa a anlise do problema proposto.


Problema (enunciado)

Anlise do problema

Calcular a taxa de consumo de um automvel O que tenho (entrada)?


durante um perodo, conhecendo-se os valores
de quilmetros percorridos e a quantidade de
gasolina consumida.
O que quero (Sada)?

Como (processamento)?

ltima atualizao: 22/4/2008; 11:51:05

49/115

Algoritmos para Estruturas Simples

2.3.2. Estrutura Condicional

Tambm conhecida como estrutura de tomada de deciso ou seleo, esta estrutura


permite a escolha do grupo de aes a ser executadas quando determinada condio
(expressolgica) ou no satisfeita.

2.3.2.1. Sintaxe
Como pode ser observado nas sintaxes mostradas a seguir, tem-se a estrutura condicional
simples, composta e aninhada.

Estrutura condicional simples


Pseudocdigo

Fluxograma

Se (Condio) Ento
Comando_1;
Comando_2;
...
Comando_n;
Fim_se;

Em Pascal
Se fosse um comando s:

If (Condio) Then
begin
Comando_1;
Comando_2;
...
Comando_n;
end;

ltima atualizao: 22/4/2008; 11:51:05

If (Condio) Then
begin
Comando_1;
end;
---- Ou -----If (Condio) Then
Comando_1;

50/115

Algoritmos para Estruturas Simples

Estrutura condicional composta


Pseudocdigo

Fluxograma

Se (Condio) Ento
Comando_A1;
Comando_A2;
...
Comando_An
Seno
Comando_B1;
Comando_B2;
...
Comando_Bn;
Fim_se;

Em Pascal

If (Condio) Then
Begin
Comando_A1;
Comando_A2;
...
Comando_An;
End
Else
Begin
Comando_B1;
Comando_B2;
...
Comando_Bn;
End;

ltima atualizao: 22/4/2008; 11:51:05

Se fosse um comando s:

If (Condio) Then
Begin
Comando_A1;
End
Else
Begin
Comando_B1;
End;
---- Ou -----If (Condio) Then
Comando_A1
Else
Comando_B1;

51/115

Algoritmos para Estruturas Simples

Estrutura condicional aninhada (ou encadeada)


Pseudocdigo
Fluxograma
Se (Condio_1) Ento
Comando_A1;
Comando_A2;
...
Comando_An
Seno
Se (Condio_2) Ento
Comando_B1;
Comando_B2;
...
Comando_Bn;
Seno
Comando_C1;
Comando_C2;
...
Comando_Cn;
Fim_se;
Fim_se;

If (Condio_1) Then
Begin
Comando_A1;
Comando_A2;
...
Comando_An;
End
Else
If (Condio_2) Then
Begin
Comando_B1;
Comando_B2;
...
Comando_Bn;
End
Else
Begin
Comando_C1;
Comando_C2;
...
Comando_Cn;
End;

ltima atualizao: 22/4/2008; 11:51:05

Em Pascal
Se fosse um nico comando, ficaria:

If (Condio_1) Then
Begin
Comando_A1;
End
Else
If (Condio_2) Then
Begin
Comando_B1;
End
Else
Begin
Comando_C1;
End;
---- Ou -----If (Condio_1) Then
Comando_A1;
Else
If (Condio_2) Then
Comando_B1;
Else
Comando_C1;
52/115

Algoritmos para Estruturas Simples

H tambm uma variao do condicional SE, que utilizada quando uma situao de
igualdade testada para uma mesma varivel.

Caso/escolha
Pseudocdigo

Fluxograma

Escolha (Varivel)
Caso (valor_1) : Comando_1;
Caso (valor_2) : Comando_2;
Caso (valor_3) : Comando_3;
Fim_escolha;

Ou desta outra forma:

Caso <Varivel>
<valor_1> : <Comando_1>;
<valor_2> : <Comando_2>;
<valor_3> : <Comando_3>;
Fim_caso;

Em Pascal
Case <Varivel> of
<valor_1> : <Comando_1>;
<valor_2> : <Comando_2>;
<valor_3> : <Comando_3>;
End;

ltima atualizao: 22/4/2008; 11:51:05

53/115

Algoritmos para Estruturas Simples

Caso/escolha
Pseudocdigo

Fluxograma

Escolha (Varivel)
Caso (valor_1) : Comando1;
Caso (valor_2) : Comando2;
Seno
Comando3;
Fim_escolha;
Ou desta outra forma:
Caso <Varivel>
<valor_1> : <Comando1>;
<valor_2> : <Comando2>;
Seno
<Comando3>;
Fim_caso;

Em Pascal
Case <Varivel> of
<valor_1> : <Comando_1>;
<valor_2> : <Comando_2>;
Else
<valor_3> : <Comando_3>;
End;

2.3.2.2. Exemplos
A seguir so apresentados alguns exemplos, onde foram utilizadas as estruturas:
condicional simples, condicional composto, condicional encadeado e estrutura Escolha. No
primeiro (ALG24) tem-se o algoritmo do clculo da mdia aritmtica (M), onde so
consideradas apenas duas notas (P1 e P2) e mostrada a mdia e uma mensagem de aprovao
caso M >= 5. Neste caso foi utilizada uma estrutura condicional simples.

ltima atualizao: 22/4/2008; 11:51:05

54/115

Algoritmos para Estruturas Simples

ALG24 Clculo da mdia aritmtica de duas notas, mostrando mdia e mensagem Aprovado, caso a
mdia seja >= 5.
Anlise do problema
Descrio narrativa
1 O que tenho? Notas (P1 e P2)
2 O que quero?
1 - Fornece valor das notas (P1 e P2);
Mdia (M) e situao Aprovado
2 - Calcula a mdia aritmtica (M)
3 Como ?
3 - Verifica se M >= 5
Fornece o valor das notas (P1 e P2)
4 - Se sim, mostra mdia (M) e mensagem
Calcula a mdia (M  (P1 + P2)/2;
Aprovado.
Mostra resultado (M);
Verifica se aluno foi aprovado (M >= 5)
Mostra somente mensagem Aprovado.
Pseudocdigo
Fluxograma
Algoritmo CalcMedia1;
Var P1, P2, M: real;
Incio
Leia (P1, P2);
M (P1 + P2)/2;
Escreva (M);
Se M >= 5 Ento
Escreva (Aprovado);
Fim_se;
Fim

Codificao em PASCAL
Program CalcMedia1;
Uses WinCrt;
Var
P1, P2, M: real;
Begin
Writeln (Digite P1:);
Readln (P1);
Writeln (Digite P2:);
Readln (P2);
M := (P1 + P2)/2;
Writeln (M):
If M >= 5 then
writeln (Aprovado);
End.

Aparece no monitor (programa executado)


Nada
Nada
Nada
Nada
Nada
Digite P1:
<Digitar valor de P1 pelo teclado>
Digite P2:
<Digitar valor de P2 pelo teclado>
Nada
<valor armazenado em M>
Nada
Aprovado
Nada

No segundo exemplo (ALG25), utilizada uma estrutura condicional composta ao


realizar um refinamento no algoritmo acima acrescentando tambm a mensagem de reprovado.

ltima atualizao: 22/4/2008; 11:51:05

55/115

Algoritmos para Estruturas Simples

ALG25 Clculo da mdia aritmtica de duas notas, mostrando a mdia e mensagem Aprovado ou
Reprovado (M >= 5; aprovao) .
Anlise do problema
Descrio narrativa
1 O que tenho?
Notas (P1 e P2)
1 - Fornecer valor das notas (P1 e P2);
2 - Calcular a mdia aritmtica (M)
2 O que quero?
3 - Mostra o resultado (M)
Mdia (M) e Aprovado ou Reprovado
4 - Verificar se M >= 5
3 Como ?
5 - Se sim, mostra mensagem Aprovado.
Fornece o valor das notas (P1 e P2)
Calcula a mdia (M  (P1 + P2)/2;
6 - Seno mostra mensagem Reprovado.
Mostra o resultado (M);
Verifica se aluno foi aprovado (M >= 5);
Mostra mensagem Aprovadoou Reprovado
Algoritmo CalcMedia1;
Var
P1, P2, M: real;
Incio
Leia (P1, P2);
M (P1 + P2)/2;
Escreva (M);
Se M >= 5 Ento
Escreva (Aprovado)
Seno
Escreva (Reprovado);
Fim_se;
Fim

Codificao em PASCAL
Program CalMedia1;
Uses WinCrt;
Var
P1, P2, M: real;
Begin
Writeln (Digite P1:);
Readln (P1);
Writeln (Digite P2:);
Readln (P2);
M := (P1 + P2)/2;
Writeln (M):
If M >= 5 then
writeln (Aprovado)
Else
writeln (Reprovado);
End.

Aparece no monitor (programa executado)


Nada
Nada
Nada
Nada
Nada
Digite P1:
<Digitar valor de P1 pelo teclado>
Digite P2:
<Digitar valor de P2 pelo teclado>
Nada
<valor armazenado em M>
Nada
Aprovado
Nada
Reprovado
Nada

Em seguida, considerado tambm que o aluno pode ter ficado para exame (ALG26).
Neste ltimo caso foi utilizada a estrutura condicional encadeada.
ltima atualizao: 22/4/2008; 11:51:05

56/115

Algoritmos para Estruturas Simples

ALG26 Clculo da mdia aritmtica de duas notas, mostrando a mdia e mensagem


Aprovado, Reprovado ou Exame (M >= 5 Aprovao; M >=3 Exame) .
Pseudocdigo
Fluxograma
Algoritmo CalcMedia3;
Var
P1, P2, M: real;
Incio
Leia (P1, P2);
M (P1 + P2)/2;
Escreva (M);
Se M >= 5 Ento
Escreva ( Aprovado)
Seno
Se M >= 3 Ento
Escreva (Exame)
Seno
Escreva (Reprovado);
Fim_se;
Fim_se;
Fim

Codificao em PASCAL
Program CalcMedia3;
Uses WinCrt;
Var
P1, P2, M: real;
Begin
Writeln (Digite P1:);
Readln (P1);
Writeln (Digite P2:);
Readln (P2);
M := (P1 + P2)/2;
Writeln (M);
If M >= 5 then
Writeln ( Aprovado)
Else
If M >= 3 then
Writeln (Exame)
Else
Writeln (Reprovado);
End.

Aparece no monitor quando o programa executado


Nada
Nada
Nada
Nada
Nada
Digite P1:
<Digitar valor de P1 pelo teclado>
Digite P2:
<Digitar valor de P2 pelo teclado>
Nada
<valor armazenado em M>
Nada
Aprovado
Nada
Nada
Exame
Nada
Reprovado
Nada

Dois outros exemplos de utilizao de estrutura condicional simples (ALG27) e


encadeada (ALG28) podem ser vistos em seguida. Eles apresentam um algoritmo que l um
ltima atualizao: 22/4/2008; 11:51:05

57/115

Algoritmos para Estruturas Simples

nmero inteiro entre 1 e 7 e mostra no monitor do computador o dia da semana correspondente.


Caso o usurio digite um nmero fora desse intervalo, o algoritmo mostra uma mensagem
informando Nmero invlido.

ALG27 Algoritmo elaborado com estrutura condicional simples e composta que l um nmero
e imprime o dia da semana correspondente.
Pseudocdigo
Fluxograma

programa DiaSemana_se;
Var
mes:inteiro;
inicio
Escreva ('Digite um numero de 1
a 7:');
Leia (Dia);
Se Dia = 1 ento
escreva ('Domingo');
Fim_se;
Se Dia = 2 ento
Escreva ('Segunda');
Fim_se;
Se Dia = 3 ento
Escreva ('Tera');
Fim_Se;
Se Dia = 4 ento
Escreva ('Quarta');
Fim_se;
Se Dia = 5 ento
Escreva ('Quinta');
Fim_se;
Se Dia = 6 ento
Escreva ('Sexta');
Fim_Se;
Se Dia = 7 ento
Escreva ('Sbado');
Seno
Escreva ('Nmero invlido');
Fim_se;
Fim.

ltima atualizao: 22/4/2008; 11:51:05

58/115

Algoritmos para Estruturas Simples

ALG28 Algoritmo elaborado com estrutura condicional encadeada que l um nmero e


imprime o dia da semana correspondente.
Pseudocdigo
programa DiaSemana_se;
Var
mes:inteiro;
inicio
Escreva ('Digite um numero de 1 a 7:');
Leia (Dia);
se Dia = 1 ento
escreva ('Domingo')
seno
se Dia = 2 ento
Escreva ('Segunda')
seno
se Dia = 3 ento
Escreva ('Tera')
seno
se Dia = 4 ento
Escreva ('Quarta')
seno
se Dia = 5 ento
Escreva ('Quinta')
seno
se Dia = 6 ento
Escreva ('Sexta')
seno
se Dia = 7 ento
Escreva ('Sbado')
seno
Escreva ('Numero invlido');
fim_se;
fim_se;
fim_se;
fim_se;
fim_se;
fim_se;
fim_se;
fim.

ltima atualizao: 22/4/2008; 11:51:05

59/115

Algoritmos para Estruturas Simples

ALG28 Algoritmo elaborado com estrutura condicional encadeada que l um nmero e


imprime o dia da semana correspondente.
Fluxograma

ltima atualizao: 22/4/2008; 11:51:05

60/115

Algoritmos para Estruturas Simples

O exemplo a seguir mostra o algorimo acima elaborado utilizando a estrutura


Escolha/caso (ALG29) ao invs da estrutura condicional encadeada.

ALG29 Algoritmo elaborado com estrutura ESCOLHA/CASO que l um nmero e imprime o


dia da semana correspondente
Pseudocdigo
Fluxograma

programa DiaSemana_se;
Var Dia : inteiro;
inicio
Escreva ('Digite um numero de 1 a 7:');
Leia (Dia);
Escolha (Dia)
Caso (1) : Escreva ('Domingo');
Caso (2) : Escreva ('Segunda')
Caso (3) : Escreva ('Tera')
Caso (4) : Escreva ('Quarta')
Caso (5) : Escreva ('Quinta')
Caso (6) : Escreva ('Sexta')
Caso (7) : Escreva ('Sbado'
Seno
Escreva ('Nmero invlido');
Fim_escolha;
fim.

ltima atualizao: 22/4/2008; 11:51:05

61/115

Algoritmos para Estruturas Simples

O exemplo seguinte apresenta apenas um trecho de algoritmo (elaborado com a estrutura


ESCOLHA/CASO), que mostra no monitor a mensagem Um, Dois ou Trs caso o valor
digitado na varivel A seja 1, 2 ou 3 respectivamente (ALG30).
ALG30 Trecho de algoritmo elaborado com estrutura ESCOLHA/CASO que imprime a
mensagem Um, Dois e Trscaso seja digitado 1, 2 ou 3 respectivamente.
Pseudocdigo
Fluxograma

Escolha (A)
Caso (1): Escreva (Um);
Caso (2): Escreva (Dois);
Caso (3): Escreva (Trs);
Fim_escolha;

Escolha (A)
Caso (1): Escreva (Um);
Caso (2): Escreva (Dois);
Seno
Escreva (Trs);
Fim_escolha;

ltima atualizao: 22/4/2008; 11:51:05

62/115

Algoritmos para Estruturas Simples

2.3.2.3. Exerccios propostos


1.Indique a sada dos trechos de algoritmo (fluxograma) a seguir. Considere os seguintes valores:
A = 2, B = 3, C = 5, D = 9. Preste ateno na prioridade dos operadores.

ltima atualizao: 22/4/2008; 11:51:05

63/115

Algoritmos para Estruturas Simples

2. Faa um algoritmo que leia dois nmeros e apresente-os em ordem crescente. Use estrutura
de desvio condicional simples.
3. Elabore um algoritmo que leia um nmero e diga se ele divisvel por 2 e por 3. Use
estrutura de desvio condicional simples.
4. Faa um algoritmo que leia um n inteiro e mostre uma mensagem indicando se este nmero
par ou mpar e se positivo ou negativo.
5. Elabore um algoritmo que leia um nmero e diga se ele divisvel por 5 ou por 7.
6. Elaborar um algoritmo que l 3 valores (A, B e C), encontra o valor maior e o escreve
juntamente com a mensagem: " o maior ".
7. Elaborar um algoritmo que l 2 valores A e B, verifica e escreve uma mensagem informando
se so mltiplos ou no so mltiplos.
8. Escreva um algoritmo que leia 3 nmeros inteiros e mostre o menor deles.
9. Calcule a mdia aritmtica das 3 notas de um aluno e mostre, alm do valor da mdia, uma
mensagem de "Aprovado", caso a mdia seja igual ou superior a 6, ou a mensagem
"Reprovado", caso contrrio.
10. Elabore um algoritmo que dada a idade de um nadador, classifica-o em uma das seguintes
categorias:
CATEGORIA
infantil A
infantil B
juvenil A
juvenil B
Adulto

FAIXA ETRIA
5 - 7 anos
8 - 10 anos
11-13 anos
14-17 anos
maiores de 18 anos

11. Escreva um algoritmo que leia o cdigo de um aluno e suas trs notas. Calcule a mdia
ponderada do aluno, considerando que o peso para a maior nota seja 4 e para as duas
restantes, 3. Mostre o cdigo do aluno, suas trs notas, a mdia calculada e uma mensagem
"APROVADO" se a mdia for maior ou igual a 5 e "REPROVADO" se a mdia for menor
que 5.
12. Um banco conceder um crdito especial aos seus clientes, varivel com o saldo mdio no
ltimo ano. Faa um algoritmo que leia o saldo mdio de um cliente e calcule o valor do
ltima atualizao: 22/4/2008; 11:51:05

64/115

Algoritmos para Estruturas Simples

crdito de acordo com a tabela abaixo. Mostre uma mensagem informando o saldo mdio e o
valor do crdito.
SALDO MDIO
de 0 a 200
de 201 a 400
de 401 a 600
acima de 601

PERCENTUAL
nenhum crdito
20% do valor do saldo mdio
30% do valor do saldo mdio
40% do valor do saldo mdio

13. Escrever um algoritmo para automatizar o caixa da Lanchonete Bom Apetite. Este algoritmo
deve ler o cdigo do item pedido, a quantidade e calcular o valor a ser pago por aquele
lanche. O cardpio da lanchonete o seguinte:
CDIGO

ESPECIFICAO

100
101
102
103
104
105

Cachorro quente
Bauru simples
Bauru c/ovo
Hamburger
Cheeseburger
Refrigerante

PREO UNITRIO
(R$)
1,10
1.30
1,50
1.10
1.30
1.00

14. Escreva um algoritmo que leia o cdigo de um aluno e suas trs notas. Calcule a mdia
ponderada do aluno, considerando que o peso para a maior nota seja 4 e para as duas
restantes, 3. Mostre o cdigo do aluno, suas trs notas, a mdia calculada e uma mensagem
"APROVADO" se a mdia for maior ou igual a 5 e "REPROVADO" se a mdia for menor
que 5.
15. Um usurio deseja um algoritmo onde possa escolher que tipo de mdia deseja calcular a
partir de 3 notas. Faa um algoritmo que leia as notas, a opo de mdia escolhida pelo
usurio, calcule e mostre a mdia.
OPO
1
2
3

TIPO DE M DIA
aritmtica
ponderada (3,3,4
harmnica

16. Joo Papo-de-Pescador, homem de bem, comprou um microcomputador para controlar o


rendimento dirio de seu trabalho. Toda vez que ele traz um peso de peixes maior que o
estabelecido pelo regulamento de pesca do estado de So Paulo (50 quilos) deve pagar um
multa de R$ 4,00 por quilo excedente. Joo precisa que voc faa um diagrama de blocos
que leia a varivel P (peso de peixes) e verifique se h excesso. Se houver, gravar na varivel

ltima atualizao: 22/4/2008; 11:51:05

65/115

Algoritmos para Estruturas Simples

E (Excesso) e na varivel M o valor da multa que Joo dever pagar. Caso contrrio mostrar
tais variveis com o contedo ZERO.
17. Elabore um diagrama de bloco que leia as variveis C e N, respectivamente cdigo e nmero
de horas trabalhadas de um operrio. E calcule o salrio sabendo-se que ele ganha R$ 10,00
por hora. Quando o nmero de horas exceder a 50 calcule o excesso de pagamento
armazenando-o na varivel E, caso contrrio zerar tal varivel. A hora excedente de trabalho
vale R$ 20,00. No final do processamento imprimir o salrio total e o salrio excedente.
18. Desenvolva um diagrama que: leia 4 (quatro) nmeros; calcule o quadrado de cada um; se o
valor resultante do quadrado do terceiro for >= 1000, imprima-o e finalize; caso contrrio,
imprima os valores lidos e seus respectivos quadrados.
19. A Secretaria de Meio Ambiente que controla o ndice de poluio mantm 3 grupos de
indstrias que so altamente poluentes do meio ambiente. O ndice de poluio aceitvel
varia de 0,05 at 0,25. Se o ndice sobe para 0,3 as indstrias do 1 grupo so intimadas a
suspenderem suas atividades, se o ndice crescer para 0,4 as industrias do 1 e 2 grupo so
intimadas a suspenderem suas atividades, se o ndice atingir 0,5 todos os grupos devem ser
notificados a paralisarem suas atividades. Faa um diagrama de bloco que leia o ndice de
poluio medido e emita a notificao adequada aos diferentes grupos de empresas.
20. Construa um algoritmo que leia 3 valores inteiros e positivos, encontre o maior valor,
encontre o menor valor, calcule a mdia dos nmeros lidos e mostre os resultados.
21. Tendo como dados de entrada a altura e o sexo de uma pessoa, construa um algoritmo que
calcule seu peso ideal, utilizando as seguintes frmulas: Para homens: (72.7*h) 58; Para
mulheres: (62.1*h) - 44.7 (h = altura).
22. Escreva um algoritmo que determine o grau de obesidade de uma pessoa, sendo fornecido o
peso e a altura da pessoa. O grau de obesidade determinado pelo ndice da massa corprea
(Massa = Peso / Altura2 ) atravs da tabela abaixo:
MASSA CORPREA
< 26
26 e < 30
30

ltima atualizao: 22/4/2008; 11:51:05

GRAU DE OBESIDADE
Normal
Obeso
Obeso Mrbido

66/115

Algoritmos para Estruturas Simples

23. Faa um algoritmo que, dado as trs notas de um aluno, determine e exiba a sua mdia final e
o seu conceito, sabendo-se que: a mdia final calculada pela mdia aritmtica das 3 notas; o
conceito determinado de com base na tabela abaixo:
MDIA
FINAL
8,0
5,0 e < 8,0
< 5,0

CONCEITO
A
B
C

24. O Botafogo Futebol Clube deseja aumentar o salrio de seus jogadores. O reajuste deve
obedecer a seguinte tabela:
SALRIO ATUAL (R$)
0,00 a 1.000,00
1.000,01 a 5.000,00
acima de 5.000,00

AUMENTO
20%
10%
0%

Escrever um algoritmo que leia o nome e o salrio atual de um jogador, e exiba o


nome, o salrio atual e o salrio reajustado.
25. Faa um algoritmo para calcular a conta final de um hspede de um hotel fictcio, contendo:
o nome do hspede, o tipo do apartamento, o nmero de dirias utilizadas, o valor unitrio da
diria, o valor total das dirias, o valor do consumo interno, o subtotal, o valor da taxa de
servio e o total geral. Considere que:
a) Devem ser lidos o nome do hspede, o tipo do apartamento utilizado (A, B, C ou D), o
nmero de dirias utilizadas pelo hspede e o valor do consumo interno do hspede;
b) O valor da diria determinado pela seguinte tabela:
TIPO DO
APTO.
A
B
C
D

VALOR DA DIRIA (R$)


150,00
100,00
75,00
50,00

c) O valor total das dirias calculado pela multiplicao do nmero de dirias utilizadas pelo
valor da diria;
d) O subtotal calculado pela soma do valor total das dirias e o valor do consumo interno;
e) O valor da taxa de servio equivale a 10% do subtotal;
f) A total geral resulta da soma do subtotal com a taxa de servio.

ltima atualizao: 22/4/2008; 11:51:05

67/115

Algoritmos para Estruturas Simples

2.3.3. Estrutura Repetio


Tambm conhecida como LOOPING, esta estrutura permite repetir um grupo de aes
at que uma dada condio seja satisfeita.

2.3.3.1. Sintaxe
Como pode ser observado nas sintaxes mostradas a seguir, tem-se a estrutura de repetio
com teste no incio (ENQUANTO), com teste no final (REPITA) e laos contados (PARA).

Com teste no incio


Na estrutura de repetio ENQUANTO uma seqncia de comandos executada quando
o teste lgico resulta em verdadeiro e quando o teste lgico resulta em falso a seqncia de
comandos encerrada.
Essa estrutura usada quando no se sabe o nmero de vezes que deseja repetir um
determinado trecho de um programa. Embora ela tambm possa ser usada quando este nmero
conhecido. Veja a sintaxe:

Pseudocdigo

Fluxograma

Em Pascal

<Condio>

Enquanto <condio> faa


Comando_1;
Comando_2;
Comando_n;
Fim_enquanto;

Comando 1
Comando 2

While <condio> do
Begin
Comando_1;
Comando_2;
Comando_n;
End;

Comando n

Com varivel de controle


A estrutura de repetio PARA (com varivel de controle) usada quando o nmero de vezes
que deseja repetir um trecho do programa for conhecido ou quando puder entrar com ele durante sua
execuo. Veja a sintaxe

ltima atualizao: 22/4/2008; 11:51:05

68/115

Algoritmos para Estruturas Simples

Pseudocdigo

Fluxograma
<varivel> <inicial> ;
<fim>; <passo>

para <varivel> de <inicio> at <fim> com


incremento de <passo> faa
Comando_1;
Comando_2;
Comando_n;
Fim_para;

Comando_1
Comando 2

Comando n

Em Pascal
FOR <varivel> := <inicio> TO <fim> DO
Begin
Comando_1;
Comando_2;
Comando_n;
End;

Com teste no fim (Repita At que)


Na estrutura de repetio com teste no Fim a repetio do trecho do programa ser
executado para a condio falsa, caso a condio passe a ser verdadeira, o repetio finalizada.
Nesta estrutura, o trecho do programa executado pelo menos uma vez.

ltima atualizao: 22/4/2008; 11:51:05

69/115

Algoritmos para Estruturas Simples

Pseudocdigo

Fluxograma

repita

Comando_1

Comando_1;
Comando_2

Comando_2;
Comando_n;

At que <condio>;
Comando_n
<Condio>

Em Pascal

REPEAT
Comando_1;
Comando_2;
Comando_n;

UNTIL <condio>;

2.3.3.2. Exemplos
Veja alguns exemplos de algoritmos elaborados com e sem a estrutura de repetio. O
primeiro exemplo (ALG31) mostra um algoritmo elaborado para ler nome e telefone.
O segundo exemplo (ALG32) refere-se a um algoritmo que calcula a mdia global de 10
alunos de uma determinada sala de aula. Veja como a resoluo com e sem a utilizao da
estrutura de repetio.
O terceiro exemplo (ALG33) traz o algoritmo que imprime os nmeros de 1 a 9 com
incremento de 1. Neste exemplo foram empregadas as trs estruturas de repetio para
comparao das similaridades e diferenas.
Os dois primeiros exemplos (ALG31 e ALG32) demonstram a importncia da estrutura
de repetio e o terceiro (ALG33) mostra as diferenas e semelhanas entre as estruturas de
ltima atualizao: 22/4/2008; 11:51:05

70/115

Algoritmos para Estruturas Simples

repetio. Preste muita ateno nas diferenas. Por exemplo, na estrutura PARA no necessrio
inicializar o contador (varivel N) fora do lao de repetio nem incrementar N dentro deste lao
como ocorre com as estruturas ENQUANTO e REPITA. Na estrutura de repetio REPITA a
condio o inverso do ENQUANTO. O REPITA s continua se a condio for falsa e o
ENQUANTO s continua se a condio for verdadeira. Alm disso, no REPITA o bloco de
comandos dentro do lao de repetio executado pelo menos uma vez antes de testar a
condio.
No segundo exemplo utilizada uma varivel para compor uma condio de parada para
o looping, isto , para as repeties. Ela conhecida por FLAG.

ltima atualizao: 22/4/2008; 11:51:05

71/115

Algoritmo endereco;
Var
Nome, telefone, resp : Literal;
Inicio
Resp SIM;
Enquanto (resp=SIM) faa
Leia(nome);
Leia(telefone);
Escreva(Deseja
continuar?
(SIM/NO));
Leia(resp);
Fim_enquanto;
Fim_algoritmo.

Algoritmo endereco;
Var
Nome, telefone : Literal;
Inicio
Leia(nome);
Leia(telefone);
Fim_algoritmo.

Pseudocdigo

ltima atualizao: 22/4/2008; 11:51:05

COM

SEM

Estrutura Repetio

fim

resp

Deseja continuar? (SIM/NO)

telefone

nome

(resp=SIM

respSIM

inicio

fim

telefone

nome

inicio

Fluxograma

72/115

Program endereco;
Uses WinCrt;
Var
Nome, telefone: String[20];
resp : String[3];
Inicio
Resp :=SIM;
While (resp=SIM) do begin
Writeln (Digite Nome:);
Readln (nome);
Writeln (Digite Telefone:);
Readln (telefone);
Writeln (Deseja continuar? (SIM/NO));
Read (resp);
End;
End.

Program endereco;
Uses WinCrt;
Var
Nome, telefone: String[20];
Inicio
Writeln (Digite Nome:);
Readln (nome);
Writeln (Digite Telefone:);
Readln (telefone);
End.

PASCAL

ALG31 Algoritmo que entra nome e telefone com e sem a utilizao de estrutura de repetio

Algoritmos para Estruturas Simples

COM

73/115

Algoritmo Media;
var
N, SOMA, MEDIA: real;
I: inteiro;
incio
SOMA  0;
para I 1 at 10 faa
leia ( N) ;
SOMA SOMA + N;
fim para;
MEDIA SOMA/10;
Escreva (MEDIA);
Fim_algoritmo.

ltima atualizao: 22/4/2008; 11:51:05

Program Media;
Uses WinCrt;
var
N, SOMA, MEDIA: real;
I: Integer;
Begin
SOMA := 0;
For I := 1 To 10 Do
Begin
Readln ( N) ;
SOMA := SOMA + N;
End;
MEDIA := SOMA/10;
Writeln (MEDIA:5:2);
End.

PASCAL

SEM

Fluxograma

Program Media;
Uses WinCrt;
var
N1,N2,N3,N4,N5,N6,N7,N8,N9,N10, S: real;
Begin
Readln (N1);
Readln (N2);
Readln (N3);
Readln (N4);
Readln (N5);
Readln (N6);
Readln (N7);
Readln (N8);
Readln (N9);
Readln (N10);
S := N1+N2+N3+N4+N5+N6+N7+N8+N9+N10;
MEDIA := S/10;
Writeln (MEDIA:5:2);
End.

Pseudocdigo

Algoritmo Media;
Var N1,N2,N3,N4,N5,N6,N7,N8,N9,N10, S:
real;
incio
leia (N1); Leia (N2);
Leia (N3); Leia (N4);
Leia (N5); Leia (N6);
Leia (N7); Leia (N8);
Leia (N9); Leia (N10);
S

N1+N2+N3+N4+N5+N6+N7+N8+N9+N10;
MEDIA S/10;
Escreva (MEDIA);
Fim.

Estrutura Repetio

ALG32 Algoritmo que calcula a mdia de 10 notas com e sem a utilizao de estrutura de repetio

Algoritmos para Estruturas Simples

Algoritmos para Estruturas Simples

ALG33 Algoritmo que imprime os nmeros de 1 a 9 utilizao as 3 estruturas de repetio


Pseudocdigo
Fluxograma
Codificao em PASCAL

Algoritmo valores_1;
Var N: Inteiro;
Incio
N  1;
Enquanto (N <=9 ) faa
Escreva (N);
N  N +1;
Fim_enquanto;
Fim_algoritmo.

Algoritmo valores_2;
Var N: Inteiro;
Incio
Para N  1 at 9 com
incremento de 1 faa
Escreva (N);
Fim_Para;
Fim_algoritmo.

Algoritmo valores_3;
Var N: Inteiro;
Incio
N  1;
Repita
Escreva (N);
N  N +1;
At que N > 9;
Fim_algoritmo.

ltima atualizao: 22/4/2008; 11:51:05

Program valores_1;
Uses WinCrt;
Var N: Integer;
Begin
N := 1;
While (N <= 9) do
Begin
Writeln (N);
N := N +1;
End;
End.
Program valores_2a;
Uses WinCrt;
Var N: Integer;
Begin
For N := 1 to 9 do
Begin
Writeln (N);
End;
End.
Ou ----------Program valores_2b;
Uses WinCrt;
Var N: Integer;
Begin
For N := 1 to 9 do
Writeln (N);
End.

Program valores_3;
Uses WinCrt;
Var N: Integer;
Begin
N := 1;
Repeat
Writeln (N);
N := N +1;
Until N > 9;
End.

74/115

Algoritmos para Estruturas Simples

2.3.3.3. Exerccios propostos


1) Elaborar algoritmos para resolver os seguintes problemas:
1.1. Imprimir os N primeiros nmeros pares.
1.2. Determinar e imprimir o maior nmero em N nmeros diferentes dados.
1.3. Encontrar e imprimir o menor dentre N valores lidos.
1.4. Calcular e imprimir o somatrio de N valores lidos.
1.5. Calcular e imprimir a mdia aritmtica de N Valores lidos.
1.6. Ler um nmero inteiro e positivo e apresentar o seu fatorial (exemplo: o fatorial de 5! =
1*2*3*4*5 = 120).
1.7. Ler dois nmeros inteiros e positivos e apresentar o resultado do primeiro nmero elevado
ao segundo nmero (exemplo: 24 = 2*2*2*2 = 16).
1.8. Simular o jogo de adivinhao: o jogador 1 escolhe um nmero entre 1 e 10; o jogador 2
insere nmeros na tentativa de acertar o nmero escolhido pelo jogador 1. Quando ele
acertar, o algoritmo deve informar que ele acertou o nmero escolhido pelo jogador 1 em x
tentativas (quantidade de tentativas do jogador 2).
1.9. Supondo que a populao de um pas A seja da ordem de 98.000.000 de habitantes, com
uma taxa anual de crescimento de 3,5% e que um pas B tenha uma populao de
aproximadamente 200.000.000 habitantes com uma taxa anual de crescimento de 1,5%.
Escreva um algoritmo que calcule iterativamente, quantos anos sero necessrios para que a
populao do pas A, ultrapasse ou iguale a populao do pas B, mantidas as taxas de
crescimento.
1.10. Uma fabrica tem uma linha de produo capaz de produzir 400 peas / dia. Um
funcionrio controla a qualidade, cadastrando o nmero da pea e o seu estado (aprovado ou
reprovado). Criar um algoritmo para cadastrar o controle de qualidade, imprimir os nmeros
das peas reprovadas, e o total de peas aprovadas e reprovadas no final do dia.
1.11. Uma certa firma fez uma pesquisa de mercado para saber se as pessoas gostaram ou no de
um produto lanado no mercado. Para isso, forneceu o sexo do entrevistado e a resposta (Sim
ou No). Sabendo-se que foram entrevistadas N pessoas, fazer um algoritmo que calcule e
exiba:
a) O nmero de pessoas que responderam sim.
ltima atualizao: 22/4/2008; 11:51:05

75/115

Algoritmos para Estruturas Simples

b) O nmero de pessoas que responderam no.


c) A porcentagem de pessoas do sexo feminino que responderam sim.
d) A porcentagem de pessoas do sexo masculino que responderam no.
1.12.

Em uma fazenda existem N bois. Cada Boi traz preso ao seu pescoo um

carto contendo seu nmero de identificao e seu peso. Desenvolva um


algoritmo que imprima o nmero e o peso do boi mais gordo e mais magro.
1.13. Determinar os valores de y, tal que y = (3+2x+6x) / (1+9x+16x) para x variando de 1,0
at 5,0 em intervalos de 0,1 unidades.
1.14. Dizer de N nmeros inteiros, quantos so pares, quantos so impares, quantos so
positivos e quantos so negativos.
1.15. Calcular e imprimir o valor de: n<=30:
1
1 1 1
1.16. Resolver a srie: soma = + + + ....... +
1 2 3
n
1.17. Uma empresa decidiu fazer um recrutamento para preencher algumas vagas. Os candidatos
sero cadastrados por computador. Faa um algoritmo para:
i. ler o nmero do candidato, a idade e o sexo, a experincia profissional
(SIM / NO);
ii. mostrar a idade mdia dos candidatos;
iii. mostrar o nmero total de candidatos e candidatas;
1.18. O cardpio da Lanchonete Bom Apetite o seguinte:

Cdigo do LancheEspecificao
1. 100
Cachorro quente
2. 101
Bauru simples
3. 102
Bauru c/ovo
4. 103
Hamburger
5. 104
Cheeseburger
6. 105
Refrigerante

Preo Unitrio(R$)
1,10
1,30
1,50
1,10
1,30
1,00

Escrever um algoritmo que v lendo o cdigo do item pedido, a quantidade e v


calculando o valor total a ser pago pelo pedido. OBSERVAO: Use uma flag para continuar
no programa.

ltima atualizao: 22/4/2008; 11:51:05

76/115

Algoritmos para Estruturas Simples

1.19. Na declarao de imposto de renda devem constar os dados: nome do contribuinte, CPF,
renda anual e nmero de dependentes. Os clculos so feitos da forma a seguir.
i. Desconto de R$ 110,00 por dependente.
ii. Com base na renda lquida (renda anual menos descontos) calculada a
alquota de contribuio de acordo com a tabela:

Renda Lquida
Alquota (%)
At R$ 900,00
Isento
De R$ 901,00 at R$ 5.000,00
5
De R$ 5.001,00 at R$ 10.000,00
10
Acima de R$ 10.001,00
15
Faa um algoritmo para calcular os valores dos impostos a serem pagos por um nmero
indeterminado de contribuintes. No se esquea que, para facilitar seu trabalho, voc deve adotar
um flag.

ltima atualizao: 22/4/2008; 11:51:05

77/115

Algoritmos para Estruturas Simples

2) Elaborar um algoritmo que calcule o dobro de nmeros inteiros lidos at que um desses
nmeros seja negativo.
Pseudocdigo
Programa dobro;
Var num : Inteiro;
Incio
Escreva(Digite um numero:);
Leia(num);
Enquanto (num>0) faa
Escreva(dobro: , num*2);
Escreva(Digite um numero:);
Leia(num);
Fim_enquanto;
Fim.

Fluxograma

3) Dado o fluxograma abaixo de um algoritmo que calcula e imprimi o somatrio de N valores,


faa o pseudocdigo correspondente.
pseudocdigo

Fluxograma

inicio

x1
soma  0

N
Enquanto (x<=N) faa

soma  soma + x
xx+1

soma

fim

ltima atualizao: 22/4/2008; 11:51:05

78/115

Algoritmos para Estruturas Simples

4) Dado o fluxograma abaixo, faa o pseudocdigo.


Pseudocdigo

Fluxograma

5) O que o algoritmo do exerccio anterior faz, marque a alternativa CORRETA.


(
(
(
(
(

)
)
)
)
)

Mostra os nmeros inteiros de 30 a 55.


Mostra nmeros menores que 55.
Mostra nmeros reais de 30 a 55.
Mostra os nmeros de 30 a 55 com incremento de 1.
Nenhuma das anteriores

6) Refaa o fluxograma do exerccio 1 colocando a estrutura de repetio PARA.

7) Faa o fluxograma correspondente ao pseudocdigo dado abaixo.


Pseudocdigo

Fluxograma

Algoritmo agenda;
Var
nome : literal [30];
telefone: literal [11];
resp: literal [1];
Inicio
Resp  S;
Enquanto (Resp= S) Faa
Escreva (Entre com o nome e o telefone: );
Leia(nome, telefone);
Escreva(Deseja continuar? (S/N));
Leia (Resp);
Fim_Enquanto;
Fim_algoritmo.

ltima atualizao: 22/4/2008; 11:51:05

79/115

Algoritmos para Estruturas Simples

8) Indique o pseudocdigo que corresponde ao fluxograma abaixo. Marque a alternativa correta.

( ) Algoritmo Exe5_1;
Var
Num : inteiro;
Incio
Escreva (Digite um nmero: );
Leia (Num);
Enquanto Num = 0 faa
Escreva (Dobro = , Num * 2);
Escreva (Digite um nmero: );
Leia (Num);
Fim_enquanto;
Fim.
( ) Algoritmo Exe5_2;
Var
Num : inteiro;
Incio
Escreva (Digite um nmero: );
Leia (Num);
Enquanto Num > 0 faa
Escreva (Dobro = , Num * 2);
Escreva (Digite um nmero: );
Leia (Num);

( ) Algoritmo Exe5_3;
Var
Num : inteiro;
Incio
Escreva (Digite um nmero: );
Leia (Num);
Enquanto Num > 0 faa
Escreva (Dobro = , Num * 2);
Escreva (Digite um nmero: );
Fim_enquanto;
Fim.
( ) Algoritmo Exe5_4;
Var
Num : inteiro;
Incio
Escreva (Digite um nmero: );
Leia (Num);
Enquanto Num > 0 faa
Escreva (Dobro = , Num * 2);
Escreva (Digite um nmero: );
Leia (Num);
Fim_enquanto;
Fim.

Fim.

9) Refaa o fluxograma do exerccio anterior colocando a estrutura de repetio REPITA.


10) Execute o algoritmo do exerccio anterior considerando os valores: 2, 5, -3, 0. (Teste de mesa)
11) Dado o fluxograma abaixo conserto os erros no pseudocdigo.
Pseudocdigo

Fluxograma
inicio

Algoritmo valores;
Var N: Inteiro;
Incio
num  10;
Enquanto (N > 50) faa
Escreva (num);
Fim_enquanto;
Fim_algoritmo.

N 10

N <= 50

NN+2

fim

ltima atualizao: 22/4/2008; 11:51:05

80/115

Algoritmos para Estruturas Simples

12) O que faz o algoritmo abaixo


Pseudocdigo
Algoritmo somatorio;

Codificao em PASCAL
Program somatorio;
Uses wincrt;
Var
Var
N , Cont , Soma : inteiro;
N , Cont , Soma : integer;
resp: Literal [1];
resp: char;
incio
Begin
resp  'S';
resp:= 'S';
Enquanto resp='S' faca
while resp='S' do
begin
Limpa_tela;
clrscr;
Escreva ( 'Digite o valor de N...: ' ) ;
Write ( 'Digite o valor de N...: ' ) ;
Readln ( N ) ;
Leia ( N ) ;
Cont := 1;
Cont  1;
Soma  0;
Soma := 0;
While Cont <= N do
Enquanto Cont <= N faa
Begin
Soma := Soma + cont ;
Soma  Soma + cont ;
Cont := cont +1 ;
Cont  cont +1 ;
End;
Fim_enquanto ;
gotoxy(10,5);writeln('Soma = 1 + 2 + 3 +.......+',N,'
Escreva ('Soma = 1 + 2 + 3 +.......+',N,' ...');
...');
Escreva ( 'Soma = ', Soma ) ;
gotoxy(10,10);Writeln ( 'Soma = ', Soma ) ;
Escreva ('Quer continuar "s" ou "n"? ');
gotoxy(5,20);write('Quer continuar "s" ou "n"? ');
Leia (resp);
readln(resp);
Resp  Maiscula (resp);
resp:= upcase(resp);
Enquanto (resp<> 'S' ) .e. (resp <> 'N') faa
while (resp<>'S') and (resp<>'N') do
begin
Escreva ('Opo invalida digite "s" ou "n"
gotoxy(5,22);write ('Opo invalida digite "s" ou
!!!!');
"n" !!!!');
Leia (resp);
readln(resp);
Resp  maiscula (resp);
resp:=upcase(resp);
Fim_enquanto;
end;
Fim_enquanto;
end;
Limpa_tela;
clrscr;
Escreva ('Foi um prazer irreverssvel programar
com voce!!!!!');
gotoxy(10,10);Writeln ('Foi um prazer irreverssvel
Pressione_uma tecla;
programar com voce!!!!!');
Fecha_janela;
readkey;
Fim_algoritmo.
donewincrt;
End.

13) O que faz o algoritmo abaixo? Faa o pseudocdigo correspondente.

ltima atualizao: 22/4/2008; 11:51:05

81/115

Algoritmos para Estruturas Simples

14) Qual a estrutura de repetio que foi utilizada para construir o fluxograma do exerccio
anterior?

( ) ENQUANTO

( ) REPITA

ltima atualizao: 22/4/2008; 11:51:05

( ) PARA

82/115

Algoritmos para Estruturas Simples

15) Faa o teste de mesa abaixo com base no fluxograma do exerccio 13.
n1

n2

op

10

200

20

ltima atualizao: 22/4/2008; 11:51:05

resp

83/115

Algoritmos para Estruturas Simples

2.4. EXERCCIOS PROPOSTOS COMPLEMENTARES


Neste item so propostos exerccios adicionais que complementam o conhecimento
adquirido at o presente momento.

1) Dados os algoritmos abaixo, dizer quais devem ser as sadas.


Algoritmos
programa Um;
inicio
escreva('meu primeiro programa');
fim_programa.

Sada na tela do microcomputador

programa Um;
inicio
escreva (2+3);
fim_programa.
programa Dois;
inicio
escreva (5+3);
fim_programa.
programa Trs;
var
A, B : inteiro;
inicio
A  2;
B  3;
escreva (A+B);
fim_programa.
programa quatro;
A, B : inteiro;
inicio
leia (A);
leia (B);
escreva ('A+B');
fim_programa.

ltima atualizao: 22/4/2008; 11:51:05

84/115

Algoritmos para Estruturas Simples

2) Coloque Falso (F) ou Verdadeiro (V) para as sentenas abaixo.

( )

Podemos pensar em algoritmo como uma receita, uma seqncia de instrues que do cabo
de uma meta especfica.

( )

Para montar um algoritmo no precisamos responder as perguntas: Quais so os dados de


entrada? Qual ser o processamento a ser utilizado? Quais sero os dados de sada?

( )

Exemplo de algoritmo: pegar a bala; retirar o papel; chupar a bala; jogar o papel no lixo.

( )

Algoritmos devem ser testados aps sua elaborao. Este teste chamado TESTE DE MESA
e significa seguir as instrues do algoritmo para verificar se est correto ou no.

( )

Algoritmo no uma seqncia finita de passos que levam a execuo de uma tarefa.

( )

Exemplo de algoritmo: receba a nota de cada uma das 4 provas; some todas as notas e divida
o resultado por 4; mostre o resultado da diviso.

( )

Teste de mesa no permite verificar se a lgica de programao est correta.

( )

Lgica de programao a tcnica de encadear pensamentos para atingir um determinado


objetivo ou executar uma dada tarefa.

( ) Na estrutura condicional simples a seqncia de comandos s ser executada se a condio


dor verdadeira.
( ) A estrutura condicional permite a escolha do grupo de aes e estruturas a serem executados
quando determinadas condies (expresses lgicas) so ou no satisfeitas.
( ) X  a mod b; neste caso as variveis devem ser declaradas como sendo do tipo real;
3) Dado o portugol (pseudocdigo) abaixo encontrar os erros que apresenta.
Algoritmo CEx3;
Var
X: real;
Incio
Se X > 0 ento
PX*X
Seno
P  1/X
Fim_se
Escreva (P,X);
Fim_algoritmo

4) Complete os exerccios abaixo. Dado o fluxograma faa o pseudocdigo e vice-versa.


Coloque tambm o enunciado que falta.

ltima atualizao: 22/4/2008; 11:51:05

85/115

Algoritmos para Estruturas Simples

Enunciado:

Enunciado:

Programa algo_1;
Var data, dia, mes, ano: Inteiro;
Inicio
Escreva(Digite uma data no formato ddmmaa:);
Leia (data);
dia  data div 1000;
mes  data mod 100000 div 100;
ano  data mod 100;
escreva (dia: , dia, mes:, ms, ano: , ano);
Fim.

5) Responda as questes abaixo.

a) O que o enunciado de um exerccio representa?


ltima atualizao: 22/4/2008; 11:51:05

86/115

Algoritmos para Estruturas Simples

b) Qual a diferena entre algoritmo e programa?

c) O que voc entende por Estruturas bsicas de controle (seqncia, seleo e repetio)?
D exemplos dessas estruturas.

d) J ouviu falar em tcnica de programao estruturada?

e) Encontre em algum livro uma definio para lgica de programao?

6) Indique com (V) as afirmativas verdadeiras e com (F) as falsas.


( )
( )
( )
( )
()

Em pseudocdigo o comando Escreva usado para entrada de dados.


X  a DIV b; neste exemplo as variveis devem ser declaradas como sendo do tipo
inteiro;
Podemos pensar em algoritmo como uma receita, uma seqncia de instrues que do
cabo de uma meta especfica.
No algoritmo, para verificar se um nmero A par usa-se o comando: Se A MOD 2 = 0
ento
Exemplo de algoritmo: pegar a bala; retirar o papel; chupar a bala; jogar o papel no lixo.

7) Indique o tipo da varivel a ser declarada (I inteiro, R Real, B Boleano (lgico), L


Literal) para receber os contedos abaixo: (1.0 pt)

( ) verdade

( ) F

( ) falso

( ) A Div 2

( ) 8.5

( )C/3

( ) 34

( ) R. Antnio de Pdua. 20

8) Discutir a frase: Os computadores, infelizmente, s fazem aquilo que mandamos, e no


necessariamente o que desejamos que eles faam.

9) Faa um algoritmo que receba o ano de nascimento de uma pessoa e o ano atual, calcule e
imprima a idade dessa pessoa.
ltima atualizao: 22/4/2008; 11:51:05

87/115

Algoritmos para Estruturas Simples

10) Indique a sada do trecho do fluxograma a seguir considerando os seguintes valores:


A=5

B=8

C = 12

D=2

11) Indique a sada do fluxograma a seguir considerando os valores: Sal = 300,00; Sal =
1000,00 e Sal = 0,0 .

ltima atualizao: 22/4/2008; 11:51:05

88/115

Algoritmos para Estruturas Simples

12) Faa um algoritmo que receba o cdigo correspondente ao cargo de um funcionrio e


imprima seu cargo e o percentual de aumento de salrio que este funcionrio tem direito de
acordo com a tabela abaixo:

Cdigo
Cargo
Percentual de aumento
1
Gestor
35%
2
Diretor
30%
3
Secretria
25%
4
Contador
25%
5
Professor
15%
6
Estagirio
10%
7
Pessoal limpeza
10%
.
13) Qual o enunciado que resultou no algoritmo representado pelo fluxograma abaixo?

14) Transcreva para o pseudocdigo o fluxograma do exerccio anterior.

15) Teste o algoritmo do exerccio anterior. Considere os valores 3, -1 e 0.


n n > 0 n < 0 Sada

ltima atualizao: 22/4/2008; 11:51:05

89/115

Algoritmos para Estruturas Simples

16) Dado o pseudocdigo abaixo faa o fluxograma. Trata-se de um algoritmo que l dois
nmeros e imprime uma mensagem dizendo se so iguais ou diferentes.

Pseudocdigo

Fluxograma

Algoritmo CEx16;
Var a,b : inteiro;
Incio
Escreva (Digite o primeiro nmero);
Leia (a);
Escreva (Digite o segundo nmero);
Leia (b);
Se a = b ento
Escreva (Iguais)
Seno
Escreva (diferentes)
Fim_se;
Fim_algoritmo.
17) relacione a coluna da direita com a da esquerda
d)
a)

d)

b)

( ) Se Condio Ento
C1;
C2;
Seno
C3;
C4;
Fim_se;

( ) Se Condio ento
C1
Seno
C2;
Fim_se;

ltima atualizao: 22/4/2008; 11:51:05

(
)
Ento

Se Condio ( )
Se Condio ento
C1;
C1;
C2;
Fim_se;
Fim_se;

90/115

Algoritmos para Estruturas Simples

18) Dadas as declaraes de variveis abaixo, monte as tabelas de smbolos correspondentes.


VAR
x,y,z: inteiro
p: lgico;
No:
literal[20]
r, r2: real;

Nome
simblico

Posio
inicial

Tipo
de dado

19) Converta as expresses aritmticas para uma forma que o computador entenda:

a)

X .( P y ).( A B ).( X + C )

b) b 2 4.a.c

c)

x y
d .A

d)

ab
d

20) Elabore alguns exerccios englobando o contedo da disciplina. Seja criativo. Pode ser:
palavra-cruzada, relacione, falso ou verdadeiro, completar, teste de mesa, etc.

21) Preencha as lacunas com V para as alternativas verdadeiras e F para as falsas.

( )
( )
( )
( )

Laos condies e laos contados podem ser aplicados s trs estruturas de repetio
Para, Enquanto e Repita.
A estrutura Escolha pode ser utilizada sempre que o nmero de opes for maior que
trs.
A estrutura Para pode ser utilizada em todas as situaes.
Dentro de uma estrutura de repetio possvel utilizar outras estruturas de repetio
ou deciso.

22) Responda as questes abaixo:

a) Quando declaro variveis do tipo real e do tipo inteiro?


b) Por que o teste de mesa importante?
ltima atualizao: 22/4/2008; 11:51:05

91/115

Algoritmos para Estruturas Simples

c) Identao do cdigo e comentrios so importantes? Justifique.


d) Quando o algoritmo solicita a entrada de N nmeros, o contador da estrutura de repetio
deve ser inicializado com zero (0) ou um (1)? Justifique sua resposta.
e) Em qual estrutura de repetio o contador incrementado automaticamente?
f) O que o enunciado de um exerccio representa?

23) Elabore alguns exerccios englobando o contedo da disciplina. Seja criativo. Pode ser:
palavra-cruzada; relacione colunas; falso ou verdadeiro; completar a sentena; teste de mesa; e
etc.

24) Dado o pseudocdigo abaixo, encontre 3 erros.

Algoritmo 24Ex;
Var
a, b, c, x1,x2 : real;
Incio
Leia (a,c);
Se (a > 0) ento
d  b * b 4 * a * c;
Se (d 0) ento
x1  -b + raiz (d);
x2  -b - raiz (d);
escreva (x1, ,x2);
Fim_se;
Fim_se;
Fim_algoritmo;

ltima atualizao: 22/4/2008; 11:51:05

92/115

Algoritmos para Estruturas Simples

25) Dado o fluxograma abaixo, encontre os erros. Refaa o fluxograma ao lado.

26) Dado o fluxograma abaixo, faa o teste de mesa preenchendo a tabela de valores para N = 3.
Fluxograma

Teste de mesa

N
3
-----------------

ltima atualizao: 22/4/2008; 11:51:05

I <= N

93/115

Algoritmos para Estruturas Simples

27) Refazer o fluxograma do exerccio anterior empregando a estrutura de repetio com teste
lgico no final do looping (REPITA).
28) O fluxograma do exerccio 25 pode ter sido elaborado a partir de qual enunciado?
29) Num frigorfico existem 90 bois. Eles tm prendido ao pescoo um carto contendo a
identificao e o peso. Fazer um programa que escreva o nmero e o peso do boi mais gordo e
do boi mais magro.
30) Aps a execuo do programa codificado a partir do algoritmo abaixo qual (is) valor(es)
sero impressos se B = 10.
Algoritmo Ex30;
Var
B, A , X : Inteiro;
Incio
Leia ( B);
A 1;
X  0;
Enquanto ( A < B ) faa
X  X+ I;
A  A + 2;
Fim_enquanto;
Escreva ( X );
Fim_algoritmo.

X=

31) Dado o fluxograma abaixo, faa seu pseudocdigo.


Fluxograma

ltima atualizao: 22/4/2008; 11:51:05

Pseudocdigo

94/115

Algoritmos para Estruturas Simples

32) Elabore um programa para determinar o valor de K, que dado pela srie abaixo:
K=

1 2 3 4
50
+ + + +L +
2 4 6 8
100

33) Dado o algoritmo abaixo, qual(is) valor(es) devem ser exibidos se o valor de entrada for A=
4 e X= 12, 15, 17 e 6
Algoritmo Ex33;

Var
A, I : Inteiro;
P, X: Real;
Incio
Leia ( A ) ;
I0;
P0;
Repita
Leia ( X );
PPX ;
II+1;
At que ( I = A );
Escreva ( P );
Fim_Algoritmo.

34) Troque a estrutura de repetio PARA do cdigo abaixo para a estrutura de repetio

ENQUANTO.
Para i de 1 at 5 faa

___________________________

Leia (X);

___________________________

S  X*X;

___________________________

Escreva (S);

__________________________

Fim_para;

____________________________

35) O que faz o algoritmo abaixo? Faa o teste de mesa utilizando a tabela abaixo.

ltima atualizao: 22/4/2008; 11:51:05

95/115

Algoritmos para Estruturas Simples

inicio
NE, NJ
somaPT  0
somaIT  0
i  1; NE; 1
somaP  0
somaI  0
cont  1
cont <= NJ

Idade,peso
somaP  somaP + peso
somaI  somaI + idade
cont  cont + 1

pesoM  somaP/NJ
idadeM  somaI/NJ
somaPT somaPT + somaP
somaIT somaIT + somaI

QJ  NJ*NE;
pesoMT  somaPT / QJ
idadeMT  somaIT / QJ

fim

J
1
2
3
4

peso
76
65
68
73

idade
18
21
23
19

pesoM

idadeM

36) Quais as estruturas de repetio utilizadas no exerccio anterior?

37) Faa o pseudocdigo correspondente ao fluxograma do exerccio 34.

38) Elaborar um algoritmo que efetue a leitura sucessiva de valores numricos e apresentar no
final a soma de todos os valores lidos, a mdia e a quantidade de valores lidos. O programa
dever fazer as leituras dos valores enquanto o usurio estiver fornecendo valores positivos, ou
ltima atualizao: 22/4/2008; 11:51:05

96/115

Algoritmos para Estruturas Simples

seja, o programa dever parar quando o usurio fornecer um valor negativo (menor ou igual a
zero).

39) Faa um algoritmo que receba como entrada o nome, a idade e a altura de vrias pessoas.
Como sada o algoritmo deve imprimir os nomes das pessoas com mais de 40 anos. Para encerrar
a entrada de dados, o usurio deve digitar uma idade menor ou igual a zero.

40) Qual o enunciado para o pseudocdigo abaixo?

Algoritmo MenorValor;
Var A, B, C,M: real;
incio
Leia ( A,B,C );
Se (A < B) .e. (A < C) ento
MA
Seno
Se (B < C) ento
MB
Seno
M  C;
Fim_se;
Fim_se;
Escreva (M);
Fim_algoritmo.
41) Acrescente a estrutura de repetio REPITA ao fluxograma abaixo. A repetio somente
terminar quando n = 999.

ltima atualizao: 22/4/2008; 11:51:05

97/115

Algoritmos para Estruturas Simples

42) Transcreva para o pseudocdigo o fluxograma do exerccio anterior acrescentando a


estrutura de repetio ENQUANTO.
43) Dado o pseudocdigo abaixo faa o fluxograma. Trata-se de um algoritmo que l dois
nmeros e imprime uma mensagem dizendo se so iguais ou diferentes n vezes.
Algoritmo Ex43;
Var a,b : inteiro;
Resp : literal [1];
Incio
Resp  S;
Enquanto Resp = S faa
Escreva (Digite o primeiro nmero);
Leia (a);
Escreva (Digite o segundo nmero);
Leia (b);
Se a = b ento
Escreva (Iguais)
Seno
Escreva (diferentes)
Fim_se;
Repita
Escreva (Outra verificao ? (S/N));
Leia (Resp);
At (Resp = S) .ou. (resp = N);
Fim_enquanto;
Fim_algoritmo;

44) Indique com (V) as afirmativas verdadeiras e com (F) as falsas.


( )
( )

( )

( )

( )

O enunciado de um exerccio no representa o problema a ser solucionado.


Varivel uma parte da memria cujo contedo (valor) pode ser alterado durante a
execuo do programa.
Um algoritmo formalmente uma seqncia finita de passos que levam a execuo de
uma tarefa. Podemos pensar em algoritmo como uma receita, uma seqncia de
instrues que do cabo de uma meta especfica. Como exemplos de algoritmos
podemos citar os algoritmos das operaes bsicas (adio, multiplicao, diviso e
subtrao) de nmeros reais decimais. Outros exemplos seriam os manuais de
aparelhos eletrnicos, como um videocassete, que explicam passo-a-passo como, por
exemplo, gravar um evento.
No algoritmo as tarefas podem ser redundantes e subjetivas na sua definio, ou seja,
no devem ser claras e precisas.
A lgica de programao necessria para pessoas que desejam trabalhar com
desenvolvimento de sistemas e programas, ela permite definir a seqncia lgica para o
desenvolvimento. a tcnica de encadear pensamentos para atingir determinado
objetivo ou permitem executar uma dada tarefa.

ltima atualizao: 22/4/2008; 11:51:05

98/115

Algoritmos para Estruturas Simples

( )
( )
( )
( )
( )

Embora seja possvel alterar o valor armazenado na memria (na varivel), possvel
armazenar s um valor de cada vez.
A varivel composta de dois elementos bsicos: a) contedo valor atual da varivel
e b) identificador nome dado varivel.
Os dados necessrios resoluo do problema so entrados apenas via teclado.
C  A+B (O valor que est em C somado ao valor em B, e o resultado armazenado
na varivel A.)
TESTE DE MESA utilizado para verificar se instrues do algoritmo esto ou no
corretas.

45) Converta as estruturas de repetio dos dois trechos de algoritmo abaixo. Ou seja, voc
dever acrescentar/retirar/modificar todas as linhas que sejam necessrias para fazer estas
converses.
a) converta para a forma ENQUANTO/FAA
cont  0;
Repita
X  Cont * 3;
Cont := Cont + 1;
At (Cont > 10);

b) converta para a forma PARA


i  1; y  0; A  1;
Enquanto (i <= 100) faa
y  y + i/A;
A  A * 2;
i  i + 1;
Fim_Enquanto;

c) converta para a forma REPITA/AT


i  0;
Enquanto (i < 30) faa
yi+5;
i := i + 1;
Fim_enquanto;

46) Faa o teste de mesa completo para o diagrama de blocos abaixo considerando N=3, X = (2,
-1 e 4) e Y = (3, 2 e -4)

ltima atualizao: 22/4/2008; 11:51:05

99/115

Algoritmos para Estruturas Simples

47) Dado o pseudocdigo abaixo, complete o cdigo.


Programa FATORIAL_D;
Var
Cont, ___, N : inteiro;
Resp: _________;
Inicio
RespS;
_________ (Resp = S) faa
Fat 1;
Escreva (Fatorial de que nmero:);
Leia (____);
Para cont  _____ ate N com incremento de 1
faa
Fat Fat * cont;
Fim_para;
Escreva (Fatorial de , N , igual a, _____);
Escreva (Deseja continuar? (S/N);
Leia (Resp);
Fim_enquanto;
Fim_programa;

Programa POTENCIA;
Var
i, Pot, X,Y : _________;
R: caractere;
Inicio
R S;
REPITA
Escreva (Base:);
____________
Pot  1;
Escreva (Expoente:);
Leia (Y);
Para i  1 ate _____ com incremento de ___ faa
Pot  ____* X;
Fim_para;
Escreva ( X , elevado a , Y, = , Pot);
Escreva (Continua? (S/N));
Leia (R);
AT (____ N);
Fim_programa;

48) Refaa o algoritmo abaixo de tal forma que o valor final seja digitado pelo usurio.
ltima atualizao: 22/4/2008; 11:51:05

100/115

Algoritmos para Estruturas Simples

com valor final especificado como 10

com valor final digitado pelo usurio

Algoritmo Media_V1;
var
N, SOMA, MEDIA: real;
I: inteiro;
incio
SOMA  0;
para I 1 at 10 faa
leia( N) ;
SOMA SOMA + N;
fim para;
MEDIA SOMA/10;
escreva(MEDIA);
fim.

49) Dados os identificadores abaixo, assinale somente os que so aceitos nas linguagens formais.
(

) VALOR

) SALRIO-LQUIDO

) B248

) Nota_do_aluno

) X2

) NOTA*DO*ALUNO

) A1B2C3

) N23

)3x4

) MARIA

) KM/H

) Cad Clientes

) XYZ

) AH!

) SALA125

) NomeDoCliente

) NOTA

) NOME _DA_EMPRESA

) NoTa

) 3_Ex

50) A biblioteca de uma universidade deseja fazer um algoritmo que leia o nome do livro que
ser emprestado, o tipo de usurio (professor ou aluno), considerando que o professor tem dez
dias para devolver o livro e o aluno somente trs dias, no final imprimir um recibo constando o
nome do livro, tipo de usurio e total de dias para devoluo.

51) Elabore um algoritmo que dado o cdigo do funcionrio, e numero de horas trabalhadas,
calcule seu salrio normal e salrio extra, sabendo que ele ganha R$15,00 por hora normal e R$
30,00 por hora extra e que quando sua jornada for maior que 50 horas as horas excedentes sero
consideradas horas extras, no final imprimir o cdigo do funcionrio, seu salrio normal e seu
salrio extra.

52) Faa o pseudocdigo do fluxograma abaixo.

ltima atualizao: 22/4/2008; 11:51:05

101/115

Algoritmos para Estruturas Simples

53) Substitua a estrutura de repetio do exerccio anterior pelo ENQUANTO. Reescreva


somente referente a repetio.

54) Dado o pseudocdigo abaixo, faa o teste de mesa considerando: A = 3, 2 e 1; B = 4, 3 e 0.

ltima atualizao: 22/4/2008; 11:51:05

102/115

Algoritmos para Estruturas Simples

Algoritmo Ex54;
Var Cont: inteiro;
A, B, S: real;
Inicio
Cont1;
Repita
Leia (A, B);
S  A+B;
Escreva (S);
Cont  Cont + 1;
At (Cont > 3);
Fim_algoritmo.
Teste de mesa
Cont

55) Preencha as lacunas com V para as alternativas verdadeiras e F para as falsas.

Na estrutura de repetio PARA o contador deve ser declarado como inteiro.


ENQUANTO uma estrutura de repetio com teste no final, e uma seqncia de
comandos s executada quando o teste lgico resulta em verdadeiro.
Usa-se PARA normalmente quando o numero de repeties previamente conhecido.
A estrutura CASO/ESCOLHA pode ser utilizada sempre que o nmero de opes for maior
que trs.
Deve-se criar uma condio para executar comandos nas estruturas de repetio
ENQUANTO ou REPITA.
Na estrutura CASO/ESCOLHA a condio testa a igualdade entre duas variveis.
Dentro de uma estrutura de repetio possvel utilizar outras estruturas de repetio e/ou
de deciso.
A estrutura condicional SE permite a escolha de uma seqncia de comandos caso uma
determinada condio (expresso lgica) ou no verdadeira.
Na estrutura de repetio ENQUANTO o trecho de comandos executado pelo menos uma
vez antes de testar a condio.
Na estrutura de repetio REPITA o trecho de comandos ser executado para a condio
falsa.

ltima atualizao: 22/4/2008; 11:51:05

103/115

Algoritmos para Estruturas Simples

56) Complete o algoritmo abaixo.

Algoritmo Ex56;
Var i:____________;
Incio
i  ______;
Enquanto (i ___15) faa
Escreva (i);
i  i - 0,5;
Fim_enquanto;
Fim_programa.

57) Transcreva o fluxograma abaixo para o pseudocdigo.

inicio

Digite a idade

idade

Idade<18

F
V

Menor de
idade

idade<65

Maior de
idade

Maior de
65 anos

fim

58) Dado o fluxograma acima, acrescente uma estrutura de repetio para seja executada a
verificao de idade para vrias pessoas.

ltima atualizao: 22/4/2008; 11:51:05

104/115

Algoritmos para Estruturas Simples

59) Refaa o fluxograma do exerccio anterior substituindo a estrutura condicional pela estrutura
ESCOLHA/CASO.

ltima atualizao: 22/4/2008; 11:51:05

105/115

Algoritmos para Estruturas Simples

2.5. RESUMO
Fluxograma

Pseudocdigo

Pascal

Algoritmo NomeProg;
Program NomeProg;
Variveis
Var
V1,V2: Tipo_de_dado;
V1,V2:Tipo_de_dado;
Inicio
Begin
Fim

Program Exemplo1;
Var
X, Y : real;
Begin
End.

Leia ( X ) ;

Read (X) ou Readln (X);

Y X + 2;

Write (Informe X: );
Readln (X);

Y:= X + 2;

Escreva ( Y )

Write (Y) ou Writeln (Y)

Writeln (O valor de Y :, Y);

ou

If Condio Then
C1;

Se Condio ento
C1;
Fim_se;
Obs: C1
Comando1

igual

Se Condio ento
C1
Seno
C2;
Fim_se;

Se Condio Ento
C1;
C2;
Fim_se;

ltima atualizao: 22/4/2008; 11:51:05

If X > 0 then
Y := X * X;
a

Obs: O ponto e vrgula


indica o Fim_Se

If Condio Then
C1
Else
C2;
Obs.: Antes de Else no
tem ponto e virgula.
If Condio Then
Begin
C1;
C2;
End;
Obs.: Quando tem mais
de um comando na
estrutura, ou seja, um
bloco de comandos,
obrigatrio o uso de
Begin e End para indicar
comeo e fim do bloco de
comandos.

If X > 0 then
Y:= X * X
Else
Y:= X 4;

If X > 0 then
Begin
Y:= X * X;
X:= X 4;
End;

106/115

Algoritmos para Estruturas Simples

Fluxograma

Pseudocdigo
Se Condio Ento
C1;
C2;
Seno
C3;
C4;
Fim_se;

Pascal
If Condio Then
Begin
C1;
C2;
End
Else
Begin
C3;
C4;
End;

For <varivel> :=
<inicio> To <fim>
para <varivel> de Do begin
<inicio> at <fim> com
Comando_1;
incremento de <passo>
Comando_2;
faa
Comando_n;
Comando_1;
End;;
Comando_2;
Comando_n;
Fim_para;

No Pascal o contador
incrementado
automaticamente de Vi a Vf
com passo unitrio. Contagem
regressiva ocorre trocando-se
Vi e Vf de lugar e substituindo
TO por DOWNTO.

Enquanto
<condio>
faa
While <condio> Do
Comando 1;
Begin
Comando 2;
Comando 1;
Comando n;
Comando 2;
Fim_enquanto;
Comando n;
Obs.: Esta estrutura repete os
End;
camandos enquanto a condio for
verdadeira. O contador deve ser
incrementado dentro da estrutura
de repetio.

Repita
Comando_1;
Comando_2;
Comando_n;
At que <condio>;
Obs.: Esta estrutura repete os
comandos at que a condio seja
verdadeira. A diferena entre esta
estrutura e a anterior que esta
executar os comandos pelo
menos uma vez, enquanto a outra
pode no executar nenhuma vez
os comandos.

ltima atualizao: 22/4/2008; 11:51:05

Repeat
Comando_1;
Comando_2;
Comando_n;
Until condio;

Write ( Informe X: );
Readln ( X );
If X > 0 then
Begin
Y:= X * X;
X:= Y 4 * Y;
End
Else
Begin
Y:= X * X*3;
X:= Y * (X 4);
End;
Write ( Informe A: );
Readln (A);
For I:= 1 to A do
Begin
Write (Informe X: );
Readln ( X );
P:= X * X;
K:= X 4 * P;
y:= X * X*3;
Z:= X * (X 4);
End;

Write ( Informe A: );
Readln (A);
I := 0;
While I < A Do
Begin
Write (Informe X: );
Readln ( X );
P:= X * X;
K:= X 4 * P;
Y:= X * X*3;
I := I + 1;
End;

Write ( Informe A: );
Readln (A);
I := 0;
Repeat
Write ( Informe X: );
Readln ( X );
P:= X * X;
K:= X 4 * P;
Y:= X * X*3;
Z:= X * (X 4);
I := I + 1;
Until I > A;

107/115

Algoritmos para Estruturas Simples

Fluxograma

Pseudocdigo
Escolha (Varivel)
Caso (valor_1) : Comando_1;
Caso (valor_2) : Comando_2;
Caso (valor_3) : Comando_3;
Fim_escolha;
Ou desta outra forma:
Caso <Varivel>
<valor_1> : <Comando_1>;
<valor_2> : <Comando_2>;
<valor_3> : <Comando_3>;
Fim_caso;
Escolha (Varivel)
Caso (valor_1) : Comando1;
Caso (valor_2) : Comando2;
Seno
Comando3;
Fim_escolha;
Ou desta outra forma:
Caso <Varivel>
<valor_1> : <Comando1>;
<valor_2> : <Comando2>;
Seno
<Comando3>;
Fim_caso;

ltima atualizao: 22/4/2008; 11:51:05

Pascal

Writeln (Digite nmero:);


Readln (Num);
Case Varivel of
Valor_1: Comando_1; Case Num of
Valor_2: Comando_2;
1: Writeln (Um);
Valor_3: Comando_3;
2: writeln (Dois);
3: writeln (Trs);
End;
End;

Writeln (Digite nmero:);


Case Varivel of
Readln (Num);
Valor_1: Comando_1; Case Num of
1: Writeln (Um);
Valor_2: Comando_2;
2: writeln (Dois);
Else
Valor_3: Comando_3; Else
writeln (Trs);
End;
End;

108/115

Algoritmos para Estruturas Simples

Operador

+
*

Operao
Atribuio
Adio
Subtrao
Multiplicao
Diviso (onde o resultado ser um
nmero real)
Diviso (onde o resultado ser um
nmero inteiro)
Resto de uma diviso

/
DIV

MOD
** ou exp(a,
Exponenciao
b)
Raiz quadrada
Sqrt (x)
Exp(ln(x)*n) Exponenciao xn

Exemplo
A7
2 + 5 =7
20 10 = 10
3 * 5 = 15
5 / 2 = 2,5
10 div 2 = 5
7 div 2 = 3
7 mod 2 = 1

ou >=

<
ou <=

Menor que
Menor ou igual que

Ou (Or)
No (Not)
Ou-X (Xor)
=
ou <>
>

Aritmtico

5 ** 2 ou exp(5, 2)

Sqrt(5)
Exp(ln(5)*3)
(Media > 5) .E. (Freq >
Conjuno (as duas ao mesmo tempo )
75)
(Flag = .V.) .Ou. (Cont
Disjuno Inclusiva
> 50)
Negao
No (Sei_nada)
(Sal < 500) Ou-X
Ou Exclusivo
(N_dep > 2)
Igualdade
Nome = Joo da Silva
Diferente
Saldo 100,00
Maior que
Salrio > 3000,00
Idade > 18
Maior ou igual que
Mdia 5,0

E (And)

Classificao
Atribuio

Lgico

Relacional

Renda < 10000


Aluguel 400

Veja a tabela verdade apresentada a seguir para entender melhor os operadores lgicos,
onde P e Q so variveis do tipo lgico.

Q
F

P.e. Q
F

P .ou. Q
F

P .ou-X. Q
F

F
F

ltima atualizao: 22/4/2008; 11:51:05

No (P .e. Q) No (P .ou. Q) No (P .ou-X. Q)


V
V
V

109/115

Algoritmos para Estruturas Simples

3. RESPOSTAS
Procure as respostas para as questes formuladas no arquivo de respostas.

<<EM CONSTRUO, estar disponvel antes da prova com certeza>>

ltima atualizao: 22/4/2008; 11:51:05

110/115

Algoritmos para Estruturas Simples

REFERNCIAS BIBLIOGRFICAS
MANZANO, J.A.N.G., OLIVEIRA, J.F., Algoritmos Estudo Dirigido, Coleo P.D., Editora
rica, So Paulo, 1997.
MANZANO, J.A.N.G., OLIVEIRA, J.F., Algoritmos Lgica para desenvolvimento de

Programao de Computadores, Editora rica, 15a Ed., So Paulo, 2004.


FARRER, H, BECKER, C.G., FARIA, E.C., Algoritmos Estruturados, Editora LTC, 3a Ed.,
1999.

ltima atualizao: 22/4/2008; 11:51:05

111/115

Algoritmos para Estruturas Simples

ANEXOS
A.1. Como ser reprovado em Algoritmos e/ou Laboratrio de
Programao
Por Joo Batista (oliveira @ inf. pucrs.br) e Marcelo (flash @ inf. pucrs.br).
http://www.inf.pucrs.br/~flash/manual/

Siga pelo menos uma das instrues abaixo e sua reprovao estar praticamente garantida nas
disciplinas Algoritmos e Tcnicas de programao! A reprovao ocorrer facilmente e com
tranqilidade!

1. Baixe todas as apostilas da disciplina, e depois carregue na pasta o tempo todo, pois elas
criam um campo magntico onde voc aprende por osmose. NO LEIA nenhuma delas, pois
isso desfaz imediatamente o campo e voc no vai aprender nada!
2. Quando fizer trabalho em grupo, pendure-se em um grupo qualquer e no levante
um dedo pra fazer o trabalho. Lembre-se de que mais tarde voc vai ter de fazer
prova, e no deve estar esgotado de tanto pensar em algoritmos!
3. No entre nunca na biblioteca, nem pra devolver livro dos outros. Voc pode achar algo
interessante pra ler, e isso arruinaria o seu final de semana.
4. O laboratrio de programao deve ser evitado a todo o custo! Alm do desgastante
contato direto com o computador, voc ainda corre o risco de aprender a programar de
verdade, portanto proteja-se!

5. Listas de exerccios so para os incompetentes, por isso voc pode


ignor-las. D risada quando encontrar algum fazendo.

6. Use a aula pra colocar a conversa em dia, afinal voc nunca sabe quando vai ver seus amigos outra
vez.

6. Se voc for menino, no anote nada e copie o caderno de uma guria. Se voc for guria, no
anote nada e copie de outra guria. Afinal, para ir bem nas provas basta decorar a matria!

ltima atualizao: 22/4/2008; 11:51:05

112/115

Algoritmos para Estruturas Simples

8. Apostilas no so para ler, apenas colocar embaixo do travesseiro j produz um


enorme efeito mental. Mais que isso exagero...
9. Entregar qualquer coisa com uma capinha legal e espaamento duplo certeza de boa
nota. Junte suas pginas preferidas da Internet e no esquea de usar um clips colorido.
Afinal, na Internet sempre tem o trabalho que voc precisa, e o professor no vai nem
olhar mesmo...
10. S os incompetentes estudam muitos dias antes da prova. Os feras de verdade nem
estudam, e evitam ficar com olheiras.
11. Se recuse a ler qualquer coisa que esteja escrita em ingls! Afinal, voc s v filme
estrangeiro se tiver legenda, e com livros deveria ser a mesma coisa... At mesmo porque tudo
que voc precisa pode ser encontrado nos livros em portugus.
Se der sol v pro shopping,
12. Lembre-se sempre da
poesia:

Se chover fique na cama,


Ou ento v para o bar,
No tem jeito de passar.

ltima atualizao: 22/4/2008; 11:51:05

113/115

Algoritmos para Estruturas Simples

A.2. Sobre os autores


- Marcia A. S. Bissaco
Interesses:
Processamento de Imagens Mdicas;
Controle de Qualidade de Sistemas de Imagens;
Informtica Aplicada Sade;
Modelagem e Simulao.
Informtica na Educao

Formao Acadmica:
Tecnologia em Processamento de Dados
UNESP - Universidade Estadual Paulista
Bauru - SP Brasil
Perodo: 1991 1993
Mestrado em Engenharia Eltrica
Universidade de So Paulo USP
Escola de Engenharia de So Carlos - Depto. de Engenharia Eltrica
So Carlos SP Brasil
Trabalho: "Simulao Computacional da Nitidez de Imagens Radiolgicas para Controle de Qualidade
em Sistemas de Registro de Imagem" (Engenharia Biomdica)
Perodo: 1995 -1997
Bolsa CNPq
Doutorado em Fsica Aplicada
Instituto de Fsica de So Carlos IFSC
Universidade de So Paulo USP
Trabalho: "Simulao do Desempenho das Combinaes cran-Filme em Funo do Feixe de Raios
X Incidente" (Engenharia Biomdica)
Perodo: 1997 2001
Bolsa FAPESP
Ps-Doutorado
Ncleo de Pesquisas Tecnolgicas - NPT
Universidade de Mogi das Cruzes - UMC
Trabalho: "Simulao"
Perodo: 2001 2003
Bolsa FAPESP

Atualmente:
Professor assistente doutor e pesquisadora no Mestrado e Doutorado da Universidade de Mogi das
Cruzes.
ltima atualizao: 22/4/2008; 11:51:05
114/115

Algoritmos para Estruturas Simples

ltima atualizao: 22/4/2008; 11:51:05

115/115

Vous aimerez peut-être aussi