Você está na página 1de 28

FLP (Fundamentos de

Introduo a Informtica)
Tcnicas de
Desenvolvimento da Lgica

Sumrio
Introduo.......................................................................................................................................................................
As dificuldades de programar.........................................................................................................................
A metodologia de aprendizagem....................................................................................................................
Variveis x Dados...........................................................................................................................................................
Uso das Variveis no Algoritmo......................................................................................................................
Escolhendo o TIPO do Identificador da Varivel............................................................................................
Tipo inteiro......................................................................................................................................
Tipo real..........................................................................................................................................
Tipo Literal......................................................................................................................................
Tipo Lgico.....................................................................................................................................
Tamanho das Variveis...................................................................................................................................
Declarao de Variveis.................................................................................................................................
Comando DECLARE......................................................................................................................
Operadores.....................................................................................................................................................
Operadores Numricos...................................................................................................................
Operadores Relacionais.................................................................................................................
Operadores Lgicos.....................................................................................................................
Entendendo Representaes de Sintaxes...................................................................................................................
Atribuio de Valores a Variveis.................................................................................................................
Estruturao do Algoritmo............................................................................................................................................
Entrada e Sada de Dados...........................................................................................................................
Comando LEIA.............................................................................................................................
Comando ESCREVA (lista informaes no vdeo).......................................................................
Manipulaao de valores................................................................................................................................................
Conceitos Fundamentais..............................................................................................................................................
Contador x Acumulador................................................................................................................................
Percentuais...................................................................................................................................................
Maior Valor....................................................................................................................................................
Menor Valor...................................................................................................................................................
Estruturas Condicionais................................................................................................................................................
Estrutura Condicional SE (Smples).............................................................................................................
Estrutura Condicional SE (Composta)..........................................................................................................
Estrutura Condicional SE (Encadeada)........................................................................................................
Exerccios de Aprendizagem........................................................................................................................
Estruturas de Repetio...............................................................................................................................................

ENQUANTO............................................................................................................
Comando PARA..................................................................................................................................
Comando

Exerccios de Aprendizagem........................................................................................................
Tcnicas de Algoritmizao..........................................................................................................................................
Dicas sobre Resoluo de Algoritmos..........................................................................................................
Tcnica para extrair os dados de um enunciado.........................................................................................
Desafios Resolvidos.....................................................................................................................................................

Introduo

rogramar um computador no uma tarefa to difcil. Difcil programar as


nossas cabeas.
O computador, na realidade, uma rplica bastante simplificada de nossa
mente, com apenas uma diferena essencial: a AUTO-PROGRAMAO.

Ao longo de nossas vidas, aprendemos coisas a partir de alguns elementos fundamentais


como cores, smbolos, sons, cheiros, e sentimentos. Esses elementos vo se
combinando atravs de um processo conhecido como aprendizado.
O processo de aprendizado nada mais do que uma auto-programao de nossas
mentes. Algum diz para nosso crebro o que ele tem que fazer ao se deparar com
uma situao especfica, tal como: dobrar uma esquina, parar ao perceber o sinal
vermelho, escovar os dentes ao acordar, em fim - tudo o que fazemos regido por
programas que, um dia, ns mesmos desenvolvemos.
Ora, se somos capazes de desenvolver programas para um aparelho to complexo e
genial como o nosso crebro, por que no um simples computador?
Este o nosso desafio. Desenvolver as tcnicas necessrias para conseguirmos codificar
programas em um computador digital.

As dificuldades de programar
Programar um computador, assim como a nossa mente, requer duas exigncias bsicas:

Conhecer a linguagem na qual se vai programar;

Estruturar o raciocnio de forma a saber combinar os comandos desta linguagem, dentro


de uma seqncia lgica, ou seja, de modo a atingirmos o objetivo perseguido.

A linguagem de programao utilizada pelas nossas mentes composta de comandos


(olhe, escute, memorize, decida, sinta, ame, odeie...), elementos (cores, tipos de cheiros,
notas musicais, smbolos sonoros, smbolos visuais...) e capaz de reconhecer e utilizar
os recursos disponveis no organismo (olho, ouvido, crebro, nariz, boca...), sem os
quais torna-se impossvel a execuo de um programa.
A linguagem de programao utilizada pelos computadores composta tambm por
comandos (receba, escreva, some, multiplique...) e elementos (nmeros, palavras e
smbolos), e tambm capaz de reconhecer e utilizar os recursos disponveis no
computador e perifricos (impressora, monitor de vdeo, mouse, teclado, memria...).
Ao aprendermos uma receita de bolo, colocamos uma poro de comandos em nossa
mente. Estes comandos so gravados de uma forma analgica e, logo em seguida,
consolidamos o processo de aprendizagem atravs da execuo daquele programa.
Claro, da primeira vez que fazemos algo podemos cometer erros, que so
automaticamente ajustados pela nossa mente para que, da prxima vez, no voltem a
acontecer.

Da mesma maneira, sempre que um programador desenvolve a primeira verso de seu


programa, h uma fase de testes, quando os erros aparecem e so ajustados
necessidade do usurio. A esta fase damos o nome de DEPURAO.

A metodologia de aprendizagem
Como vemos, a programao de computadores bastante semelhante a programao de
nossas mentes, o que torna suas dificuldades e caractersticas tambm
similares.Aplicaremos as tcnicas e recursos existentes aos elementos inerentes a
computadores, interagindo com variveis de memria, comandos de entrada e sada de
dados, alm de comandos que controlaro a repetio de blocos de comandos.
Estruturas como vetores, matrizes, listas, filas, pilhas, rvores, entre outras, sero
ministrados em outras disciplinas.
Para representar as aes (comandos), utilizaremos uma linguagem no comercial - o
pseudocdigo, conhecido como Algoritmo. Uma linguagem que lhe poupe de comandos
em ingls, e que no apresente grandes sofisticaes. A linguagem de programao
experimental que utilizaremos para exercitar a lgica de programao ser na nossa
prpria linguagem: a lngua portuguesa.
Para facilitar o processo de aprendizagem, os temas que abordaremos podero ser
convertidos para a linguagem Pascal, que tem em suas origens, o objetivo de ensinar os
alunos a interagirem com o computador de forma prtica.

Variveis x Dados
Varivel o local de memria onde sero armazenados os dados de forma
temporria. Em nossos algoritmos no nos preocuparemos com o endereo real dessas
variveis, pois a maioria das linguagens de programao tornam estes endereos
transparentes ao programador.
Para exemplificarmos a diferena entre dados
(constantes) e variveis, bem como entender
melhor o endereamento de variveis, podemos
citar o exemplo de uma estante de prateleiras,
onde esto guardados livros ou quaisquer outros
objetos (veja figura).
Os livros e objetos podem ser chamados de
dados, contedo das variveis. Para nos referenciarmos varivel necessrio darmos
um nome mesma, pois no trabalharemos com endereo de memria propriamente
dito, e sim com identificadores.
aconselhvel que o nome da varivel expresse o que vai ser armazenado dentro dela,
p.e. nomeAluno, quantidade_alunos.
As variveis podem ainda ser simples ou compostas. As variveis simples so aquelas
que recebem um nico dado por vez, enquanto que as compostas podem armazenar
vrios dados de uma s vez, porm, esta ltima no objeto de nossa apostila.
Quando declaramos uma varivel, temos que associar a ela algumas caractersticas:

NOME ou IDENTIFICADOR

TIPO do dado

Como dissemos anteriormente, o endereo fsico da varivel no precisa ser declarado, a


menos que estejamos programando em alguma linguagem de baixo nvel, como o
ASSEMBLER. As linguagens de alto nvel procuram espaos livres na memria do
computador para associarem bytes varivel declarada.

Uso das Variveis no Algoritmo


O nome a ser associado varivel (ex.: X, Y, KTI34), no importante para o
computador, pois este servir apenas como uma mera referncia. Entretanto para outros
programadores que possam vir a analisar os seus programas, ou at para voc mesmo
aps algum tempo, necessrio que esses nomes sejam expressivos, simples e
objetivos.
Vejamos agora alguns exemplos de identificadores:
SALARIO
CONT
TOTAL

Um bom nome para varivel que ir armazenar um valor salarial;


Um bom nome para varivel que ir registrar uma contagem;
Um bom nome para variveis acumuladoras de somas;

DATANASC

Um bom nome para variveis usadas para armazenar uma data de


nascimento.

Devemos evitar nomes do tipo: X, K, C1, ABC, etc... a menos que eles expressem
algo real.
Nomes de varivel, na maioria das linguagens, NO devem:
Iniciar por nmeros:1C2, 9ANOS, 100, 4CANTOS, etc...
Ser descontnuos:

DATA NASC, FONE COMERC, etc...

Outros requisitos podem aparecer dependendo de cada linguagem. O COBOL por


exemplo permite nomes longos para variveis, j o CLIPPER, com apenas 10 bytes. O
COBOL permite separadores como hfens, barras, entre outros. Linguagens derivadas
do DBASE permitem apenas o UnderLine (Nome_Aluno) como caracter separador. A
maioria das linguagens apresenta certas restries livre escolha dos nomes das
variveis. A mais evidente a impossibilidade da utilizao de palavras reservadas da
prpria linguagem. Por exemplo, a palavra MOVE representa um comando para o
COBOL. No possvel utilizarmos este nome como identificador de qualquer varivel
nesta linguagem. J para o CLIPPER, o MOVE pode ser um identificador.
Outras vezes, a linguagem traz consigo algumas variveis reservadas. Tratam-se de
algumas variveis que so automaticamente declaradas pela linguagem. Normalmente
elas registram a data e a hora do sistema operacional, ou algumas informaes internas
como cdigos de perifricos, endereos de memria para buffers, etc.

Escolhendo o TIPO do Identificador da Varivel


O segundo argumento presente na declarao de uma varivel o seu tipo. O tipo de
uma varivel define que tipos de dados podero ser armazenados nela. A declarao
(definio das variveis) ser feita no incio do algoritmo.

Tipo inteiro
Sinaliza que o contedo ser de nmeros e que no ter a parte decimal em sua
composio.
Ex.: 1200; -12; 0; etc

Tipo real
Sinaliza que o contedo ser de nmeros e que permitida a digitao da parte decimal.
Ex.: 1200,00; -12,88; 0; etc

Tipo Literal
Sinaliza que o contedo aqui armazenado ser toda a rede de caracteres alfanumricos e os
ditos caracteres especiais. Os contedos destas variveis SEMPRE sero demonstrados entre
aspas (simples ou dupla, dependendo da linguagem);

So variveis que aceitam contedos de qualquer natureza, portanto: nmeros, letras e


smbolos em geral, no podendo estes nmeros ser utilizados para operaes
aritmticas.
Ex.: "MARIA JOSE"; "Recife"; "123"; "NOMES"

Observaes:
a) No confundir os valores numricos com os literais ou entre os literais. Vejamos os
casos a seguir.
Caso 1.
42 (inteiro) diferente de 42 (literal) Os tipos so diferentes, logo, seus
valores em memrias so diferentes;
Caso 2.
01(literal) diferente de 1 (literal) Os tipos so iguais, mas a
representao em memria diferente.

Tipo Lgico
Este tipo de varivel no permite o registro de dados numricos ou literais. Uma
varivel lgica s armazena um entre dois valores: VERDADEIRO ou FALSO.
Em nossa disciplina, no nos ateremos ao como exatamente, o computador registra esta
informao na memria. Pode ser por bytes zerados e no zerados, pelas letras V ou F,
ou por um outro mecanismo qualquer. O que nos interessa de fato que este tipo de
varivel no registra outro tipo de informao exceto Verdadeiro ou Falso.
Para efeito de representao, diremos que o contedo de uma varivel lgica ser
representado pelas letras V e F, representando respectivamente, Verdadeiro e Falso:

Tamanho das Variveis


Quando declaramos uma varivel no precisamos delimitar o byte inicial e final que
esta ir ocupar na memria do computador, entretanto imprescindvel entendermos
que elas ocupam um espao na memria e que os tipos de dados trazem definies sobre
as variveis, inclusive o que pode armazenar e os seus limites.
Outros tipos de variveis tambm so tratados por novas linguagens, tais como: HORA,
MEMORANDO, OBJETO. Entretanto aqui s trataremos os tipos mencionados
anteriormente, ou seja: Literal, Inteiro, Real e Lgico..

Declarao de Variveis
TODAS as variveis que o programa vier a utilizar tm que existir antes de serem
referenciadas. Por esse motivo, necessitamos declarar estas. Como fazer isso? Atravs
do comando DECLARE.

Comando DECLARE
DECLARE <Nome da varivel>[,<Nome da varivel>]: <tipo>;
<Nome da varivel> Nome ou identificador da varivel
<Tipo>
Exemplos:

Tipo da varivel definida: Literal, Inteiro, Real e Lgico.


DECLARE NOME : Literal;
DECLARE IDADE : Inteiro;
DECLARE ALTURA: Real;
DECLARE DEPENDENTE: LOGICO;

Podemos declarar diversas variveis utilizando apenas um comando DECLARE.


Exemplos:

DECLARE NOME : Literal;

IDADE : Inteiro;
ALTURA: Real;
DEPENDENTE, LOGICO;

Ou ainda, em uma mesma linha, desde que sejam do mesmo tipo de dados.
Exemplo:
DECLARE IDADE, CONTADOR:inteiro; (obs.: tipo e tamanho iguais}
Observao: As vezes substitumos o comando Declare por Var ou Defina, dependendo da
linguagem que estamos querendo nos aproximar. Outros comandos
podero sofrer variaes. Cabendo ao professor da disciplina fazer os
ajustes baseados no direcionamento que queira dar disciplina.

