0% acharam este documento útil (0 voto)
38 visualizações44 páginas

Apostila de Algoritmo

Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
38 visualizações44 páginas

Apostila de Algoritmo

Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd

191

Aula 1º

Lógica

Prezados alunos, iniciaremos a disciplina “Algoritmo e


Programação” adquirindo algumas noções básicas de Lógica. A
construção desse conhecimento será fundamental para entendermos
o raciocínio utilizado na solução dos problemas cotidianos, sejam eles
pessoais, acadêmicos, profissionais ou outros.
Para iniciar, é importante sabermos que a Lógica foi uma ciência
criada pelo filósofo grego Aristóteles, no século IV a.C., para entender
o pensamento humano e distinguir os argumentos certos dos errados.
Ah, esta Aula foi preparada para que você não encontre grandes
dificuldades. Contudo, podem surgir dúvidas no decorrer dos estudos!
Quando isso acontecer, acesse a plataforma e utilize as ferramentas
“quadro de avisos” ou “fórum” para interagir com seus colegas de
curso ou com seu professor. Sua participação é muito importante e
estamos preparados para ensinar e aprender com seus avanços...
Lembre-se ainda de ler e refletir sobre os objetivos de aprendizagem
e as seções de estudo da Aula 1. Afinal, você é o protagonista de sua
aprendizagem!
Bons estudos!

Objetivos de aprendizagem

Esperamos que, ao término desta aula, você seja capaz de:

‡GHILQLU/yJLFDUHFRQKHFHUVXDLPSRUWkQFLDHDSOLFiODQDVROXomRGHSUREOHPDV
‡FRQFHLWXDUHLQWURGX]LURWHUPR$OJRULWPR
‡GHVHQYROYHUHRXDPSOLDUDFDSDFLGDGHGHSHUFHSomRGHXPSUREOHPDHXWLOL]iODQDFULDomRGH$OJRULWPRV
192 Algoritmo e Programação 6

Seções de estudo 2$OJRULWPRGHȴQL©¥RHFULD©¥RSRU


meio da percepção de um problema
Algoritmos são sequências de ações ou instruções
1 - Lógica: conceituação e aplicação organizadas logicamente para resolver um problema. São,
2 - Algoritmo: definição e criação por meio da percepção portanto, os primeiros passos para a construção de programas,
de um problema uma vez que por meio deles desenvolvemos o raciocínio lógico
necessário para a resolução do problema proposto.
Guimarães e Lages definem Algoritmo como:
1 - Lógica: conceituação e aplicação
[...] descrição de um padrão de comportamento,
expressado em termos de um repertório bem
3DUD LQLFLDU QRVVDV UHȵH[·HV VREUH RV $OJRULWPRV QHVWD 6H©¥R GHÀQLGRHÀQLWRGHDo}HVSULPLWLYDVGDVTXDLV
vamos compreender brevemente o conceito de Lógica, reconhecer damos por certo que elas podem ser executadas
*8,0$5®(6/$*(6S 
sua importância, além de construirmos conhecimentos sobre suas
DSOLFD©·HV Ou ainda: “[...] uma norma executável para estabelecer um
Ah, durante a leitura desta e das demais Aulas é importante que certo efeito desejado, que na prática será geralmente a obtenção
tenha sempre à mão um dicionário e/ou outros materiais de pesquisa de uma solução a um certo tipo de problema” (GUIMARÃES,
para eliminação de eventuais dúvidas pontuais sobre os termos aqui 1994, p. 10).
empregados.

Você sabia que o criador do conceito de Algoritmo foi Leonard Euler e


CONCEITO que o primeiro Algoritmo de que se tem notícia refere-se à previsão das
Lógica é a ciência do raciocínio e da demonstração: é o IDVHVGDOXD1RV«FXOR;9ΖΖΖPXLWRDQWHVGDH[LVW¬QFLDGRV*36V(XOHU
conjunto de leis, princípios ou métodos que determinam um possibilitou criar tabelas precisas de navegação, fundamentais para um
raciocínio coerente, induzindo a uma solução prática e eficaz navio descobrir onde está? (GOVERNO DO ESTADO DO PARANÁ, 2011).
de um problema.
A Lógica também pode ser conceituada como uma Para todas as tarefas executadas no dia a dia, nosso cérebro
sequência coerente, regular e necessária de acontecimentos, constrói Algoritmos, o que acontece de uma forma tão natural
de coisas ou fatos, ou até mesmo, como a maneira particular que nem percebemos.
do raciocínio de cada pessoa ou de um grupo. Isso significa que mesmo sem notar, para cada problema
ou atividade a ser trabalhada, definimos uma sequência Lógica
Você já entendeu amplamente o que é Lógica? Em caso de uma de ações, ou seja, construímos vários Algoritmos todos os dias,
UHVSRVWD DȴUPDWLYD SDUDE«QV &RQWXGR K£ LQ¼PHURV RXWURV mesmo que sem darmos conta disso.
conhecimentos para construir sobre o tema... Para tanto, sugerimos Os Algoritmos são utilizados em praticamente todas as
TXHFRQVXOWHDVREUDVSHULµGLFRVHVLWHVLQGLFDGRVDRȴQDOGHVWD$XOD áreas do conhecimento existentes, pois as pessoas envolvidas
$JRUDYDPRVDSOLFDUD/µJLFDQDVROX©¥RGHSUREOHPDV na resolução dos mais diversos tipos de problemas precisam
formular uma sequência de ações para chegar a uma solução
ou resultado satisfatório.
1.1 - Lógica na solução de problemas Para exemplificar, vamos imaginar uma situação da vida
real, na qual podemos perceber a criação de um Algoritmo. Por
A Lógica de programação é a técnica de encadear exemplo, para assistir um filme em DVD, algumas sequências
pensamentos para atingir um determinado objetivo. de ações deverão ser executadas. Nesse caso, considere que o
Para quem deseja trabalhar com desenvolvimento de aparelho de DVD já está conectado a uma TV e que ambos
sistemas, ela permite definir a sequência Lógica para alcançar estão prontos para funcionar. Precisaremos, portanto, executar
a resolução de um problema. Esses pensamentos são os seguintes passos:
descritos como uma sequência de instruções. Essa sequência a) Ligar a TV.
é executada passo a passo até atingir a solução. b) Ligar o DVD.
Os profissionais de análise no seu dia a dia dentro de c) Abrir o compartimento do disco.
suas empresas terão que solucionar problemas e atingir os d) Inserir o disco.
objetivos apresentados com eficiência e eficácia. e) Fechar o compartimento do disco.
f) Pressionar a tecla PLAY para iniciar o filme.

No decorrer da disciplina você terá a oportunidade de entender Note que a sequência de instruções apresentada precisou
melhor a técnica para desenvolver o raciocínio lógico, lembrando ser definida para que fosse possível assistir ao filme no
que, para que isso aconteça você precisará ser persistente e praticá- aparelho de DVD. Para nós, pode parecer uma coisa simples,
lo constantemente. Passemos, a seguir, para o estudo sobre os mas tivemos que montar uma sequência de instruções para que
Algoritmos. fosse possível atender à necessidade (problema) em questão.
Assim como esse exemplo, em nossa vida cotidiana
7 193
encontraremos diversas outras situações em que teremos f) colocar a lâmpada nova.
que desenvolver Algoritmos para resolver determinados
problemas, tais como: trocar o pneu de um carro, preparar um Mas, e se a lâmpada não estiver queimada?
bolo, arrumar o filho para ir à escola, etc. Neste caso, a pessoa poderá trocar a lâmpada do mesmo
modo, mesmo não prevendo essa situação. Para solucionar
esse novo problema, podemos efetuar um teste seletivo,
-DSRQHVHVDȴUPDPWHUFULDGRR$OJRULWPRTXHDGLYLQKDDSUR[LPLGDGH
verificando se a lâmpada está ou não queimada:
da morte. “A insólita descoberta foi feita por programadores da
Universidade de Yokohama com base na análise de seis meses de D SHJDUXPDHVFDGD
JUDYD©·HV¢VFKDPDGDVSDUDRVVHUYL©RVGHHPHUJ¬QFLDVGDORFDOLGDGH E SRVLFLRQDUHPEDL[RGDOkPSDGD
>@6HJXQGRRVLQYHVWLJDGRUHVRREMHWLYRGR$OJRULWPR«LGHQWLȴFDUDV F EXVFDUXPDOkPSDGDQRYD
chamadas de emergência de quem está mais necessitado, no momento G OLJDURLQWHUUXSWRU
da triagem” (CURIOSIDADES 10, 2011). e) se a lâmpada não acender, então:
Como podemos perceber, criar Algoritmos pode nos ajudar a solucionar ‡VXELUQDHVFDGD
RVPDLVGLYHUVRVSUREOHPDVHHQFRQWUDUVROX©·HVSDUDGLIHUHQWHV£UHDV ‡UHWLUDUDOkPSDGDYHOKD
do conhecimento. ‡FRORFDUDOkPSDGDQRYD

É importante observar ainda que para cada problema a


ser resolvido, existem diversos caminhos que levam à solução Viu como a criação de Algoritmos é algo simples que você já
desejada, isto é: um problema pode ser resolvido de duas ou está habituado a fazer diariamente? Agora, para sedimentar sua
mais maneiras diferentes, obtendo o mesmo resultado, ou ainda DSUHQGL]DJHP VXJHULPRV TXH SDUH XP PLQXWR UHȵLWD VREUH R TXH
podemos ter soluções mais eficientes e eficazes que outras para estudou e tente escrever o Algoritmo que você criou para estudar esta
atingir o mesmo objetivo. Aula: fui até o escritório, selecionei a apostila da disciplina Algoritmo
No caso do DVD, por exemplo, ao invés de ligar primeiro e Programação, abrir na página 5, etc. Com o resultado de sua
a TV, poderíamos ter ligado o DVD e depois a TV, o que seria autoavaliação, você poderá escolher entre prosseguir seus estudos ou
outra sequência para a solução do problema, porém capaz de pedir ajuda para eliminar eventuais dúvidas, antes que elas se tornem
proporcionar o mesmo resultado. Além dessa, ainda teríamos XPDȊERODGHQHYHȋ$JRUDYDPRVSDVVDUDRHVWXGRVREUHDSHUFHS©¥R
a opção de criar uma lista de ações com mais detalhes, como: GRV SUREOHPDV D©·HV LQGLVSHQV£YHLV SDUD FULD©¥R H DSOLFD©¥R GH
acrescentar a ação de ajustar o canal da TV, ou ainda, pressionar Algoritmos.
a tecla TV/VÍDEO para ajustar a sintonia com o aparelho de
DVD. 2.1 - Percepção do Problema
Em outras palavras, podemos afirmar que o nível de
detalhamento do Algoritmo varia de acordo com o problema Diferente do que vários profissionais que trabalham com
a ser resolvido. Entretanto, isso não significa que uma solução Algoritmos e programação acreditam que a primeira coisa a se
mais detalhada seja melhor ou pior que outra menos detalhada, pensar não é a solução de um problema, mas a percepção dele.
uma vez que a decisão de usar mais ou menos ações para atingir Essa é a razão pela qual muitas pessoas sentem
o objetivo deve ser analisada em cada situação separadamente. dificuldades em iniciar o desenvolvimento do Algoritmo:
No computador vale a mesma regra! Um problema poderá justamente porque focam suas ideias iniciais na solução e não
ter duas ou mais soluções diferentes para chegar ao objetivo, no problema.
que é a sua solução. Sabendo disso, podemos afirmar que nenhum problema
Por exemplo, você deseja sacar dinheiro em um caixa será resolvido se não for minuciosamente entendido. Portanto,
automático, então precisa: ao realizar um Algoritmo o foco inicial deve estar sobre o
problema, para depois se pensar em uma solução.
D LUDWpREDQFR O entendimento detalhado do problema é um fator que
E DEULUDSRUWDGRFDL[DHOHWU{QLFR diferencia uma solução algorítmica da outra. Assim, quanto mais
F SDVVDURFDUWmRQROHLWRUGRFDL[D se conhece sobre o problema em questão, maiores as chances
G GLJLWDUVXDVHQKDGDFRQWDFRUUHQWH de se criar soluções mais adequadas, eficientes e eficazes.
H HVFROKHUDRSomR´6DTXHµ Fique antenado! No site do You Tube você pode encontrar
I GLJLWDURYDORUGHVHMDGRHFRQILUPDU inúmeros vídeos sobre a Lógica de programação, a criação e o
g) retirar o dinheiro. emprego de Algoritmos. Sugiro que realize buscas utilizando
Vejamos outro exemplo: trocar uma lâmpada! Inúmeras esses termos como palavras-chave, procure assistir alguns deles
vezes fazemos esse tipo de atividade inconscientemente, sem e se posicionar criticamente em relação ao conteúdo. Com os
percebermos os pequenos detalhes. Contudo, agora, vamos ver conhecimentos que está adquirindo, cada vez mais, você se
como ficaria a solução do problema passo a passo: torna capaz de superar o senso comum sobre as informações
disponibilizadas nos diferentes meios de comunicação e
D SHJDUXPDHVFDGD utilizá-las como fontes de pesquisa, sempre que considerar
E SRVLFLRQDUDHVFDGDHPEDL[RGDOkPSDGD que se trata de conhecimentos úteis!
F EXVFDUXPDOkPSDGDQRYD Ah, lembre-se de que esse hábito será fundamental no
G VXELUQDHVFDGD dia a dia de sua profissão!
H UHWLUDUDOkPSDGDYHOKD Daí surge desafios para a criação do Algoritmo que são:
194 Algoritmo e Programação 8
a) usar de criatividade para apresentar uma ou mais Em que:
DOWHUQDWLYDVGHVROXomRSDUDXPSUREOHPD a) Entrada:VmRRVGDGRVGHHQWUDGDGHXP$OJRULWPR
b) transformar ideias abstratas em uma sequência de b) Processamento: são os procedimentos utilizados para
ações. FKHJDUDRUHVXOWDGRILQDO
c) Saída: são os dados já processados.
Como você pôde notar, a arte de criar Algoritmos não
pode ser encarada apenas como a criação de uma solução para
o problema, mas como a criação da melhor solução possível.
Compreenderam?
Já sabemos que podem existir várias soluções para
Entrada: são os dados fornecidos inicialmente para se criar um
o mesmo problema cabe, então, ao desenvolvedor do
Algoritmo.
Algoritmo pensar em duas ou mais soluções diferentes para
Processamento: é a forma como o problema foi resolvido.
poder analisá-las, compará-las e decidir qual delas é a melhor.
Saída: é a solução do problema.
Vale lembrar ainda que o tamanho ou complexidade do
Simples, vocês não acham?
Algoritmo não é relativamente proporcional à sua qualidade.
Assim, para cada problema a ser levado ao computador,
devem-se planejar as operações correspondentes. O
automatismo exige que o planejamento dessas operações
Retomando a aula
seja realizado previamente, ou seja, antes de se utilizar o
computador.
Em outras palavras, a utilização de um computador,
para se resolver qualquer problema exige, antes de qualquer
coisa, que se desenvolva um Algoritmo, isto é, que se faça a Parece que estamos indo bem. Então, para encerrar essa
descrição do conjunto de comandos ordenados que, quando aula, vamos recordar:
obedecidos, resultarão na realização da tarefa desejada,
obtendo os resultados esperados.
Os Algoritmos encontram-se entre a ideia de se
resolver um problema por meio do computador e o sistema 1 - Lógica: conceituação e aplicação
desenvolvido pelas linguagens de programação.
A elaboração de Algoritmos é, para estudantes de Na referida Seção você teve a oportunidade de construir
programação, o passo inicial para a solução de qualquer conhecimentos sobre Lógica, a qual se trata de uma ciência
problema computacional. muito importante, capaz de garantir que nosso pensamento
Isso significa que identificado o problema, será necessária proceda corretamente e que cheguemos às conclusões
a escrita de uma série de instruções, normalmente em coerentes e verdadeiras.
português, ou bem próximas dele, em uma ordem logicamente Desse modo, vimos que a aplicação da Lógica é
definida, para que se obtenha a solução do problema. É desse fundamental para a construção de Algoritmos e, por
modo que se torna possível a construção de programas em conseguinte, programas logicamente estruturados para atingir
qualquer linguagem de computador. Para entender melhor a os objetivos almejados pelo(s) seu(s) criador(es).
elaboração de um programa, observe atentamente a Figura
1.1: 2 - Algoritmo: definição e criação por meio da
percepção de um problema
Fase da resolução
Problema Iniciamos nosso estudo sobre os Algoritmos, ou seja,
do problema
uma sequência finita, bem definida e Lógica de instruções
Solução em que podem ser utilizadas para análise e percepção de um
Passo difícil forma de problema em busca de sua solução. Vimos que podemos
algoritmo propor diferentes Algoritmos para encontrar várias soluções e
Solução como Fase da
escolher a que melhor atinge os objetivos de um programa que
um programa implementação
se pretende construir.
É importante observar que os conhecimentos construídos
Figura 1.1 Resolução de um problema e programação. nesta Aula são fundamentais e servem como base de muitos
Fonte: acervo pessoal. outros conhecimentos importantes para o profissional que
Além disso, é importante ressaltar que qualquer tarefa atua ou pretende atuar na área de programação.
que siga determinado padrão pode ser descrita por um
Algoritmo e que para montá-lo, precisamos dividir o problema
apresentado em três fases fundamentais. Veja Figura 1.2:
&DVR YRF¬ WHQKD ȴFDGR FRP G¼YLGDV VREUH D $XOD  DFHVVH DV
Entrada Processamento Saída ferramentas “fórum”,“quadro de avisos” ou “chat”e interaja com seus
FROHJDV GH FXUVR H FRP VHX SURIHVVRU 3DUWLFLSH DȴQDO YRF¬ « R
SHUVRQDJHPSULQFLSDOGHVXDDSUHQGL]DJHP
Figura 1.2 Fases de um problema.
Fonte: acervo pessoal.
9 195

Vale a pena

Vale a pena ler

