Você está na página 1de 43

Algoritmos

Algoritmos
Sumrio
Sumrio...........................................................................................................................................................................2
ntroduo........................................................................................................................................................................3
As dificuldades de Programar..........................................................................................................................3
A metodologia de aprendizagem.......................................................................................................................4
Variveis x Dados............................................................................................................................................................5
Uso das Variveis no Algoritmo........................................................................................................................5
Escolha do dentificador da Varivel.................................................................................................................6
Variveis Numricas........................................................................................................................6
Variveis alfanumricas ou Caractere..............................................................................................7
Variveis Lgicas.............................................................................................................................7
Operador de Atribuio....................................................................................................................7
Linhas de Comentrio
........................................................................................................................................................................8
Declarao de Variveis...................................................................................................................................8
Operadores......................................................................................................................................................8
Operadores Numricos....................................................................................................................8
Concatenao de variveis...............................................................................................................9
Operadores Relacionais ..................................................................................................................9
Operadores Lgicos.......................................................................................................................10
Entendendo Representaes de Sintaxes......................................................................................................................12
Linearizao de Expresses...........................................................................................................................12
Atribuio de Valores a Variveis...................................................................................................................12
Estruturao do Algoritmo..............................................................................................................................................13
Entrada e Sada de Dados.............................................................................................................................13
Comando LEA..............................................................................................................................13
Comando ESCREVA (lista informaes no vdeo).........................................................................13
Construindo os Primeiros Algoritmos:............................................................................................................................15
Estruturas seqenciais...................................................................................................................................................15
Exerccios......................................................................................................................................................................15
Contador x Acumulador..................................................................................................................................17
Percentuais....................................................................................................................................................17
Estruturas Condicionais.................................................................................................................................................18
Estrutura Condicional SE (Smples)...............................................................................................................18
Estrutura Condicional SE (Composta)............................................................................................................19
Estrutura Condicional SE (Encadeada)..........................................................................................................19
Exerccios de Aprendizagem..........................................................................................................................20
Estruturas de Repetio.................................................................................................................................................23
Comando REPTA.........................................................................................................................................23
Comando ENQUANTO..................................................................................................................................23
Comando PARA............................................................................................................................................23
Maior Valor.....................................................................................................................................................24
Menor Valor...................................................................................................................................................24
Exerccios de Aprendizagem..........................................................................................................25
Tcnicas de Algoritmizao............................................................................................................................................26
Dicas sobre Resoluo de Algoritmos............................................................................................................26
Tcnica para extrair os dados de um enunciado.............................................................................................27
Desafios Resolvidos.......................................................................................................................................................28
Escolha...Caso...............................................................................................................................................................30
Variveis Compostas Homogneas................................................................................................................................31
Vetores - Variveis ndexadas Unidimensionais.............................................................................................31
Como declarar um vetor? ..............................................................................................................................31
Para acessar um dado num vetor o que necessrio fazer? .........................................................................32
Como fazer para atribuir um valor a uma ocorrncia do vetor? .......................................................................32
Pgina 2
Algoritmos
Como fazer para atribuir um valor a uma ocorrncia do vetor? .......................................................................32
Como fazer para somar os elementos de um vetor numrico?........................................................................32
Mas para que servem os Vetores ?................................................................................................................34
Trabalhando dois Vetores utilizando o mesmo ndice.....................................................................................35
Exerccios .....................................................................................................................................................35
Ordenao Vetores........................................................................................................................................37
Exerccios .....................................................................................................................................................40
Matrizes.........................................................................................................................................................................40
Como Declarar uma Matrizes?.......................................................................................................................40
Para acessar um dado numa matriz o que necessrio fazer? .....................................................................41
Como fazer para somar os elementos de uma matriz numrica? ...................................................................41
Preencher os elementos da matriz.................................................................................................41
Somar todos os elementos da matriz..............................................................................................41
Somar todos os elementos linha a linha (subtotal por linha)............................................................41
Somar todos os elementos coluna a coluna (subtotal por coluna)...................................................42
Para transferir todos os elementos de uma matriz MAT para outra matriz chamada COPA...........42
Trabalhando um vetor e uma matriz ao mesmo tempo....................................................................................42
Utilizando-se de um vetor auxiliar para resolver um caso................................................................................43
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. P
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 Algoritmos que, um dia, ns mesmos desenvolvemos.
Ora, se somos capazes de desenvolver Algoritmos 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 Algoritmos 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 Algoritmo.
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...).
Pgina 3
Algoritmos
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 Algoritmo.
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 Algoritmo, 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, entrada e sada de dados, vetores, matrizes e por fim, arquivos em disco
magntico.
Mesmo assim, utilizaremos uma linguagem no comercial para aprendermos a manipular o computador.
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 a
nossa prpria linguagem: a lngua portuguesa.
Para facilitar o processo de aprendizagem, dividiremos os temas em 4 etapas com abordagens bem
definidas e utilizaremos a ferramenta VisualG ferramenta de apoio aps cada uma destas etapas, para
amadurecimento dos conceitos.
Pgina 4
Algoritmos
Variveis x Dados
Damos o nome de varivel ao local de memria onde sero armazenados os dados. 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 apelidos (identificadores).
aconselhvel que o nome da varivel seja expressivo, isto , um nome que expresse o que vai ser
armazenado dentro dela.
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
(veremos mais adiante).
Para exemplificarmos melhor, imagine que em um Algoritmo voc precise armazenar certa idade em
algum lugar, para posteriormente decidir se esta idade permite que algum possa requerer a sua carteira
de motorista. Para tanto, tudo o que temos a fazer declarar, em nosso Algoritmo, esta varivel (veremos
mais adiante). Quando declaramos uma varivel, temos que associar a ela algumas caractersticas:
NOME ou DENTFCADOR
TPO
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. Algumas linguagens no exigem sequer a declarao do TAMANHO da varivel (BASC,
CLPPER entre outras).
Uso das Variveis no Algoritmo
O nome a ser associado varivel (ex.: X, Y, KT34), no importante para o computador, pois este
servir apenas como uma mera referncia. Entretanto para outros Programadores que possam vir a
analisar os seus Algoritmos, ou at para voc mesmo aps algum tempo, necessrio que esses nomes
sejam expressivos, simples e objetivos.
Vejamos agora alguns exemplos de identificadores:
SALARIO Um bom nome para varivel que ir armazenar um valor salarial;
CON Um bom nome para varivel que ir registrar uma contagem;
OAL Um bom nome para variveis acumuladoras de somas;
!AANASC 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 n"meros: 1C2, 9ANOS, 100, 4CANTOS, etc...
Ser descont#nuos: DATA NASC, FONE COMERC, etc...
Pgina 5
Algoritmos
Outros requisitos podem aparecer dependendo de cada linguagem. O COBOL, por exemplo, permite
nomes longos para variveis, j o CLPPER, com apenas 10 bytes. O COBOL permite separadores
como hfens, barras, entre outros. Linguagens derivadas do DBASE permitem apenas o UnderLine _
como caractere 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 CLPPER, o MOVE pode ser um bom
identificador.
Outras vezes, a linguagem traz consigo algumas variveis reservadas. Trata-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.
$scol%a 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 identificao ou nomeao de variveis segue algumas regras:
Nomes de variveis no podem ser iguais a palavras reservadas;
Nomes de variveis devem possuir como primeiro caractere uma letra ou sublinhado '_' (os outros
caracteres podem ser letras, nmeros e sublinhado);
Nomes de variveis devem ter no mximo 127 caracteres;
Nomes de variveis no podem conter espaos em branco;
Na sintaxe do Portugus Estruturado, no h diferena entre letras maisculas de minsculas
(NOME o mesmo que noMe).
Exemplo
dentificadores vlidos: NOME, TELEFONE, DADE_FLHO, dadeFilho, NOTA1, Est_Civil
dentificadores invlidos: 3Endereco, Estado Civil, PARA, algoritmo, numero/complemento
Variveis Num&ricas
So variveis que aceitam apenas dados numricos, sejam eles inteiros ou reais (sem ou com casas
decimais respectivamente), o que ser definido junto com a sua declarao no incio do algoritmo.
Ex.: 1200; 10,9; -12,5; 0; etc
Pgina 6
Algoritmos
Variveis alfanum&ricas ou Caractere
So variveis que aceitam contedos de qualquer natureza, portanto: nmeros, letras e smbolos em
geral, no podendo estes nmeros serem utilizados para operaes aritmticas.
Os contedos de variveis do tipo caractere so delimitados por aspas.
Ex.: "MARA JOSE"; "CASA AMARELA"; "123"; "NOMES"
Variveis L'gicas
Este tipo de varivel no permite o registro de nmeros nem de palavras. Uma varivel lgica s
armazena um entre dois valores: VERDADERO ou FALSO.
No importa 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 V ou F.
Em Portugus Estruturado, s existem trs tipos de dados, conforme a tabela abaixo

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: NUMRCO,
CARACTERE e LGCO.
Operador de Atri(ui)*o
Para "colocar um valor em uma varivel dentro de um algoritmo, utilizamos o operador de atribuio. O
operador de atribuio representado por uma seta (<-) apontando para a esquerda.
Exemplo
Peso <- 78.7 // Este comando atribui varivel Peso o valor 78.7.
Nome <- "Joo da Silva" // Este comando atribui varivel Nome o valor "Joo da Silva".
Achei <- FALSO // Este comando atribui varivel Achei o valor FALSO.
importante lembrar que s se pode atribuir s variveis valores do mesmo tipo da varivel. Assim, o
seguinte comando seria invlido:
Exemplo
VAR
salario: REAL
NCO
salario <- "Insuficiente"
Deve estar claro, tambm, que sempre esquerda do comando de atribuio deve haver um (e somente
um) identificador de varivel. Assim, so incorretos os seguintes comandos:
Exemplo "so incorretos
2060 <- NumeroConta
NumeroAgencia+digitoControle <- 2345 + 0
NomeCliente+sobrenome <- "Joo + "Silva
Pgina 7
Algoritmos
Lin%as de Comentrio
Os comentrios so declaraes no compiladas que podem conter qualquer informao textual que voc
queira adicionar ao cdigo-fonte para referncia e documentao de seu Algoritmo.
Uma Linha
So representados por duas barras normais ( // ). Todo o texto que voc digitar aps as duas barras ser
comentrio.
Exemplo
// Este mtodo calcula o fatorial de n...
x <- y; // nicializa a varivel x com o valor de y
!eclara)*o de Variveis
Variveis so palavras que tem um significado bem especfico em um algoritmo. Para que o computador
possa executar comandos que envolvem variveis da maneira correta, ele deve conhecer os detalhes das
variveis que pretendemos usar. Esses detalhes so: o identificador desta varivel e o tipo de valores que
essa varivel ir conter. Precisamos assim, de uma maneira de especificar esses detalhes e comunic-
los ao computador. Para isso devemos declarar nossas variveis logo abaixo da expresso
!"#$ %ue tem a seguinte forma&
Exemplos:
var x: real
y: inteiro
a: caractere
l: logico
Operadores
Como dissemos anteriormente, podemos atribuir a uma varivel o resultado de uma expresso numrica.
Entendemos por expresso numrica um conjunto de operaes aritmticas combinadas entre operandos
e operadores. Mas alm das expresses numricas, podemos escrever expresses dos tipos caractere e
lgica.
Operadores Num&ricos
So elementos (smbolos) utilizados para representar uma operao de cunho aritmtico.
+,-
Operadores unrios, isto , so aplicados a um nico operando. So os operadores aritmticos de
maior precedncia. Exemplos: -3, +x. Enquanto o operador unrio - inverte o sinal do seu operando, o
operador + no altera o valor em nada o seu valor.
\
Operador de diviso inteira. Por exemplo, 5 \ 2 = 2. Tem a mesma precedncia do operador de diviso
tradicional.
+,-,*
,/
Operadores aritmticos tradicionais de adio, subtrao, multiplicao e diviso. Por conveno, * e /
tm precedncia sobre + e -. Para modificar a ordem de avaliao das operaes, necessrio usar
parnteses como em qualquer expresso aritmtica.
MOD
ou %
Operador de mdulo (isto , resto da diviso inteira). Por exemplo, 8 MOD 3 = 2. Tem a mesma
precedncia do operador de diviso tradicional.
^
Operador de potenciao. Por exemplo, 5 ^ 2 = 25. Tem a maior precedncia entre os operadores
Pgina 8
Algoritmos
aritmticos binrios (aqueles que tm dois operandos).
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: + -
O(s+, Caso existam numa mesma sentena operadores de mesma ordem de prioridade, a execuo ser
feita da esquerda para direita.
A <- 2 * 6 / 3
-.
/
Concatena)*o de variveis+
+
Operador de concatenao de strings (isto , cadeias de caracteres), quando usado com dois
valores (variveis ou constantes) do tipo "caractere". Por exemplo: "Rio " + " de Janeiro" = "Rio de
Janeiro".
Para concatenarmos uma varivel, precisamos ter certeza que elas so do tipo caracter, pois se elas
forem numricas, iro provocar uma operao de adio e no de concatenao.
Ex.: B <- 1 + 1 (retornar o valor 2)
C <- "1 + "1" (retornar o valor "11)
Logo, B <> C
Operadores Relacionais
Os operadores relacionais realizam a comparao entre dois operandos ou duas expresses e resultam
em valores lgicos (VERDADERO ou FALSO).
=, <, >,
<=, >=,
<>
Respectivamente: igual, menor que, maior que, menor ou igual a, maior ou igual a, diferente de. So
utilizados em expresses lgicas para se testar a relao entre dois valores do mesmo tipo. Exemplos: 3 =
3 ( 3 igual a 3?) resulta em VERDADERO ; "A" > "B" ("A" est depois de "B" na ordem alfabtica?)
resulta em FALSO.
0 maior que 01 maior ou igual a
2 menor que 21 menor ou igual a
20 diferente de 1 igual a
Exemplos:
Dados A = 3, B = 2, C = 'Jos' e D = 'Jos'
A > B Retorna VERDADEIRO
C = D Retorna VERDADEIRO
NOME = "JOSE" Retorna VERDADEIRO se NOME for exatamente igual a "JOSE"
'()*+ Retorna !E#,",EI#-
.<*. Retorna /"01-
Pgina 9
Algoritmos
Importante& 2o !isu"lg, as compara34es entre strings no diferenciam as letras
mai5sculas das min5sculas6 "ssim, ""78" 9 igual a "abc"6 !alores lgicos obedecem :
seguinte ordem& /"01- < !E#,",EI#-6
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:
"MARA">"ANA" Retorna VERDADEIRO
"MARA"<"MARO" Retorna VERDADEIRO
No h porque comparar variveis lgicas, a no ser atravs de igualdade, pois qual a necessidade de
sabermos se VERDADERO maior que FALSO?
Operadores L'gicos
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 S$3O da pessoa deve ser igual a
feminino ("F) e a I!A!$ 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 de erecida, necessrio que sejas do sexo feminino e sua idade esteja na
faixa etria solicitada. Para o Algoritmo, o raciocnio exatamente igual. Voc ter expresses lgicas e
s ser tomada alguma deciso se for obtido como resposta final o valor VERDADERO
(VERDADERO).
Para que gerenciarmos esta etapa da lgica, utilizaremos os operadores a seguir:
nao
Quando queremos inverter o resultado de uma condio ou expresso lgica (negar)
Operador unrio de negao. nao VERDADERO = FALSO, e nao FALSO = VERDADERO.
Tem a maior precedncia entre os operadores lgicos.
ou
A sentena que contiver este operador ser verdadeira se pelo menos uma das expresses nela
contida retornar valor verdadeiro.
Operador que resulta VERDADERO quando um dos seus operandos lgicos for verdadeiro.
e
A sentena que contiver este operador ser verdadeira se as expresses nela contida resultarem
valores verdadeiros.
Operador que resulta VERDADERO somente se seus dois operandos lgicos forem verdadeiros.
xou
Operador que resulta VERDADERO se seus dois operandos lgicos forem diferentes, e FALSO
se forem iguais.
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 "A4$LA V$R!A!$ a seguir para entendermos melhor.
$ OU
V$R!A
!$IRO
V$R!A
!$IRO
V$R!A
!$IRO
V$R!A
!$IRO
V$R!A
!$IRO
V$R!A
!$IRO
5ALSO V$R!A 5ALSO 5ALSO V$R!A V$R!A
Pgina 0
Algoritmos
!$IRO !$IRO !$IRO
V$R!A
!$IRO
5ALSO 5ALSO V$R!A
!$IRO
5ALSO V$R!A
!$IRO
5ALSO 5ALSO 5ALSO 5ALSO 5ALSO 5ALSO
Exemplos:
X = 90 E Z = 100
A >= 67 OU A <= 200
NOME <> "ANA" E NAO NOME = "MARA"
NOME <> "ANA" E (NAO NOME="MARA" OU NOME="PEDRO")
Pgina
Algoritmos
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 VAR, ns
utilizamos algumas nomenclaturas e simbologias que voc, certamente, encontrar em qualquer livro
sobre quaisquer linguagens.
Assim, vamos elucidar algumas delas:
Repetindo o comando,
!A" #$ome da %ari%el&' #tipo&
< > Delimita o espao reservado para inserirmos um parmetro do comando. A maioria
dos comandos de todas as linguagens apresentam parmetros. Os parmetros
direcionam o objetivo de um comando especfico.
Lineariza)*o de $6press7es
Para a construo de algoritmos que realizam clculos matemticos, todas as expresses aritmticas devem ser
linearizadas, ou seja, colocadas em linhas, devendo tambm ser feito o mapeamento dos operadores da aritmtica
tradicional para os do Portugus Estruturado.
Atri(ui)*o de Valores a Variveis
At agora, vimos conceitos e exemplos de variveis. Agora vamos aprender a utiliz-las em algoritmos.
Representaremos o comando de atri(ui)*o pela combinao de dois smbolos do teclado, que so 28 .
Este smbolo representar a atribuio de um dado a uma varivel.
#%ari%el& #- #dado a ser arma(enado&
Exemplos:
NOME 2- "JOO" Dados CARACTERE tm ue !ir entre as"as
DADE 2- 25 Dados N#MERICO n$o "re%isam de as"as
ALTURA 2- 1,67 V&rgula de%imal 'linguagens %omer%iais adotam o "onto(
DEPENDE 2- FALSO Dados )O*ICO de!em !ir entre "ontos
Tambm podemos atribuir, a uma varivel, o valor de outra:
Exemplo: ALTURA 2- DADE a !ari+!el A)T#RA re%e,e o !alor de IDADE
Tambm podemos atribuir o resultado de uma expresso numrica, ou de outro tipo, a uma varivel:
SOMA 2- QUOEF * (VALOR + 10) / DVSOR
Pgina 2
Algoritmos
Estruturao do Algoritmo
Existem alguns formatos para organizar um algoritmo, porm adotaremos o mais global, facilitando assim
o aprendizado. O formato bsico do pseudocdigo na ferramenta VisualG o seguinte:
algoritmo "semnome"
// Funo :
// Autor :
// Data :
// Seo de Declaraes
Var {Local para declarao das variveis}
inicio
// Seo de Comandos
fimalgoritmo
$ntrada e Sa#da de !ados
At aqui ns vimos como atribuir um valor a uma varivel dentro de um Algoritmo. Mas este valor foi
atribudo pelo prprio Algoritmo, no ?
Mas como fazer com que um Algoritmo, 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 de vdeo?
para isto que existem, em todas as linguagens de programao, os comandos de entrada e sada de
dados. No caso do algoritmo, estes comandos so os seguintes: leia (entrada), $screva (sada - tela).
Comando LEIA
<varivel1...n> - Lista de variveis a receberem os dados digitados pelo usurio.
leia (NomeCliente+Sobrenome)
Algoritmo "semnome"
Var wnome !A"A!#$"$
%i&a&e '(#$'"O
ini)io
*$'A +wnome, wi&a&e,
//se-uen)ia &e )oman&os
.imalgoritmo
A execuo do comando L$IA provoca uma pausa na execuo do Algoritmo, aonde o computador fica
em estado de espera, aguardando a digitao de algo que deva ser atribudo s variveis especificadas
na sintaxe do comando.
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 DADE.
Comando $SCR$VA 9lista informa)7es no v#deo:
Pgina 3
Algoritmos
O4S+, Pelo menos um dos parmetros deve ser informado quando da utilizao deste comando.
Exemplo
Escreva ("Digite seu nome: ")
Leia (nome)
Escreva ("Digite sua agencia: ")
Leia (NumeroAgencia)
Escreva ("Digite sua conta: ")
Leia (NumeroConta)
Deve estar claro que sempre direita do comando leia haver um identificador de varivel. Assim, so
incorretos os seguintes comandos:
Exemplo "so incorretos
leia (NumeroConta+60)
leia (12345)
Exemplo:
Algoritmo "semnome"
Var wnome !A"A!#$"$
ini)io
$/!"$VA +" (OM$ 00",
*$'A +wnome,
$/!"$VA +"/eu nome 1 "+ wnome,
.imalgoritmo
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 NO;$ exibido no vdeo logo aps a mensagem "Seu
nome , como mostra a ilustrao abaixo.
NOME ..: Karla Silva
Seu nome Karla Silva
Pgina 4
Algoritmos
Construindo os Primeiros Algoritmos:
$struturas se<=enciais
De forma genrica, a construo de um algoritmo se resume s seguintes etapas:
a) entendimento do problema;
b) elaborao da soluo algortmica; e
c) codificao da soluo no Portugus Estruturado;
Geralmente a etapa 2 a mais complexa, pois depende da engenhosidade e experincia do "construtor.
Enunciado: Faa um Algoritmo que leia dois valores numricos, e calcule e exiba a
sua mdia aritmtica.
$tapa -
Simples, hein? Dos tempos de escola lembramos que a mdia aritmtica de dois valores calculada como (a+b)/2, e
sendo assim a primeira etapa j est pronta.
$tapa .
Os dados necessrios sero os dois valores, que colocaremos em duas variveis A e B, do tipo numrico, e uma
terceira varivel, que chamaremos Mdia, que armazenar a mdia aritmtica calculada.
$tapa >
A obteno dos dados neste Algoritmo simples e direta. Basta pedir ao usurio que digite os valores.
$tapa /
O processamento aqui o clculo da mdia, usando o mtodo citado acima, na etapa 1. O resultado do clculo ser
armazenado na varivel Mdia.
$tapa ?
Basta exibir o contedo da varivel Mdia.
Solu)*o,
1. Algoritmo "Clculo de Mdia Aritmtica"
2. VAR
3. A,B,Media : REAL
4. nicio
5. Escreva ("Algoritmo que calcula a mdia aritmtica de dois valores.")
6. Escreva ("Digite um valor : ")
7. Leia (A)
8. Escreva ("Digite outro valor : ")
9. Leia (B)
10. Media <- (A+B)/2
11. Escreva ("A mdia dos dois valores : ", Media)
12. FimAlgoritmo
Exerccios
1. Algoritmo que l o nome de um aluno, as notas de suas trs provas e calcule e exibe a mdia
harmnica das provas. A mdia harmnica de trs provas a, b e c dada pela frmula
Pgina 5
Algoritmos