Operadores
Podemos atribuir a uma varivel o resultado de uma expresso numrica. Atribui uma
ao que as linguagens possuem e que representa o ato de preencher o espao da
varivel com um contedo, conforme o tipo de dado (veremos mais detalhadamente em
tpico especfico). Entendemos por expresso numrica um conjunto de operaes
aritmticas combinadas entre operandos e operadores. Mas alm das expresses
numricas, existem expresses que exigem tratamentos particulares, como veremos a
seguir.

Operadores Numricos
So elementos (smbolos) utilizados para representar uma operao de cunho aritmtico.
+

indica SOMA

indica SUBTRAO

indica MULTIPLICAO

indica DIVISO

Relembrando um pouco a matemtica elementar, a ordem de execuo de uma


expresso aritmtica segundo as prioridades de operaes :
Parntesis:

( )

Multiplicao e Diviso:

*, /

Soma e Subtrao: + , Obs.: Caso existam numa mesma sentena operadores de mesma ordem de prioridade, a
execuo ser feita da esquerda para direita.

A := 2 * 6 / 3
12
4

Operadores Relacionais

So elementos (smbolos) utilizados para realizarmos operaes de comparaes,


recebendo como resposta o valor verdadeiro ou falso.
> maior que

< menor que

= igual a

>= maior ou igual a

<= menor ou igual a

<> diferente

= igual a
Exemplos:
Dados A = 3, B = 2, C = Jose , D = Jose, NOME = JOSE
A>B

Retorna V

C=D

Retorna V

NOME = "JOSE"

Retorna V (Est sendo comparado o contedo da varivel NOME com a


string JOSE.

NOME = D

Retorna F (esto sendo comparados os contedos das variveis NOME e


D).

Os operadores relacionais incidem sobre dados e variveis numricas e caracteres.


Assim sendo, podemos comparar no apenas nmeros, mas tambm palavras. Neste
sentido, a comparao respeitar a ordem alfabtica das iniciais de cada uma.
Exemplos:
"MARIA" > "ANA"

Retorna V

"MARIA" < "MARIO" Retorna V


observao: as comparaes s podem ser feitas com elementos dos mesmos tipos.

Operadores Lgicos
Estes elementos so necessrios quando voc deseja realizar comparaes entre resultados
lgicos obtendo como resposta outro valor lgico. Estranho, no? Mas exatamente isso que
ocorre. Por exemplo: se voc ler um anuncio sobre emprego que tenham as seguintes
solicitaes:
Precisa-se de pessoas do sexo feminino e com idade mxima 40 anos. O que voc
consegue extrair deste anuncio? A resposta seria: duas exigncias, a saber, o SEXO da pessoa
deve ser igual a feminino (F) e a IDADE deve ser menor ou igual a 40 anos. Logo, estamos
diante de duas sentenas, que, dependendo do que seja colocado como dados na
comparao, poderemos ter a possibilidade do resultado ser falso ou verdadeiro. Se o SEXO
for igual a M (masculino), a primeira sentena ser falsa. Para voc poder ocupar a vaga
oferecida, necessrio que sejas do sexo feminino e sua idade esteja na faixa etria solicitada.
Para o programa, o raciocnio exatamente igual.
Para que gerenciarmos esta etapa da lgica, utilizaremos os operadores a seguir:
Operador

Detalhamento

Prioridade
de execuo

OU

A sentena que contiver este operador ser verdadeira se pelo


menos uma das expresses nela contida retornar valor verdadeiro.

A sentena que contiver este operador ser verdadeira se as


expresses nela contida resultarem valores verdadeiros.

Quando queremos inverter (negar) o resultado de uma condio ou


expresso lgica.

(Opcionalidade)
E
(Simultaneidade)
NO
(Negao)

Observao: caso sejam colocados os parnteses na sentena, a prioridade de execuo ser alterada
iniciando-se pelos elementos contidos dentro destes. Caso exista mais de uma sentena
nesta condio, observar-se-, alm do exposto acima, a execuo dos comandos da
esquerda para a direita da expresso.
Vejamos a TABELA VERDADE a seguir para entendermos melhor.
E

OU

Exemplos:
X = 90 E Z = 100
A >= 67 OU A <= 200
NOME <> "ANA" E NAO (NOME = "MARIA")
(NOME <> "ANA") E (NAO (NOME="MARIA") OU (NOME="PEDRO"))

10

Entendendo Representaes de Sintaxes


Agora que voc j aprendeu o primeiro comando de nossa linguagem algortmica,
importante aprender a forma sinttica de se representar um comando. Note que, ao
enunciarmos o comando DECLARE, ns utilizamos algumas nomenclaturas e
simbologias que voc, certamente, encontrar em qualquer livro sobre quaisquer
linguagens.
Assim, vamos elucidar algumas delas:
Repetindo o comando,
DECLARE <Nome da varivel>[,<Nome da varivel>]: <tipo>;
< >

Delimita o espao reservado para inserirmos um parmetro do comando. A


maioria dos comandos das linguagens possui parmetros.

[ ]

Delimita o espao reservado para inserirmos um parmetro opcional do


comando, ou seja, tudo o que vier entre colchetes nem sempre precisar
ser especificado no comando.

Ex:

DECLARE SOMA : Inteiro;


DECLARE SOMA, QUANTIDADE_ALUNOS:inteiro;

Observe ainda que os colchetes [ ] e os delimitadores maior/menor < > podem


acumular-se entre si, ou seja, dentro de um grupo de parmetros opcionais [ ],
poderemos ter outros [ [..] ], dependendo apenas da caracterstica do comando.

Atribuio de Valores a Variveis


At agora, vimos conceitos e exemplos de variveis. Agora vamos aprender a utiliz-las
em algoritmos.
Representaremos o comando de atribuio pela combinao de dois smbolos do
teclado, que so dois pontos e o sinal de igual, sem espaos entre eles(:=). Este smbolo
representar a atribuio de um dado a uma varivel.
<varivel> := <dado a ser armazenado>
Exemplos:
NOME := "JOO";

Dados Literal tm que vir entre aspas

IDADE := 25;

Dados Inteiros no precisam de aspas

ALTURA := 1,67;

Dados tipo Real, possuem uma vrgula como delimitador entre a parte
decimal e a parte inteira (linguagens comerciais adotam o ponto).

DEPENDE := F;

Dados LOGICO devem vir entre pontos

Tambm podemos atribuir, a uma varivel, o valor de outra:


Exemplo:

ALTURA := IDADE;

a varivel ALTURA recebe o valor de IDADE

Tambm podemos atribuir o resultado de uma expresso numrica, ou de outro tipo, a


uma varivel:
SOMA := QUOEF * (VALOR + 10) / DIVISOR;

Estruturao do Algoritmo
Existem alguns formatos para organizar um algoritmo, porm adotaremos o mais global,
facilitando assim o aprendizado. Vejamos a seguir:
11

Algoritmo <nome do programa>;


Declare {Local para declarao das variveis}
Incio
{Local para inicializao das variveis / mensagens montando a
tela}
{Local para receber dados, processar dados e dar sada nos dados
/ mensagens}
Fim

Entrada e Sada de Dados


At aqui ns vimos como atribuir um valor a uma varivel dentro de um programa.
Mas este valor foi atribudo pelo prprio programa, no ?
Mas como fazer com que um programa, em um dado momento, receba um valor
digitado pelo usurio?
Como receber este dado atravs do teclado?
Como exibir o resultado de uma operao qualquer no monitor?
Existem nas linguagens de programao, comandos de entrada e sada de dados. No
caso do algoritmo, estes comandos so os seguintes: Leia (entrada), Escreva (sada tela).

Comando LEIA
Leia <varivel>;
Ou
Leia (<varivel>);
<varivel> Algoritmo
Declare

Varivel que receber os dados digitados pelo usurio.

wnome:literal;
Widade:Inteiro;

Inicio
Leia wnome;
Leia widade;
<seqncia de comandos>;
Fim

A execuo do comando LEIA provoca uma pausa na execuo do programa. O


programa fica em estado de espera, aguardando a digitao de algo que deva ser
atribudo s variveis especificadas na sintaxe do comando. bom deixar claro que o
LEIA, permite um preenchimento por vez. Se voc desejar digitar vrias
informaes referente a mesma varivel, ter que utilizar uma estrutura de
repetio (veremos mais adiante) e fazer com que o fluxo do programa passe pelo
mesmo local onde o LEIA est posicionado
No exemplo acima, veja que o computador aguarda que o usurio digite dois valores
distintos atravs do teclado. Estes dois valores iro ocupar, respectivamente, as
variveis NOME e IDADE.

Comando ESCREVA (lista informaes no vdeo)


Escreva <string>[, <varivel>][, <operao>];
Ou
Escreva (<string>[, <varivel>][, <operao>] );
Importante! Pelo menos um dos parmetros deve ser informado quando da utilizao deste
comando.
<string> -

Texto que est sendo encaminhado para tela.

12

<varivel> -

Qualquer varivel utilizada no programa.

<operao> -

Algum clculo executado durante a exibio. Neste caso o processador


realiza a operao de clculo e depois libera o resultado para a exibio na
tela.

Por dentro dos termos: string = conjunto de caracteres dentro de uma mesma varivel.
Exemplo:
Algoritmo exemplo;
Declare wnome:Literal;
INICIO
ESCREVA NOME ..:;
LEIA wnome;
ESCREVA "Seu nome ",
FIM;

NOME;

Quando estudamos lgica algortmica no nos preocupamos em que coordenada ou


posio a informao ser exibida, mas sim com o fato de que deve ser dado o comando
de sada dos dados.
No exemplo acima, teremos o contedo da varivel NOME exibido no vdeo logo aps
a mensagem Seu nome , como mostra a ilustrao abaixo.
NOME ..: Karla Silva
Seu nome Karla Silva

Manipulaao de valores
1)