*8,0$5®(6 ÇQJHOR GH 0RXUD /$*(6 1HZWRQ


Alberto de Castilho. Algoritmos e estrutura de dados. Rio de
Janeiro: LTC, 1994.
0$1=$12 -RVp $XJXVWR 1 * 2/,9(,5$
Jayr Figueiredo de Oliveira. Algoritmos - Lógica para
desenvolvimento de programação. 2. ed. São Paulo: Érica,
2007.

Vale a pena acessar

CURIOSIDADES 10. Japoneses criam Algoritmo que


adivinha proximidade da morte. Disponível em: <http://
www.curiosidades10.com/tecnologia/japoneses_criam_
Algoritmo_que_adivinha_proximidade_da_morte.html#>.
Acesso em: 20 maio 2011.
GOVERNO DO ESTADO DO PARANÁ. Bate
byte - flagrantes: o criador dos Algoritmos. Disponível
em: <http://www.batebyte.pr.gov.br/modules/conteudo/
conteudo.php?conteudo=1679>. Acesso em: 20 maio 2011.
TEC MUNDO. O que é algoritmo? Disponível em:
<http://www.tecmundo.com.br/2082-o-que-e-Algoritmo-.
htm>. Acesso em: 20 maio 2011.

Vale a pena assistir

YOU TUBE. 1ª de 8 Aulas= Algoritmo - introdução,


definição e conceitos. Disponível em: <www.youtube.com/
watch?v=3hv5_hWPIeo>. Acesso em: 20 maio 2011.

Minhas DQRWD©·HV
196 Algoritmo e Programação

2º Aula

Algoritmos

Estudaremos, neste capítulo, os Algoritmos.


Veremos como estruturá-los e identificaremos os
métodos que podem ser de ajuda na escrita de programas.
É importante que qualquer dúvida seja eliminada na
plataforma, utilizando as ferramentas “quadro de avisos”
ou “fórum”.
Não deixe que suas dúvidas o(a) impeçam de
prosseguir em seus estudos. Lembre-se: cada passo
compreendido é um passo para uma base melhor, o que
vai tornar você um profissional mais qualificado.
Boa aula!

Objetivos de aprendizagem

Ao término desta aula, o aluno será capaz de:

‡LGHQWLILFDUDUHODomRHQWUH$OJRULWPRVHSURJUDPDV
‡GLIHUHQFLDUDVWUrVOLQJXDJHQVGHSURJUDPDomRHVDEHUTXDQGRXViODV
‡UHFRQKHFHUHHQWHQGHURVVtPERORVGRGLDJUDPDGHEORFR RXGLDJUDPDGHIOX[R 
11 197
incondicional ou de interrupção do Algoritmo. Um desvio
Seções de estudo incondicional é aquele em que o programa muda seu fluxo
de execução arbitrariamente. Esse artifício pode ser usado
quando não se tem um completo domínio da lógica do
1 - Algoritmos estruturados
programa, mas deve ser evitado, pois provoca a quebra da
2 - Linguagens de programação
estrutura lógica do Algoritmo.
Os Algoritmos estruturados são fantásticos, você não
1 - Algoritmos estruturados acha? Agora, vamos passar ao estudo sobre as linguagens de
programação.
1.1 - Introdução
Desenvolver Algoritmos estruturados significa, 2 - Linguagens de programação
basicamente, utilizar uma metodologia de projeto de programas,
com o objetivo de facilitar:
D DHVFULWDGRV$OJRULWPRV Escrever um programa é o mesmo que traduzir um
E DOHLWXUDHRHQWHQGLPHQWRGRV$OJRULWPRV Algoritmo para uma linguagem de programação qualquer.
c) a manutenção e modificação dos Algoritmos. As linguagens de programação são softwares que permitem
transformar um Algoritmo em um programa de computador.
Aprender uma nova linguagem de programação é
9RF¬M£KDYLDSHQVDGRVREUHDVUD]·HVHDLPSRUW¤QFLDGHVHGHVHQYROYHU
uma tarefa fácil quando se tem um bom conhecimento
Algoritmos estruturados?
de Algoritmos, pois o maior problema na criação de um
programa não é a linguagem em si, mas sim as dificuldades na
O grande desafio da escrita de programas é reduzir a percepção do problema e na formulação de uma boa solução.
complexidade. Muitos programas são escritos de uma forma Existem linguagens para os mais diversos domínios
tão complicada que até o próprio autor tem dificuldade de aplicação, cada uma com seus propósitos. Algumas são
de interpretá-los depois. Para reduzir a complexidade dos destinadas ao desenvolvimento de aplicações comerciais,
Algoritmos deve-se: outras têm propósito científico, aplicações em inteligência
a) Escrever o Algoritmo fazendo refinamentos sucessivos. artificial ou na criação de programas para internet.
Isso é chamado de desenvolvimento top-down – essa técnica
consiste em ir escrevendo as funções principais do programa e
depois detalhar cada uma delas em funções menores, até que se Toda e qualquer linguagem é constituída por signos. Signos são
tenha um último nível que não é mais possível detalhar. LPDJHQV JHVWRV VRQV PHOµGLFRV H RXWURV VLVWHPDV GH VLJQLȴFD©¥R
b) Decompor o Algoritmo todo em módulos funcionais. 2VVLJQRVQ¥RW¬PVLJQLȴFDGRSRUVLPHVPRVPDVUHFHEHPVHQWLGRV
É mais fácil compreender uma solução se a analisarmos por convencionados e, assim, passam a ser usados na comunicação, seja
partes, ao invés de olharmos a solução como um todo. A esse linguística, seja de programação. A ciência que estuda os signos é a
processo chamamos de modularização. Semiologia (BARTHES, 2006).
c) Usar soluções simples e não muito extensas em cada um
dos módulos, com poucas estruturas de controle para facilitar
o entendimento.
As linguagens de programação podem ser dos seguintes
Vamos, agora, observar em mais detalhes como utilizar tipos: interpretadas, compiladas ou híbridas.
cada uma das técnicas citadas.
2.1 - Linguagens interpretadas
1.2 - Principais Técnicas de
Estruturação dos Algoritmos Nas linguagens interpretadas, o interpretador lê, analisa
e executa cada instrução do programa fonte, sem traduzir
As três principais técnicas para a estruturação dos para uma linguagem de máquina. Cada linha ou instrução
Algoritmos são: é executada na sequência. Quando um erro é encontrado, a
a) Desenvolvimento top-down: depois que entendemos o execução do programa é interrompida.
problema a ser solucionado, precisamos formular alternativas O interpretador simula por software uma máquina
de solução. Para isso, formulamos uma possível solução, a qual virtual, na qual o ciclo de execução entende os comandos da
precisa ser refinada, ou seja, detalhada em partes menores até linguagem de alto nível.
que se tenha uma visão de todos os detalhes. Note que esse tipo de linguagem oferece algumas
b) Modularização: a modularização consiste em dividir desvantagens, como a necessidade da presença do código fonte
a solução do problema em partes, ou módulos, cada um para a execução do programa. Além disso, o interpretador da
com funções bem definidas, dando maior agilidade ao linguagem precisa estar instalado no computador onde está o
desenvolvimento. programa.
c) Estruturas de controle: o uso de estruturas de controle A execução do programa é bem mais lenta do que nas
adequadas afeta diretamente a qualidade do Algoritmo. Muitos linguagens compiladas, uma vez que o interpretador precisa
programadores têm o costume de usar comandos de desvio analisar as instruções do programa sempre que vai executá-las.
198 Algoritmo e Programação 12

Vamos visualizar como funcionam as linguagens interpretadas na [...] Que uma linguagem híbrida “tem maior portabilidade que uma
Figura 2.1. linguagem compilada”? (UFSCAR, 2011)

Programa-fonte Programas escritos em uma linguagem híbrida são mais