Os dados necessrios ser!o o nome do aluno e os valores das provas. O algoritmo limita"se basicamente #
prpria frmula.
1. Algoritmo "MediaHarmonica"
2. VAR
3. a, b, c, $%& REAL
4. 'O$(& CARACTER
5. inicio
1. escreva "(ntre com o nome do aluno& "!
2. leia nome!
3. escreval "(ntre com as notas das trs provas"!
4. escreva ")igite a primeira nota& "!
5. leia a!
". escreva ")igite a segunda nota& "!
#. leia b!
$. escreva ")igite a terceira nota& "!
%. leia c!
1&. MH '( 3)1)a * 1)+ *1)c!
11. escreval "A mdia harmnica do aluno& *, 'O$(, * *, $%!
1+. ,imAlgoritmo
(xemplo
(nunciado& ,m algoritmo que l o valor do raio e calcule a rea do c-rculo correspondente.
(tapa 1& o clculo da rea do c-rculo .i/0+.
(tapa +& o dado necessrio o valor do raio, que ser lido 1colocado2 na varivel 0aio.
1. algoritmo "Calc-la .rea Circ-lo"
2. var
3. Area/ Raio0 REAL
4. inicio
5. Escreval "Entre com o raio0 "!
". Leia Raio!
#. Area '( 1i2Raio32
$. Escreva "A 4rea do circ-lo com o raio "/ Raio/ " 5 "/ Area!
%. 6imalgoritmo
3oc n!o precisa declarar o pi, pois 4 uma fun5!o definida pelo Algoritmo 3isualg.
Exerccios
Pgina 6
Algoritmos
Coneitos !undamentais
Contador 6 Acumulador
Estes nomes so dados a expresses que realizam adio de dados, porm, no primeiro caso,
CONA!OR, a expresso de adio que contabiliza valores fixos e predeterminados. No segundo
caso, ACU;ULA!OR, a expresso de adio que contabiliza valores variveis.
$6emplo de Contador,
QtdFem <- QtdFem + - 9note <ue o valor adicionado a <uantidade de femininos ser sempre -:
$6emplo de Acumulador,
Somadade <- Somadade + Idade 9note <ue o valor adicionado a soma das idades ser varivel:
Percentuais
Encontramos algumas dificuldades quando tratamos estes temas. Aqui daremos algumas regras bsica
para que voc se sinta a vontade no momento do clculo.
$ncontrando um valor percentual,
Ve@a esta contin%a simples
?A (olas -AA B 9?A 1 odo:
.? (olas 6 B 9.? 1 Parte do odo:
Chegaremos a concluso:
3 B 1 .? 6 -AA C ?A
Estas informaes nos leva imaginar a frmula a seguir:
2perc0 28 2 Parte do odo0 D -AA C 2 odo0
$ncontrando um valor final ap's aplica)*o do percentual,
2Novo valor0 28 2valor anterior0 D -E2valor do percentual0
$6+, adicionar 5 % sobre o salrio e informar o valor do novo salrio.
Nsal 28 Salario D -EA?
$ncontrando um valor adicionado percentualmente a uma varivel,
2Novo valor0 28 2valor anterior0 D AE2valor do percentual0
$6+, adicionar 5 % sobre o salrio e informar o valor acrescido ao salrio.
Rea@uste 28 Salario D AEA?
Pgina 7
Algoritmos
Estruturas Condiionais
Sabemos que as linhas de um Algoritmo so executadas de cima para baixo de forma seqencial. 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 S$, que possui trs situaes bem definidas dentro da
programao: Estrutura Condicional Simples, Composta ou $ncadeadas(Ninhos de SE's).
Na vida real tomamos decises a todo o momento baseadas em uma situao existente. Em um
algoritmo, chamamos esta situao de condio. Associada a uma condio, existir uma alternativa
possvel de aes.
Exemplo 1
"se tiver R$ 10,00 sobrando ento irei ao cinema hoje noite.
A condio nesta frase "tiver R$ 10,00 sobrando". Ela uma expresso lgica, pois a pergunta "Tenho
R$ 10,00 sobrando?" Pode (tem que) ser respondida com "Sim" ou "No". Lembre-se, ento: em um
algoritmo, toda condio tem que ser uma expresso lgica, algo que possa-se pensar como " isto
VERDADERO ou "isto FALSO. Se a condio for verdadeira, a ao a ser executada "irei ao
cinema", se a resposta pergunta "Tenho dinheiro suficiente?" for "Sim". Ento, em um algoritmo, as
aes so um ou mais comandos que sero realizados apenas se a avaliao da condio resulta
VERDADERO.
Vamos colocar agora a frase do exemplo anterior em outra forma, mais parecida com nosso Portugus
Estruturado:
Exemplo 2
se "tiver R$ 10,00 sobrando" entao
"irei ao cinema"
fimse
Veja que grifamos trs palavras: se, entao e fimse. Elas so muito importantes na estrutura dos
comandos de deciso. Como prximo passo, vamos generalizar a estrutura que criamos acima:
se <condio> entao
<aes (uma ou mais) a serem realizadas se a condio for verdadeira>
fimse
$strutura Condicional S$ 9S#mples:
)e #condi*+o& ent+o
#se,-.ncia de comandos&
/imse
<condi)*o> - Expresso lgica qualquer.
<se<uFncia de comandos> So comandos quaisquer que sero executados caso o resultado da
expresso lgica seja verdadeira. Esses comandos devem ser escritos entre as
delimitaes da gerncia do comando.
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 2semnome3
VAR '&a&e inteiro
(ome !ara)tere
/e4o !ara)tere
Inicio
LEIA ((ome, /e4o, '&a&e,
SE /e4o = 2M3 $(#AO
Pgina 8
Algoritmos
ESCREVA +"A i&a&e &e " + (ome + 2 1 2 + '&a&e,
FIMSE
ESCREVA +".im &a transa56o",
Fimalgoritmo
$strutura Condicional S$ 9Composta:
)e #condi*+o& ent+o
#se,-.ncia de comandos &
sen+o
#se,-.ncia de comandos 2&
/01)2
Onde:
<condi)*o> - Expresso lgica qualquer.
<se<uFncia de comandos -> So comandos quaisquer que sero executados caso o resultado da
expresso lgica seja verdadeira.
<se<uFncia de comandos .> So comandos quaisquer que sero executados caso o resultado da
expresso lgica seja falsa.
Para fixar esta idia, tente depurar o seguinte algoritmo:
Algoritmo 2semnome3
VAR '&a&e inteiro
(ome !ara)tere
/e4o !ara)tere
Inicio
LEIA ((ome, /e4o, '&a&e,
SE /e4o = 2M3 ENAO
ESCREVAL +"A i&a&e &e ", (ome, 2 1 2, '&a&e, 2 /e4o Mas)ulino3,
!enao
SE /e4o = 2.3 ENAO
ESCREVAL +"A i&a&e &e ", (ome, 2 1 2, '&a&e, 2 /e4o .eminino3,
FIMSE
FIMSE
ESCREVA +".im &a transa)ao",
Fimalgoritmo
$strutura Condicional S$ 9$ncadeada:
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. Abaixo
segue um modlo hipottico de uma estrutura SE (Encadeada).
)e #condi*+o & ent+o
#se,-.ncia de comandos &
)e #condi*+o 2& ent+o
#se,-.ncia de comandos 2&
/01)2
sen+o
)e #condi*+o 3& ent+o
#se,-.ncia de comandos 3&
sen+o
#se,-.ncia de comandos 4&
/01)2
#se,-.ncia de comandos 5&
/01)2
Para exemplificarmos melhor, vejamos o exemplo:
1) Receber dois nmeros (Num1 e Num2).
Pgina 9
Algoritmos
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 2semnome3
VAR 7 inteiro
8 inteiro
/OMA inteiro
Inicio
LEIA (7, 8,
/OMA<- 7 + 8
SE /OMA > 9 $(#AO
ESCREVA +/OMA, 2 Valor :ositi;o3,
SENAO
ESCREVAL +7, 8,
SE /OMA = 9 ENAO
ESCREVA +"Valor 'gual a <ero",
SENAO
ESCREVA +"Valor (egati;o",
FIMSE
FIMSE
Fimalgoritmo
Sobre esta soluo, importante salientar o seguinte:
Note que a esttica, apesar de no influir no resultado da execuo do Algoritmo, 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
I!$NAGHO.
Veja que o comando $SCR$VA 3E I executado independente da condio do segundo SE.
por isto que eles foram escritos aps o S$NHO do primeiro S$.
$6erc#cios de Aprendizagem
1) Dados 2 nmeros digitados via teclado, faa um algoritmo capaz de exibir no vdeo o maior deles.
Algoritmo 2/$M(OM$3
VAR 7 inteiro
8 inteiro
Inicio
LEIA (7, 8,
SE 7 > 8 ENAO
ESCREVA +7,
SENAO
ESCREVA +8,
FIMSE
FimAlgoritmo
2) Dados 3 nmeros digitados via teclado, faa um algoritmo capaz de exibir no vdeo o maior deles.
Algoritmo 2/$M(OM$3
VAR 7 inteiro
8 inteiro
< inteiro
Inicio
LEIA +7, 8, <,
SE +7 > 8, E +7 > <, ENAO
ESCREVA +7,
SENAO
SE +8 > <, E +8 > 7, ENAO
ESCREVA +8,
Pgina 20
Algoritmos
SENAO
ESCREVA +<,
FIMSE
FIMSE
FimAlgoritmo
Comentrio: ote que, para descobrirmos qual o maior entre trs n!meros, precisamos codi"icar #
comandos $% encadeados. $e "ossem & variveis, seriam ' $%(s. a )ora de testar este
*l+oritmo, no esquea de jo+ar com as situa,es de exceo, como por exemplo: # dos
n!meros sendo i+uais, n!meros ne+ativos ou nulos, etc.
3) Dados 2 nmeros digitados via teclado, faa um algoritmo capaz de exibi-los em ordem crescente.
Algoritmo 2/$M(OM$3
VAR A inteiro
= inteiro
Inicio
LEIA +A, =,
SE A > = ENAO
ESCREVA +=, A,
SENAO
ESCREVA +A, =,
FIMSE
FimAlgoritmo
Como voc solucionaria este problema se tivssemos de utilizar apenas um comando ESCREVA ?
A primeira imagem que nos vem a 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 dita varivel. Mas
em informtica podemos utilizar todos os recursos disponveis para solucionarmos um problema, evitando
entretanto, solues muito extensas e complicadas.
O recurso que vamos dispor nesse momento a utilizao de uma varivel au6iliar. Varivel auxiliar
aquela que ns utilizamos para servir de apoio. Veja que para realizar a troca de dados exposta a seguir,
s com esse recurso.
Algoritmo 2/$M(OM$3
VAR A inteiro
= inteiro
7 inteiro
Inicio
LEIA +A, =,
SE A > = $(#AO
7 <- A
A <- =
= <- 7
FIMSE
ESCREVA +A,
ESCREVA +=,
FimAlgoritmo
Comentrio: -ara economi.armos comandos %$C/%0*, observe que invertemos os valores de * e 1 toda
ve. que * "osse maior que 1. *ssim, independente dos valores de * e 1, sempre exibiremos *
e 1 nesta ordem. -ara propiciar esta inverso utili.amos uma varivel auxiliar 2.
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
-A -?
Se fizermos simplesmente A 28 4, apagaremos o valor original de A e colocaremos o de 4 em seu lugar.
Assim, ambas as variveis ficariam com o valor -?. Para viabilizar o processo da troca, temos que
Pgina 2
Algoritmos
recorrer a uma varivel auxiliar que conter provisoriamente o valor de uma das variveis a fim de devolv-
lo para a outra.
A B
-A -?
X
-A
4) Dados 3 nmeros digitados via teclado, faa um algoritmo capaz de exibi-los em ordem crescente.
Algoritmo 2semnome3
VAR A inteiro
= inteiro
! inteiro
Inicio
LEIA +A, =, !,
SE A > = $(#AO
SE = > ! ENAO
ESCREVA +!, =, A,
SENAO
SE A > ! ENAO
ESCREVA +=, !, A,
SENAO
ESCREVA +=, A, !,
FIMSE
FIMSE
SENAO
SE A > ! ENAO
ESCREVA +!, A, =,
SENAO
SE = > ! ENAO
ESCREVA +A, !, =,
SENAO
ESCREVA +A, =, !,
FIMSE
FIMSE
FIMSE
FimAlgoritmo

Pgina 22
1 passo
2 passo
3 passo
X'( A
A'( B
B'( X
Algoritmos
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 trs estruturas, as quais podemos representar
tranqilamente em qualquer ambiente de Programao.
As estruturas so: Repita, $n<uanto 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 trs formas, mas existem momentos que no possvel. Por isso o segredo
encontra-se no exercitar.
Bem, vamos dismistificar estas estruturas.
Comando R$PIA
Aqui voc entra na estrutura e pode testar para ver se uma determinada condio foi satisfeita antes ou
aps a execuo de comandos. Quando a condio de encerramento for verdadeira, ser encerrado o
processamento do comando Repita e ser dado prosseguimento exatamente no primeiro comando
imediatamente aps o 5imRepita.
Re"ita

< )oman&os >

Ate < )on&i56o >
Comando $NJUANO
O comando $NJUANO prende um trecho do Algoritmo a um lao (looping), ou seja, podemos
determinar que um certo conjunto de comandos seja executado repetidamente enquanto uma condio
seja verdadeira.
En#uanto <)on&i56o> Faca
< )oman&os >
FimEn#uanto
Comando PARA
O comando PARA prende um trecho do Algoritmo a um lao (looping), sendo que sua gerncia em
cima de uma contagem. Enquanto ela no for satisfeita, ou seja, o valor final no for ultrapassado, ser
executado os comandos subordinados a esta estrutura.
$ara <;ari>;el &e )ontrole> %e <;alor ini)ial> ate <Valor?@inal> ABasso
<in)remento>C Faca
< )oman&os >
Fim$ara
Na estrutura para..faca, a varivel de controle inicializada com <valor inicial> e no incio de cada
iterao, seu valor comparado com <valor final>. Se o valor da varivel for menor ou igual a <valor
final>, a lista de comandos executada e aps ser executado o ltimo comando da lista, a varivel de
controle incrementada. sto repete-se at que o valor da varivel de controle seja maior que <valor final>,
quando ento executado o comando imediatamente aps a palavra fimpara. A instruo passo
necessria se o incremento for diferente 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 do numero 1 ate 10.
Usaremos os comandos aprendidos at agora.
Com a estrutura R$PIA
Algoritmo &Demonstra"eBeti)ao&
VAR
i '(#$'"O
Pgina 23
Algoritmos
inicio
i<- D
reBita
es)re;a +i,
i<- i + D
ate i > D9
'imalgoritmo
Com a estrutura $NJUANO
Algoritmo &Demonstra"eBeti)ao&
Var
i '(#$'"O
inicio
i<- D
en-uanto i<=D9 @a)a
es)re;a +i,
i<- i + D
@imen-uanto
'imalgoritmo
Com a estrutura PARA
Algoritmo &Demonstra"eBeti)ao&
Var
i '(#$'"O
inicio
i<- D
Bara i &e D ate D9 @a)a
es)re;a +i,
@imBara
'imalgoritmo
;aior 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 (em pe<ueno 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.
$ncontrando o maior valor dentro de um con@unto,
Obs.: para entender melhor esse exemplo, bom estar familiarizado com a estrutura de repetio
comentada mais adiante.
Algoritmo 2semnome3
Var MA'O"?'D inteiro
'&a&e inteiro
!ont inteiro
'ni)io
MA'O"?'D <- 9
:ara )ont &e D ate D9 .a)a
*$'A+'&a&e,
/e '&a&e > MA'O"?'D entao
MA'O"?'D <- '&a&e
.'M/$
.imBara
$s)re;a +"A maior i&a&e 1 " , MA'O"?'D,
.imalgoritmo
;enor 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 (em alto adequado
Pgina 24
Algoritmos
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.
$ncontrando o menor valor dentro de um con@unto,
Algoritmo 2semnome3
Var
M$(O"?'D inteiro
'&a&e inteiro
!ont inteiro
'ni)io
M$(O"?'D <- EEE
:ara )ont &e D ate D9 .a)a
*$'A+'&a&e,
/e '&a&e < M$(O"?'D entao
M$(O"?'D <- '&a&e
.'M/$
.imBara
$s)re;a +"A menor i&a&e 1 ", M$(O"?'D,
.imalgoritmo
$6erc#cios de Aprendizagem
1) Elabore um algoritmo capaz de exibir todos os nmeros inteiros, desde o 1 at o 10.
Algoritmo "inteiros"
VA" (FM$"O (FM$"'!O
'('!'O
(FM$"O <- D
$(GFA(#O (FM$"O <= D9 .A!A
$/!"$VA +(FM$"O,
(FM$"O <- (FM$"O + D
.'M$(GFA(#O
.imAlgoritmo
Comentrio: ote que, utili.amos uma varivel numrica c)amada 34%/O que recebeu, inicialmente, o
valor 5, e da6 em diante "oi ciclicamente incrementada de 5 734%/O8-34%/O95: at
que a condio imposta pelo %;3*<O tornasse "alsa.
2) Elabore um algoritmo capaz de receber um nmero e, em seguida, listar todos os nmeros de 1 at ele.
Algoritmo "*'M'#$/"
VA" (FM$"O (FM$"'!O
*'M'#$ (FM$"'!O
'('!'O
*$'A +*'M'#$,
(FM$"O<-D
$(GFA(#O (FM$"O <= *'M'#$ .A!A
$/!"$VA +(FM$"O,
(FM$"O <- (FM$"O + D
.'M$(GFA(#O
.imAlgoritmo
Comentrio: %ste *l+oritmo similar ao anterior. * !nica sde isticao implementada "oi a "lexibili.ao
do limite. =sto tornou o al+oritmo mais +enrico, servindo para listar a seq>ncia de
qualquer n!mero, e no apenas a do 5?. -ara alcanar esta sde isticao, "oi necessrio o
uso da varivel @=4=<% que de "ato limitou o lao do /%-=<* ao seu conte!do, conte!do este
que "ora recebido lo+o no in6cio da execuo do *l+oritmo, com o comando @%=* @=4=<%.
3) Sofisticando ainda mais o Algoritmo 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 "*'M'#$/"
VA" (FM$"O (FM$"'!O
*'M'#$ (FM$"'!O
/OMA (FM$"'!O
'('!'O
*$'A +*'M'#$,
Pgina 25
Algoritmos
(FM$"O <- D
/OMA <- 9
$(GFA(#O (FM$"O <= *'M'#$ .A!A
$/!"$VA +(FM$"O,
/OMA <- /OMA + (FM$"O
(FM$"O <- (FM$"O + D
.'M$(GFA(#O
$/!"$VA +/OMA,
.imAlgoritmo
Comentrio: -erceba que, para acumular os valores parciais assumidos pela varivel 34%/O,
precisamos lanar mo de uma outra varivel, a qual c)amamos de $O4*. *ssim, a cada
ciclo do %nquanto acrescentamos ao valor de $O4* o novo valor de 34%/O
7$O4* 8-$O4*934%/O:.
Observe tambm que declaramos $O4* com mais bAtes que 34%/O ou @=4=<%. B "cil
entender por que C Como $O4* ser um D*cumulador( dos valores de 34%/O, ela
sempre ter valores maiores que 34%/O, podendo seu montante, exceder ao quantitativo
de casas de"inidas em 34%/O.
4) Receba uma seqncia de nomes via teclado at que seja digitado um nome em branco (" ). Aps a
digitao desta lista, escrever no vdeo quantos nomes comearam pela letra "A.
Algoritmo "$7$M:*O"
VA" (OM$ !A"A!#$"
!O(# (FM$"'!O
'('!'O
*$'A +(OM$,
!O(#<-9
$(GFA(#O (OM$ <> " " .A!A
/$ :O/+"A", (OM$, = D $(#AO
!O(# <- !O(# + D
.'M/$
*$'A +(OM$,
.'M$(GFA(#O
$/!"$VA +!O(#,
.imAlgoritmo
Comentrio: ovamente recorremos a um contador, desta ve., contabili.ando os nomes com inicial D*(.
Observe que tivemos que utili.ar duas ve.es o comando @%=* O4%. =sto para que o
primeiro O4% di+itado no "osse i+ual a branco, "orando a sa6da do %;3*<O lo+o de
in6cio.
"#nias de Algoritmi$ao
Como dissemos anteriormente, no h qualquer receita de bolo para resolvermos um determinado
problema atravs da programao. Cada caso um caso bastante especfico. Entretanto, alguns
procedimentos sistemticos podem auxiliar a elucidao de alguns problemas.
!icas so(re Resolu)*o de Algoritmos
Nunca d um algoritmo por encerrado antes de testar todas as possibilidades condicionais. S o teste
garante a eficcia do Algoritmo. 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 programao 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.
Pgina 26
Algoritmos
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.
&cnica para e6trair os dados de um enunciado
Quando nos deparamos com um enunciado pequeno, nos sentimos a vontade para resolv-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.
Todos os Algoritmos 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.
$la(orar um algoritmo <ue rece(a a matr#culaE o nome e o salrio de ?A funcionriosE
imprimindo ao finalE o somat'rio dos salrios e a m&dia salarial+
Vamos por em prtica nosso aprendizado.
-
K
fase 9!ados de $ntrada:
Ser recebido a MATRCULA, NOME E SALRO;
L$IA Matricula, Nome, Salrio)
.
K
fase 9Processamentos:
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 28 AcumSal L Salario
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.
;edia 28 AcumSal C ?A
>
K
fase 9!ados de Sa#da:
Dar sada no valor da mdia calculada.
$screva ("A mdia salarial ", Media)
;ontando o Algoritmo
Algoritmo "EXEMPLOLOGCA"
Var AcumSal: numerico
Cont: numerico
Salario: numerico
Media: numerico
Nome: Caracter
INICIO
AcumSal 28 A
Pgina 27
Algoritmos
Para cont 28 1 ate 50 faca
L$IA (Nome, Salario)
AcumSal <- AcumSal + Salario
5imPara
Media <- AcumSal / 50
$screva ("A mdia Salarial ", Media)
5imAlgoritmo
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!
Desa%ios 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?
-Ela,orar um algoritmo ue re%e,a idade de ./ "essoas e informe ao final0 a maior delas e
uantas "essoas a "ossuem12
Algoritmo "D$/A.'OD"
Var Ma?i&a&e numeri)o
Gt?mai& numeri)o
!ont numeri)o
%i&a&e numeri)o
INICIO
Ma?i&a&e <- 9
Gt?mai& <- 9
$ara )ont () D ate H9 'aca
LEIA +wi&a&e,
Se wi&a&e > Ma?i&a&e entao
Ma?i&a&e <- wi&a&e
Gt?mai& <- D
Senao
Se wi&a&e = Ma?i&a&e entao
Gt?mai& <- Gt?mai& + D
FIMSE
FIMSE
Fim$ara
E!creval +2A maior i&a&e 1 00000000000000000000000000 2, Ma?i&a&e,
E!creval +2Guanti&a&e &e Bessoas )om a maior i&a&e000 2, Gt?mai&,
FimAlgoritmo
Pgina 28
Algoritmos
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?i&a&eI <- Ma?i&a&eD
Gt?mai&I <- Gt?mai&D
Ma?i&a&eD <- wi&a&e
Gt?mai&D <- D
Percebeu como simples? sto fazemos em todos os momentos em que devemos 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?
-Ela,orar um algoritmo ue re%e,a idade de ./ "essoas e informe ao final0 as duas maiores
idades e uantas "essoas as "ossuem12
Algoritmo "D$/A.'OI"
Var Ma?i&a&eD numeri)o
Ma?i&a&eI numeri)o
Gt?mai&D numeri)o
Gt?mai&I numeri)o
!ont numeri)o
%i&a&e numeri)o
inicio
Ma?i&a&eD <- 9
Ma?i&a&eI <- 9
Gt?mai&D <- 9
Gt?mai&I <- 9
$ara )ont () D ate H9 'aca
LEIA +wi&a&e,
Se wi&a&e > Ma?i&a&eD entao
Ma?i&a&eI <- Ma?i&a&eD
Gt?mai&I <- Gt?mai&D
Ma?i&a&eD <- wi&a&e
Gt?mai&D <- D
Senao
Se wi&a&e = Ma?i&a&eD entao
Gt?mai&D <- Gt?mai&D + D
Senao
Se wi&a&e > Ma?i&a&eI entao
Ma?i&a&eI <- wi&a&e
Gt?mai&I <- D
Senao
Se wi&a&e = Ma?i&a&eI entao
Gt?mai&I <- Gt?mai&I + D
FIMSE
FIMSE
FIMSE
FIMSE
Fim$ara
E!creval +2A maior i&a&e 1 00000000000000000000000000 2, Ma?i&a&eD,
E!creval +2Guant0 &e Bessoas )om a maior i&a&e0000000 2, Gt?mai&D,
E!creval +2A segun&a maior i&a&e 1 000000000000000000 2, Ma?i&a&eI,
E!creval +2Guant0 &e Bessoas )om /eg0 maior i&a&e0000 2, Gt?mai&I,
FimAlgoritmo
Pgina 29
Algoritmos
Esol&a'''Caso
Em algumas situaes necessrio termos vrias solues ligadas a respostas diferentes, neste
caso o comando de alternativa simples ou composta no uma soluo prtica, isto porque
obrigar o Programador a escrever muitas linhas de Algoritmo, alm de ter que criar vrios comandos de
alternativas compostas e verificar a validade de suas condies para que o comando execute o caminho
correto para uma determinada condio. Temos ento o comando de alternativa de mltipla escolha.
O funcionamento deste comando obedece a seguinte regra:
$s)olJa < e4Bress6o-&e-sele56o >
!aso < e4B D > , < e4B I >, 000 , < e4B n >
< lista-&e-)oman&os-D >
!aso < e4B D > , < e4B I >, 000 , < e4B n >
< lista-&e-)oman&os-I >
outro)aso
< lista-&e-)oman&os-K >
@imes)olJa
Exemplo
DADE CATEGORA
De 05 a 10 nfantil
De 11 a 15 Juvenil
De 16 a 20 Junior
De 21 a 25 Profissional
Construa um Algoritmo que solicite o nome e a idade de um atleta e imprima a sua categoria.
Algoritmo "!*A//'.'!ALMO D$ A#*$#A/
;ar
nome, )ategoria )ara)tere
i&a&e inteiro
ini)io
$s)re;a+"(ome &o Atleta = ",
*eia +nome,
$s)re;a+"'&a&e &o Atleta = ",
*eia +i&a&e,
$s)olJa i&a&e
)aso H,N,O,P,E,D9
)ategoria <- "'n@antil"
)aso DD,DI,DK,DQ,DH
)ategoria <- "Ru;enil"
)aso DN,DO,DP,DE,I9
)ategoria <- "Runior"
)aso ID,II,IK,IQ,IH
)ategoria <- ":ro@issional"
outro)aso
)ategoria <- "'(VA*'DO"
.imes)olJa
$s)re;a +"!ategoria = ",)ategoria,
.imalgoritmo
Pgina 30
Algoritmos
Variveis Compostas (omog)neas
Vetores 8 Variveis Inde6adas Unidimensionais
t ento trabalhamos com variveis simples, que s recebem um dado por vez. Neste captulo
trataremos sobre variveis compostas, que so capazes de armazenar mais de um dado ao
mesmo tempo. A
Chamamos de Vetor a toda varivel (estrutura) capaz de armazenar em si, vrios elementos, e que
possua apenas uma dimenso (Unidimensional). Para acessar os elementos deste vetor necessrio um
ndice que serve como indicador de posio.
Como declarar um vetorM
Atravs do comando VAR. Vejamos a sintaxe abaixo:
Algoritmo *+,
var <nome?;etor> vetor-...<-t&0o)or0>C &e <tiBo>
inicio
000
FimAlgoritmo
magine um vetor definido para receber 10 nomes, onde cada elemento possui 40 dgitos do tipo
caracter, e um segundo vetor para receber 10 salrios, onde cada elemento possui 8 dgitos, sendo 2
casas decimais .
Algoritmo *+,
var ;nome vetorAD00D9C &e )ara)tere
Vsal vetorAD00D9C &e real
inicio
000
FimAlgoritmo
O(serve,
1. O tamanho do vetor definido pelo intervalo entre colchetes aps a palavra reservada vetor. Ex.: O
intervalo [1..10] indica que o vetor pode conter 10 valores.
2. O tipo de dado do vetor definido pelo tipo de dado declarado aps a palavra reservada de . Todos
os valores de um vetor tm o mesmo tipo de dado.
Um vetor pode ter mais de uma dimenso, ou seja, pode ser um vetor de vetores. No exemplo, o vetor
VNome capaz de guardar dez vetores (1..10).
Provavelmente voc deve estar se perguntando: 'Se uma varivel vetor guarda mais de um valor, como
que eu vou pegar um valor especfico dessa varivel?'
Fcil. Existe uma coisa chamada ndice. o ndice que determina qual dos valores do vetor voc vai
obter. Na declarao do vetor so informados os valores mnimo e mximo do ndice na clusula que fica
entre colchetes.
Vnome
- . 9+ + +: N -A
Paulo Ana Oarla Ivo
/A d#gitos /A d#gitos /A d#gitos /A d#gitos
Vsal
- . 9+ + +: N -A
-AEAA ?APEAA PQAAAEAA -A.>/EAA
Q d#gitos
. decimais
Q d#gitos
. decimais
Q d#gitos
. decimais
Q d#gitos
. decimais
Pgina 3
16

Ocorrncias
7onte8do
Algoritmos
Como voc v na figura anterior, um vetor um conjunto de sub-variveis homogneas, onde cada uma
intitulada de elemento, e possui as mesmas caractersticas do vetor como um todo, identificador, tipo e
tamanho.
O que difere uma sub-varivel de outra apenas o seu endereo relativo dentro do vetor.
Este endereo relativo explicitado por um argumento denominado ndice ou subscrito.
O vetor uma varivel unidimensional, pois necessitamos de apenas um ndice para nos referenciarmos
aos seus diversos elementos.
Para acessar um dado num vetor o <ue & necessrio fazerM
Muito simples. nforme o valor do ndice cujo posicionamento incide na ocorrncia que voc quer verificar.
Caso esta ocorrncia exista, ser mostrado o contedo da clula indicada pelo ndice.
Vnome
- . 9+ + +: N -A
Paulo Ana Oarla Ivo
$screva 9 VnomeR-S :T U ser impresso VPauloW X
$screva 9 VnomeRNS :T U ser impresso VOarlaW X
Como fazer para atri(uir um valor a uma ocorrFncia do vetorM
A forma mais clssica e que funciona em qualquer linguagem receber a informao na tela (via teclado)
e colocar o valor recebido na ocorrncia que queremos do vetor.
+000,
Leia +wnumD, wnumI, wnumK,
VnumADC <- wnumD
VnumAIC <- wnumI
VnumAKC <- wnumK
+000,
ou
(.../
$ara in& &e D ate K 'aca
Leia + wnum,
VnumAin&C <- wnum
Fim"ara
(.../
Como fazer para atri(uir um valor a uma ocorrFncia do vetorM
+000,
Leia +wnumD, wnumI, wnumK,
VnumADC <- wnumD
VnumAIC <- wnumI
VnumAKC <- wnumK
+000,
ou
(.../
Var
Vnum : vetor AD00KC &e )ara)tere
In% : inteiro
Inicio
$ara in& %e D ate K @a)a
Leia +wnumAin&C,
(.../
Como fazer para somar os elementos de um vetor num&ricoM
(.../
!oma () 0
$ara in& %e D ate K 'aca
/oma <- soma + VnumAin&C
Pgina 32
Algoritmos

E!creva +/oma,
(.../
Para entendermos melhor o que de fato vem a ser um vetor e sua importncia, analisemos um problema
bsico conforme o enunciado a seguir.
V$la(orar um algoritmo <ue rece(a ? n"meros e informe,
a: O maior entre elesT
(: Juantas vezes o maior n"mero ocorreuT
c: Informe em <ue momento 9<uando: o n"mero igual ao maior foi informado 9-
K
E .
K
E+++E?
K
vez:+W
Resolvendo com variveis simples,
Para sabermos qual o maior elemento digitado j sabemos (vide TDL - parte 1);
Para sabermos quantas vezes o maior elemento ocorreu, j sabemos (vide TDL - parte 1);
Para sabermos em que momento foi digitado o maior nmero fcil detectarmos, mas verificarmos
em quais momentos se repetiu a digitao do nmero igual ao maior mais complexo, necessitando
de um algoritmo com um controle bem feito e criao de algumas variveis auxiliares para controlar
este processo.
Resolvendo com Varivel Composta Unidimensional (V$OR)
Com vetor, a lgica se torna muito simples, pois os dados so digitados e carregados em cada
ocorrncia do vetor ficando disponvel enquanto no for encerrado o processamento. Nesse
momento podemos aproveitar para encontrar o maior e quantas vezes ele ocorre.
+000,
$ara in& &e D ate H @a)a
Leia +wnum,
VnumAin&C <- wnum
Se wnum > Ma?num entao
Ma?num <- wnum
Ma?-t& <- D
Senao
Se wnum = Ma?num entao
Ma?-t& <- Ma?-t& + D
@imse
@imse
@im:ara
+000,
Uma segunda etapa a de encontrar qual(ais) elemento(s) foi(ram) igual(ais) aquele identificado
como sendo o maior. Quando isso ocorrer, s informar em que posio (ndice atual do vetor) este
elemento foi encontrado;
(.../
$ara in& &e D ate H 'aca
Leia + wnumAin&C,
Se wnumAin&C > Ma?num entao
Ma?num <- wnumAin&C
Ma?-t& <- D
Senao
Se wnumAin&C = Ma?num entao
Ma?-t& <- Ma?-t& + D
.imse
@inse
@im:ara
$ara in& &e D ate H 'aca
Se VnumAin&C = Ma?num entao
E!creva +in&,
'im!e
.im:ara
(.../
Pgina 33
Algoritmos
;as para <ue servem os Vetores M
Existem situaes nas quais precisamos armazenar uma seqncia de dados semelhantes entre si. Por
exemplo: imagine que tenhamos de armazenar 5 nmeros telefnicos para cada cliente de uma
determinada empresa. Considerando o que vimos na primeira etapa do curso, teramos que declarar 5
variveis literais, cada uma com um identificador prprio.
;ar
.O($D )ara)tere
.O($I )ara)tere
.O($K )ara)tere
.O($Q )ara)tere
.O($H )ara)tere
Como sabemos que cada um dos nmeros telefnicos ter o mesmo tipo e tamanho, poderemos
descartar as 5 variveis acima, e utilizarmos apenas uma varivel vetor, com 5 elementos:
VA" .O($/ vetor AD00HC %e )ara)tere
J que sabemos a quantidade de elementos que o vetor ir receber, podemos desenvolver um algoritmo
de armazenamento dos dados no vetor. Usaremos, para isto, os comandos que aprendemos at agora.
Algoritmo *e1,
Var %.O($ )ara)tere
.O($/ vetor AD00HC &e )ara)tere
'(D inteiro
Inicio
'(D <- D
En#uanto '(D <= H 'aca
Leia +%.O($,
.O($/A'(DC <- %.O($
'(D <- '(D + D
.im$n-uanto
'(D <- D
En#uanto '(D'!$ <= H 'aca
E!creva +.O($/A'(DC,
'(D <- '(D + D
.im$n-uanto
FimAlgoritmo
ou
Algoritmo *e1,
Var %.O($ )ara)tere
.O($/ vetor AD00HC %e )ara)tere
'(D inteiro
Inicio
$ara '(D &e D ate H @aca
Leia +%.O($,
.O($/A'(DC <- %.O($
.im:ara
$ara '(D &e D ate H 'aca
E!creval +.O($/A'(DC,
Fim$ara
FimAlgoritmo
Veja que, pelo exemplo acima, podemos utilizar como ndice de um vetor uma outra varivel, desde que
esta seja do tipo numrica, inteira (sem casas decimais) e positiva (maior que zero). No fosse este
artifcio, teramos que criar 5 variveis para receber os telefones e depois escrever uma a uma na ordem
de entrada
Algoritmo *e12,
Var %.O($D, %.O($I, %.O($K, %.O($Q, %.O($H )ara)tere
Inicio
Leia +%.O($D, %.O($I, %.O($K, %.O($Q, %.O($H,
E!creva +%.O($D, %.O($I, %.O($K, %.O($Q, %.O($H,
FimAlgoritmo
Que trabalheira, no ?
Pgina 34
Algoritmos
ra(al%ando dois Vetores utilizando o mesmo #ndice
5) Uma das grandes dificuldades que os iniciantes do aprendizado da lgica encontra com o raciocnio
espacial. Temos que nos desprender das limitaes que nossa mente nos traz e abraar todos os desafios
analisando-os 'friamente'. Por exemplo, o mais comum beber gua em um copo de vidro ou de plstico, mas, ser
que podemos praticar a mesma ao (tomar gua) em um copo de papel? Claro que sim, apesar de no ser o mais
comum. Ento a regra simples: aceite a nova informao e coloque em prtica exercitando seu raciocnio diante
das novas informaes.
6) Uma das muitas facetas da informtica a de reaproveitamento de variveis para tarefas separadas. Um caso
tpico desses o de utilizao de um mesmo ndice em estruturas de vetores diferentes. A medida que percorremos
um vetor A qualquer com um ndice, outro vetor 4 poder est se utilizar deste mesmo ndice. Vejamos o caso a
seguir.
7) Elabore um algoritmo que alimente dois vetores, cada um de 10 elementos (informados pelo teclado). Guarde
num terceiro vetor, o produto dos elementos do primeiro pelo segundo e o escreva no vdeo o resultado
armazenado no terceiro vetor.
Algoritmo *e1.,
Var A vetor AD00D9C %e inteiro
= vetor AD00D9C %e inteiro
: vetor AD00D9C %e inteiro
%A, %= inteiro
/OMA inteiro
'(D inteiro
Inicio
$ara '(D &e D ate D9 'aca
Leia +%A, %=,
AAin%C <- %A
=Ain%C <- %=
:Ain%C<-AAin%C * =Ain%C
Fim$ara
$ara '(D &e D ate D9 'aca
E!creva +:Ain&C,
Fim$ara
FimAlgoritmo
$6erc#cios
1. Sendo o Vetor V igual a:
8) 9) 10) 11) 12) 13) 14) 15) 16) 17)
-Q: -N: .A: .-: ..: .>: ./: .?: .Y: .P:
e as variveis X = 2 e Y = 4, escreva o valor correspondente solicitao:
a) V[X+1] b) V[X+2] c) V[X+3] d) V[X+4]
e) V[X*1] f) V[X*2] g) V[X*3] h) V[X*4]
i) V[X+Y] j) V[Y*X] k) V[V[4]] l) VRV[V[7]]]
m) V[2+V[8-V[2]]] n) V[V[1]*V[4]]
$oluo comentada de al+uns itens
A. Se X = 2, ento V[X+1] o mesmo que V[2+1], ou seja, V[3], cujo contedo 8.
B. Se X = 2 e Y = 4, ento V[X+Y] o mesmo que V[2+4], ou seja V[6], que vale 16.
C. V[V[4]] parece complicado em princpio, porm podemos simplificar bastante as coisas se solucionarmos
primeiramente as expresses mais internas aos colchetes, passando para as mais externas. Assim, V[V[4]]
o mesmo que V[3], porque V[4] igual a 3. Portanto, V[3] 8.
D. V[2+V[8-V[2]]] ===> V[2+V[8-6]] ===> V[2+V[2]] ===> V[2+6] ===> V[8] ===> 21.
Faa analogia e solucione os demais itens.
2. Elabore um algoritmo que guarde num vetor A, 10 elementos inteiros informados pelo teclado, e que calcule o
somatrio de todos os elementos, escrevendo, no vdeo, o resultado final.
Pgina 35
Algoritmos
Algoritmo *e12,
Var AAD9C (um1ri)o
%;alor (um1ri)o
/OMA (um1ri)o
'(D (um1ri)o
Inicio
$ara '(D &e D ate D9 'aca
Leia +%;alor,
AA'(DC <- %;alor
/OMA <- /OMA + AA'(DC
.im:ara
E!creval +/OMA,
FimAlgoritmo
3. Elabore um algoritmo que preencha um vetor alfanumrica de 10 elementos, que dever conter 10 nomes de
pessoas. Aps o preenchimento do vetor, ele dever solicitar um nome a ser pesquisado dentro do vetor.
Aps receber este nome, pesquis-lo dentro do vetor recm digitado e, caso encontre-o, escrever 'NOME
CADASTRADO' no vdeo.
Algoritmo *e13,
Var (OM$/ vetor AD00D9C &e )ara)tere
%(ome )ara)tere
'(D inteiro
Inicio
$ara '(D &e D ate D9 @a)a
Leia +%nome,
(OM$/A'(DC <- %nome
Fim$ara
Leia +%nome,
$ara '(D &e D ate D9 @a)a
Se %nome = (OM$/Ain&C entao
E!creval +2(OM$ !ADA/#"ADO3,
'im!e
Fim$ara
FimAlgoritmo
Comentrio: %ste al+oritmo apresenta duas "ases bem distintas: preenc)imento e busca. * "ase de
preenc)imento j no tem mais mistrio. a "ase de busca, o usurio di+ita um nome
qualquer dentro de EO4%. %m se+uida o al+oritmo inicia um processo de busca pelo nome
di+itado dentro do vetor carre+ado. ;uando o elemento di+itado "or encontrado, ser emitido
a mensa+em con"irmando o "ato. 0ai a+ora uma per+unta: se a pesquisa no "or bem
sucedida, com o "a.er para o usurio ter cincia do ocorridoF 0amos dar uma das sa6das
poss6veis reor+ani.ando o al+oritmo.
Algoritmo *e13,
Var (OM$/ vetor AD00D9C &e )ara)tere
%(ome )ara)tere
'(D inteiro
Ac4ou: logico
Inicio
$ara '(D &e D ate D9 @a)a
Leia +%nome,
(OM$/A'(DC <- %nome
.im:ara
Leia +%nome,
Ac4ou () Fal!o
$ara '(D &e D ate D9 'aca
Se %nome = (OM$/Ain&C entao
E!creval +2(OM$ !ADA/#"ADO3,
Ac4ou () Ver%a%eiro
@imse
.im:ara
Se Ac4ou 5 Fal!o entao
E!creval +2(ome n6o !a&astra&o3,
'im!e
FimAlgoritmo
Pgina 36
Algoritmos
Comentrio: 0eja que utili.amos um arti"6cio muito comum entre os -ro+ramadores, que uma varivel
auxiliar contendo um valor inicial qualquer 7no nosso caso, iniciamos com .F.: e, caso ten)a
ocorrido al+uma ao dentro do que espervamos, mudamos o conte!do para outro valor
7mudamos o valor para .V.:
4. Elabore um algoritmo capaz de receber uma data no formato ('DD/MM/AA') e imprimi-la no formato (DD de
<ms por extenso> de 20AA).
Algoritmo &e13&
Var MESES : vetor -....26 %e caractere
7AA: caractere
MES:INEIRO
Inicio
MESES-.6() &8aneiro&
MESES-26()&Fevereiro&
MESES-36()&Mar9o&
MESES-:6()&A;ril&
MESES-<6()&Maio&
MESES-=6()&8un4o&
MESES->6()&8ul4o&
MESES-?6()&Ago!to&
MESES-@6()&Setem;ro&
MESES-.06()&Outu;ro&
MESES-..6()&Novem;ro&
MESES-.26()&7eAem;ro&
e!creva(&In'orme uma %ata no 'ormato %%BmmBaa&/
Leia (7AA/
MES () CARAC$NCM( CO$IA (7AAD:D2//
E!creval (CO$IA(7AAD.D2/ E & %e & E MESES- MES 6 E & %e 20& E
CO$IA(7AAD>D2//
FimAlgoritmo
Comentrio: ote que, caso a data seja di+itada incorretamente, 0*@O/7-*/<%7G*<*,&,#:: poder ser
um n!mero "ora do intervalo de 5 a 5#. este caso um erro poder ocorrer em tempo de
execuo do *l+oritmo. -or isto interessante criticar a data antes que ela seja processada
pelo al+oritmo.
5. Faa um algoritmo que preencha um vetor de inteiros com 40 ocorrncias recebendo do teclado.
6. Faa um algoritmo que receba 30 nomes digitados pelo usurio. O nome no pode ser preenchido com
brancos
7. Faa um algoritmo que receba 30 valores reais pelo teclado. Os valores devem ser maiores que zero.
8. Faa um algoritmo que preencha um vetor de inteiros com 20 ocorrncias, onde Vetor[] <-2 , ou seja, o
contedo de cada ocorrncia o dobro do seu ndice.
9. Faa um algoritmo que preencha um vetor A com 10 ocorrncias onde A[] <- 2 + 1, preencha um vetor B com
10 ocorrncias onde B[] <- 2 + 4 e um vetor C com 10 ocorrncias onde cada ocorrncia a soma das
ocorrncias de mesmo ndice dos vetores A e B.
10. Escreva os comandos necessrios para imprimir o vetor do exerccio 1 na ordem inversa do ndice ( de trs
para frente)
11. Escreva os comandos necessrios para preencher todas as ocorrncias do vetor do exerccio 3 com o valor
ZERO.
12. Escreva os comandos necessrios para somar todas as ocorrncias do vetor do exerccio 4.
13. Escreva os comandos necessrios para mover todos os valores do vetor C do exemplo 5 para o vetor B do
mesmo exemplo
14. Escreva os comandos necessrios para encontrar o maior elemento do vetor do exerccio 1.
Ordena)*o Vetores
Primeiramente, quero pensar com voc o que seria uma ordenao. Podemos afirmar que ordenar um
processo no qual elementos ficaro em uma ordem sequncial crescente ou decrescente.
magine os nmeros:
Pgina 37
Algoritmos
3, 1, 2 (estes dados esto desordenados);
1, 2, 3 (estes dados esto ordenados crescentemente);
3, 2, 1 (estes dados esto ordenados decrescentemente).
Vamos aprender a ordenar os dados de forma crescente. Existem algumas formas, porm estudaremos
duas delas.
Se voc tiver um vetor numrico contendo dois elementos (numRA.SE num&ricoE -) e quiser que eles
fiquem ordenados crescentemente, o que fazer?
-
Z
Passo, Verificar qual dos dois elementos o maior.
Se numR-S 0 numR.S ent*o 9+++:
.
Z
Passo, Se o primeiro elemento for maior que o segundo, precisamos inverter os elementos de
posio (isto aprendemos na primeira etapa de TDL). Caso contrrio, os elementos j esto
ordenados e no precisaremos inverter os dados.
Se numADC > numAIC entao
Au4 <- numADC
(umADC <- numAIC
(umAIC <- Au4
@imse
E!creval + numADC , numAIC,
Vejamos um segundo caso. Se voc tiver trs elementos numricos expostos na seqncia abaixo e
quiser orden-los o que faramos?
- . >
> - .
1. No poderamos colocar os ndices fi6os. Como assim? Os valores que ficam valendo como ndices
de acesso deveriam ser variveis (mutveis).
2. No caso em estudo iremos fazer as comparaes entre num[1] e num[2], verificando se os
elementos j esto em ordem, depois realizaremos a comparao entre os elementos num{2] e
num[3], fazendo a mesma comparao, invertendo os elementos caso estes estejam fora da ordem
desejada. Com isso temos as seguintes concluses:
Estaremos comparando dois elementos ao mesmo tempo, logo, as posies so diferentes R I S
e RI L -S ;
O ndice ir at a penltima posio Rn8-S;
Precisamos de uma estrutura de repetio para 'varrer' todos os elementos.
Vamos ao algoritmo.
Algoritmo *or%ena,
Var num ;etor AD00KC &e inteiro
Au4 inteiro
'n& inteiro
Inicio
$ara in& &e D ate I 'aca
Se numAin&C > numAin& + DC entao
Au4 <- numAin&C
numAin&C <- numAin& + DC
numAin& + DC <- Au4
@imse
.im:ara
$ara in& &e D ate K @a)a
E!creval +numAin&C, 2 2,
Fim$ara
FimAlgoritmo
Pronto! Para os elementos dispostos na forma como citados anteriormenteE este algoritmo
funcionar. Porm, este Algoritmo testou apenas uma seqncia de nmeros, conseguindo colocar em
ordem. Se voc alterar a seqncia das informaes para:
Pgina 38
Algoritmos
- . >
> . -
e utilizar-se do mesmo algoritmo, ir perceber que houve uma falha, pois os nmeros aps a execuo do
processo ficaram organizados assim:
- . >
. - >
Como garantir que os dados ficaro ordenados? Simplesmente, mandando executar esta rotina de
comparao de elementos tantas quantas vezes sejam necessrias at nenhum elemento ser trocado de
posio, caracterizando assim, a ordenao do vetor. Vamos nos utilizar outra vez de uma chave de
controle batizando-a como mudou. Ela definir se houve ou no uma troca de elementos. Chegamos
agora a uma das estruturas de ordenao.
Algoritmo *or%ena,
Var num ;etor AD00KC &e inteiro
Au4 inteiro
'n& inteiro
Mu&ou )ara)ter
Inicio
Re"ita
mu%ou () *N,
$ara in& &e D ate I 'aca
Se numAin&C > numAin& + DC entao
Au4 <- numAin&C
numAin&C <- numAin& + DC
numAin& + DC <- Au4
mu%ou () *S,
@imse
.im:ara
ate mu%ou 5 *N,
$ara in& &e D ate K 'aca
E!creval +numAin&C,
Fim$ara
FimAlgoritmo
Pronto! Aps a execuo deste algoritmo, teremos nossos dados organizados de forma crescente.
Outro algoritmo que utilizamos para ordenar os vetores o exposto a seguir. Ele bem menor em
quantidade de cdigo e um dos mais utilizados entre os desenvolvedores de sde twares.
Observar que n8- igual ao valor do ndice da pen"ltima posi)*o, e n o valor do ndice da "ltima
posi)*o.
Algoritmo *or%ena,
Var num ;etor AD00KC &e inteiro
S,T,Au4 inteiro
'n&,n inteiro
Mu&ou )ara)tere
Inicio
:ara U &e D ate n-D @a)a
:ara T &e U + D ate n @a)a
/e numAUC > numATC entao
Au4 <- numAUC
numAUC <- numATC
numATC <- Au4
@imse
.im:ara
.im:ara
:ara in& &e D ate K @a)a
$s)re;al +numAin&C,
.im:ara
.imAlgoritmo
Pgina 39
Algoritmos
$6erc#cios
1. Faa um algoritmo que preencha um vetor de inteiros com 20 ocorrncias recebendo do teclado. Ordene os
nmeros informados e exiba os valores do vetor de forma.
2. Faa um algoritmo que preencha um vetor de nomes com 10 ocorrncias recebendo do teclado, onde cada
ocorrncia capaz de armazenar 30 dgitos. Ordene os nomes informados e exiba os valores do vetor.
3. Faa um algoritmo capaz de preencher um vetor de 10 posies com inteiros positivos. Ordene o vetor,
imprima na tela e mostre a media dos valores informados.
4. Faa um algoritmo capaz de preencher um vetor de 10 posies com nomes. Ordene o vetor e imprima na tela
apenas os nomes que comeam com a letra 'A'.
*atri$es
O vetor uma varivel composta unidimensional, por quanto solicita 1 ndice para enderear seus
elementos. Estudaremos as bidimensionais
As variveis compostas bidimensionais, aqui intituladas MATRZES, exigem dois ndices para enderear
um de seus elementos.
Assim como no vetor, as matrizes aceitam dados de um mesmo tipo (homogneas) ou de tipos diferentes
(heterogneas). Neste ltimo caso, os dados devero ser comuns nas linhas ou nas colunas.
Quando formos declarar uma estrutura do tipo Matriz, poderemos definir o tipo como nico, caso essa
seja a realidade da matriz (homognea). Porm se voc for trabalhar com uma matriz com mais de um
tipo de dado (heterognea), declare apenas a matriz com sua respectiva quantidade de linhas e colunas.
A quantidade de elementos de uma matriz no precisa ser definida, pois ao definirmos quantas linhas e
colunas ela ter, automaticamente teremos o nmero de elementos da mesma (qt_lin x qt_col).
Exemplo: Uma matriz M com 4 linhas por 3 colunas (4X3) ter 12
elementos.
Neste exemplo, a matriz M do tipo NUMERCO, mas poderamos ter uma matriz de outros tipos:
ALFANUMRCA ou LOGCO. O contedo do elemento M[2,3] -16, pois o primeiro ndice indica a
linha, e o segundo, a coluna onde se encontra o elemento procurado.
Este ndice poder ser, como no caso dos vetores, variveis numricas inteiras positivas, o que facilita
mais uma vez o nosso trabalho na montagem, pesquisa e processamento dos elementos de uma matriz.
Como !eclarar uma ;atrizesM
Para declarar uma matriz no nosso algoritmo, usaremos mais uma vez o comando DECLARE.
!A" #$ome3matri(&' !245" 6311 4td5lin6a7 7 3114td5%oluna78 de #tipo&
<Nome_matriz> - Nome da matriz
<qtd_linha> - Quantidade de linhas da matriz
<qtd_coluna> - Quantidade de colunas da matriz
<Tipo> - Tipo da matriz definida (caractere, inteiro, real, logico , etc)
Exemplos:
VAR Fones : vetor R-++-AE-++?S de caractere
A matriz ter 50 elementos distribudos em 10 linhas e 5 colunas, sendo todos do tipo CARACTERE.
VAR Salrios, Vetor R-++?AE-++NAAS de inteiro
Esta matriz comportar 45.000 elementos, cada um do tipo inteiro.
Pgina 40
-1 4 15,6
302 84 -16
21 0 0,5
1,45 -400 100
Algoritmos
Para acessar um dado numa matriz o <ue & necessrio fazerM
Necessitamos informar o nome da matriz e as coordenadas que nos deixaro 'setados' na ocorrncia
desejada. Por exemplo: se tivermos uma matriz ';nomes' de 3 linhas e 4 colunas, carregada com
elementos e quisermos pegar aquele que se encontra na linha 3 e coluna 2, o que deveramos informar?
Simplesmente, informaramos: Matriz[lin,col] ou seja, ;nomesR>E.S.
- . > /
- Nome11 Nome12 Nome13 Nome14
. Nome21 Nome22 Nome23 Nome24
> Nome31 Nome>. Nome33 Nome34
Como fazer para somar os elementos de uma matriz num&ricaM
Vamos trabalhar algumas situaes que envolvam a soma de elementos.
Preenc%er os elementos da matriz
Algoritmo 2:rog DO3
var
*'(VA, !O*F(A inteiro
MA# ;etorAD00K, D00QC &e inteiro
Inicio
$ara *'(VA &e D ate K @a)a
$ara !O*F(A &e D ate Q @a)a
$s)re;a+WD'X'#$ $*$M$(#O W,*'(VA,W7W,!O*F(A,W W,
*eia +MA#A*'(VA,!O*F(AC,
.im:ara
.im:ara
FimAlgoritmo
Somar todos os elementos da matriz
Algoritmo *matriA,
Var Mnum ;etor AD00K,D00QC &e inteiro
*'(VA, !O*F(A inteiro
/oma inteiro
Inicio
/oma <- 9
$ara *'(VA &e D ate K @a)a
$ara !O*F(A &e D ate Q 'aca
/oma <- /oma + MnumA*'(VA, !O*F(AC
.im$ar a
.im$ar a
E!creval +/oma,
FimAlgoritmo
Somar todos os elementos lin%a a lin%a 9su(total por lin%a:
Para cada linha acessada, sero somados todos os elementos das colunas da referida linha.
Algoritmo *!u;totalL,
Var Mnum ;etor AD00K,D00QC &e inteiro
*'(VA, !O*F(A inteiro
/oma inteiro
Inicio
$ara *'(VA &e D ate K 'aca
/oma <- 9
$ara !O*F(A &e D ate Q 'aca
/oma <- /oma + MnumA*'(VA, !O*F(AC
E!creval +2soma &os elementos &a linJa 2, *'(VA, 2 = 2 , /oma,
.im:ara
FimAlgoritmo
Pgina 4
Algoritmos
Somar todos os elementos coluna a coluna 9su(total por coluna:
Para cada coluna acessada, sero somados todos os elementos das linha da referida coluna.
Algoritmo *!u;totalC,
Var Mnum ;etor AD00K,D00QC &e inteiro
*'(VA, !O*F(A inteiro
/oma inteiro
Inicio
$ara !O*F(A &e D ate Q @a)a
/oma <- 9
$ara *'(VA &e D ate K 'aca
/oma <- /oma + MnumA*'(VA, !O*F(AC
Fim$ara
E!creval +2soma &os elementos &a )oluna 2, !O*F(A, 2 = 2 , /oma,
.im:ara
FimAlgoritmo
Para transferir todos os elementos de uma matriz ;A para outra matriz
c%amada COPIA
Algoritmo *Co"iaMat,
Var Mnum, !oBia ;etor AD00K,D00QC &e inteiro
*'(VA, !O*F(A inteiro
Inicio
0
0
$ara *'(VA &e D ate K 'aca
$ara !O*F(A &e D ate Q @a)a
!O:'AA*'(VA, !O*F(AC <- MnumA*'(VA, !O*F(AC
Fim$ara
Fim$ara
0
0
YOu simBlesmenteZ
0
0
!O:'A<- Mnum[
0
FimAlgoritmo
ra(al%ando um vetor e uma matriz ao mesmo tempo
Existiro momentos em que voc poder resolver um caso que envolva uma matriz e um vetor. O primeiro
passo no ficar preocupado e simplesmente, prestar ateno aos detalhes tais como: aproveitar ou no
um ndice; os elementos do vetor esto associados a linha ou a coluna da matriz? Vamos a um caso que
lhe dar condies de trabalhar este novo momento.
Dado um vetor VNOMES[50] contendo nome de alunos, e uma MNOTAS[50,4] contendo as 4 notas
tiradas por cada aluno nos mdulos de TDL. Elaborar um algoritmo que liste na tela, o nome de cada
aluno e suas respectivas mdias (ser do tipo aritmtica). Admitamos que os dados das estruturas vetor
e matriz j estejam carregadas e esta parte do Algoritmo expresse apenas uma parte do processamento.
Atente para o caso em que o primeiro aluno cujo nome citado em VNOMES ter suas notas gravadas
na primeira linha de MNOTAS. Com isso teremos o algoritmo abaixo.
Algoritmo 2;et?mat3
Var V(OM$/ ;etor AD00H9C &e )ara)tere
M(O#A/ ;etor AD00H9,D00QC &e real
S, T inteiro
/oma, Me&ia real
Inicio
$ara U &e D ate H9 'aca
/oma <- 9
$ara T &e D ate Q 'aca
/oma <- /oma + M(O#A/AU,TC
Me&ia <- /oma / Q
E!creval +V(OM$/AUC, 2 \ 2 , Me&ia,
Pgina 42
Algoritmos
.im:ara
FimAlgoritmo
Utilizando8se de um vetor au6iliar para resolver um caso
Muitas vezes nos deparamos com situaes nas quais necessitamos de outras variveis para nos auxiliar
no desenvolvimento do algoritmo (lembra da varivel auxiliar que utilizamos para trocar os dados entre
dois elementos do vetor / matriz?). Vamos aproveitar as estruturas anteriores e alterarmos o enunciado
para solicitarmos os nomes dos alunos que possuam a mdia igual a maior mdia do grupo.
Algoritmo &nota!&
Var VNOMES : vetor -...<06 %e caractere
MNOAS : vetor -...<0D...:6 %e real
KD F: inteiro
VME7IA : vetor -...<06 %e real
SomaD Maior :real
Inicio
BB$reenc4en%o o vetor e a matriA %e nota!
$ara G %e . ate <0 'aca
e!creva(&In'orme o nome %o aluno:&/
leia ( VNOMES-G6 /
e!creva(&In'orme a! : nota! %o aluno:&/
$ara F %e . ate : 'aca
leia ( MNOAS-GDF6 /
Fim$ara
Fim$ara

BBCalculan%o a me%ia %a! nota! %e ca%a aluno
$ara G %e . ate <0 'aca
Soma () 0
$ara F %e . ate : 'aca
Soma () Soma E MNOAS-GDF6
Fim$ara
VME7IA-G6 () Soma B :
BBEncontra a maior nota
Se VME7IA-G6 H Maior entao
Maior () VME7IA-G6
'im!e
Fim$ara
BB E1i;e o! nome! %o! aluno! com a maior nota
E!creval (&Aluno(!/ com a maior nota&/
$ara G %e . ate <0 'aca
Se VME7IA-G6 5 Maior entao
E!creval (VNOMES-G6/
Fim!e
Fim$ara
FimAlgoritmo
Pgina 43

Você também pode gostar