Dados 2 nmeros digitados via teclado, faa um algoritmo capaz de exibir a soma deles no vdeo.
Algoritmo soma;
Declare X:Inteiro;
Y:Inteiro;
SOMA:Inteiro;
Inicio
Leia X;
Leia y;
SOMA := X + Y;
Escreva SOMA;
Fim
Comentrio

Na soluo acima, declaramos 3 variveis de memria. X e Y foram criadas para


armazenar os dois nmeros que seriam digitados pelo usurio, e SOMA serviu para
armazenar o resultado final da operao com essas duas variveis.

Mas quase sempre existe mais de uma maneira de solucionarmos um problema, no ?


Com algoritmos no diferente. Tente repensar o algoritmo acima utilizando apenas 2
variveis, em vez de 3 ! Como voc pode observar, existem no mnimo duas solues
para este problema:
Algoritmo soma;
Declare X:Inteiro;
Y:Inteiro;
SOMA:Inteiro;
Inicio
Leia X;
Leia y;
X := X + Y;
Escreva X;
Fim

Ou ainda:
Algoritmo soma;
Declare X:Inteiro;
Y:Inteiro;
SOMA:Inteiro;
Inicio
Leia X;
Leia y;
Y := X + Y;
Escreva Y;

13

Fim

Qual a soluo mais eficiente das duas?


Somente o fato de economizar uma varivel torna qualquer uma dessas solues bem
mais eficiente que a primeira. O mesmo caso, sem precisar utilizar as variveis para
guardar o resultado, agiliza ainda mais o processamento. Mas este caso deve ser
utilizado s quando voc no precisar do valor resultante da operao.
Algoritmo soma;
Declare X:Inteiro;
Y:Inteiro;
SOMA:Inteiro;
Inicio
Leia X;
Leia y;
Escreva (X+Y);
Fim

Conceitos Fundamentais
Contador x Acumulador
Estes nomes so dados a expresses que realizam adio de dados, porm, no primeiro
caso, CONTADOR, a expresso de adio que contabiliza valores fixos e
predeterminados. No segundo caso, ACUMULADOR, a expresso de adio que
contabiliza valores variveis.
Exemplo de Contador:
QtdFem := QtdFem + 1 (note que o valor adicionado a quantidade de femininos ser
sempre 1)
Exemplo de Acumulador:
SomaIdade := SomaIdade + Idade (note que o valor adicionado a soma das idades
ser varivel)
Observao: na maioria das vezes, estes elementos so iniciados com o 0 (zero).

Percentuais
Encontramos algumas dificuldades quando tratamos estes temas. Aqui daremos algumas
regras bsica para que voc se sinta a vontade no momento do clculo.
Encontrando um valor percentual:

Veja esta continha simples


50 bolas

100 %

25 bolas

x %

(50 = Todo)
(25 = Parte do Todo)

Chegaremos a concluso:
X % = 25 x

100 / 50

Estas informaes nos levam a frmula:


14

<perc> := < Parte do Todo> * 100 / < Todo>


Encontrando um valor final aps aplicao do percentual:

<Novo valor> := <valor anterior> * 1,<valor do percentual>;


Ex.: adicionar 5 % sobre o salrio e informar o valor do novo salrio.
Nsal := Salario * 1,05;
Encontrando um valor adicionado percentualmente a uma varivel:

<Novo valor> := <valor anterior> * 0,<valor do percentual>;


Ex.: adicionar 5 % sobre o salrio e informar o valor acrescido ao salrio.
Reajuste := Salario * 0,05;
Observao: quando voc no sabe o valor a ser aplicado pois vem dentro de uma
varivel, no podemos fazer a aplicao literal do que explicamos neste tpico, mas
precisamos traduzir em termos de programa este processo. Vamos fazer os mesmos
exemplos anteriores, mas imaginando que o percentual vir em variveis.
a) Nsal := Salario * (1 + perc / 100);
b) Nsal := Salario * (perc / 100);