rápidos que os de uma linguagem interpretada, isso porque
Dados de entrada as instruções intermediárias são projetadas para serem
interpretadas facilmente.
Interpretador
2.4 - Diagrama de Bloco
Resultados Também conhecido como diagrama de fluxo, é uma
Figura 2.1 Funcionamento das linguagens interpretadas.
forma padronizada para representar os passos lógicos de um
Fonte: acervo pessoal. determinado processamento. Com ele, podemos definir uma
sequência de símbolos, de significados bem definidos. Sua
2.2 - Linguagens Compiladas função é facilitar a visualização dos passos da resolução de um
Os compiladores têm a tarefa de ler e analisar o programa Algoritmo. Dentro do símbolo sempre é escrita a instrução a
escrito em uma linguagem de programação – o programa ser realizada. Veja Quadro 2.2:
fonte ou código fonte – e traduzi-los para a linguagem de
4XDGUR'LDJUDPDGHEORFR ȵX[R
máquina, executando-os diretamente no computador.
Diferentemente da interpretação, a compilação analisa
todo o código fonte à procura de erros. Só depois que Símbolo Função
essa análise termina – e sem que nenhum erro tenha sido
encontrado – é que será criado um código intermediário ΖQGLFDRLQ¯FLRHRXȴPGRȵX[RGR
chamado de “código objeto”. Esse código objeto será então algoritmo.
linkeditado (ou ligado) e um código executável será gerado. TERMINAL

Um compilador é um programa (ou um conjunto de programas) que


Indica cálculos a efetuar,
WUDGX]XPFµGLJRIRQWHSDUDXPDOLQJXDJHPGHPDLVEDL[RQ¯YHO D
DWULEXL©·HVHYDORUHV
linguagem alvo, que tem uma forma binária conhecida como código
objeto). Normalmente, o código fonte é escrito em uma linguagem PROCESSAMENTO
de programação de alto nível, com grande capacidade de abstração,
HRFµGLJRREMHWR«HVFULWRHPXPDOLQJXDJHPGHEDL[RQ¯YHOFRPR Indica a decisão que deve ser
XPD VHTX¬QFLD GH LQVWUX©·HV D VHU H[HFXWDGD SHOR SURFHVVDGRU 2 tomada, indicando a possibilidade
compilador é um dos dois tipos mais gerais de tradutores, juntamente de desvios.
com o interpretador (PESQUOMPILE, 2011). DECISÃO
Fonte: acervo pessoal.
Nos programas compilados, não há a necessidade da
presença do código fonte para a sua execução, assim como o
compilador não precisa estar instalado para isso. O programa Notem que, nos diagramas de blocos, a descrição
executável criado é independente da linguagem. Nesse caso, a do raciocínio se dá por meio de símbolos gráficos. É por
execução do programa é mais rápida, uma vez que o programa intermédio deles que resolveremos os Algoritmos.
fonte não precisará ser analisado em cada execução. Vale salientar que esses símbolos foram sendo criados
A figura 2.2 mostra o processo de compilação. Observe-a: de acordo com a necessidade de apresentar a resolução
dos Algoritmos. Nós vimos apenas três deles: terminal,
Tradução processamento e decisão. No entanto, existem muitos outros,
como: entrada de dados, saída de dados, saída de dados
Programa-fonte Programa-objeto
no vídeo, conector, preparação, linha de comunicação.
Figura 2.2 Processo de compilação. O que dificulta a utilização dos diagramas são os desenhos
Fonte: acervo pessoal.
que se tornam um pouco confusos e complexos, bem como
sua difícil manutenção.
2.3 - Linguagens Híbridas Atualmente, eles não são mais utilizados na prática.
As linguagens híbridas usam a interpretação e a
compilação. Nesse contexto, o compilador tem o papel de
converter o código fonte em um código conhecido por byte 9DPRVDJRUDUHID]HURVH[HUF¯FLRVUHDOL]DGRVQD$XOD&RQWXGRGHVWD
code – uma linguagem de baixo nível, que depois é interpretada. vez utilizando a simbologia dos diagramas de blocos. Faça uma tentativa
Como exemplo, podemos citar a linguagem JAVA, que gera e depois compare-a com a Figura 2.3.
um código chamado de Java Bytecode (EBAH, 2011).
13 199
Ligar o DVD Trocar uma lâmpada as linguagens compiladas, nas quais os compiladores têm a
tarefa de ler e analisar o programa escrito em uma linguagem
INÍCIO INÍCIO de programação e traduzi-los para a linguagem de máquina,
H[HFXWDQGRRV GLUHWDPHQWH QR FRPSXWDGRU DV OLQJXDJHQV
KtEULGDV TXH XVDP D LQWHUSUHWDomR H D FRPSLODomR EHP
Ligar a TV Pegar uma escada
como o diagrama de bloco, com o qual podemos definir
uma sequência de símbolos, de significados bem definidos
que facilitam a visualização dos passos da resolução de um
Algoritmo.
&RORFDUHPEDL[RGD
Ligar o DVD
lâmpada Espero que seus estudos referentes à Aula 2 tenham sido proveitosos.
Mas, caso ainda tenha dúvidas, sugerimos que acesse o ambiente
virtual e utilize as ferramentas apropriadas para se comunicar com
Buscar uma lâmpada seus colegas de curso e com seu professor. Além disso, é importante
Abrir o drive do DVD TXHUHȵLWDVREUHRVFRQWH¼GRVHDVHVWUDW«JLDVGLG£WLFDVHPSUHJDGDV
nova
para a aprendizagem desta Aula: o que foi bom? O que pode melhorar?
/HPEUHVHGHTXHHVWDUHPRVHVSHUDQGRVXDVVXJHVW·HVSDUDPHOKRUDU
QRVVRVUHFXUVRVHW«FQLFDVGLG£WLFDVXWLOL]DGRVQRFXUVR$ȴQDOQD($'
Inserir o disco de DVD Subir na escada a construção de conhecimento é um trabalho de todos. Participe, nós
WDPE«PTXHUHPRVDSUHQGHUFRPYRF¬

Retirar a lâmpada
Fechar o drive de DVD
velha Vale a pena

Pressionar o Play do Colocar a lâmpada


DVD nova Vale a pena ler

BARTHES, Roland. Elementos de semiologia. São Paulo:


Cultrix, 2006.
FIM FIM *8,0$5®(6 ÇQJHOR GH 0RXUD /$*(6 1HZWRQ
Figura 2.3 Exercícios utilizando diagramas de blocos.
Alberto de Castilho. Algoritmos e estrutura de dados. Rio de
Fonte: acervo pessoal. Janeiro: LTC, 1994.
0$1=$12 -RVp $XJXVWR 1 * 2/,9(,5$ -D\U
Retomando a aula Figueiredo de Oliveira. Algoritmos - lógica para desenvolvimento
de programação. 2. ed. São Paulo: Érica, 2007.
VENÂNCIO, Cláudio Ferreira. Desenvolvimento de
algoritmos: uma nova abordagem. São Paulo: Érica, 2000.
Para continuar apresentando um desempenho
satisfatório, é importante que retomemos o conteúdo
estudado nesta Aula.

1 - Algoritmos estruturados Vale a pena acessar


Na primeira Seção tivemos a oportunidade de entender que
OFICINA DA NET. Algoritmo estruturado. Disponível
desenvolver Algoritmos estruturados significa, basicamente,
em: <http://www.oficinadanet.com.br/apostilas/
utilizar uma metodologia de projeto de programas com os
detalhe/576/apostila_de_algoritmo_estruturado>. Acesso
objetivos de facilitar a escrita, a leitura e o entendimento dos
em: 28 jun. 2011.
Algoritmos.
PEQUOMPILE. O que é um compilador. Disponível
Além disso, estudamos as principais técnicas para a
em: <http://www.oficinadanet.com.br/apostilas/
estruturação dos Algoritmos, ou seja, o desenvolvimento top-
detalhe/576/apostila_de_algoritmo_estruturado>. Acesso
down, a modularização e as estruturas de controle.
em: 28 jun. 2011.
2 - Linguagens de programação UFSCAR – Universidade Federal de São Carlos.
Métodos de implementação de linguagens. Disponível em:
Na Seção 2, construímos conhecimentos sobre as <http://www.oficinadanet.com.br/apostilas/detalhe/576/
linguagens interpretadas, em que o interpretador simula por apostila_de_algoritmo_estruturado>. Acesso em: 28 jun.
software uma máquina virtual que faz com que o ciclo de 2011.
H[HFXomR HQWHQGD RV FRPDQGRV GD OLQJXDJHP GH DOWR QtYHO
200 Algoritmo e Programação 14

Vale a pena assistir


FERNANDES, A. R. Entendendo algoritmos -
Parte I. Disponível em: <http://www.youtube.com/
watch?v=NUtmw47rroI>. Acesso em: 28 jun. 2011.

Minhas DQRWD©·HV
201

Aula 3º

Linguagem algorítmica

Prezado(a) aluno(a), para iniciar a Aula 3 é necessário que


tenha compreendido a estrutura dos Algoritmos, bem como
os métodos que podem possibilitar e/ou facilitar a escrita de
programas. Assim, se houver ainda alguma dúvida sobre os
referidos temas, sugerimos que releia a Aula 2 e procure eliminá-
las com o apoio de seu professor, antes de prosseguir.
Já nesta Aula, você será convidado(a) a construir
conhecimentos sobre a linguagem algorítmica... Mas, você já
pensou sobre a razão pela qual vamos estudar esse assunto?
Pois bem, partindo da linguagem algorítmica é possível
escrever Algoritmos para serem seguidos (executados) pelo
computador... Viu como ela é importante!
Ah, durante o estudo, lembre-se de que estaremos
esperando sua participação no “fórum”,“quadro de avisos” ou
“chat”. Agora, é com você!
Boa aula!

Objetivos de aprendizagem

Ao término desta aula, o aluno será capaz de:

‡FRQFHLWXDURWHUPROLQJXDJHP$OJRUtWPLFDHVXDIXQomRHWHUPRVFRUUHODFLRQDGRVWDLVFRPR3RUWXJROGDGRVRSHUDGRUHV
HFRQVWDQWHV
‡DSOLFDUDOLQJXDJHP$OJRUtWPLFDQDSURJUDPDomR
‡GHVHQYROYHUHRXDPSOLDUDFDSDFLGDGHGHSHUFHSomRHGHXWLOL]DomRGDOLQJXDJHPDOJRUtWPLFD
202 Algoritmo e Programação 16
problemas do Algoritmo pode ser uma tarefa extensa e difícil.
Seções de estudo Já a programação em uma linguagem algorítmica é uma
simples transcrição de palavras-chave, o que torna o processo
bem mais fácil: uma vez predefinidas as sequências lógicas
1 - Portugol
das tarefas ou instruções a serem realizadas passo a passo,
2 - Tipos de dados
necessita-se apenas traduzi-las em uma linguagem própria que
3 - Operadores
o computador reconheça para, então, submetê-las à máquina
4 - Constantes
para análise e obter o seu resultado.
5 - Palavras Reservadas
A vantagem dos Algoritmos, portanto, não está no fato de
eliminar a adoção de regras comuns na programação, mas no
1 - Portugol fato de o usuário ter a possibilidade de escrever seu programa
em português, o que dará ao programador maior facilidade
Vamos começar nossos estudos, conhecendo o “Portugol”. Ele é para compreender e assimilar a lógica do programa, ao mesmo
indispensável para quem pretende dominar a lógica de programação, tempo em que exigirá o cumprimento de regras obrigatórias
o princípio de construção de Algoritmos, além de desenvolver boas para confecção dos Algoritmos.
SU£WLFDVGHSURJUDPD©¥R%RQVHVWXGRV
9RF¬SHUFHEHXFRPRR3RUWXJROSRGHIDFLOLWDURFRWLGLDQRSURȴVVLRQDO
Para entender o que é o Portugol, é preciso responder a do analista em desenvolvimento de sistemas? Assim, é importante
uma questão: o que é linguagem Algorítmica? que continue buscando conhecimentos sobre esse tema... Para tanto,
Uma linguagem algorítmica é uma pseudolinguagem VXJHULPRVTXHFRQVXOWHDVREUDVSHULµGLFRVHVLWHVLQGLFDGRVDRȴQDO
de programação, que utiliza comandos e instruções em desta Aula.
Português para representar as ações dos Algoritmos. A essa
pseudolinguagem damos o nome de Portugol, também Na Seção seguinte vamos avançar em nossa aprendizagem
conhecida como Português Estruturado. estudando os tipos de dados!
A necessidade de facilitar o trabalho dos profissionais
de informática no computador é constante e uma das formas 2 - Tipos de dados
para se conseguir esse objetivo é fazer com que o computador
seja, cada vez mais, capaz de compreender a linguagem escrita
9RF¬ VDELD TXH RV ȊWLSRV GH GDGRV LQȵXHQFLDP QD IRUPD FRPR R
ou falada, reduzindo ao máximo a quantidade de códigos e
Algoritmo irá trabalhar, o desempenho do Algoritmo e o seu consumo
símbolos que precisam ser aprendidos e memorizados.
de memória”? (EXPERT.NET, 2011).

Mas, infelizmente os computadores são um pouco limitados...


Mas, quais são e quais as características dos tipos de dados?
Os dados podem ser classificados em três tipos:
Por esse motivo, estamos sempre buscando formas para
numéricos (inteiros e real), caracteres (valores alfabéticos ou
fazer com que o computador aprenda a nossa língua, ao invés
alfanuméricos) e lógicos (valores verdadeiros ou falsos).
de nós aprendermos a “língua” dele.
Vamos entendê-los melhor!
Como você pode imaginar, os programadores teriam
seu trabalho facilitado se os programas fossem escritos em 2.1 - Numéricos inteiros
sentenças padronizadas da linguagem humana. Entretanto,
infelizmente, isso não acontece. Desse modo, os programas Numéricos e inteiros são toda e qualquer informação
precisam ser escritos em uma linguagem de programação e há numérica que pertença ao conjunto dos números inteiros
muitas dessas linguagens. (negativa, nula, positiva). Vale salientar que, por sua natureza,
Em tese, o estudante de programação deveria priorizar os números inteiros não possuem parte fracionária.
seus esforços no entendimento e na resolução do problema, Exemplo: 38,0,541,-56,-45.
bem como no desenvolvimento do raciocínio lógico necessário O dado inteiro em Portugol é representado pelo comando
e na abstração, ou seja, na capacidade de definir e usar estruturas “inteiro”.
ou operações complicadas, sem visualizar muitos detalhes
(SEBESTA, 1999). Contudo, isso só será possível se ele não 2.2 - Numéricos reais
precisar se preocupar com a tradução de cada um dos comandos
Numéricos reais são toda e qualquer informação numérica
que deve utilizar e não perder tempo com mensagens de erro,
que pertença ao conjunto dos números reais (negativa, nula,
cujo significado nem sempre é entendido corretamente.
positiva e fracionária).
Por essa razão, o aprendizado de Algoritmos torna-se
Exemplo: 38,0,541,-56,5.5,3.4.
fundamental para a elaboração de programas estruturados
O dado inteiro em Portugol é representado pelo comando
e para o aprimoramento da lógica de programação, uma
“real”.
vez que eliminam a preocupação com o idioma em que se
apresentam os programas da linguagem estruturada, bem 2.3 - Caracteres
como a necessidade de conhecimento de uma linguagem
de programação específica. Isso significa que o processo de Os caracteres são sequências de valores delimitados por
aprender uma linguagem de programação para resolver os aspas (“ ”) formadas por:
17 203
D OHWUDVGH$DWp= 3.1 - Operadores aritméticos
E Q~PHURVGHDWp
c) por símbolos: &,*,@ e um espaço em branco. Os operadores aritméticos são utilizados para operações
matemáticas a serem realizadas, para obter resultados
O tipo de dado ‘caractere’ também é conhecido como numéricos nas expressões. São eles:
alfanumérico e pode ser representado literal ou cadeia.
Exemplo: “Análise”, “Rua João Cândido Câmara, 1220”, Quadro 3.1 - Operadores aritméticos
“Fone: 3422-3977”, “Cep:79824-900”. Adição +
O dado caracter em Portugol é representado pelo
Subtração -
comando “caractere”.
Multiplicação *
2.4 - Lógicos Divisão Real /
Divisão Inteira \
Os dados lógicos possuem o valor ‘verdadeiro’ ou ‘falso’,
Módulo (Resto de divisão inteita) MOD
sendo que esse tipo de dado poderá representar apenas um dos
dois valores. Afirmamos, então, que o tipo de dado é lógico ou Fonte: acervo pessoal.

booleano. Exemplos:

O dado lógico também é denominado booleano por ter sido Quadro 3.2([HPSORVGHRSHUDGRUHVDULWP«WLFRV
desenvolvido na álgebra de George Boole. Este teórico teve uma 2+3 5
formação inicial rudimentar. Contudo, foi autodidata. Aos 20 anos,
7*4 28
fundou “sua própria escola e dedicou-se ao estudo da Matemática.
Em 1840 publicou o seu primeiro trabalho original e em 1844 foi 5/2 2.5 o quociente de uma divisão real
condecorado com a medalha de ouro da Royal Society pelo seu trabalho 5\2 2 o quociente de uma divisão inteira
sobre cálculo de operadores. Em 1847 publicou um volume sob o título 5 MOD 2 1 o resto de uma divisão inteira
The mathematical analysis of logic em que introduziu os conceitos de
Fonte: acervo pessoal.
lógica simbólica demonstrando que a lógica podia ser representada por
HTXD©·HVDOJ«EULFDV(VWHWUDEDOKRIRLIXQGDPHQWDOSDUDDFRQVWUX©¥RH 3.2 - Operadores relacionais
programação dos computadores eletrônicos iniciada cerca de 100 anos
mais tarde” (BRASIL ESCOLA, 2011). Um operador relacional existe para estabelecer uma
relação entre dois elementos.
Com isso o resultado da comparação na expressão será
Os dados lógicos também são representados da seguinte
sempre falso -.f. ou Verdadeiro –.v. Conheça esses operadores:
forma: Verdadeiro - .v. – Falso - .f.
O dado lógico em Portugol é representado pelo comando Quadro 3.3 - Operadores relacionais
“lógico”.
Igual a =
3 - Operadores Menor que <
Maior que >
Ȋ2SHUDGRUHV V¥R VLQDLV TXH V¥R DOLPHQWDGRV SRU H[SUHVV·HV H TXH Maior ou igual a >=
retornam um valor de acordo com a operação realizada” (NOBIOS, Menor ou igual a <=
2011). Desigualdade (diferente de) <>
Fonte: acervo pessoal.
Vamos entender mais claramente: os operadores possuem
uma sequência na qual as expressões são avaliadas e resolvidas. Se 3.3 - Operadores lógicos
dois operadores de uma mesma expressão possuírem o mesmo
nível de precedência, a expressão será avaliada da esquerda para a Os operadores lógicos permitem estender o uso dos
direita. As expressões contidas entre parênteses serão resolvidas operadores relacionais, permitindo, desse modo, composições
em primeiro lugar, a começar pelos parênteses mais internos. lógicas mais sofisticadas nas expressões. Observe-os:
A ordem de precedência é a seguinte:
1º - Expressões dentro de parênteses e funções. Quadro 3.4 - Operadores lógicos
2º - Operador unário menos ou negação. E - AND $H[SUHVV¥R ( «YHUGDGHLUDVHWRGDVDVFRQGL©·HV
3º - Operadores aritméticos multiplicativos: *, /. ^ para conjunção forem verdadeiras.
4º - Operadores aritméticos aditivos: +, -.
OU - OR $ H[SUHVV¥R 28  « YHUGDGHLUD VH SHOR PHQRV
5º - Operadores relacionais: =, <>, <, >, <=, >=.
v para disjunção uma condição for verdadeira.
6º - Operadores lógicos: e, ou, não.
NÃO - NOT $H[SUHVV¥R 1 2 LQYHUWHRYDORUGDH[SUHVV¥R
Possuímos três tipos de operadores: os aritméticos, ¬ para negação ou condição, se verdadeira inverte para falsa e
relacionais e lógicos, os quais vamos compreender em detalhes, vice-versa
nos tópicos a seguir. Fonte: acervo pessoal.
204 Algoritmo e Programação 18
Como você pôde deduzir partindo da leitura do Quadro a) Exemplo 01 (constantes numéricas): podem ser
3.1, a conjunção de duas proposições é verdadeira se e representadas por um número inteiro ou real, positivo, negativo
somente se ambas as proposições são verdadeiras. ou nulo (32, 3, 1415, -54, 0342).
b) Exemplo 02 (constantes lógicas): podem ser lógicas
8ID ΖVVR SDUHFH FRPSOLFDGR PDV QR 4XDGUR  HVW£ WXGR assumindo um dos seguintes valores: Verdadeiro (V) ou Falso
H[HPSOLȴFDGR9HMDP (F).
c) Exemplo 03 (constantes caractere [literal]): são
valores do tipo caractere, ou seja, qualquer sequência de
Quadro 3.5&RQMXQ©¥RGHGXDVSURSRVL©·HV
caracteres (letras, dígitos ou símbolos especiais). A constante
p q p^q literal deve sempre aparecer entre aspas (“Castro Alves”,
V V V “X1Y2W3”, “*A!B?-/”, “1234”).
V F F
F V F
Compreenderam?
8PD FRQVWDQWH « XP YDORU TXH Q¥R VH PRGLȴFD QR GHFRUUHU GR
F F F
$OJRULWPR 3RGH VHU H[SUHVVD SRU ȊQ¼PHURV YDORUHV OµJLFRV OHWUDV
Fonte: acervo pessoal. palavras e frases” (ICMC-USP, 2011).
Neste contexto:
a) p ^ q = F.
b) p ^ r = F. 5 - Palavras reservadas
c) q ^ r = F. O que lhe vem à mente quando lê o termo: “palavras
reservadas”?
Já a disjunção de duas proposições é verdadeira se e
As palavras reservadas são nomes utilizados pelo
somente se, pelo menos, uma delas for verdadeira. Veja:
Algoritmo que tem um sentido predeterminado. Portanto, não
Quadro 3.6'LVMXQ©¥RGHGXDVSURSRVL©·HV podem ser redefinidas pelo usuário como identificadores ou
utilizados de outra forma senão para a que foram criadas.
p q pvq Vamos identificar algumas delas:
V V V
V F V
Quadro 3.8 - Palavras reservadas

F V V se de até
F F F então declare escreva
Fonte: acervo pessoal. senão ȴPDOJRULWPR procedimento
Para o exemplo anterior: enquanto ȴPVH função
a) p v q = V. faça ȴPHQTXDQWR início
b) p v r = V. repita ȴPSDUD ȴP
c) q v r = F.
até que para inteiro
Finalmente, a negação pode ser formada inserindo-se a real caractere ou literal lógico
palavra não antes da proposição. Assim: Fonte: acervo pessoal.

Quadro 3.7 - Negação em uma proposição. Em sites de busca você pode localizar a lista de palavras
reservadas das diferentes linguagens de programação, tais
p ¬p como: Pascal, Java, C, C++, MySQL, Acess, etc. Desse modo,
V F sugerimos que realize pesquisas utilizando o termo “palavras
F V reservadas” como palavra-chave. Nessa ocasião, procure
Fonte: acervo pessoal.
verificar a consistência dos sites pesquisados e das informações
neles disponibilizadas, antes de considerá-las como verdadeiras.
No decorrer desta e das demais Aulas da disciplina, você terá a Lembre-se de que uma simples pesquisa realizada de forma crítica
oportunidade de entender melhor o uso dos operadores aritméticos. pode ser uma ótima ferramenta de aprendizagem e trabalho!
Porém, para que isso aconteça é necessário ser persistente e estudar
constantemente sobre esse tema. Pense nisso... Retomando a aula

4 - Constantes
Constante é um identificador que armazena um valor fixo, Vamos recordar:
ou seja, um valor não se modifica no decorrer do Algoritmo.
As constantes podem ser dos tipos: numérica, lógica ou 1 - Portugol
caractere (literal). Para entendê-las, vamos conhecer alguns
exemplos: Na primeira Seção construímos conhecimentos sobre
19 205
o Portugol (Português Estruturado). Vimos que ele é uma
pseudolinguagem de programação que utiliza comandos htm>. Acesso em: 28 jun. 2011.
e instruções em Português para representar as ações dos ICMC-USP. Algoritmos. Disponível em: <http://www.
Algoritmos. icmc.usp.br/~sce180/sce180-2/Aulas/Algoritmos.pdf>.
Acesso em: 28 jun. 2011.
2 - Tipos de dados e 3 - Operadores NOBIOS. Operadores aritméticos, relacionais, lógicos
Em prosseguimento, reconhecemos e compreendemos os e de atribuição. Disponível em: <http://everson.com.
dados numéricos (inteiros e real), caracteres (valores alfabéticos br/Operadores-Aritmeticos-Relacionais-Logicos-de-
ou alfanuméricos) e lógicos (valores verdadeiros ou falsos), Atribuicao>. Acesso em: 28 jun. 2011.
bem como os operadores aritméticos, relacionais e lógicos, os SIEBRA, S. A. Introdução à programação. Disponível
quais podem ser fornecidos para possibilitar a formação de em: <http://pt.scribd.com/doc/50982387/4/Unidade-2-
vários tipos de expressões. %E2%80%93-Linguagem-Algoritmica>. Acesso em: 28
jun. 2011.
4 - Constantes e 5 - Palavras Reservadas

Para finalizar, estudamos a constante, ou seja, um


identificador que armazena um valor fixo e as palavras
reservadas, as quais são nomes utilizados pelo Algoritmo que Vale a pena assistir
tem um sentido predeterminado e, portanto, só podem ser
utilizadas da forma como foram criadas. FERNANDES, G. B. Aula 5 – Programação
utilizando o Portugol. Disponível em: <http://www.scribd.
Lembre-se que cada Aula estudada representa um importante passo com/doc/53213916/Aula-05-Introducao-ao-Portugol-
para sua aprendizagem. Dessa forma, é imprescindível que, antes de VISUAL>. Acesso em: 28 jun. 2011.
iniciar a Aula 4, elimine todas as eventuais dúvidas que podem ter em
relação ao conteúdo estudado na Aula 3. Para tanto, esperamos sua
participação nas ferramentas “fórum”, “quadro de avisos” ou “chat”.
Minhas DQRWD©·HV
3DUWLFLSH

Vale a pena

Vale a pena ler


(9$5,672 -DLPH &5(632 6pUJLR Aprendendo a
programar programando numa linguagem Algorítmica executável
(ILA). 2. ed. Rio de Janeiro: Book Express, 2010.
*8,0$5®(6 ÇQJHOR GH 0RXUD /$*(6 1HZWRQ
Alberto de Castilho. Algoritmos e estrutura de dados. Rio de
Janeiro: LTC, 1994.
0$1=$12 -RVp $XJXVWR 1 * 2/,9(,5$
Jayr Figueiredo de Oliveira. Algoritmos - lógica para
desenvolvimento de programação. 2. ed. São Paulo: Érica,
2007.
SEBESTA, Robert W. Concepts of programming languages.
4th ed. USA: Addison-Wesley, 1999.

Vale a pena acessar

EXPERT.NET. Homepage. Disponível em: <http://


www.tiexpert.net/programacao/Algoritmo/tipos-de-dados.
php>. Acesso em: 28 jun. 2011.
BRASIL ESCOLA. George Boole. Disponível em:
<http://www.brasilescola.com/biografia/george-boole.
206 Algoritmo e Programação

4º Aula

Gramática do portugol

Caro(a) aluno(a), que tal conhecermos a “Gramática do


Portugol”?
Pois bem, nesta Aula, você será convidado(a) a construir
conhecimentos justamente sobre esse tema. Vamos, ainda,
reconhecer a importância da referida gramática e aplicá-la na
construção de algoritmos. Portanto, é esperado que você já esteja
familiarizado com os conteúdos tratados nas Aulas 1, 2 e 3. Assim,
caso considere necessário releia os conteúdos anteriormente
estudados e revise-os!
Lembre-se, ainda, de que caso surjam dúvidas no decorrer
dos estudos, estaremos esperando sua participação nas
ferramentas “chat”, “quadro de avisos” ou “fórum”. Aceite o
desafio! Acesse o ambiente virtual e continue fazendo parte dessa
comunidade colaborativa de construção de conhecimentos!
Boa aula!

Objetivos de aprendizagem

Ao término desta aula, o aluno será capaz de:

‡GHILQLULQWURGX]LUHFRQFHLWXDURWHUPR´*UDPiWLFDGH3RUWXJROµ
‡UHFRQKHFHUDLPSRUWkQFLDGD*UDPiWLFDGH3RUWXJRO
‡DSOLFDURVFRPDQGRVEiVLFRVGD*UDPiWLFDGH3RUWXJROQDSURJUDPDomR
21 207
estabelecida por vários autores em iniciação de Algoritmos.
Seções de estudo É válido salientar que essa sintaxe pode variar, todavia,
o padrão estabelecido por nós no decorrer deste curso será o
que utiliza o programa “VisuAlg” (que é um interpretador de
1 - Definição e sintaxe geral de um algoritmo Algoritmos). Com isso, poderemos testar todos os Algoritmos
2 - Variáveis (e constantes) da gramática do portugol exemplificados, tornando bem prático o entendimento do
3 - Comandos básicos Algoritmo e seu funcionamento.
Segue a sintaxe:
1  'HȴQL©¥R H VLQWD[H JHUDO GH XP algoritmo “Nome do Programa”
algoritmo. var9DULiYHLVȺ'HFODUDomRGHYDULiYHLVGR$OJRULWPR
<variável01>: <tipo1>
<variável02>: <tipo2>
9DPRVLQLFLDUQRVVDVUHȵH[·HVVREUH*UDP£WLFDGR3RUWXJRODSUHQGHQGR // Corpo do Algoritmo à Isto indica um comentário
VHXFRQFHLWRLPSRUW¤QFLDHDSOLFD©·HVQRFRQWH[WRGDSURJUDPD©¥R inicio //inicio sem acentuação, pois o VisuAlg não
6XJHULPRV TXH GXUDQWH D OHLWXUD GHVWD H GDV GHPDLV 6H©·HV GD $XOD //suporta acentuação
 DQRWH VXDV LQGDJD©·HV V¯QWHVHV H UHȵH[·HV (VVH K£ELWR DO«P <comando1>
de contribuir para organização de seus estudos, ajudará a manter <comando2>
um registro de toda a sua trajetória acadêmica, percebendo com <comando3>
PDLV FODUH]D HYHQWXDLV GLȴFXOGDGHV SDUD VDQ£ODV  H DYDQ©RV SDUD fimalgoritmo
comemorá-los).
E aí, você já conseguiu formar uma ideia sobre o que
%RQVHVWXGRV
vem a ser a sintaxe geral de um algoritmo? Em caso de
resposta negativa, não se preocupe: nosso estudo está apenas
Para entender a Gramática do Portugal, vamos conceituar começando e com os conteúdos das próximas Seções será
alguns termos importantes relacionados a ela! mais fácil compreendê-la. Além disso, você pode ampliar
Leland L. Beck afirma que “a gramática de uma seus conhecimentos, consultando as obras, periódicos e sites
linguagem de programação é uma descrição formal da indicados ao final desta Aula. Seja persistente! Passemos,
sintaxe, ou forma, dos programas e instruções individuais agora, para o estudo da Seção sobre as Variáveis!
escritas nessa linguagem” (BECK, 1997, grifo nosso).
Nesse contexto, Gilvan Vilarim defende que: 2 - Variáveis (e constantes) da
A Sintaxe é o nome dado ao conjunto de regras
gramática do portugol
a serem seguidas para a escrita dos Algoritmos.
Variáveis também são identificadores que armazenam
Do mesmo modo que em nossa língua,
precisamos seguir algumas regras para escrita,
valores, porém, ao contrário das constantes, o valor de uma
uniformizando os Algoritmos e facilitando variável pode mudar dentro do Algoritmo.
VXD SRVWHULRU FRGLÀFDomR HP SURJUDPDV FDVR As variáveis, assim como as constantes, podem ser dos
seja necessário. Já a semântica refere-se ao tipos: numérica (inteiro ou real), lógica ou literal.
que é efetuado pelo computador quando ele Observe que o conceito de variável talvez seja o mais
encontra um comando. “Portanto, se a sintaxe importante na confecção de um Algoritmo, uma vez que um
está relacionada à forma de um comando, a Algoritmo utiliza, quase sempre, uma declaração de variável.
semântica está relacionada ao seu conteúdo” Além disso, por definição, tudo aquilo que é sujeito
(VILARIM, 2004, grifo nosso). a variações, que é incerto, instável ou inconstante, em um
programa de computador são os dados a serem processados.
Reconhecendo a definição da gramática de uma linguagem
de programação, da sintaxe e da semântica, é preciso lembrar 2.1 - Nomeando constantes e
que, como você já estudou na Aula 3, o Portugol (Português variáveis
Estruturado) é constituído de letras maiúsculas e minúsculas
(“A” - “Z”, “a” - “z”), caractere sublinhado (“_”), os dígitos de Os nomes de constantes e variáveis (identificadores)
DHRVVtPERORVHVSHFLDLV  !  ^`· são nomes simbólicos para os objetos referenciados nos
Algoritmos. Esses nomes são escolhidos pelo usuário para
representar endereços de memória onde vão ser alocadas as
$*UDP£WLFDGR3RUWXJROFRPVXDVLQWD[HHVHP¤QWLFD«UHSUHVHQWDGD informações.
SRU ȊXP FRQMXQWR GH SDODYUDV LQVWUX©·HV  OLPLWDGDV H UHFRQKHFLGDV O nome da variável, por exemplo, é utilizado para sua
FRPR FRPDQGRV TXH WHP UHJUDV ȴ[DV H Q¥R FRQȵLWDQWHV GH XVR R identificação e representação dentro de um programa de
TXHVLJQLȴFDTXHXPDLQVWUX©¥RWHPDSHQDVXPVLJQLȴFDGRSDUDXP computador, sendo os identificadores formados por um ou
compilador [...]” (INFORMÁTICA EDUCATIVA, 2011). mais caracteres, os quais devem seguir algumas regras:
1) começar sempre por um caractere alfabético ou o
CONCEITO VtPEROR´Bµ VXEOLQKDGR 
Para conceituar a sintaxe geral de um Algoritmo, veja  VHUFRQVWLWXtGRVGHFDUDFWHUHVDOIDEpWLFRVRXQXPpULFRV
o exemplo a seguir. Nele, utilizamos uma sintaxe padrão 3) não podem conter caracteres especiais, como por
208 Algoritmo e Programação 22
H[HPSOR  !  ^`·
4) não podem ter o mesmo nome que comandos
var ΖGHQWLȴFDGRU inteiro
ou palavras reservadas do Algoritmo ou da linguagem de
programação que será usada.
real

3DUD HQWHQGHU PHOKRU YHMDPRV FRPR DFRQWHFH D GHȴQL©¥R GH XP caractere
LGHQWLȴFDGRUQD)LJXUD

lógico

)LJXUD'LDJUDPDGDGHȴQL©¥RGHXPDYDUL£YHO
Fonte: acervo pessoal.
Letra
Exemplo:
Letra algoritmo “Exemplo”
var
Dígito VARIÁVEL_1, VARIÁVEL_2: inteiro
VARIÁVEL_3, VARIÁVEL_4: real
inicio
Sublinhado leia (VARIÁVEL_1, VARIÁVEL_2)
leia (VARIÁVEL_3, VARIÁVEL_4)
Figura 4.1 Palavras reservadas.
fimalgoritmo
Fonte: acervo pessoal.

Uma variável só pode receber valores do mesmo tipo


Vale salientar que no nome dos identificadores não há declarado, ou seja, variáveis do tipo inteiro só podem receber
distinção entre letras maiúsculas ou minúsculas. valores inteiros e assim por diante.
Seguem exemplos de nomes permitidos:
a) cliente b) delta c) X d) BC4R e) MEDIA algoritmo “Exemplo2”
f) NOTA_ALUNO g) A h) A123B var
A, B: inteiro
Agora, seguem exemplos de nomes não permitidos: SOMA: real
a) 5X b) E(13) c) X-Y d) NOTA/2 e) 123TESTE inicio
f) NOME DO CLIENTE g) valor_em_R$ leia (A,B)
SOMA <- A + B
Geralmente colocamos o nome da variável com aquilo
escreva (SOMA)
que ela será relacionada na resolução do Algoritmo.
fimalgoritmo
Por exemplo:
var
QRPH Ⱥ LQGLFD TXH HVWD YDULiYHO UHFHEHUi XP QRPH  Observe um detalhe relevante: “a declaração de variáveis deve ser
tipo caractere. IHLWDGHQWURGHXPEORFRHVSHF¯ȴFRRTXDOSUHFLVDDSDUHFHUORJRDSµV
HQGHUHoR Ⱥ LQGLFD TXH HVWD YDULiYHO UHFHEHUi XP a declaração do Algoritmo. O bloco é iniciado pelas palavras-chave
endereço - tipo caractere. ȆYDUL£YHLVȇ VLPFRPDFHQWR HWHUPLQDFRPDSDODYUDFKDYHȆȴPYDUL£YHLVȇ
VRPDȺLQGLFDTXHHVWDYDULiYHOUHFHEHUiXPUHVXOWDGR Pelo menos uma variável deve ser declarada dentro do bloco (embora
de soma - tipo real ou inteiro. o bloco em si seja opcional) e apenas um bloco em escopo global deve
LGDGHȺLQGLFDTXHHVWDYDULiYHOUHFHEHUiXPQ~PHUR² ser declarado” (GPT.BERLIOS, 2011).
tipo inteiro.

2.2 - Declaração de Variáveis Que “variáveis não podem ter caracteres especiais? Portanto,
LGHQWLȴFDGRUHV QRPHV GH YDUL£YHLV IXQ©·HV H GR $OJRULWPR  Q¥R
As variáveis devem ser declaradas logo no início do SRGHPWHUDFHQWRVRXFDUDFWHUHVHVSHFLDLVFRPRHWF$GHȴQL©¥R
Algoritmo (ou no início do procedimento ou função como GH XP LGHQWLȴFDGRU HP *3RUWXJRO « HTXLYDOHQWH DR GDV OLQJXDJHQV
veremos mais adiante). A declaração de variáveis deve iniciar populares: uma letra (a-z ou A-Z) seguido de qualquer número de letras
pela palavra reservada “Var” e segue a sintaxe apresentada na ou número” (GPT.BERLIOS, 2011).
figura a seguir:

3 - Comandos básicos
8ID
ΖVVRSDUHFHFRPSOLFDGRPDVQDȴJXUDDVHJXLUHVW£WXGRH[SOLFDGLQKR CONCEITO
Vejam. Os comandos especificam as ações a serem realizadas
pelo computador, como comparações e atribuições. Eles se
23 209
constituem por expressões, palavras-chave e operadores.
Para interpretar o Portugol, podemos imaginá-lo como a estrutura de
3.1 - Atribuição uma árvore (estrutura de dados) que estabelece a sequência em que o
Para atribuirmos um valor a uma variável usaremos o $OJRULWPRGHYHVHUH[HFXWDGR
símbolo de atribuição . Sua sintaxe é apresentada na figura a
Ⱥ
seguir: Comando Leia
Esse comando permite que o usuário informe dados de
entrada para o Algoritmo. A sintaxe desse comando é definida
ΖGHQWLȴFDGRU ([SUHVV¥R na figura a seguir:
Ⱥ

)LJXUD'LDJUDPDGDDWULEXL©¥RGHYDORUHVDLGHQWLȴFDGRUHV ,
Fonte: acervo pessoal.

leia ΖGHQWLȴFDGRU
Exemplo: VALOR (TOTAL1+TOTAL2) * (A/B)
Ⱥ

Nesse exemplo, a variável VALOR receberá o resultado )LJXUD'LDJUDPDGHȵX[RGRFRPDQGR/(Ζ$


Fonte: acervo pessoal.
do cálculo da expressão da direita.
Exemplos:
3.2([SUHVV·HV leia (VALOR)
As expressões são constituídas por constantes, variáveis leia (A, B, CONTADOR)
e operadores, que definem o método para calcular um valor. leia (CÓDIGO, NOME)
O resultado das expressões pode ser armazenado em uma
O comando leia lê as variáveis da lista e mantém o cursor
variável de um tipo compatível com o valor resultado.
preparado de tal forma que o próximo comando leia, se
São exemplos de expressões:
houver, vai procurar o valor a ser lido na mesma linha.
a>b
Resultado <- 3 + (x * y) algoritmo “exemplo 01”
D + num / alfa var //Declaração de Variáveis
DIA <- 30 NOME: caractere //Variável nome tipo caractere
NOTA1, NOTA2: real //variável nota1 e nota 2 tipo
3.3 - Comentários //real
Os comentários, cuja importância é indiscutível dentro
inicio // Início do Corpo do Algoritmo
de um Algoritmo ou programa, são delimitados por “{ }”
leia (NOME) //entre com o Nome da Pessoa, via
(chaves) ou “//” (duas barras) e podem aparecer em qualquer
//teclado, ex: Cristiane
lugar do Algoritmo.
leia (NOTA1) //entre com a nota1, via teclado, ex: 5
Observe que dentro dos delimitadores de comentário não
leia (NOTA2) //entre com a nota2, via teclado, ex: 10
pode haver outros delimitadores, ou seja, não são permitidos
escreva (NOME,” “,NOTA1,” “,NOTA2) //escreva –
comentários aninhados. Os comentários não influenciarão
//Cristiane 5 10, no Monitor
no funcionamento do programa. Portanto, recomendamos a
fimalgoritmo //Fim do Algoritmo
utilização constante dos comentários, pois estes não afetarão em
nada no programa, exceto promover maiores esclarecimentos Comando Escreva
sobre determinadas partes do Algoritmo. Esse comando permite apresentar ao usuário mensagens
Exemplos de comentários: e dados contidos em identificadores. A sintaxe do comando
leia (a,b) //Leitura das variáveis A e B de saída é apresentada na figura 4.5:
escreva (“A soma de A e B =”,soma) //Escreve a soma
//dos valores informados pelo usuário
,
3.4 - Comandos de entrada e saída
Todo Algoritmo requer alguma forma de entrada e escreva ΖGHQWLȴFDGRU
saída de dados e informações. Um Algoritmo não teria razão
se não houvesse possibilidade de entrar com valores para
processamento ou mostrar os resultados desse processamento. escreval Caracter
Em alguns Algoritmos pode ser necessário incluir alguns dados
de entrada. )LJXUD'LDJUDPDGHȵX[RGRFRPDQGR(6&5(9$
Fonte: acervo pessoal.
Esses dados serão processados e os resultados serão
mostrados ao usuário. Uma das maneiras de exteriorizar os Exemplos:
resultados de determinado processamento é por meio da escreva (SOMA)
impressão desses resultados. Para que isso seja possível, temos escreva (“Media = “,MED)
o comando de entrada: leiaHRFRPDQGRGHVDtGDescreva. escreva (“Valor total = “,VALOR)
210 Algoritmo e Programação 24
Para saltar uma linha utiliza-se o comando “Escreval”.
Um Algoritmo simples ilustrando os comandos leia e houver erro, este será detectado rapidamente. Em outras palavras,
escreva é mostrado a seguir: HOH IDFLOLWD D LGHQWLȴFD©¥R GR ORFDO GR HUUR H FRQVHTXHQWHPHQWH VXD
algoritmo “Exemplo 02” FRUUH©¥R3RUHVVDUD]¥RWDPE«P«FKDPDGRGHWHVWHH[DXVWLYR 1Ζ((
var – UFRGS, 2011).
A, B, SOMA: inteiro
inicio
leia (A) //entre com valor de A ex: à 5
leia (B) //entre com valor de B ex: à 10 Exemplo 04: entrar com as variáveis X e Y e calcular as
SOMA <- A + B //SOMA recebe 5+10 = 15 expressões e escrever o resultado de X, Y e Z.
escreva (“A soma de A e B = “,SOMA) //escreve – A algoritmo “Exemplo 04”
//soma de A e B=15 var
fimalgorimo X, Y, Z: real
inicio
X < - 2,5
“O ponto fundamental que guia as diretrizes da linguagem G-Portugol Y < - 3,5
« VHX SURSµVLWR HGXFDFLRQDO HOD GHYH H[SUHVVDU SURFHVVRV Z < - ((X + Y) - 2) * (3 + X)
computacionais de forma que um leigo os compreenda sem enfatizar Y <- Y + 1
a si mesmos. Isto é, a linguagem em si deve chamar o mínimo de X <- Y + 1
atenção possível, fazendo com que a compreensão dos processos Y <- X + Y
computacionais seja tão natural quanto ler sua descrição informal, ou Z <- Z + Y + X
não estruturada” (GPT.BERLIOS, 2011). escreva (X,Y,Z:2:2)//nesse caso estamos definindo
//as casas decimais.
fimalgoritmo
Iremos avaliar vários Algoritmos, neles executaremos
um procedimento chamado teste de mesa que significa seguir Teste de Mesa (variáveis X, Y, Z)
as instruções do Algoritmo de maneira precisa para verificar
se o procedimento utilizado está correto ou não.
Exemplo 03: entrar com três variáveis, A e B, fazer as X Y Z
seguintes expressões de soma C=(B+A)+2, B=(C*(A+3) e
2.5
A=(B+C), e escreva o resultado de A, B e C.
algoritmo “Exemplo 03” 3.5
var 22
A, B, C: real 4.5
inicio 5.5
A < - 100
10
B < - 200
C < - (B/A) +2 37.5
B < - C*(A+3) 5.5 10 37.5
A < - B+C
escreva (A, B, C)
)LJXUD7HVWHGH0HVD YDUL£YHLV;<= 
fimalgoritmo Fonte: acervo pessoal.

Visualize no teste de mesa:


Teste de Mesa (variáveis A, B, C) Exemplo 05 - Entre com as variáveis de S e R e calcule as
expressões, U=S*R e X=U/5+R e escreva o valores de S,R,U
A B C e X.
100 algoritmo “Exemplo 05”
200 var
4 S, R, U: inteiro
X: real
412
inicio
412 S <- 3
R <- S
416 412 4 U <- S * R
X <- U / 5 + R
)LJXUD7HVWHGH0HVD YDUL£YHLV$%& 
Fonte: acervo pessoal. escreva (S, R, U, X)
fimalgoritmo
A vantagem em se testar o Algoritmo em teste de mesa é que se
Observe o teste de mesa:
25 211
S R U X Teste de Mesa (Média, P1, P2, P3, P4)
3 M P1 P2 P3 P4
3 10
9 10
4.8 5
8
3 3 9 4.8 8,25
8,25
)LJXUD7HVWHGH0HVD YDUL£YHLV;<= 
)LJXUD7HVWHGH0HVD 0«GLD3333 
Fonte: acervo pessoal.
Fonte: acervo pessoal.

Exemplo 08 – Escrever um Algoritmo para determinar o


Exemplo 06 - Ler uma temperatura em graus Celsius e consumo médio de um automóvel sendo fornecidos a distância
escrevê-la convertida em graus Fahrenheit. A expressão de total percorri da pelo automóvel e o total de combustível gasto.
conversão é F=(9*c+160)/5, sendo F a Temperatura em algoritmo “consumo”
Fahrenheit e C a temperatura em Celsius. var
algoritmo “Farenheit” dist, comb, consumo: real
var inicio
C, F: real escreva (“Digite em Kms”)
inicio leia (dist)
leia (C) escreva (“Digite o Combustível”)
F < - (9*C+160)/5 leia (comb)
escreva (“Resultado:”, F) consumo < - dist/comb
fimalgoritmo escreva (“Consumo:”,consumo)
Teste de Mesa (variáveis C, F)
fimalgoritmo

Teste de Mesa (Média, P1, P2, P3, P4)


C F
10 Consumo Dist Comb
50 10
50 05
2
)LJXUD7HVWHGH0HVD YDUL£YHLV&)  2
Fonte: acervo pessoal.
)LJXUD7HVWHGH0HVD 0«GLD3333 
Fonte: acervo pessoal.

Nesse caso, o consumo médio do carro foi de 2 km por


Lembre-se de que em sites como Scielo, Google Acadêmico, entre
litro de gasolina.
outros, você pode encontrar artigos sobre os comandos básicos da
Gramática do Portugol. Assim, é importante que realize buscas, procure
OHU WH[WRV UHODFLRQDGRV H DPSOLH VHX FRQKHFLPHQWR HP UHOD©¥R DR Lembre-se de que em caso de dúvidas, você não precisa se “afobar”,
conteúdo. O hábito da pesquisa será fundamental para sua formação e procure entrar em contato conosco por meio do ambiente virtual e
SDUDRGLDDGLDGHVXDSURȴVV¥R seguir as dicas recomendadas ao longo da Aula.

Exemplo 09 – Elaborar um Algoritmo que calcule


Exemplo 07 – Ler quatro valores referentes a quatro notas e apresente o volume de uma caixa retangular, utilizando a
escolares de um aluno e imprimir a média da nota do aluno. fórmula:
algoritmo “Média” volume= comprimento * largura * altura.
var algoritmo “volume”
media, P1, P2, P3, P4: real var
inicio vol, comp, larg, alt: real
leia (P1) inicio
leia (P2) escreva (“Entre com comprimento”)
leia (P3) leia (comp)
leia (P4) escreva (“Entre com a largura”)
media < - (P1 + P2 + P3 + P4) / 4 leia (larg)
escreva (“Media:”, media) escreva (“Entre com a altura”)
fimalgoritmo leia (alt)
212 Algoritmo e Programação 26
vol < - ((comp * larg)*alt))
escreva (“O Volume é:”, vol)
fimalgoritmo
Vale a pena acessar
Como você pode observar, nesse caso foi colocado um
parêntese a mais no Algoritmo. Isso indica que o primeiro INFORMÁTICA EDUCATIVA. Portugol/plus: uma
cálculo será do parêntese mais interno (comp*larg) em ferramenta de apoio ao ensino de lógica de programação
seguida será multiplicado o resultado vezes a altura. baseado no portugol. Disponível em: <http://www.c5.cl/
ieinvestiga/actas/ribie98/118.html>. Acesso em: 28 jun.
2011.
Retomando a aula
GPT.BERLIOS. Programando em Portugol. Disponível
em: <http://gpt.berlios.de/manual_nodes/node4.html>.
Acesso em: 28 jun. 2011.
NIEE – Núcleo de Informática na Educação Especial.
Estamos indo bem, não é mesmo? Então, para encerrar Homepage. Disponível em: <http://www.niee.ufrgs.br>.
esse tópico, vamos relembrar os conteúdos estudados Acesso em: 28 jun. 2011.
na Aula 4: SILVA, T. G-Portugol. Disponível em:
< h t t p : / / g p t . b e r l i o s. d e / m a n u a l _ b i g / m a n u a l .
html#SECTION00400000000000000000>. Acesso em: 28
1 - Definição e sintaxe geral de um algoritmo jun. 2011.
NIEE-UFRGS. Interpretador de Portugol. Disponível em:
Iniciamos a construção da aprendizagem dos conteúdos
<http://www.niee.ufrgs.br/eventos/CBCOMP/2004/pdf/
sobre a Gramática do Portugol, estudando a sintaxe geral de
Algoritmos/t170100165_3.pdf>. Acesso em: 28 jun. 2011.
um Algoritmo.

2 - Variáveis (e constantes) da gramática do portugol

Na Seção 2, vimos que as variáveis, talvez o conceito