Maior Valor
Existiro momentos em que voc sentir necessidade de identificar o maior elemento
dentro de um conjunto de dados processados. S existe uma forma de sabermos qual o
maior valor: comparando as grandezas do conjunto. Para descobrirmos qual ser o
maior elemento, inicializaremos uma varivel, que armazenar o maior valor do
conjunto, com um valor bem pequeno para a situao, e, cada dado existente no
conjunto iremos comparar com esta dita varivel. Caso o valor encontrado seja superior,
este ser colocado como contedo da varivel maior, j que este novo dado representa a
maior grandeza neste momento do processamento.
Encontrando o maior valor dentro de um conjunto:

Obs.: para entender melhor esse exemplo, bom estar familiarizado com a estrutura de
repetio comentada mais adiante.
Algoritmo
maior;
Declare MAIOR_ID:Inteiro;
Idade:Inteiro;
Cont:Inteiro;
Inicio
MAIOR_ID := 0;
Para cont := 1 at 10 Faa
Inicio
Leia Idade;
Se Idade > MAIOR_ID ento
Inicio
MAIOR_ID := Idade;
Fim
Fim
Escreva A maior idade , MAIOR_ID;
Fim

15

Menor Valor
De igual forma iremos trabalhar para encontrar o elemento que possui o menor valor.
Para tanto, iremos inicializar uma varivel, que armazenar o menor valor do conjunto,
com um valor bem alto adequado para a situao, e, cada dado existente no conjunto
iremos comparar com esta dita varivel. Caso o valor encontrado seja inferior, este ser
colocado como contedo da varivel menor, j que este novo dado representa a menor
grandeza neste momento do processamento.
Encontrando o menor valor dentro de um conjunto:
Algoritmo
Menor;
Declare menor_ID:Inteiro;
Idade:Inteiro;
Cont:Inteiro;
Inicio
menor_ID := 999;
Para cont := 1 at 10 Faa
Inicio
Leia Idade;
Se Idade < Menor_ID ento
Inicio
menor_ID := Idade;
Fim
Fim
Escreva A menor idade , Menor_ID;
Fim

Estruturas Condicionais
Sabemos que as linhas de um programa estruturado so executadas de cima para baixo
de forma seqencial (na orientao ao objeto, apenas os mtodos seguem este conceito).
Mas freqentemente precisamos mudar este curso natural de acordo com decises a
serem tomadas.
Por exemplo, imagine se dentro de um conjunto de alunos voc desejasse verificar a
quantidade de homens. S existiria uma forma para sabermos o resultado: fazendo uma
pergunta sobre se os dados processados continham na varivel SEXO o contedo igual a
M.
O comando que realiza esta pergunta o SE, que possui trs situaes bem definidas
dentro da programao: Estrutura Condicional Simples, Composta ou
Encadeadas(Ninhos de SEs).

Estrutura Condicional SE (Smples)


Se <condio> ento
inicio
<sequncia de comandos>;
Fim
<condio> -

Expresso lgica qualquer.

<sequncia de comandos> So comandos que sero executados caso o resultado da


expresso lgica seja verdadeira. Esses comandos devem ser escritos
entre as delimitaes da gerncia do comando, ou seja, entre as palavras
Incio e fim.

Em tempo de execuo, se a expresso lgica retornar verdadeiro ento a seqncia de


comandos ser executada.
Para fixar esta idia, tente depurar o seguinte algoritmo:
Algoritmo

exemploSE1;

16

DECLARE

Idade, Numrico, 3
Nome, Caracter , 35
Sexo, Caracter , 1

Inicio
Leia Nome;
Leia Sexo;
Leia Idade;
Se Sexo = M ento
Inicio
Escreva "A idade de ", Nome, , Idade;
Fim
Escreva "Fim da transacao";
Fim

Estrutura Condicional SE (Composta)


Se <condio> ento
Inicio
<sequncia de comandos 1>;
Fim
seno
inicio
<sequncia de comandos 2>;
Fim
Onde:

<condio> -

Expresso lgica qualquer.

<sequncia de comandos 1> So comandos quaisquer que sero executados caso o


resultado da expresso lgica seja verdadeira (V).
<sequncia de comandos 2> So comandos quaisquer que sero executados caso o
resultado da expresso lgica seja falsa (F)
Seno -

Variao do comando, para atender o tratamento de informao que no foi


contemplada na <condio>, por ser falso o resultado. S deve ser
utilizado para otimizar ou se precisar tratar a negativa da <condio>.

Para fixar esta idia, tente depurar o seguinte algoritmo:


Algoritmo
DECLARE

exemploSE2;
Idade: Inteiro;
Nome : Literal;
Sexo : Literal;

Inicio
Leia Nome;
Leia Sexo;
Leia Idade;
Se Sexo = M ento
Inicio
ESCREVA "A idade de ", Nome, , Idade, Sexo Masculino;
Fim
seno
Inicio
SE Sexo = F ENTAO
Inicio
ESCREVA "A idade de ", Nome, , Idade, Sexo Feminino;
Fim
Fim
Escreva "Fim da transacao";
Fim

Estrutura Condicional SE (Encadeada)


Aqui vale comentar que esta estrutura no algo preestabelecido, mas sim, uma
estrutura formada de vrias condies, separando informaes e dando os tratamentos
de acordo com a necessidade da questo. Abaixo segue um modelo hipottico de uma
estrutura SE (Encadeada).
Se

<condio 1>

ento

17

Inicio
<sequncia de comandos 1>;
Se <condio 2> ento
Inicio
<sequncia de comandos 2> ;
Fim
Fim
Seno
Inicio
Se <condio 3> ento
Inicio
<sequncia de comandos 3> ;
Fim
Seno
Inicio
<sequncia de comandos 4> ;
Fim
<sequncia de comandos 5>;
Fim
Fim

Para exemplificarmos melhor, vejamos o exemplo:


1) Receber dois nmeros (Num1 e Num2).
2) Realize a soma dos dois valores.
2.1) Caso a soma seja maior que zero, mostrar na tela o valor da soma e a mensagem:
valor positivo;
2.2) Caso contrrio, verifique:
2.2.1) se o valor calculado igual a zero. Se for, informar "valor igual a zero", seno;
2.2.2) informar, "valor negativo". (De qualquer maneira, em 2.2, exibir os dois nmeros
envolvidos na soma).
Algoritmo
Declare

PositivoNegativo;
Num1:Inteiro;
Num2:Inteiro;
SOMA:Inteiro;