mais importante na elaboração de um algoritmo, são Vale a pena assistir
identificadores que armazenam valores, os quais não podem
mudar dentro do Algoritmo. Identificamos que elas podem FRAMOS, R. Português estruturado – portugol.
ser numéricas (inteiro ou real), lógicas ou literais e tivemos Disponível em: <http://www.youtube.com/
a oportunidade de entender a forma como acontece a watch?v=xncTAg00fsk>. Acesso em: 28 jun. 2011.
nomeação das constantes e das variáveis.
Em seguida, pudemos perceber que as variáveis devem
ser declaradas logo no início do Algoritmo (ou no início do Minhas DQRWD©·HV
procedimento ou da função).

3 - Comandos Básicos

Finalmente, estudamos os comandos que se constituem


por operadores, expressões e palavras-chave e especificam as
ações a serem realizadas pelo computador, como comparações
e atribuições. Estudamos, portanto, a atribuição, as expressões,
os comentários e os comandos de entrada e saída.

Vale a pena

Vale a pena ler

%(5*$OH[DQGUH),*8(,5Ð-RLFH3DYHNLógica de
programação. 3 ed. Canoas: Ulbra, 2006.
SAID, Ricardo. Curso de lógica de programação. São Paulo:
Universo dos livros, 2007.
213

Aula 5º

Estruturas condicionais

Prezado(a) aluno(a), iniciaremos a Aula 5 adquirindo


algumas noções básicas de Estruturas Condicionais. Estruturas
como essas são conhecidas como estruturas de decisão ou de
seleção e se caracterizam pela execução de determinados códigos
de programação dependendo da veracidade de uma condição. É
a estrutura que permite a tomada de decisão, em um Algoritmo,
mediante a análise lógica de uma condição.
Com o conhecimento deste conceito poderemos estabelecer
condições para que comandos sejam executados ou não. Será
fundamental para entendermos o raciocínio utilizado na solução
dos problemas em informática, acadêmicos, profissionais ou
outros. Interessante, não é mesmo?
Então, para ampliar ao máximo sua capacidade de construir
conhecimentos sobre as estruturas condicionais, é importante
que organize conscientemente o material que pretende estudar
e planeje o tempo que lhe dedicará. Sempre será um tempo
estimativo, porque haverá temas que consumirão mais tempo do
que o esperado e outros, muito menos.
Pense nisso e boa aula!
Boa aula!

Objetivos de aprendizagem

Ao término desta aula, o aluno será capaz de:

‡GHILQLU(VWUXWXUDV&RQGLFLRQDLVUHFRQKHFHUVXDLPSRUWkQFLDHDSOLFiODQDFRQVWUXomRGHDOJRULWPRV
‡FRQFHLWXDUHLQWURGX]LURWHUPR(VWUXWXUDV&RQGLFLRQDLV
‡GHVHQYROYHUHRXDPSOLDUDFDSDFLGDGHGHSHUFHSomRGDFRQGLomRGDHVWUXWXUDHXWLOL]iOD
214 Algoritmo e Programação 28
Exemplo 10 – Ler quatro valores referentes a quatro
Seções de estudo notas escolares de um aluno e imprimir a média da nota do
aluno. Se a média for maior que 7 escreva a média e a frase
“aluno aprovado”.
1 - Estruturas condicionais
algoritmo “Média”
var
1 - Estruturas condicionais media, P1, P2, P3, P4: real
Até o presente momento, utilizamos as estruturas de inicio
processamento de entrada e saída que compõem os Algoritmos leia (P1)
puramente sequenciais. Isso quer dizer que aprendemos a leia (P2)
utilizar as variáveis, as constantes e os operadores aritméticos. leia (P3)
Se utilizarmos como referência o exemplo do cálculo leia (P4)
da média dos alunos, é possível perceber que foram usados media < - (P1 + P2 + P3 + P4) / 4
apenas as entradas simples das notas e o cálculo da média. se (media >= 7) entao
Desse modo, será necessária a aplicação de novas estruturas, escreva (media,“Aluno Aprovado”)
se desejarmos que o Algoritmo também nos apresente uma fimse
mensagem dizendo “se” o aluno foi aprovado ou reprovado, fimalgoritmo
no caso de sua nota ter sido maior ou igual a 7. Em outras
palavras, são necessárias as estruturas condicionais. Veja como fica com o teste de mesa:

Teste de Mesa (Média, P1, P2, P3, P4)


4XDODȴQDOLGDGHGHXVDUPRVDV(VWUXWXUDV&RQGLFLRQDLV"
M P1 P2 P3 P4
10
1.1 - Desvio condicional simples
(se......então) 10
5
Esta é a estrutura básica de controle em quase todas as 8
linguagens de programação.
Essa instrução tem por finalidade representar a tomada de 8,25
uma decisão. Esse comando nos fornece a habilidade de fazer 8,25
uma decisão simples, se uma dada condição for verdadeira. )LJXUD7HVWHGHPHVD 0«GLD3333 
Sintaxe: Fonte: acervo pessoal.

se <condição> entao Note que quando chegarmos à comparação (Média


<comando1> >=7), o programa irá analisar: se a média for maior ou igual a
<comando2> 7 (verdadeiro) ele irá imprimir a média, caso contrário, irá sair
...... sem nenhum valor.
<comandon> Exemplo 11 – Entre com dois valores inteiros, efetue a
fimse soma desses valores, e caso a soma seja maior que 10, escreva
esse valor.
Note que o bloco de comandos será executado se a algoritmo “Soma”
condição for verdadeira. Caso a condição seja falsa, a execução var
do Algoritmo não executará o bloco de comandos e passará o A, B : inteiro
controle para a linha imediatamente após o “fim-se”. X: real
inicio
1D)LJXUDYRF¬SRGHU£HQWHQGHUPHOKRURTXHHVWDPRVDȴUPDQGR leia (A)
2EVHUYHDFRPDWHQ©¥R leia (B)
X < - (A + B)
se ( X >= 10) entao
escreva (“Valor de X:”, X)
([SUHVV¥R F fimse
booleana fimalgoritmo

E aí, como está sua aprendizagem sobre as Estruturas Condicionais?


V
Está achando simples ou complicado? Independentemente de sua
Comandos resposta, é importante lembrar que no decorrer do estudo desta e das
demais Aulas, você terá a oportunidade de entender cada vez melhor
os conteúdos estudados. Para tanto, é fundamental que além de ler
)LJXUD'LDJUDPDGHȵX[R6((17 2
esse material, faça pesquisas, consulte referências e interaja com seus
Fonte: acervo pessoal.
29 215
leia (B)
FROHJDV GH FXUVR H FRP VHX SURIHVVRU $ȴQDO YRF¬ « R SHUVRQDJHP se A > B entao
SULQFLSDO GH VXD DSUHQGL]DJHP &RQWH FRQRVFR QHVWD HPSUHLWDGD H escreva (“A é maior que B”)
SDUWLFLSH senao
escreva (“ é maior que A”)
fimse
1.2 - Desvio condicional composto fimalgoritmo
(se.....então.....senão)
Tomem cuidado com a colocação das (‘ aspas simples)
A estrutura de decisão à qual nos referimos neste tópico é ou (“ aspas duplas), pois para o interpretador VisuAlg existe
usada quando a ação a ser executada depende de uma inspeção diferença entre a colocação delas.
ou teste. Ela nos fornece a habilidade de executar um comando Exemplo 13: leia o salário e nome de dois funcionários e
composto, se determinada condição for verdadeira ou falsa. verifique qual salário é maior. Escreva o nome do funcionário
Para tanto, ela primeiro testa se a condição é verdadeira. com salário maior. Se for menor escreva “quero aumento”:
Sendo verdadeira, executa um comando. Caso a condição seja algoritmo “Salário”
falsa, o programa executará outro comando. Veja: var
Sintaxe: func01, func02: caractere
se <condição> entao valor01, valor02: inteiro
<comando1> inicio
<comando2> escreva (“Funcionário:”)
...... leia (func01)
<comandon> escreva (“Salário:”)
senao leia (valor01)
<comando1> escreva (“Funcionário:”(
<comando2> leia (func02)
...... escreva (“Salário:”)
<comandom> leia (valor02)
fimse se valor01 > valor02 entao
escreva (func01)
Observe que a sequência de comandos do bloco “então”
senao
será executada caso a condição seja verdadeira. Se a condição
escreva (“Quero Aumento”)
for falsa, executará a sequência de comandos do bloco “senão”.
fimse
Confira a Figura 5.3:
fimalgoritmo

Atenção: esquecer uma ou duas chaves que delimitam um comando


SRGH OHYDU D HUURV GH VLQWD[H RX HUURV GH OµJLFD GH XP SURJUDPD
Lembre-se disso...
Verdadeiro-então Falso-então
([SUHVV¥R
booleana
1.3 - Desvios condicionais
encadeados
Comando "C1" Comando "C2" Desvios condicionais encadeados ocorrem quando
necessitamos fazer algumas verificações lógicas de condições
sucessivamente.
Nesses casos, uma determinada ação de um Algoritmo
)LJXUD'LDJUDPDGHȵX[R6((17 26(1 2
somente pode ser executada se um conjunto anterior de
Fonte: acervo pessoal. condições for verificado. Assim, quando uma ação é executada
Viu como a sintaxe de estrutura condicional é algo simples ela pode levar as outras condições, não havendo limites. Isso
que você pode se habituar a fazer? Agora, para sedimentar sua nos leva a uma estrutura encadeada.
aprendizagem, sugiro que pare um minuto, reflita sobre o que Quando há um encadeamento de testes, o Algoritmo
aprendeu para, depois, continuar o raciocínio no próximo possui um comando de decisão dentro de outro. Isso fica
exemplo: localizado internamente ao Então ou ao Senão.
Exemplo 12: dados dois números, determinar o maior Sintaxe:
entre eles: se <condição> entao
algoritmo “MaiorNúmero” <comando1>
var senao
A, B: inteiro se <condição> entao
inicio <comando1>
leia (A) senao
216 Algoritmo e Programação 30
<comando2> a) Para salário < do que 500, o reajuste será de 15%.
fimse b) Para salário >= 500 mas <= 1000, o reajuste será de
fimse 10%.
c) Para salário > 1000, o reajuste será de 5%.
8ID ΖVVR SDUHFH FRPSOLFDGR PDV QD ȴJXUD DEDL[R HVW£ WXGR algoritmo “Salário”
H[SOLFDGLQKR9HMDP var
salario, Nsal : real
inicio
Falso-senão Sim-então leia (salario)
Condição 1
se (salario < 500) entao
Nsal < - (salario * 15)/100 + salario
senao
Falso-senão Sim-então se ((salario>= 500) e (salario <= 1000)) entao
Condição 2 Nsal < - (salario * 10)/100 + salario
senao
Nsal < - (salario * 5)/100 + salario
Comando "C2" Comando "C3" Comando "C1" fimse
fimse
escreva (“Seu Salário:”, Nsal)
fimalgoritmo
Exemplo 16: considere o problema a seguir, entre com
o número de matrícula de um aluno, faça um Algoritmo
que imprima o mês de pagamento da anuidade, utilizando a
)LJXUD'LDJUDPDGHȵX[RGDHVWUXWXUD
Fonte: acervo pessoal. expressão Final = Matrícula / 10. Sendo que:
a) Final= 0 – Janeiro.
Veja que nesse caso “se” testa primeiro a condição
b) Final=1 – Fevereiro.
1 e verifica se ela é verdadeira. Se for, então ele executa o
c) Final=2 – Março.
“comando c1”. Caso a condição 1 seja falsa, ele executará a
d) Final= 3 – Abril.
“condição 2”. Novamente ele verifica se ela é verdadeira. Se
e) Outro final – Maio.
for, ele executa o “comando C3”. Se for falso, ele executa o
“comando C2”. algoritmo “Mensalidade”
Exemplo 14: dados dois números, determinar o maior var
entre eles, ou se eles são iguais: Matricula: inteiro
algoritmo “Maior Número 2” Final: real
var inicio
A, B: inteiro escreva (“Forneça o número de Matrícula:”)
inicio leia (Matrícula)
leia (A) Final < - Matricula / 10
leia (B) se Final = 0 entao
se A > B entao escreva (“Pagamento em Janeiro”)
escreva (‘A é maior que B”) senao
senao se Final = 1 entao
se A = B entao escreva (“Pagamento em Fevereiro”)
escreva (“A é igual a B”) senao
senao se Final = 2 entao
escreva (“B é maior que A”) escreva (“Pagamento em Março”)
fimse senao
fimse se Final =3 entao
fimalgoritmo escreva (“Pagamento em Abril”)
senao
O entendimento detalhado de um problema é um fator que diferencia escreva (“Pagamento em Maio”)
uma solução algorítmica da outra. Assim, quanto mais se conhece fimse
sobre o problema em questão, maiores as chances de se criar fimse
VROX©·HVPDLVDGHTXDGDVHȴFLHQWHVHHȴFD]HV3HQVHQLVVR fimse
fimse
fimalgoritmo
Exemplo 15: considere o problema a seguir, no qual
se estabelecem três condições para se calcular o reajuste de Exemplo 17: entre com três números inteiros e calcule o
salário de um funcionário: maior número entre eles.
31 217
algoritmo “MaiorNúmero” <comando1>
var <comando2>
A, B, C : inteiro ......
inicio <comandon>
escreva (“Entre com o primeiro número:”) fimescolha
leia (A)
escreva (“Entre com o segundo número:”) Observe o esquema desta estrutura condicional.
leia (B)
escreva (“Entre com o terceiro número:”)
leia (C)
se (A > B) e (A > C) entao
escreva (“O número maior é:”, A)
senao
se (B > C) entao
escreva (“O número maior é:”, B)
senao
escreva (“O número maior é:”, C) )LJXUD'LDJUDPDGHȵX[R(6&2/+$&$62
fimse Fonte: acervo pessoal.

fimse
Para exemplificar a vantagem oferecida por esta estrutura,
fimalgoritmo
imagine a seguinte situação: você deseja criar um algoritmo para
uma calculadora, o usuário digita o primeiro número, a operação
Compreenderam? que deseja executar e o segundo número. Dependendo do que
Condição: comparação que somente possui dois valores possíveis o usuário informar como operador, o algoritmo executará um
(verdadeiro ou falso); cálculo diferente (soma, subtração, multiplicação ou divisão).
8WLOL]DDVSDODYUDVFKDYH HQW¥RVHQ¥RȴPVH Vejamos como seria esse algoritmo implementado com o
Simples, vocês não acham? desvio condicional SE......ENTÃO......SENÃO.
algoritmo “Calculadora1”
var
1.4 - Estrutura de seleção múltipla numero1: real
(Escolha......caso) numero2: real
O uso desta estrutura proporciona uma solução elegante operacao: caractere
quanto se tem vários desvios condicionais (SE......ENTÃO...... resultado: real
SENÃO) encadeados. Ou seja, quando outras verificações são inicio
realizadas caso a anterior tenha falhado (ou seja, o fluxo do escreva (“Digite o primeiro número: “)
algoritmo entrou no bloco SENÃO). A proposta da estrutura leia (numero1)
ESCOLHA......CASO é permitir ir direto ao bloco de código escreva (“Digite a operação: “)
desejado, dependendo do valor de uma variável de verificação. leia (operacao)
Porém, esta estrutura só pode ser usada em situações onde a escreva (“Digite o segundo número: “)
verificação é feita apenas com valores fixos e não em um intervalo. leia (numero2)
se operacao = “+” entao
Sintaxe: resultado < - numero1 + numero2
senao
escolha <variável de verificação> se operacao = “-” entao
caso <valor1> resultado < - numero1 - numero2
<comando1> senao
<comando2> se (operacao = “*”) entao
...... resultado < - numero1 * numero2
<comando n> senao
caso <valor2> se operacao = “/” entao
<comando1> resultado < - numero1 / numero2
<comando2> fimse
...... fimse
<comandon> fimse
caso <valor3> fimse
<comando1> escreva (“Resultado: “, resultado)
<comando2> fimalgoritmo
......
<comandon> Observe como o desvio condicional encadeado deixa o
outrocaso código mais complexo. É possível a compreensão da lógica,
218 Algoritmo e Programação 32
porém não é muito elegante. Agora vamos ver como ficaria a
mesma lógica com a estrutura ESCOLHA......CASO.
&DVR YRF¬ WHQKD ȴFDGR FRP G¼YLGDV VREUH D $XOD  DFHVVH DV
algoritmo “Calculadora2”
ferramentas “fórum”, “quadro de avisos” ou “chat” e interaja com seus
var
colegas de curso e com seu professor. Lembre-se de que você faz
numero1: real
parte de uma comunidade colaborativa de conhecimento... Portanto,
numero2 : real
HVWDUHPRVHVSHUDQGRVXDSDUWLFLSD©¥R
operacao : caracter
resultado : real
inicio
escreva (“Digite o primeiro número: “) Vale a pena
leia (numero1)
escreva (“Digite a operação: “)
leia (operacao)
escreva (“Digite o segundo número: “)
Vale a pena ler
leia (numero2)
escolha operacao DEITEL, H. M. C++: como programar. Tradução de
caso “+” Carlos Arthur Lang Lisboa e Maria Lúcia Lang Lisboa. 3. ed.
resultado < - numero1 + numero2 Porto Alegre: Bookman, 2001.
caso “-” SENNE, Edson Luiz França. Primeiro Curso de
resultado < - numero1 - numero2 Programação em C. 2. ed. Florianópolis: Visual Books, 2006.
caso “*”
resultado < - numero1 * numero2
caso “/”
resultado < - numero1 / numero2
outrocaso
escreva(“Operação digitada inválida!”)
Vale a pena acessar
fimescolha
escreval (“Resultado: “, resultado) SOUZA, E. Estruturas condicionais. Disponível em:
fimalgoritmo <http://blog.ericksouza.com/31/>. Acesso em: 28 jun.
2011.
UFERSA - Universidade Federal Rural do Semi-Árido.
Informática aplicada – aula 6. Disponível em: <http://www2.
ufersa.edu.br/portal/view/uploads/setores/164/arquivos/
Retomando a aula InformaticaAplicada/Aula06_sequencial_apresentacao_1.
pdf>. Acesso em: 28 jun. 2011.
WIKILIVROS. Estrutura condicional. Disponível
em: <http://pt.wikibooks.org/wiki/Pascal/Estrutura_
Condicional>. Acesso em: 28 jun. 2011.

Para encerrar a Aula 5, convido você a recordar o


que estudamos aqui:

Vale a pena assistir

1 - Estruturas Condicionais GRAN CURSO. Episódio 44 - Estruturas


condicionais. Disponível em: <http://www.youtube.com/
Na primeira e única Seção da Aula 5 você teve a watch?v=MrwWdS_HNzQ>. Acesso em: 28 jun. 2011.
oportunidade de construir conhecimentos sobre Estrutura
Condicional, a qual é capaz de garantir que nosso pensamento
proceda corretamente e que cheguemos a conclusões Minhas DQRWD©·HV
coerentes, podendo diferenciá-las por meio do programa
entre verdadeiras e falsas.
Vimos ainda que a aplicação de Estruturas Condicionais
é fundamental para a construção de Algoritmos e, por
conseguinte, programas logicamente estruturados para atingir
os objetivos almejados pelo(s) seu(s) criador(es).
É importante observar que os conhecimentos construídos
nesta Aula são fundamentais e servem como base de muitos
outros conhecimentos importantes para o profissional que
atua ou pretende atuar na área de programação.
220 Algoritmo e Programação

6º Aula

Estruturas de repetição

Prezado(a) aluno(a), vamos começar a Aula de “Estruturas de Repetição”,


falando resumidamente sobre seu conceito: “em ciência da computação, uma
estrutura de repetição é uma estrutura de desvio do fluxo de controle presente
em linguagens de programação que realiza e repete diferentes computações ou
ações dependendo se uma condição é verdadeira ou falsa, em que a expressão
é processada e transformada em um valor. Estão associados a uma estrutura de
repetição uma condição (também chamada ‘expressão de controle’ ou ‘condição
de parada’) e um bloco de código: verifica-se a condição, e caso seja verdadeira,
o bloco é executado. Após o final da execução do bloco, a condição é verificada
novamente, e caso ela ainda seja verdadeira, o código é executado novamente”
(SILVA, 2011).
Vamos entender melhor as Estruturas de Repetição no decorrer desta
Aula e, como você poderá observar, a construção desse conhecimento será
fundamental para entendermos o raciocínio utilizado na solução dos problemas
em programação, o que poderá facilitar o entendimento do conteúdo de outras
disciplinas e o cotidiano no ramo profissional.
Gostaríamos de lembrá-lo de que preparamos a Aula para facilitar sua
aprendizagem. Contudo, é natural que sujam dúvidas no decorrer dela. Quando
isso acontecer, acesse a plataforma e utilize as ferramentas “quadro de avisos” ou
“fórum” para interagir com seus colegas de curso ou com seu professor.
Boa aula!

Objetivos de aprendizagem

Ao término desta aula, o aluno será capaz de:

‡FRQFHLWXDUHLGHQWLILFDUDV´(VWUXWXUDVGH5HSHWLomRµ
‡UHFRQKHFHUDLPSRUWkQFLDGDV(VWUXWXUDVGH5HSHWLomR
‡GHVHQYROYHUHRXDPSOLDUDFDSDFLGDGHGHSHUFHSomRGHXPSUREOHPDHXWLOL]DURVFRQKHFLPHQWRVFRQVWUXtGRVQDFULDomR
de Algoritmos.
35 221
1.3 - Repetição condicional -
Seções de estudo Enquanto......faça
A estrutura ENQUANTO......FAÇA executa uma
1 - Estruturas de repetição
sequência de comandos repetidas vezes, enquanto uma
determinada condição permanece válida (verdadeira).
1 - Estruturas de repetição Para tanto, a referida estrutura faz o teste da condição
DQWHVGHLQLFLDUDUHSHWLomRVHRSULPHLURWHVWHIDOKDUREORFR
de instruções de comandos no seu interior não é executado
9DPRV LQLFLDU QRVVDV UHȵH[·HV HVWUXWXUDV GH UHSHWL©¥R SURFXUDQGR
nenhuma vez e a execução prossegue normalmente pela
compreender brevemente o seu conceito e tipologia.
instrução seguinte ao Fimenquanto.
Para facilitar sua aprendizagem lembre-se de estabelecer intervalos
Nesse contexto, se a condição for verdadeira o comando
periódicos (de no mínimo 10 minutos) em meio aos seus estudos, uma
composto é executado e ao seu término retorna-se ao teste
vez que estudar muitas horas seguidas pode diminuir seu nível de
da condição. Assim, o processo acima será repetido enquanto
atenção e seu ânimo. Aprender é muito bom, você não acha?
a condição testada for verdadeira. Quando esta for falsa, o
(QW¥RRUJDQL]HVHHERQVHVWXGRV
fluxo de execução prosseguirá normalmente pelas instruções
posteriores ao Fimenquanto.
Em alguns casos é necessário repetir uma parte do Sintaxe:
Algoritmo um determinado número de vezes. Para tanto, enquanto <condição> faça
estão disponíveis as estruturas de repetição, que realizam o <comando1>
processamento de um determinado trecho tantas vezes quantas <comando2>
forem necessárias. Essa repetição também pode ser chamada .....
de laço ou loop. <comandon>
As estruturas de repetição podem ser divididas em duas: fimenquanto
a) Loops contados: quando se conhece previamente
quantas vezes o comando composto no interior da construção Note que uma vez dentro do corpo do laço, a execução
será executado. somente o abandonará quando a condição for falsa. O usuário
b) Loops condicionais: quando não se conhece de desse tipo de construção deve estar atento à necessidade de que
antemão o número de vezes que o conjunto de comandos no em algum momento a condição deverá ser avaliada como falsa.
interior do laço será repetido, pelo fato dele estar amarrado a Caso contrário, o programa permanecerá indefinidamente
uma condição sujeita à modificação pelas instruções do interior no interior do laço, o que é conhecido como laço infinito.
do laço. Confira a Figura 6.1:

Ideia relevante: FDVR R EORFR GH FµGLJR QXQFD PRGLȴFDU R HVWDGR


GD FRQGL©¥R D HVWUXWXUD VHU£ H[HFXWDGD SDUD VHPSUH XPD VLWXD©¥R
FKDPDGDOD©RLQȴQLWR'DPHVPDPDQHLUD«SRVV¯YHOHVSHFLȴFDUXPD Falso
HVWUXWXUDHPTXHREORFRGHFµGLJRPRGLȴFDRHVWDGRGDFRQGL©¥RPDV Condição
esta é sempre verdadeira (CENAPAD SP, 2011).

1.1 - Variáveis contadoras Verdadeiro

Comando "C"
Quando uma variável é contadora ela tem por característica
armazenar dentro de si um número referente a certa quantidade
de elementos ou iterações.

1.2 - Variáveis acumuladoras )LJXUD'LDJUDPDGHȵX[RGDHVWUXWXUD(148$172)$‰$