Inicio
Leia Num1, Num2;
SOMA:= Num1 + Num2;
Se SOMA > 0 ENTAO
Inicio
Escreva SOMA, Valor Positivo;
Fim
Seno
Inicio
Escreva num1, num2;
SE SOMA = 0 ento
Inicio
Escreva "Valor Igual a Zero";
Fim
Seno
Inicio
Escreva "Valor Negativo";
Fim
Fim
Fim

Sobre esta soluo, importante salientar o seguinte:

Note que a esttica, apesar de no influenciar no resultado da execuo do programa,


de extrema importncia para o bom entendimento do mesmo. Perceba que todos os comandos
subordinados ao primeiro SE ficam descolados na mesma margem. Apenas a clusula
SENAO fica na mesma margem do SE. O mesmo ocorre com o segundo SE e com todos os
que vierem. A isto damos o nome de EDENTAO.

Veja que o comando Escreva num1, num2 executado independente da condio do


segundo SE. por isto que eles foram escritos aps o SENO do primeiro SE.

18

Exerccios de Aprendizagem
1) Dados 2 nmeros digitados via teclado, faa um algoritmo capaz de exibir no vdeo o maior deles.
Algoritmo maior;
Declare X:Inteiro;
Y:Inteiro;
Inicio
Leia X;
Leia Y;
Se X > Y Ento
Inicio
Escreva X;
Fim
Seno
Inicio
Escreva Y;
Fim
Fim
2) Dados 3 nmeros distintos, digitados via teclado, faa um algoritmo capaz de exibir no vdeo o maior
deles.
Algoritmo maior;
Declare X:Inteiro;
Y:Inteiro;
Z:Inteiro;
Inicio
Leia X;
Leia Y;
Leia Z;
Se (X > Y) E (X > Z) Ento
Inicio
Escreva X;
Fim
Seno
Inicio
Se (Y > Z) E (Y > X) Ento
Inicio
Escreva Y;
Fim
Seno
Inicio
Escreva Z;
Fim
Fim
Fim
Comentrio:

Note que, para descobrirmos qual o maior entre trs nmeros, precisamos codificar 2
comandos SE encadeados. Se fossem 4 variveis, seriam 3 SEs.

3) Dados 2 nmeros distintos digitados via teclado, faa um algoritmo capaz de exibi-los em ordem
crescente.
Algoritmo Ordenacao;
Declare A:Inteiro;
B:Inteiro;
Inicio
Leia A;
Leia B;
SE A > B Ento
Inicio
Escreva B, A;
Fim
Seno
Inicio
Escreva A, B;
Fim
Fim

19

Como voc solucionaria este problema se tivssemos de utilizar apenas um comando


ESCREVA ?
A primeira imagem que nos vem mente que seria impossvel, tendo em vista que
uma informao ao ser colocada em uma varivel simples ir ocupar o lugar da
informao j existente na outra varivel. Mas em informtica podemos utilizar todas as
tcnicas disponveis para solucionarmos um problema, evitando solues extensas ou
complicadas.
O recurso que vamos dispor nesse momento a utilizao de uma varivel auxiliar.
Varivel auxiliar aquela que ns utilizamos como apoio. Veja que para realizar a troca
de dados exposta a seguir, s com esse recurso.
Algoritmo
Declare
Inicio
Leia
Leia

troca;
A:Inteiro;
B:Inteiro;
X:Inteiro;

A;
B;

Se A > B Ento
Inicio
X := A;
A := B;
B := X;
Fim
Escreva A , B;
Fim
Comentrio:

Para economizarmos comandos ESCREVA, observe que invertemos os valores de A e B


toda vez que a varivel A fosse maior que B. Assim, independente dos valores de A e
B, sempre exibiremos A e B nesta ordem. Para propiciar esta inverso utilizamos uma
varivel auxiliar X.

Se voc no entendeu muito bem o porque da varivel X ter sido utilizada no algoritmo
acima, preste bastante ateno agora:
Deseja-se trocar os valores de duas variveis: A e B, por exemplo.
A

B
10

15

Se fizermos simplesmente A := B, apagaremos o valor original de A colocando o


contedo de B em seu lugar. Assim, as variveis ficariam com o valor 15. Para
viabilizar o processo da troca, temos que recorrer a uma varivel auxiliar que conter
provisoriamente o valor de uma das variveis a fim de devolv-lo para a outra.

2 passo

X:=A

10
1 passo

3 passo

15

A:=B
B:=X

10

20

Estruturas de Repetio
Algumas vezes, sentimos necessidade de escrevermos repetidamente o mesmo
comando. Em alguns casos, a quantidade de vezes que temos de escrever
indeterminada ou depende de uma condio.
Existem algumas formas de definir as estruturas de repeties. Algumas lembram at
esta ou aquela linguagem. Em nosso curso iremos no ater a duas estruturas, as quais
podemos representar tranqilamente em qualquer ambiente de programao.
As estruturas so: Enquanto e Para. Cada uma delas possui uma caracterstica que lhe
peculiar. normal ouvir a pergunta: quando iremos utilizar esta ou aquela estrutura?.
A resposta simples, pois depende da habilidade de cada um. Existem momentos que
podemos resolver a mesma questo com todas as duas formas, mas existem momentos
que no possvel. Por isso o segredo encontra-se no exercitar.
Bem, vamos desmistificar estas estruturas.

Comando ENQUANTO
O comando ENQUANTO prende um trecho do programa a um lao (looping), ou seja,
podemos determinar que um certo bloco de comandos seja executado repetidamente
enquanto uma condio for verdadeira.
.
Enquanto <condio> Faa
Inicio
< comandos >;
Fim

{ se<condio> for verdadeira}


{ sero executados os comando deste bloco}

Esta estrutura possui duas formas de aplicao dentro de uma lgica:


a)
b)

Testando sempre uma condio de sada no prprio comando, ou;


Deixando este controle de sada da estrutura por conta de uma condio executada
internamente.

1o. Caso
S entra no lao de repetio, se e somente se, a condio for verdadeira. Para sair da
repetio, a condio tem que ser satisfeita.
Enquanto <condio> Faa
incio
< comandos > ;
Fim

2o. Caso
Entra no lao independente da condio, mas para sair, a condio 2 tem que ser verdadeira.
Caso a condio no seja satisfeita, dizemos que o programa entrou em loop.
Enquanto <condio> Faa
incio
Se < condio 2 > Ento
Incio
sair
Fim
< comandos > ;
Fim;

21

Comando PARA
O comando PARA executa um bloco de comandos, gerenciando esta execuo em cima
de uma contagem. Enquanto ela no for satisfeita, ou seja, o valor final no for
ultrapassado, os comandos do bloco sero repetidos a cada nova verificao da
condio e obteno de resultado falso;
Para <var> := <valor_inicial>
Faa
Inicio
< comandos > ;
Fim

at

<Valor_final> incr[+/- <valor>]

Se voc utilizar este comando, ir poupar a inicializao da varivel, pois esta