Fonte: acervo pessoal.
Quando uma variável é acumuladora ela tem por
Exemplo 18: Faça um Algoritmo que escreva os números
característica armazenar dentro de si o resultado acumulado de
inteiros positivos menores que 100.
uma série de valores.
algoritmo “Repeticao01”
var
Uma das principais características que consolidaram o sucesso na NUMERO: inteiro
utilização dos computadores para a resolução de problemas foi a sua inicio
FDSDFLGDGHGHUHSHWLURSURFHVVDPHQWRGHXPFRQMXQWRGHRSHUD©·HV NUMERO < - 0 // Inicia a variável contador = 0
SDUDJUDQGHVTXDQWLGDGHVGHGDGRV([HPSORVGHFRQMXQWRVGHWDUHIDV enquanto NUMERO < 100 faca
TXHUHSHWLPRVGLYHUVDVYH]HVGHQWURGHXPDVLWXD©¥RHVSHF¯ȴFDSRGHP escreval (NUMERO) // para pular uma linha
ser observados largamente no nosso dia a dia (FERRARI; CHEMINEL, //“l (letra L)’
2011). NUMERO < - NUMERO + 1 // variável
//acumuladora = numero=0+1
222 Algoritmo e Programação 36
fimenquanto 2x1=2 2x2=4
fimalgoritmo 2x3=6 2x4=8
2 x 5 = 10 2 x 6 = 12
Notem que a variável número foi utilizada também 2 x 7 = 14 2 x 8 = 16
como contadora. Ela irá controlar o número de vezes que o 2 x 9 = 18 2 x 10 = 20
trecho do programa deve ser executado. Neste exemplo ela
foi iniciada com zero e no teste da condição zero é menor Vejamos:
que 100. Logo, a condição é verdadeira, ele entrará no loop
escreve “0”, em seguida realiza o incremento da variável algoritmo “Tabuada”
(NÚMERO=0+1). var
O novo valor de número será “1”, ele volta para a valor, contador: inteiro
condição do enquanto e testa novamente “1 é menor que inicio
100”. Ele repetirá esses passos até que a condição seja falsa, escreva (“Entre com o Valor:”)
ou seja, que o número seja 100. leia(valor)
contador < - 1 // Inicia a variável contador = 1
enquanto contador <= 10 faca
&DVR YRF¬ WHQKD ȴFDGR FRP G¼YLGDV VREUH D UHSHWL©¥R FRQGLFLRQDO
escreval (valor, “ x “,contador,” = “, (valor *
ENQUANTO......FAÇA ou sobre outros temas estudados nesta Aula,
contador) )
acesse as ferramentas “fórum”, “quadro de avisos” ou “chat” e interaja
contador <- contador +1 // variável
com seus colegas de curso e com seu professor. Lembre-se de que
//acumuladora = contador= 1+1
é importante eliminar eventuais “pedras do caminho” para que sua
fimenquanto
DSUHQGL]DJHPVLJDVHXFXUVRGDPHOKRUIRUPDSRVV¯YHO3DVVHPRVD
fimalgoritmo
VHJXLUDRHVWXGRGHQRYRVH[HPSORV

Exemplo 19: Mostrar a soma dos números pares inteiros E aí, você já entendeu amplamente o que é Estrutura de Repetição, suas
positivos menores que 100. YDUL£YHLVHUHSHWL©·HVFRQGLFLRQDLVHVWXGDGDVDW«DTXL"(PFDVRGHXPD
algoritmo “InteiroPositivo” resposta negativa: não se preocupe, ainda temos outros conteúdos
var TXHQRVDMXGDU¥RDFODUHDUDVLGHLDV6HMDSHUVLVWHQWH$JRUDVHVXD
SOMA, NUMERO: inteiro UHVSRVWDIRUDȴUPDWLYD3DUDE«QV&RQWXGRSDUDDPEDVDVUHVSRVWDV«
inicio válido lembrar que há inúmeros outros conhecimentos para construir
NUMERO <- 2 // inicia a variável contadora sobre o tema... Para tanto, sugerimos que consulte as obras, periódicos
SOMA <- 0 HVLWHVLQGLFDGRVDRȴQDOGHVWD$XOD9HMDPRVDJRUDRXWUD
enquanto NUMERO < 100 faca
SOMA <- SOMA + NUMERO // expressão
//soma=0+2
1.4 - Repetição Condicional - repita...
NUMERO < - NUMERO + 2 // variável
até que
//acumuladora numero=2+2 A estrutura “Repita” executa um bloco de comandos até
fimenquanto que uma condição seja verdadeira. Isso significa dizer que ela
escreva (“A soma dos números pares inteiros é:”, executa os comandos enquanto a condição for falsa. Quando
SOMA) essa condição passar a ser verdadeira, a repetição se encerrará.
fimalgoritmo Vale salientar que os comandos dentro do bloco dessa
Exemplo 20: Segue um Algoritmo que escreve 10 vezes estrutura serão executados pelo menos uma vez. Quando a
a frase “FLAMENGO”. Confira: condição é encontrada, ela será testada. Se for verdadeira passa
algoritmo “Repetição” o controle para o comando imediatamente abaixo da instrução
var “Até que”. Se a condição for falsa, os comandos do bloco
I : inteiro são novamente executados, até que se tenha uma condição
inicio verdadeira.
I <- 1 // Inicia a variável contador = 1 Sintaxe:
enquanto I <= 10 faca repita
escreval (“FLAMENGO”) // Escreval – irá <comando1>
//pular uma linha <comando2>
I<- I + 1 // variável acumuladora = I=1+1 .....
ILPHQTXDQWR <comandon>
fimalgoritmo ate <condição>
Exemplo 22: Faça um Algoritmo que escreva os números
Exemplo 21: Faça um Algoritmo que leia um número inteiros positivos menores que 100.
inteiro positivo e apresente o resultado de sua tabuada de um
a dez (1 a 10). algoritmo “Repita ate”
var
Supondo que o valor desejado seja 2, então: NUMERO: inteiro
37 223
inicio algoritmo “Tabuada’
NUMERO < - 0 // inicia o contador em 0 var
repita valor, contador: inteiro
escreval (NUMERO) // Escreval – irá pular inicio
//uma linha na execução do Algoritmo escreva (“Entre com o Valor:”)
NUMERO < - NUMERO + 1 // variável leia (valor)
//acumuladora contador < - 1 // Inicia a variável contador = 1
ate NUMERO >= 100 repita
fimalgoritmo escreval (valor, “ x “,contador,” = “, (valor * contador))
contador < - Contador +1 // variável acumuladora
Notem que a variável número foi utilizada também como ate contador >= 11
contadora, ela irá controlar o número de vezes que o trecho do fimalgoritmo
programa deve ser executado. Nesse exemplo ela foi iniciada
com zero. Diferente do enquanto, quando chegarmos à linha
de execução do repita automaticamente, ele entrará no loop, Você sabia que as estruturas de repetição condicionais podem ser
não testando a condição, logo escreve “0”, em seguida realiza o FODVVLȴFDGDV HP SU«WHVWH H SµVWHVWH" Ȋ$ HVWUXWXUD GH UHSHWL©¥R
incremento da variável (NÚMERO=0+1). FRQGLFLRQDO FRP SU«WHVWH SHUPLWH TXH Y£ULDV LQVWUX©·HV VHMDP
O novo valor de número será “1”, ele agora irá testar a H[HFXWDGDV UHSHWLGDPHQWH HQTXDQWR XPD FRQGL©¥R TXDOTXHU IRU
condição e somente irá parar quando esta for verdadeira, verdadeira. A estrutura de repetição condicional com pós-teste permite
quando o número for maior ou igual a 100. TXHY£ULDVLQVWUX©·HVVHMDPH[HFXWDGDVUHSHWLGDPHQWHHQTXDQWRXPD
condição qualquer não for verdadeira” (LAWISCH, 2011).
Exemplo 23: Mostrar a soma dos números pares inteiros
positivos menores que 100.
algoritmo “ InteiroPositivo” 1.5 - Repetição contados - Para...
var até...faça
SOMA, NUMERO: inteiro Como você já sabe, quando uma sequência de comandos
inicio deve ser executada repetidas vezes, tem-se uma estrutura
NUMERO < - 2 de repetição. Na repetição contados o Algoritmo apresenta
SOMA < - 0 // Inicia a variável contador = 0 previamente a quantidade de repetições. A estrutura de
repita repetição, assim como a de decisão, envolve sempre a avaliação
SOMA < - SOMA + NUMERO de uma condição.
NUMERO < - NUMERO + 2 // variável A repetição ocorre por meio de uma variável de controle
//acumuladora definida pelo analista que atua como uma contadora automática.
ate NUMERO > 100 Fornecemos um valor inicial no próprio comando, enquanto
escreva (“A soma dos números pares inteiros é: “, esse limite final não for ultrapassado, o conteúdo dessa
SOMA) variável é incrementado em uma unidade automaticamente, e
fimalgoritmo os comandos dentro do loop são executados.
Sintaxe:
Exemplo 24: Segue um Algoritmo que escreve 10 vezes a
para <variável> de <valor inicial> ate <valor final>
frase “FLAMENGO”. Veja: repetido
passo <incremento> faca
algoritmo “Repetição”
<comando1>
var
<comando2>
I : inteiro
.....
inicio
<comandon>
I < - 1 // inicia a variável contador
fimpara
repita
escreval (“FLAMENGO O MENGÃO”) Essa estrutura de repetição utiliza uma variável a ser
I <- I + 1 incrementada de um valor inicial para um valor final. Os
ate I >=10 // variável acumuladora comandos serão executados tantas vezes quantos forem os
fimalgoritmo incrementos da variável.
Esse incremento do valor da variável é definido pelo
Exemplo 25: Faça um Algoritmo que leia um número comando passo, que indica qual o valor a ser acrescentado ou
inteiro positivo e apresente o resultado de sua tabuada de um a subtraído da variável. Quando o incremento for de 1, não é
dez (1 a 10). repetido necessário informar o passo.
Supondo que o valor desejado seja 2, então: O valor da variável de controle não deve ser alterado
2x1=2 2x2=4 dentro do bloco de comandos da estrutura “Para”.
2x3=6 2x4=8 É recomendável o uso dessa instrução sempre que se
2 x 5 = 10 2 x 6 = 12 souber o valor inicial e o valor final da variável de controle.
2 x 7 = 14 2 x 8 = 16
2 x 9 = 18 2 x 10 = 20 Exemplo 26: Faça um Algoritmo que escreva os números
224 Algoritmo e Programação 38
inteiros positivos menores que 100. para NUMERO de 0 ate 99 passo 2 faca
Veja a Figura 6.2: escreval (NUMERO)
fimpara
Variável de controle Valor inicial
Ⱥ
fimalgoritmo

Exemplo 28: Faça um Algoritmo que leia um número


inteiro positivo e apresente o resultado de sua tabuada de um
até dez (1 a 10).
Verdadeiro algoritmo “Tabuada’
Variável de controle >
YDORUȴQDO" var
valor, contador : inteiro
inicio
escreva (“Informe o valor desejado: “)
Falso
leia (valor)
Comando "C" para contador de 1 ate 10 passo 1 faca
escreval(valor, “ x “,contador,” = “, (valor * contador) )
fimpara
Variável de controle
Ⱥ Variável de controle + 1 fimalgoritmo

Exemplo 29: Faça um algoritmo para apresentar os


resultados da potência de 3, variando o expoente de 0 até 10.
Deve ser considerado que qualquer número elevado a zero é 1,
e elevado a 1 é ele próprio. Deve ser apresentado observando,
)LJXUD'LDJUDPDGHȵX[RGDHVWUXWXUD3$5$$7‹)$&$
Fonte: acervo pessoal. a seguinte definição:
Ou: 30 = 1
31 = 3
algoritmo “Inteiro” 32 = 9
var (...)
NUMERO: inteiro 310 = 59.049
inicio
para NUMERO de 0 ate 99 faca // numero será algoritmo “Potencia de 3”
//incrementado de zero até 99 var
escreval (NUMERO) x, y, i : inteiro
fimpara inicio
fimalgoritmo x <- 3
y <- 1
Como você pode verificar, nesse exemplo não para i de 0 até 10 passo 1 faca
houve a necessidade de iniciar a variável contadora ou até se i = 0 entao
mesmo incrementar o seu valor, o próprio comando de y <- 1
repetição contados faz essa tarefa. A variável número irá se senao
autoincrementar sozinha de um em um até chegar ao valor y <- y * x
final 99. fimse
escreval (x, “ ^ ” , i, “ = ” , y)
Viu como estudar Estrutura de repetição não é tão complicado como
fimpara
poderia ter imaginado? Agora, para sedimentar sua aprendizagem,
fimalgoritmo
VXJLUR TXH SDUH XP PLQXWR UHȵLWD VREUH R TXH HVWXGRX H WHQWH Exemplo 30: elaborar um Algoritmo que efetue o cálculo
escrever resumidamente o que aprendeu até aqui. Com o resultado do fatorial de um número. Sendo o fatorial de um número
de sua autoavaliação, você poderá escolher entre prosseguir seus calculado da seguinte forma: 5! = 5*4*3*2*1 = 120.
estudos ou pedir ajuda para eliminar eventuais dúvidas, antes que elas algoritmo “Fatorial”
VHWRUQHPXPDȊERODGHQHYHȋ var
Cont, Fat, Fatorial : inteiro
Exemplo 27: Utilizaremos o mesmo exemplo anterior, inicio
escreva os números inteiros positivos menores que 100, escreva (“Informe o número desejado”)
mas agora faremos com que o contador pule de 2 em dois leia (Fat)
números, no incremento da variável. Fatorial < - Fat
algoritmo “Inteiro” Cont < - 1
var enquanto (Cont < Fatorial) faca
NUMERO: inteiro Fat < - Fat * Cont
inicio Cont < - Cont + 1
39 225
fimenquanto
escreva (“O valor do fatorial é: ”, Fat)
fimalgoritmo
Vale a pena acessar
Retomando a aula CALLE, J. L. D. C. Introdução à linguagem C. Atualização
de André Leon Gradvohl. Disponível em: <http://www.
cenapad.unicamp.br/servicos/treinamentos/apostilas/
apostila_C.pdf>. Acessado em: 28 jun. 2011.
Esta Aula foi muito proveitosa e nos possibilitou a
)(55$5, ) &+(0,1(/ & Introdução a algoritmos
construção de importantes conhecimentos. Então, para
e programação. Disponível em: <http://www.scribd.com/
não nos esquecermos deles, vamos recordá-los:
doc/51487241/52/Estruturas-de-Repeticao>. Acessado
em: 28 jun. 2011.
1 - Estruturas de repetição FUNDAÇÃO ESCOLA TÉCNICA LIBERATO
SALZANO VIERA DA CUNHA. Estruturas de repetição.
Na única Seção desta Aula, você pôde identificar a Disponível em: <http://pt.scribd.com/doc/52097901/51/
necessidade de utilizar uma estrutura de repetição para a Repeticao-condicional-com-pre-teste>. Acesso em: 28 jun.
resolução de um determinado problema que necessite de 2011.
estruturas de repetição dentro de outras estruturas de repetição. IBM. IMasters. Disponível em: <https://www.
Além disso, tivemos a oportunidade de diferenciar ibm.com/developerworks/mydeveloperworks/blogs/
as estruturas de repetição existentes e de reconhecer a fd26864d-cb41-49cf-b719-d89c6b072893/?maxresults=10
aplicabilidade de cada uma delas na resolução de problemas, 0&sortby=0&lang=ru>. Acesso em: 28 jun. 2011.
aprender a utilizar a estrutura de repetição PARA FAÇA cujo LAWISCH, A. Algoritmos. Disponível em: <http://
controle é realizado por um contador autoincrementável, pt.scribd.com/doc/52097901/53/Repeticao-condicional-
bem como as estruturas de repetição ENQUANTO FAÇA com-pos-teste>. Acesso em: 28 jun. 2011.
e REPITA ATÉ cujo controle é realizado pelo usuário SILVA, F. M. S. Notas de aula 4 - estruturas de repetição.
(FERRARI, CHEMINEL, 2011). Disponível em: <http://www.eagletecnologia.com/
No decorrer da Aula entendemos que a diferença básica das ifnmg/tp-1-cs-v/010%20-%20Notas%20de%20Aula%20
estruturas de repetição são que ENQUANTO-FAÇA primeiro Pascal%204.pdf>. Acessado em: 28 jun. 2011.
testa a condição para depois realizar o bloco de comando, ao
contrário de FAÇA-ENQUANTO que primeiro executa o
bloco para depois realizar o teste e da estrutura PARA-FAÇA
que tenha embutida um mecanismo de controle para determinar
quando o laço deverá ser terminado (IMASTERS, 2011). Vale a pena assistir
Após o estudo dos conteúdos, concluímos que as
estruturas de repetição proveem uma maneira de repetir um KEY, A. L. Estruturas de repetição. Disponível em:
conjunto de procedimentos até que determinado objetivo seja <http://www.youtube.com/watch?v=KVvBPlQYWeI>.
atingido, quando a repetição se encerra. Todas as estruturas de Acessado em: 28 jun. 2011.
repetição têm em comum o fato de haver uma condição de
controle, expressa por meio de uma expressão lógica, que é
testada em cada ciclo para determinar se a repetição prossegue
Minhas DQRWD©·HV
ou não (FERRARI, CHEMINEL, 2011).

Vale a pena

Vale a pena ler

LEITE, Mario. Técnicas de programação: uma abordagem.


Rio de Janeiro: Brasport, 2006.
0$1=$12 -RVp $XJXVWR 1 * 2/,9(,5$ -D\U
Figueiredo de. Algoritmos - lógica para desenvolvimento de
programação. 2. ed. São Paulo: Érica, 2007.
VELOSO, Paulo A. S. Estrutura e verificação de programas
com tipos de dados. São Paulo: Blucher, 1987.
226 Algoritmo e Programação

7º Aula

Estruturas de dados
homogêneas

Prezado(a) aluno(a), na penúltima Aula da disciplina “Algoritmo e


Programação” vamos estudar as estruturas de dados homogêneas. Para
iniciar, é importante sabermos que essas estruturas “permitem agrupar
diversas informações dentro de uma mesma variável. Esse agrupamento
ocorrerá obedecendo sempre ao mesmo tipo de dado, e é por essa
razão que elas são chamadas ‘homogêneas’. A utilização desse tipo de
estrutura de dados recebe diversos nomes, como: variáveis indexadas,
variáveis compostas, variáveis subscritas, arranjos, vetores, matrizes,
tabelas em memória ou arrays” (UTPR, 2001). Os nomes mais usados
e que utilizaremos para estruturas homogêneas são: matrizes (genérico
– que estudaremos na Aula 8) e vetores (matriz de uma linha e várias
colunas).
Ah, para um aproveitamento mais eficaz, é importante que
faça uma primeira leitura rápida do material que irá estudar. Isso lhe
permitirá ter uma visão geral do conteúdo da Aula. Depois, releia o
texto, sublinhando as ideias principais da maneira que for mais prática
para você: linearmente, realizando anotações nas margens, marcando
com símbolos ou digitando em um editor de textos. Lembre-se ainda
de que mais que ler, é importante que se posicione criticamente sobre
os conteúdos aqui estudados. Afinal, você é o personagem principal de
sua aprendizagem!
Boa aula!

Objetivos de aprendizagem

Ao término desta aula, o aluno será capaz de:

‡FRQFHLWXDUHLQWHUSUHWDURWHUPR´HVWUXWXUDVKRPRJrQHDVµ
‡GHILQLUUHFRQKHFHUDLPSRUWkQFLDGDV(VWUXWXUDV+RPRJrQHDV9HWRUHVHDSOLFiODVQDSURJUDPDomR
‡GHVHQYROYHUHRXDPSOLDUDFDSDFLGDGHGHSHUFHSomRGHXPSUREOHPDHXWLOL]iODQDFULDomRGH$OJRULWPRV
41 227
Valores 8 5 9 3,5 4 10 5 7,5 8,5 2,5 6 7
Seções de estudo Índice 1 2 3 4 5 6 7 8 9 10 11 12
Figura 7.2 Estrutura “nota”.
1 - Estruturas de dados homogêneas Fonte: acervo pessoal.

2 - Vetores Como você pode notar, os índices correspondem


às posições que identificam os valores armazenados
1 - Estruturas de dados homogêneas independentemente dos outros valores, sendo por meio deles
manipulados especificamente um ou mais valores que sejam
CONCEITO necessários.
As estruturas de dados consistem em organizações Vamos apresentar somente a nota do oitavo aluno, como
lógicas sobre o armazenamento e manipulação dos dados que o índice da estrutura de dados. O oitavo aluno possui a sua
serão necessários ao algoritmo e posteriormente ao programa nota armazenada na 8ª posição da estrutura, sendo sua nota
resultante de tal representação. igual a 7,5.
Nas Aulas anteriores, trabalhamos com estruturas básicas, Sintaxe:
nas quais uma só variável é capaz de armazenar apenas um var
dado de cada vez. Contudo, nesta Aula iremos nos deparar <identificador> : vetor [<inicial>.....<final>] de <tipo
com situações em que temos a necessidade de armazenar uma de dado>
grande quantidade de dados ao mesmo tempo, como 100, 300, Onde:
500. <identificador> é o nome atribuído à estrutura de dados
Agora, imagine ter que criar todas essas variáveis, declarar (vetor)
uma por uma e depois entrar com todos os seus valores na <tipo de dado> é o tipo de dado que será armazenado na
execução do algoritmo? estrutura (inteiro, real)
Parece complicado, não é mesmo? <inicial> e <final> correspondem respectivamente aos
Mas a resposta para essa questão é o ponto central de valores numéricos inteiros que de início e fim dos índices do
nossa aula. vetor, sendo o seu intervalo a quantidade exata de elementos
Isso significa que esse tipo de dado estruturado é também do vetor, ou seu tamanho.
conhecido como estrutura de dados homogênea, uma vez que Observe que as palavras “vetor” e “de” são palavras
nelas, o agrupamento de dados obedece sempre ao mesmo reservadas que fazem sentindo para o algoritmo e nunca
tipo de dado. devem estar ausentes na instrução de declaração de um vetor.
Vamos definir um vetor para armazenar a idade de 50
Observou como podemos aproveitar o conteúdo estudado até aqui? alunos de uma sala de aula.
Viu como não é tão difícil quanto podia parecer? Então, vamos continuar var
estudando, na Seção 2, o conteúdo sobre os Vetores. idade : vetor [0..50] de inteiro

Podemos imaginar a variável de memória assim:


2 - Vetores Idade 15 35 45 25 29 ...... 13 40 42 39
Índice 1 2 3 4 5 ...... 47 48 49 50
CONCEITO
Um vetor é uma estrutura composta formada por um )LJXUD9DUL£YHOȊPHPµULDȋ
Fonte: acervo pessoal.
conjunto unidimensional (vetor possui somente uma dimensão)
de dados do mesmo tipo. Por essa característica afirmamos que Para saber as posições e os valores guardados nelas,
os vetores são estruturas de dados homogêneas. usaríamos os comandos:
As principais características de um vetor são os inúmeros Idade[3] < - 45
valores que ele contém. Vale salientar que todos os seus Idade[48] < - 40
valores são do mesmo tipo de dado, uma vez que ele apresenta Idade[5] < - 29
somente um único nome de variável e cada conjunto é acessível
independentemente, de acordo com o seu índice, que seria a Notem que não poderíamos ter a Idade[52], pois nosso
posição na estrutura de dados. vetor foi declarado até o tamanho de 50 posições. O analista
Vejamos o exemplo de um vetor com sete elementos: tem que seguir uma lógica que impeça esse tipo de situação,
em que o índice do vetor está fora da faixa em que ele foi
Valores 10 05 15 20 30 40 02 definido.
Índice 1 2 3 4 5 6 7
Exemplo 31: Vamos fazer um algoritmo para entrar com
)LJXUD9HWRUFRPVHWHHOHPHQWRV valores a um vetor definido, atribuir a ele valores e somar os
Fonte: acervo pessoal.
valores do seu conteúdo.
Agora, vamos montar uma estrutura para armazenar a algoritmo “Primeiro vetor”
nota de 12 alunos e identificar o nome dessa estrutura como var
nota. Na execução do Algoritmo os valores serão informados A : inteiro
pelo usuário por meio do comando leia. Assim: idade : vetor[1..10] de real
228 Algoritmo e Programação 42
inicio A < - 30 usuário digitar durante a execução do algoritmo.
idade[2] < - A
idade[2] < - idade[2]+ 4
4XH R Ȋ9LVXDOJ « XP SURJUDPD TXH LQWHUSUHWD H H[HFXWD DOJRULWPRV
idade[8] < - A + 5
como um “programa” normal de computador. Baseado em uma
idade[10] < - idade[8] + 5
linguagem parecida com o “Portugol” ensinado em cursos em todo
idade[1] < - 54
o Brasil, possui recursos como simulação da “tela” do computador,
escreva (idade[2], idade[8], idade[10], idade[1])
visualização de variáveis, “breakpoints”, ajuda on-line, impressão das
fimalgoritmo
IRQWHVHRXWUDVFDUDFWHU¯VWLFDVTXHDX[LOLDPRDSUHQGL]DGRGDVW«FQLFDV
Notem que o acesso a um elemento do vetor pode de programação” (BAIXAQUI, 2011).
acontecer por meio da especificação do nome do vetor
seguido do índice desejado entre colchetes. Logo, idade[2]
recebeu o valor de 30, idade[8] o valor de 35. Exemplo 34: Faça esse exemplo no VisuAlg e analise o
Como o intervalo declarado na criação do vetor idades resultado do algoritmo.
( [1..10] ) consiste de 10, essa estrutura de dados composta algoritmo “VetorAluno”
homogênea (ou simplesmente vetor) terá a capacidade de // Declarações
armazenar 10 valores do tipo de dado especificado após a var
palavra reservada de, ou seja, nesse pequeno exemplo todos I : inteiro
os 10 valores serão reais. nome : vetor [1..10] de caractere
inicio
I <- 1
2VH[HPSORVDSUHVHQWDGRVDVHJXLUW¬PRREMHWLYRGHFRQWH[WXDOL]DU
escreva (“Informe o nome desejado terminando com
e facilitar sua aprendizagem. Dessa forma, sugerimos que se atente
ponto final: “)
para eles e, em caso de dúvidas, acesse o ambiente virtual para saná-
repita
las... Aprender é uma construção, para a qual trabalharemos juntos
leia(nome[I])
DW«RȴQDOGRFXUVR3DUWLFLSH
I <- I + 1
ate ((nome[I-1] = “.”) ou (I=10))
Exemplo 32: Escrever um algoritmo que declare um escreva(nome[2])
vetor do tipo real e leia as notas de 30 alunos. fimalgoritmo
algoritmo “VetorNota”
var Neste exemplo, o programa VisuAlg irá ler um vetor
I : inteiro tipo caractere entrando 10 nomes e irá parar a execução do
notas : vetor [1..30] de real algoritmo quando a variável contadora chegar a 10 ou quando
inicio o usuário digitar o “ . ”.
para I de 1 ate 30 passo 1 faca
escreval (“Informe a nota do aluno: “)
leia (notas[I]) “O VisuAlg implementa as três estruturas de repetição usuais nas
fimpara linguagens de programação: o laço contado PARA...ATE...FACA (similar
fimalgoritmo ao FOR...TO...DODO Pascal), e os laços condicionados ENQUANTO...
FACA (similar ao WHILE...DO) e REPITA...ATE (similar ao REPEAT...UNTIL).
Exemplo 33: Escrever um algoritmo que declare um [...] PARA...FACA repete uma sequência de comandos um determinado
vetor do tipo real e leia as notas de 30 alunos, e um vetor tipo número de vezes. [...] ENQUANTO...FAÇA, repete uma sequência de
caractere para ler o nome dos trinta alunos. FRPDQGRVHQTXDQWRXPDGHWHUPLQDGDFRQGL©¥R HVSHFLȴFDGDSRUXPD
algoritmo “VetorNota2” H[SUHVV¥ROµJLFD IRUVDWLVIHLWD>@5(3Ζ7$$7‹UHSHWHXPDVHTX¬QFLD
var GH FRPDQGRV DW« TXH XPD GHWHUPLQDGD FRQGL©¥R HVSHFLȴFDGD SRU
I : inteiro PHLRGHXPDH[SUHVV¥ROµJLFD VHMDVDWLVIHLWDȋ 6&5Ζ%' 
notas : vetor [1..30] de real
nome : vetor [1..30] de caractere
inicio Exemplo 35: Uma turma do curso de Engenharia de
para I de 1 ate 30 passo 1 faca Produção tem 30 alunos. O professor dessa turma deseja
escreval (“Nome do aluno: “) calcular e imprimir a nota de cada aluno seguida da média da
leia (nome[I]) turma.
escreval (“Nota do aluno: “) Utilizaremos para a realização do exemplo proposto um
leia (notas[I]) comando de repetição para ler todas as notas dos alunos, e um
fimpara segundo comando de repetição para escrever todas as notas
escreva (nome[2], nome[3]) que foram digitadas pelo usuário. Veja:
fimalgoritmo algoritmo “VetorNota”
var
Notem que no programa VisuAlg o tipo caractere é media, soma : real
definido como uma “cadeia de caracteres”. Logo, a variável nota: vetor[1..30] de real
do tipo vetor retornará à quantidade de caracteres que o I : inteiro // Contador – irá fazer a leitura do vetor
43 229
inicio Definimos aqui, outro vetor para ler o nome dos alunos
I < - 1 // atribui valor a variável contadora = nome: vetor[1..30] de caractere e colocamos esse parâmetro
soma < - 0 na hora de ler os dados junto com as notas. Então, o usuário
enquanto I <= 30 faca // laço para fazer a leitura das irá entrar com o nome do Aluno em seguida a sua nota.
//notas do vetor A variável soma continuará fazendo a somatória das notas
leia(nota[I])
< - // entre com o valor da nota e a variável I será utilizada para ler os trinta nomes e notas.
soma soma + nota[I] // Variável de soma das notas Depois, para escrever o conteúdo dos vetores Nome e
I < - I + 1 // Contador de incremento Nota continuaremos utilizando o mesmo recurso, iniciando o
fimenquanto valor da variável contadora “I”. Em seguida, utilizando-a para
media < - soma/30 // calcula a média das notas, que escrever o conteúdo dos vetores Nome e Nota.
//seria a soma / quantidade (30) Se na execução do algoritmo o nome[1]=”André da
I < - 1 // Inicia novamente o contador de incremento para Silva e a nota[1]=10, quando o algoritmo chegasse à parte de
//escrever as notas do vetor escrever o resultado seria: Aluno: André da Silva Nota=10.
enquanto I <=30 faca Entrem no programa VisuAlg e testem todas essas
escreval(“Nota:”,nota[I]) // escreve as notas alterações propostas e vejam o resultado que foi colocado,
//digitadas tanto no teste de mesa quanto na exibição dos valores dos
I<- I +1 vetores Nome e Nota.
fimenquanto
escreva(“Media da Turma”, media) // escreve a média Exemplo 37: Elaborar um algoritmo para receber as notas
//da turma de um grupo de 30 alunos e, ao final, exibir cada uma das notas
ÀPDOJRULWPR acompanhadas da média, da menor e da maior nota lida.
algoritmo “VetorNotadois”
Notem que a variável de controle (contador) que fez a var
leitura do vetor foi iniciada em I = 1, ele começará a ler a nota[1] media, soma, menor, maior : real
até a última nota[30]. Em seguida nós iniciamos novamente nota: vetor[1..30] de real
a variável controle (contador) I = 1, para que nós possamos I : inteiro // Contador - irá fazer a leitura do vetor
escrever o conteúdo do vetor, ou seja, escrever todas as trinta inicio
notas armazenadas. soma < - 0
Exemplo 36: Utilizar o mesmo algoritmo anterior, mas menor < - 10
agora iremos acrescentar o nome do aluno. maior < - 0
algoritmo “VetorAlunoNota” para I de 1 ate 30 passo 1 faca // laço para fazer a
var //leitura das notas do vetor
media, soma : real leia(nota[I]) // entre com o valor da nota
nota: vetor[1..30] de real se nota[I] < menor entao
nome: vetor[1..30] de caractere menor < - nota[I]
I : inteiro // Contador - irá fazer a leitura do vetor ÀPVH
inicio se nota[I] > maior entao
I < - 1 // atribui valor a variável contadora maior < - nota[I]
soma < - 0 ÀPVH
enquanto I <= 30 faca // laço para fazer a leitura das soma < - soma + nota[I] // variável de soma das notas
//notas do vetor ÀPSDUD
leia(nome[I]) // entre com o nome do aluno media < - soma/30 // calcula a média das notas, que
leia(nota[I]) // entre com o valor da nota //seria a soma / quantidade (30)
soma < - soma + nota[I] // Variável de soma das para I de 1 ate 30 passo 1 faca // fazer a leitura do
//notas //conteúdo do vetor
I < - I + 1 // Contador de incremento escreval(“ Nota:”,nota[I]) // escreve as nota digitadas
fimenquanto ÀPSDUD
media < - soma/30 // calcula a média das notas, que escreva(“Media da Turma”, media,” Maior Nota:”, maior,
//seria a soma / quantidade (30) “Menor Nota:”, menor)
I < - 1 // Inicia novamente o contador de incremento ÀPDOJRULWPR
//para escrever as notas do
vetor enquanto I <=30 faca Nesse exemplo, utilizamos o comando de repetição
//escreve os Alunos e notas digitadas I<- I +1 “para”, pois nesse caso não precisamos ficar incrementando
escreval (“Aluno:”, nome[I], “ Nota:”,nota[I]) o valor do contador. O valor da variável menor foi colocado
fimenquanto igual a 10 de propósito, para o primeiro valor digitado ser
escreva(“Media da Turma”, media) // escreve a média comparado a um valor predefinido, nesse caso 10.
//da turma Entre no VisuAlg e teste esse algoritmo, faça várias
fimalgoritmo simulações para não restar qualquer tipo de dúvida quanto à
utilização dos vetores.
230 Algoritmo e Programação 44
//externa, quando a rotina mais
“A manipulação de vetores é grandemente utilizada nos comandos // interna fechar o seu ciclo.
GH UHSHWL©¥R HVSHFLDOPHQWH R SDUD IRU  3RU H[HPSOR SDUD ]HUDU para I de 1 ate 11 passo 1 faca
FRORFDURYDORU HPWRGDVDVSRVL©·HVGHXPYHWRUFRQMXQWRVVHULD para J de I+1 ate 12 passo 1 faca
necessário escrever 4 comandos. Assim: se (elementos[I] < elementos[J]) entao
conjuntos[1] 0; X < - elementos[I]
Ⱥ
conjuntos[2] 0; elementos[I] < - elementos[J]
Ⱥ
conjuntos[3] 0; elementos[J] < - X
Ⱥ
conjuntos[4] 0; fimse
Ⱥ
fimpara
Contudo, a mesma operação pode ser feita com apenas um comando fimpara
de repetição para (for), usando uma variável de controle para // agora iremos listar o vetor novamente, só que em
UHSUHVHQWDUDVSRVL©·HVGRYHWRU //ordem decrescente.
Ⱥ Ⱥ
para i 1 to 6 façaconjuntos[i] ȋ *20(6 ‹EHPPDLV para I de 1 ate 12 passo 1 faca
simples, você concorda? escreval(“vetor decrescente:”, elementos[I])
fimpara
Exemplo 38: Ler 12 elementos de um vetor, colocá-los ÀPDOJRULWPR
em ordem decrescente e apresentar os Elementos Ordenados
DOJRULWPR´&ODVVLÀFDomRµ
// Tenho que declarar um vetor com tamanho 12 Retomando a aula
// tenho que declarar as variáveis que irão fazer a troca
//dos elementos do vetor e ajudar na comparação,
//neste caso teremos uma segunda variável para a
//comparação e uma variável x para utilizar na troca.
Até aqui tudo correu muito bem, não é mesmo? Assim,
var
vamos resumir os conteúdos para elaborarmos uma
elementos:vetor[1..12] de inteiro
síntese mental sobre eles:
I, X, J: inteiro
inicio
// vamos entrar com os valores para os 12 elementos
//do vetor 1 - Estruturas de dados homogêneas
para I de 1 ate 12 passo 1 faca Como vimos na primeira Seção da Aula 7, as estruturas
leia(elementos[I]) // aqui estou entrando de dados são organizações lógicas sobre o armazenamento e
//com os 12 elementos do vetor. manipulação dos dados que serão necessários ao algoritmo e
fimpara posteriormente ao programa resultante de tal representação.
// agora vou utilizar um comando de repetição para Em outras palavras, pode ser entendida como o nome
//encadeado para fazer a comparação dos vetores dado à organização de dados e algoritmos de forma coerente e
//o elemento[1] dever ser comparado com o racional de modo a otimizar o seu uso. Elas podem solucionar
//elemento[2], // elemento[3]... até o elemento[12]. de forma simples problemas extremamente complexos de
//Em seguida o elemento[2] não precisa ser acordo com o modo como um conjunto de dados é organizado.
//comparado com o elemento[1], pois já foram Como você pôde notar, esse é um dos temas fundamentais
//anteriormente comparados, passando assim da ciência da computação, utilizado nas diferentes áreas para as
//a comparar somente com os próximos e assim por mais variadas finalidades.
//diante. Seguindo esse raciocino, basta comparar o valor
//do elemento armazenado em elemento[1] 2 - Vetores
//com o valor armazenado em elemento[2]. Se o
//primeiro for maior que o segundo então trocam-se os Na referida Seção, vimos que um vetor é uma estrutura
//valores. A variável I fara a leitura do Vetor e a J para o composta formada por um conjunto unidimensional de dados
//valor subsequente. do mesmo tipo, característica pela qual afirmamos que os
// Quando I=(1) — J(2,3,4,5..12) — I =(2) — vetores são estruturas de dados homogêneas.
//J(3,4,5...12). Estudamos ainda as principais características de um vetor,
// Somente quando J atingir 12 é que o looping se as quais são os inúmeros valores que ele contém. Lembrando
//encerra, retornando o looping a variável I que esses valores são do mesmo tipo de dado, uma vez que ele
HpDFUHVFLGDGHUHLQLFLDQGRRSURFHVVR2ÀQDOVHUi apresenta somente um único nome de variável e cada conjunto
//quando a variável I = 11 e J=12, e será comparado o é acessível independentemente, de acordo com o seu índice,
//penúltimo elemento com o seu elemento subsequente, que seria a posição na estrutura de dados.
//no caso o ultimo. Observe também o algoritmo de troca.
// Nesse caso de encadeamento, será executada primeiro
//a rotina mais interna, no caso a Já estamos no ambiente virtual esperando sua participação. Assim, se
// rotina J, passando o processamento para a rotina mais
45 231
ȴFRXFRPG¼YLGDVWHPFRPHQW£ULRVRXVXJHVW·HVDID]HUVREUHD$XOD
7, acesse as ferramentas habituais e interaja conosco. Nosso objetivo
é tornar sua aprendizagem um momento de realização pessoal e
SURȴVVLRQDO

Vale a pena

Vale a pena ler

BECK, Leland L. Desenvolvimento de software básico:


assemblers, linkers, loaders, compiladores, sistemas
operacionais, bancos de dados e processadores de textos. Rio
de Janeiro: Campus, 1994.
SHIMIZU, Tamio. Introdução à ciência da computação. São
Paulo: Atlas, 1988.

Vale a pena acessar

BAIXAKI. Programa que interpreta e executa algoritmos.


Disponível em: <http://www.baixaki.com.br/download/
visualg.htm>. Acesso em: 28 jun. 2011.
GOMES, R. C. G. Algoritmos e lógica de programação.
Disponível em: <http://pt.scribd.com/doc/50093335/36/
Uso-do-comando-de-repeticao-para-for-com-vetores>.
Acesso em: 28 jun. 2011.
SCRIBD. VisualAlg - editor e interpretador de
pseudocódigos. Disponível em: <http://pt.scribd.com/
doc/54436295/Apostila-VisualAlg>. Acesso em: 28 jun.
2011.
UTPR - Universidade Tecnológica Federal do Paraná.
Estruturas de dados homogêneas. Disponível em: <http://pessoal.
utfpr.edu.br/sbkaminski/arquivos/Aula_10%20_Vetores.
pdf>. Acesso em: 28 jun. 2011.

Vale a pena assistir

BOONG, K. Vetor – algoritmo. Disponível em: <http://


www.youtube.com/watch?v=MWR37yk2uwo>. Acesso em:
28 jun. 2011.

Minhas DQRWD©·HV
232 Algoritmo e Programação

8º Aula

Estruturas homogêneas II

Para continuar os estudos sobre Estruturas


Homogêneas, é importante que tenha compreendido
amplamente a Aula anterior que introduziu o tema.
Nesse contexto, sugerimos que caso ainda reste
dúvidas, realize uma revisão do conteúdo e entre em
contato conosco pelas ferramentas disponibilizadas
no ambiente virtual. Esteja certo(a) de que faremos o
possível para facilitar seu aprendizado.
Boa aula!

Objetivos de aprendizagem

Ao término desta aula, o aluno será capaz de:

‡UHFRQKHFHUDLPSRUWkQFLDGDV(VWUXWXUDV+RPRJrQHDV0DWUL]HDSOLFiODQDSURJUDPDomR
‡GHVHQYROYHUHRXDPSOLDUDFDSDFLGDGHGHSHUFHSomRGHXPSUREOHPDHXWLOL]iODQDFULDomRGH$OJRULWPRV
47 233
<identificador> é o nome atribuído à estrutura de dados
Seções de estudo (Matriz)
<tipo de dado> é o tipo de dado que será armazenado na
estrutura (inteiro, real)
1 - Matriz
<inicial> e <final> correspondem respectivamente à
quantidade de linhas da Matriz, sendo uma constante inteira
1 - Matriz e positiva.
<inicial2> e <final2> correspondem respectivamente à
Nesta Seção, você irá ampliar seus conhecimentos sobre as Estruturas quantidade de colunas da Matriz, sendo uma constante inteira
Homogêneas estudando um vetor denominado, Matriz... Você pode e positiva.
estar indignado: mas o que é uma matriz? Como isso pode ser aplicado As palavras “vetor” e “de” são palavras reservadas
D XP $OJRULWPR" (LV DOJXQV GRV GHVDȴRV TXH YDPRV VXSHUDU FRP R que fazem sentindo para o Algoritmo e nunca devem estar
HVWXGRSURSRVWRDVHJXLU3UHSDUHHRUJDQL]HVHXDPELHQWHGHHVWXGRV ausentes na instrução de declaração de uma matriz.
DYLVHDWRGRVTXHLU£HVWXGDUHERDDXOD A leitura de dados de uma matriz é passo a passo um
elemento de cada vez. Note que ela também é referenciada por
um índice, nesse caso, indicando a linha e coluna, na qual essa
Até a presente Aula, nós utilizamos uma única variável
intersecção é o endereço onde o elemento está armazenado.
indexada com apenas uma dimensão, uma coluna para várias
Vamos imaginar a seguinte matriz - 5 linhas por 5 colunas
linhas. Contudo, existem situações em que a natureza dos
(5 X 5):
dados nos indica que a sua forma de armazenamento possui
mais de uma dimensão. Portanto, em Algoritmo uma matriz é
um vetor que possui mais de uma dimensão. 8ID ΖVVR SDUHFH FRPSOLFDGR PDV QD ȴJXUD DEDL[R HVW£ WXGR
H[SOLFDGLQKR9HMDP
Um vetor é uma estrutura de dados homogênea, isto é, agrupa valores
de um mesmo tipo; o tipo do vetor é o mesmo tipo dos dados que ele Coluna
armazena (BRASIL ACADÊMICO, 2011).

É válido observar que o mais comum é a matriz de duas 1 2 3 4 5


dimensões por se relacionar diretamente com a utilização de Linha 10 5 10 10 10
1
tabelas. Dessa forma, sendo bidimensional, a variável atua
2 5 4 20 9 9
como uma grade de linhas e colunas, na qual a intersecção
entre uma linha e uma coluna armazena um dado. 3 7 3 100 3 3
Cabe observar que um vetor unidimensional também é 4 6 3 70 4 4
conhecido como matriz de uma única linha. Uma matriz de 5 7 8 30 9 9
duas dimensões está sempre fazendo menção a linhas e colunas
Figura 8.2 Matriz de 5 linhas por 5 colunas.
e é representado por seu nome e seu tamanho (dimensão) entre Fonte: acervo pessoal.
colchetes.
Vamos ver quais são os valores retornados para as
No exemplo a seguir temos uma matriz de duas dimensões
expressões:
teste [1..5, 1..4]. Nesse caso, o nome da matriz é “teste”, com
a) teste[1,1] – nesse caso o valor armazenado é 10, ou
tamanho de 5 linhas (1 até 5) e de 4 colunas (1 até 4) logo,
VHMDDLQWHUFHVVmRGDOLQKDFRPDFROXQD
“teste” é uma matriz de 5 por 4 ( 5 x 4).
b) teste[2,3] – o valor armazenado é 20, ou seja, a
Dentro dessa matriz é possível armazenar 20 elementos:
LQWHUFHVVmRGDOLQKDFRPDFROXQD
Coluna c) soma<- teste[4,4] + teste[5,1] – A variável soma será
LJXDOD 
d) para atribuir um valor, basta referenciar a linha e
1 2 3 4
colunas desejadas. Teste[4,2] <- 50.
Linha 1
Exemplo 39: Elaborar um Algoritmo para entrar com as
2 notas dos alunos em uma matriz de ordem 8 por 4 (oito linhas
3 por quatro colunas). Nesse exemplo serão 32 notas.
Vamos, aqui, utilizar um comando de repetição para
4
controlar as linhas e outro para controlar as colunas.
algoritmo “Exemplo Matriz”
Figura 8.1 Matriz de duas dimensões.
Fonte: acervo pessoal. var
Sintaxe: //declaração da Matriz 8 x 4
var notas: vetor [1..8,1..4] de real
<identificador>:vetor[<inicial>..<final>, I, J : inteiro
<inicial2>..<final2> de <tipo de dado> inicio
Onde: para I de 1 ate 8 passo 1 faca // declara as linhas da matriz
234 Algoritmo e Programação 48
para J de 1 ate 4 passo 1 faca // declara as colunas da para I de 1 ate 3 passo 1 faca
//matriz para J de 1 ate 3 passo 1 faca
leia(notas[I,J]) // entre com o valor das notas na Matriz leia(num[I,J]) // entre com o valor das notas na
fimpara //Matriz
fimpara se I = J entao
fimAlgoritmo num[I,J] < - num[I,J] * x
fimse
Observe, a seguir, como ficaria esse mesmo Algoritmo fimpara
para Ler e Escrever uma Matriz. fimpara
algoritmo “Matriz” para I de 1 ate 3 passo 1 faca
var escreval(num[I,1],num[I,2],num[I,3]) // Escreve o valor
notas: vetor[1..8,1..4] de real //da Matriz
I, J : inteiro fimpara
inicio ÀPDOJRULWPR
para I de 1 ate 8 passo 1 faca
para J de 1 ate 4 passo 1 faca
Retomando a aula
leia(notas[I,J]) // entre com o valor das notas na
//Matriz
fimpara
fimpara Fomos muito bem até o presente momento, você
para I de 1 ate 8 passo 1 faca concorda? Então, para encerrar esse tópico, vamos
//Escreve o valor da Matriz recordar:
escreval(notas[I,1],notas[I,2],notas[I,3],notas[I,4])
fimpara
fimAlgoritmo 1 - Matriz

Poderíamos utilizar também o mesmo processo de Na última Aula desta disciplina tivemos a oportunidade
leitura: de entender que uma matriz é uma coleção de variáveis de um
para I de 1 ate 8 passo 1 faca mesmo tipo que é referenciada por um nome comum.
para J de 1 ate 4 passo 1 faca Vimos ainda que os vetores são matrizes unidimensionais,
// Escreve o valor da Matriz fimpara ao passo que as matrizes bidimensionais são matrizes de
escreval (“Notas dos Alunos em Matriz:”,notas[I,J]) matrizes unidimensionais.
fimpara
fimpara &DVR YRF¬ WHQKD ȴFDGR FRP G¼YLGDV VREUH D $XOD  DFHVVH DV
ferramentas “fórum”, “quadro de avisos” ou “chat” e interaja com seus
colegas de curso e com seu professor.
Os conteúdos desta Aula são breves. Mesmo assim podem ocorrer Lembre-se de que os conteúdos estudados nesta disciplina representam
HYHQWXDLVG¼YLGDV1HVVHFDVRYRF¬WHU£DRSRUWXQLGDGHGHHQWHQG¬ apenas o primeiro passo de sua construção de conhecimentos sobre os
ORVPHOKRUDW«RȴQDOGHVWD$XODFRPRVWHPDVHH[HPSORVSURSRVWRVH Algoritmos, uma vez que aprender é algo que vamos fazer nossa vida
com as dicas em destaque, bem como com a consulta das referências WRGD $VVLP « IXQGDPHQWDO TXH FRQWLQXH SHVTXLVDQGR H LQWHUDJLQGR
disponibilizadas. Continue estudando com dedicação. Estamos indo com seus colegas de curso sobre o tema, uma vez que sua dedicação
PXLWREHP SRGHVHUXPDGDVUHVSRQV£YHLVSHODH[FHO¬QFLDGHVXDYLGDDFDG¬PLFD
HSURȴVVLRQDO3HQVHQLVVR
$JRUD«FRPYRF¬
Exemplo 40: Elaborar um Algoritmo para receber uma
matriz 3 por 3, multiplicar os elementos da diagonal principal
por uma constante X, que será lida, e exibir a matriz modificada:
Vale a pena
4 5 6 8 5 6
7 8 9 [  7 16 9
4 3 2 4 3 4
Figura 8.3 Matriz 3 por 3.
Vale a pena ler
Fonte: acervo pessoal.

algoritmo “Matriz Diagonal” 0$1=$12 -RVp $XJXVWR 1 * 2/,9(,5$


var Jayr Figueiredo de Oliveira. Algoritmos - lógica para
num: vetor[1..3,1..3] de real desenvolvimento de programação. 2. ed. São Paulo: Érica,
I, J, X : inteiro 2007.
inicio VELOSO, Paulo A. S. Estrutura e verificação de programas
escreva(“Entre com a Constante:”) com tipos de dados. São Paulo: E. Blucher, 1987.
leia(X)
49 235

Vale a pena acessar

BRASIL ACADÊMICO. Algoritmos I. Disponível em:


<http://www.brasilacademico.com/apostilas/A8_Vetor.
pdf>. Acesso em: 28 jun. 2011.
SIEBRA, S. A. Introdução à programação. Disponível
em: <http://pt.scribd.com/doc/50982484/9/Estruturas-
Homogeneas-Bidimensionais-Matrizes>. Acesso em: 28 jun.
2011.
UFMA. Algoritmos 1. Disponível em: <http://www.
deinf.ufma.br/~vidal/Algoritmos1/vetoresmatrizes.pdf>.
Acesso em: 28 jun. 2011.

Vale a pena assistir


CUISSI, E. VisuAlg Matriz. Disponível em: <http://
www.deinf.ufma.br/~vidal/Algoritmos1/vetoresmatrizes.
pdf>. Acesso em: 28 jun. 2011.

Referências

AVILLANO, Israel de Campos. Algoritmo de Pascal: Manual


de Apoio. 2 ed. Rio de Janeiro: Editora Ciência Moderna ltda,
2006.
BECK, Leland L. Desenvolvimento de software básico: assemblers,
linkers, loaders, compiladores, sistemas operacionais, bancos de
dados e processadores de textos. Rio de Janeiro: Campus, 1994.
*8,0$5®(6 ÇQJHOR GH 0RXUD /$*(6 1HZWRQ
Alberto de Castilho. Algoritmos e estrutura de dados. Rio de Janeiro:
LTC, 1994.
0$1=$12 -RVp $XJXVWR 1 * 2/,9(,5$ -D\U
Figueiredo de Oliveira. Algoritmos - lógica para desenvolvimento
de programação. 2. ed. São Paulo: Érica, 2007.
VELOSO, Paulo A. S. Estrutura e verificação de programas com
tipos de dados. São Paulo: E. Blucher, 1987.
VENÂNCIO, Cláudio Ferreira. Desenvolvimento de algoritmos:
uma nova abordagem. São Paulo: Érica, 2000.
SEBESTA, Robert W. Concepts of programming languages. 4th
ed. USA: Addison-Wesley, 1999.
SHIMIZU, Tamio. Introdução à ciência da computação. São
Paulo: Atlas, 1988.

Minhas DQRWD©·HV

Você também pode gostar