assumir como valor inicial o declarado como <valor_inicial>; no precisar contar a
quantidade de vezes que o lao foi executado, pois esta estrutura tem como uma de
suas caractersticas, o adicionar um determinado valor a varivel <var> baseado no
valor utilizado como incremento (+) ou decremento (-) utilizado no parmetro incr[...]
estabelecendo uma contagem at que o valor declarado como <valor_final> seja
alcanado e realizando a ltima execuo dos comandos existentes entre o Inicio e o
Fim. Se o parmetro Incr [ +/- valor] for omitido, o programa assumir por Default
sempre o incremento de + 1.
Vamos utilizar um exemplo para esclarecer cada uma dessas instrues dentro de suas
respectivas estruturas de repeties. Digamos que temos de fazer o computador escrever
o somatrio de 5 idades informadas na tela. Usaremos os comandos aprendidos at
agora.
Com a estrutura ENQUANTO
Algoritmo
Declare widade:Inteiro;
Wcont:Inteiro;
Wsomaid:Inteiro;
Inicio
Wcont := 0;
Wsomaid := 0;
Leia widade;
Enquanto wcont < 5 Faa
Inicio
Wcont
:= wcont + 1;
Wsomaid := wsomaid + widade;
Leia widade;
Fim
Escreva O total das idades , wsomaid;
Fim

Com a estrutura PARA


Algoritmo
Declare widade:Inteiro;
Wcont:Inteiro;
Wsomaid:Inteiro;
Inicio
Wsomaid := 0;
Para wcont := 1 at 5 Faa
Inicio

22

Leia widade;
Wsomaid := wsomaid + widade;
Fim
Escreva O total das idades , wsomaid;
Fim

Exerccios de Aprendizagem
1)

Elabore um algoritmo capaz de exibir todos os nmeros inteiros, desde o 1 at o 10.


Algoritmo exemplo1;
Declare NUMERO:Inteiro;
Inicio
NUMERO := 1;
Enquanto NUMERO <= 10 Faa
Inicio
Escreva NUMERO;
NUMERO := NUMERO + 1;
Fim
Fim
Comentrio:

2)

Elabore um algoritmo capaz de receber um nmero e, em seguida, listar todos os nmeros de 1 at


ele.
Algoritmo
exemplo2;
Declare NUMERO:Inteiro;
LIMITE:Inteiro;
Inicio
Leia LIMITE;
NUMERO:=1
ENQUANTO NUMERO <= LIMITE FAA
Inicio
Escreva NUMERO;
NUMERO := NUMERO + 1;
Fim
Fim
Comentrio:

3)

Note que, utilizamos uma varivel numrica chamada NUMERO que recebeu,
inicialmente, o valor 1, e da em diante foi ciclicamente incrementada de 1
(NUMERO:=NUMERO+1) at que a condio imposta pelo ENQUANTO tornasse
falsa.

Este programa similar ao anterior. A nica sofisticao implementada foi a


flexibilizao do limite. Isto tornou o algoritmo mais genrico, servindo para listar a
seqncia de qualquer nmero, e no apenas a do 10. Para alcanar esta sofisticao,
foi necessrio o uso da varivel LIMITE que de fato limitou o lao do Enquanto ao seu
contedo, contedo este que fora recebido logo no incio da execuo do programa,
com o comando Leia LIMITE.

Sofisticando ainda mais o programa da 3 questo, vamos fazer com que, alm de listar todos os
nmeros de 1 at um determinado nmero digitado via teclado, ele mostre a soma de todos esses
nmeros no final da listagem.
Algoritmo
exemplo2;
Declare NUMERO :Inteiro;
LIMITE :Inteiro;
SOMA
:Inteiro;
Inicio
Leia LIMITE;
NUMERO := 1;
SOMA
:= 0;
Enquanto NUMERO <= LIMITE Faa
Inicio
Escreva NUMERO;
SOMA
:= SOMA + NUMERO;
NUMERO := NUMERO + 1;
Fim
Escreva SOMA;
Fim
Comentrio:

Perceba que, para acumular os valores parciais assumidos pela varivel NUMERO,
precisamos lanar mo de uma outra varivel, a qual chamamos de SOMA. Assim, a
cada ciclo do Enquanto acrescentamos ao valor de SOMA o novo valor de NUMERO
(SOMA :=SOMA+NUMERO).

23

Observe tambm que ao declaramos SOMA, na prtica das linguagens, temos que tomar
o cuidado dela ter capacidade de absorver o resultado da expresso. fcil entender por
que! Como SOMA ser um Acumulador dos valores de NUMERO, ela sempre ter
valores maiores que NUMERO, podendo seu montante, exceder a capacidade definida
em NUMERO.

Tcnicas de Algoritmizao
Como dissemos anteriormente, no h qualquer receita de bolo para resolvermos um
determinado problema atravs da algoritmizao. Cada caso um caso bem particular.
Entretanto, alguns procedimentos sistemticos podem auxiliar a elucidao de alguns
problemas.

Dicas sobre Resoluo de Algoritmos


Nunca d um algoritmo por encerrado antes de testar todas as possibilidades
condicionais. S o teste garante a eficcia do programa. Teste sempre as situaes
extremas. Em algoritmos utilize diversas condies; teste ao menos uma situao que
se enquadre em cada condio prevista pelo algoritmo.
No tente decorar algoritmos. Cada caso um caso, por mais que se assemelhem.
H sempre uma forma melhor de fazer a mesma coisa. Aps o ZERO ERRO, examine
se o seu algoritmo eficiente, isto , se ele no usa variveis demais, se ele facilmente
compreendido por uma terceira pessoa, se os nomes de variveis so auto-expressivos,
se o usurio no ter dificuldade em utiliz-lo, e se o computador no passar muito
tempo para process-lo (performance).
No tente arquitetar, ainda que mentalmente, a soluo de um problema sem antes
entender perfeitamente o que pede no enunciado.
No inicie a algoritmizao sem ter claramente a soluo arquitetada na sua cabea.
No deixe a curiosidade afetar a sua criatividade. Durante o desenvolvimento do seu
algoritmo, no pesas orientao sobre o como fazer, sem antes ter chegado a algum
resultado, ainda que errado.
Nunca desista de uma soluo. Conclu-a. Chegue at o fim. Teste-a, e somente quando
os testes sinalizarem a sua ineficcia, tente modific-la ou refaz-la.

Tcnica para extrair os dados de um enunciado


Quando nos deparamos com um enunciado pequeno, nos sentimos a vontade para
resolve-lo pois os dados existentes neste so poucos. Porm, quando nos deparamos
com um enunciado mais complexo, existe a tendncia natural de pensarmos que algo
muito difcil de resolver. Mas, por incrvel que parea, o maior problema encontra-se em
nosso lidar com o desafio e o encarar friamente. Justamente para melhor lhe capacitar
a interpretar um texto que estamos te dando esta dica.

24

Todos os programas possuem 3 fases bem definidas e nestas, os seus dados necessrios.
Quando voc tiver domnio sobre estas trs fases, o algoritmo fluir naturalmente.
Procure identificar a 1 fase que a da identificao dos dados de entrada; a 2 fase e a
que verifica os dados relativos ao processamento (condies de encerramento, clculos,
mensagens, etc; a 3 fase aquela aonde voc descobre quais os dados de sada, ou seja,
aps o processamento, aonde iro ser colocado estes dados?
Vamos exemplificar.
Elaborar um algoritmo que receba a matrcula, o nome e o salrio de 50
funcionrios, imprimindo ao final, o somatrio dos salrios e a mdia salarial.
Vamos por em prtica nosso aprendizado.
1 fase (Dados de Entrada)
Ser lido na tela a MATRICULA, NOME E SALRIO;
Leia Matricula;
Leia Nome;
Leia Salrio;
2 fase (Processamentos)
Sero processados dados de 50 funcionrios. (isto implica dizer que
precisaremos de uma varivel para contabilizar e gerenciar este
processo); O melhor comando para gerenciar um valor predefinido
o PARA.
Cada elemento que for processado, ser acumulado o valor do salrio
(somatrio dos salrios).
AcumSal := AcumSal + Salrio;
Observe que para clculo da mdia salarial necessrio sabermos o
somatrio dos salrios e dividir o mesmo pela quantidade de pessoas
que os possuem. Como sabemos que existiro 50 pessoas, para
encontrar a mdia super simples.
Calcular a mdia dos salrios.
Media := AcumSal / 50;

3 fase (Dados de Sada)


Dar sada no valor da mdia calculada.
Escreva A mdia salarial , Media;
Montando o Algoritmo
Algoritmo exemplo;
Declare AcumSal:Real;
Cont
:Inteiro;
Salrio: Real;
Media :Real;
Nome
:Literal;
Inicio
AcumSal := 0

25

Para cont := 1 at 50 faa


Inicio
Leia Matricula;
Leia Nome;
Leia Salrio;
AcumSal := AcumSal + Salrio;
Fim
Media := AcumSal / 50;
Escreva A mdia Salarial , Media;
Fim

Faclimo, no!
Com estas competncias adquiridas nesse mdulo, voc deve exercitar e chegar num
estgio de habilidade que lhe permitir obter sucesso nas demais competncias que
sero ministradas a voc em sala de aula.
Lembre-se: Os exerccios que esto na apostila dedicada s para este fim, devem ser
praticados e esgotados, pois isto o far crescer em situaes as mais adversas dentro do
mundo da programao.
Sucesso a todos!

Desafios Resolvidos

Como fazer para descobrir a quantidade de elementos iguais ao


maior do conjunto?
Simples. Primeiro, voc dever encontrar o maior;
Em segundo lugar, verificar quais os elementos so iguais a
este maior encontrado.
Aqui damos uma dica. Ao encontrar um elemento cujo valor
seja superior quele que representa o maior, temos duas tarefas
a fazer. Uma atribuir o valor do elemento para ser o maior e
em seguida inicializar a quantidade com o numeral 1 (um).
Mas porque 1 (um)? Pelo fato de que acabamos de encontrar
um nmero maior e com certeza, nesse momento ele nico.
Como fazer para contabilizar todos os iguais? A prpria
pergunta j a resposta: cada vez que voc encontrar algum
valor igual ao maior, contabilizaremos mais um.
Vamos ao Exemplo?
Elaborar um algoritmo que receba idade de 50 pessoas e
informe ao final, a maior delas e quantas pessoas a possuem.

Algoritmo resolvidos1;
Declare
Ma_idade:Inteiro;
Qt_maid :Inteiro;
Cont
:Inteiro;
Widade :Inteiro;
Inicio

26

Ma_idade := 0;
Qt_maid := 0;
Para cont := 1 at 50 faa
Inicio
Leia widade;
Se widade > Ma_idade ento
Inicio
Ma_idade := widade;
Qt_maid := 1;
Fim
Seno
Inicio
Se widade = Ma_idade ento
Inicio
Qt_maid := Qt_maid + 1;
Fim
Fim
Fim
Escreva A maior idade ..........................: , Ma_idade;
Escreva Quantidade de pessoas com a maior idade...: , Qt_maid;
Fim

Como fazer para descobrir a quantidade de elementos iguais aos


dois maiores elementos do conjunto?
Agora ficou mais fcil. Precisamos atentar para um pequeno
detalhe: quando encontrarmos um elemento que superior ao
primeiro, este ltimo passa a ser o segundo maior. Para no
perdermos o contedo original do maior, passaremos seus
contedos para as respectivas variveis e depois procederemos
naturalmente colocando o elemento maior no seu referido
lugar. Vejamos parte do cdigo a seguir.
Ma_idade2
Qt_maid2
Ma_idade1
Qt_maid1

:=
:=
:=
:=

Ma_idade1;
Qt_maid1;
widade;
1;

Percebeu como simples? Isso fazemos em todos os


momentos em que queremos verificar o maior e o segundo
maior. No demais tomar cuidado com o segundo maior, pois
apesar do valor as vezes, ser inferior ao primeiro, nada garante
que ele o seja em relao ao segundo. Desta forma, precisamos
fazer a comparao para termos certeza.
Vamos ao Exemplo?
Elaborar um algoritmo que receba idade de 50 pessoas e
informe ao final, as duas maiores idades e quantas pessoas as
possuem.

Algoritmo
Declare

Inicio
Ma_idade1
Ma_idade2
Qt_maid1
Qt_maid2
Para cont
Inicio
Leia

Ma_idade1:Inteiro;
Ma_idade2:Inteiro;
Qt_maid1 :Inteiro;
Qt_maid2 :Inteiro;
Cont
:Inteiro;
Widade
:Inteiro;
:=
:=
:=
:=
:=

0;
0;
0;
0;
1 at

50

faa

widade;

27

Se widade > Ma_idade1 ento


Inicio
Ma_idade2 := Ma_idade1;
Qt_maid2 := Qt_maid1;
Ma_idade := widade;
Qt_maid := 1;
Fim
Seno
Inicio
Se widade = Ma_idade1 ento
Inicio
Qt_maid1 := Qt_maid1 + 1;
Fim
Seno
Inicio
Se widade > Ma_idade2 ento
Inicio
Ma_idade2 := widade;
Qt_maid2 := 1;
Fim
Seno
Inicio
Se widade = Ma_idade2 ento
Inicio
Qt_maid2 := Qt_maid2 + 1;
Fim
Fim
Fim
Fim
Fim
Escreva A maior idade ..........................:
Escreva Quant. de pessoas com a maior idade.......:
Escreva A segunda maior idade ..................:
Escreva Quant. de pessoas com Seg. maior idade....:
Fim

,
,
,
,

Ma_idade1;
Qt_maid1;
Ma_idade2;
Qt_maid2;

28

29

Você também pode gostar