Escolar Documentos
Profissional Documentos
Cultura Documentos
5 297860
Professor Autor
Aldo de Moura Lima
Design Instrucional
Deyvid Souza Nascimento
Renata Marques de Otero
Terezinha Mnica Sincio Beltro
Diagramao
Izabela Cavalcanti
Coordenao
Anderson Elias
Coordenao Executiva
George Bento Catunda
Coordenao Geral
Paulo Fernando de Vasconcelos Dutra
1.2.1.1 Hardware............................................................................................................................................ 10
1.5.1 Fluxograma............................................................................................................................................ 17
Concluso ............................................................................................................................................. 76
Referncias ........................................................................................................................................... 77
Gostaria de dar a vocs as boas-vindas disciplina Lgica de Programao. Os assuntos que sero
tratados nesta disciplina fazem parte de uma rea da Informtica chamada de Desenvolvimento de
Software e envolvem a programao do computador.
A programao permite instruir o computador para que ele realize as tarefas que desejamos como,
por exemplo: controlar o estoque de uma empresa, simular os cenrios de um jogo, escrever e
enviar uma mensagem em uma rede social ou disponibilizar imagens em uma tela. Os
computadores precisam de programas para fazer com que seus componentes eletrnicos
processem os dados e realizem os resultados que desejamos.
A programao de computadores ocorre de forma diferente da que um ser humano utiliza para
instruir outro ser humano. Esta forma envolve a lgica de programao e poder ser expressa de
vrias maneiras. Utilizaremos a forma algortmica, onde as instrues que o computador deve
executar so codificadas em forma de texto, com comandos escritos na lngua portuguesa.
Nesta disciplina voc aprender os princpios e as principais estruturas que regem a programao.
Realizando os exerccios adequadamente, o seu raciocnio estar preparado para criar qualquer tipo
de programa, quando em disciplina posterior aprender uma linguagem de programao especfica
para computao.
Tenho certeza de que voc no vai querer ficar fora desta oportunidade. Como programao uma
rea muito abrangente, voc precisar complementar seus estudos atravs de outros materiais que
estaremos propondo neste caderno e em outros que voc, sem dvida, ir pesquisar.
Vamos nessa?
Aldo Moura
6
Competncia 01
1.1.1 Dado
Exemplos: 2, 20.3, 25
1.1.2 Informao
7
Competncia 01
Exemplos 1: nestes exemplos, para cada dado foi atribudo um significado, respectivamente: dias,
anos, smbolo monetrio do real e telefone.
53 dias
53 anos
R$ 53,00
Telefone 99999-0101
Exemplos 2: nos exemplos abaixo temos trs listas que possivelmente sofreram processamento,
resultando em:
8
Competncia 01
9
Competncia 01
1.2.1.1 Hardware
1.2.1.2 Software
Os softwares so os programas que determinam o que os hardwares devem fazer como, por
exemplo: jogos, sites, editores de texto e controle de estoque.
A cincia que trata do desenvolvimento de software conhecida como Engenharia de Software. Ela
prev que para um software se desenvolver deve haver um processo de software definido.
O processo de software mais tradicional conhecido como Modelo Cascata, representado na figura
2.
10
Competncia 01
Processo de Software:
Conjunto de atividades relacionadas que levam produo de um software.
Para conhecer outros modelos, pesquise sobre Modelo de Processo de Software. Alm do
modelo cascata, descrito acima, voc dever encontrar vrios outros modelos: incremental,
prototipagem e espiral.
11
Competncia 01
1.4 Codificao
12
Competncia 01
A etapa da entrada onde ocorre a insero dos dados iniciais, que sero necessrios para os
resultados que desejamos obter.
Os dados inseridos, de acordo com a necessidade, podem ser manipulados de vrias formas, tais
como: usados em clculos matemticos ou organizados em ordem alfabtica ou numrica. Esta
manipulao chamada de etapa de processamento.
13
Competncia 01
Entrada: notas
Processamento: clculo
Sada: mdia
Estas trs fases tambm esto presentes no mecanismo de um sistema, considerado como um
conjunto de elementos que interagem para atingir objetivos.
Sistema digestrio
Sistema sanguneo
Sistema de transporte
Sistema hidrulico
Sistema eltrico
Sistema de sade
Cada um destes sistemas composto por diversos elementos que colaboram para que o objetivo
desejado seja atingido.
Exemplo 1: para encontramos o maior nmero entre dois nmeros iniciais, precisamos
basicamente de cinco instrues:
1. Obter o 1 nmero;
14
Competncia 01
2. Obter o 2 nmero;
3. Comparar o 1 nmero com o 2 nmero;
4. Memorizar o maior nmero comparado;
5. Exibir o nmero memorizado.
Exemplo 2: Para encontramos o maior nmero entre trs nmeros iniciais, precisamos
basicamente de oito instrues:
1. Obter o 1 nmero;
2. Obter o 2 nmero;
3. Obter o 3 nmero;
4. Comparar o 1 nmero com o 2 nmero;
5. Memorizar o maior nmero comparado;
6. Comparar o 3 nmero com o maior nmero memorizado;
7. Memorizar o maior nmero na nova comparao;
8. Exibir o nmero memorizado.
Imaginem a quantidade de instrues que deve ter um processamento para processar um pedido,
envolvendo clculo do valor total, clculo dos impostos, clculo dos descontos, fazer baixa do
estoque, calcular as parcelas quando for vender a prazo, fazer os lanamentos da contabilidade,
calcular a comisso do vendedor, etc.
15
Competncia 01
1.4.3 Programa
Conjunto de instrues que um computador interpreta para executar uma tarefa especfica.
Sendo uma mquina eletrnica, o computador est submetido s regras da eletrnica digital. Com
isso, as diversas regras das linguagens naturais (portugus, ingls, japons, etc.) no so entendidas
pelo computador. Ento, foram criadas linguagens de programao com regras prprias, indicando
como as instrues devero ser codificadas.
1.4.4 Programao
1.4.5 Programador
Como uma linguagem de programao tem regras prprias, as instrues de um programa devero
ser escritas em uma sequncia lgica, para que a tarefa seja de fato executada. Esta sequncia
lgica o que chamamos de lgica de programao.
Antes de escrever o programa propriamente dito, comum primeiro fazermos uma representao
abstrata, sem muitos detalhes, da ideia (lgica) que temos para resolver o problema para o qual o
programa est sendo criado. Os arquitetos ou engenheiros civis normalmente fazem algo parecido.
Quando um cliente solicita que eles elaborem um projeto para a construo de um imvel, antes de
desenhar a planta arquitetnica, eles primeiro fazem um rascunho (croqui) para entender melhor o
desejo do cliente e verificar se a proposta desenhada no croqui atende ao que o cliente quer.
Quando verificado que realmente atende, a planta finalmente elaborada com todos os detalhes
necessrios, de acordo com as regras da engenharia civil.
16
Competncia 01
Linguagem de programao:
conjunto de comandos (texto e smbolos) com sentido predeterminado e regras de sintaxe
prprias que permitem a construo de instrues que um computador pode executar.
Codificao:
termo utilizado para substituir a programao, j que o ato de programar envolve escrever
um programa nos cdigos especficos de uma linguagem de programao.
1.5.1 Fluxograma
uma forma de representao grfica da lgica de programao, que utiliza smbolos como
comandos para o computador. O programador deve conhecer os smbolos predefinidos que pode
utilizar e o que cada smbolo representa, como, por exemplo, os smbolos relacionados na figura 4.
A partir dos exemplos de smbolos da figura 4 j podemos representar a lgica de programao por
fluxograma para somar dois nmeros (veja Figura 5).
17
Competncia 01
E, ento, considerando o significado dos smbolos da figura 4, voc consegue descrever o que o
fluxograma da figura 5 faz?
18
Competncia 01
Muito bem, espero que tenha acertado. Pode no ter ficado igual ao que fiz, mas o importante
que voc tenha entendido.
1.5.2 Algoritmo
uma forma de representao textual da lgica de programao, que utiliza palavras como
comandos para o computador. O programador deve conhecer as palavras predeterminadas da
linguagem algortmica que pode utilizar e o que cada palavra representa. Dizemos que as palavras
da linguagem algortmica so palavras reservadas, como as palavras relacionadas na figura 6.
A maioria das palavras reservadas so palavras utilizadas na lngua portuguesa (inicio, fim, leia,
escreva). No entanto, por se tratar de algoritmo, as palavras no so acentuadas. Tambm h um
grupo de palavras (conjunto de caracteres) que no tem correspondente na lngua portuguesa (:=,
<-).
As palavras reservadas s devem ser utilizadas no algoritmo para o que foram determinadas. A
palavra leia, por exemplo, foi reservada para significar entrada de dados. Caso voc tenha algum
item do algoritmo que queira chamar de leia, utilize um sinnimo. No caso de leia pode ser estude.
19
Competncia 01
Creio que voc um bom observador e deve ter percebido alguns detalhes. Algumas palavras
reservadas esto sublinhadas, os dados a serem lidos nos comandos leia e o dado a ser exibido no
comando escreva esto entre parnteses. Estes e alguns outros detalhes de um algoritmo voc
aprender no decorrer da disciplina.
Esta forma utiliza uma linguagem prpria linguagem algortmica, com regras prprias.
No existe apenas uma maneira de resolver um problema. Cada programador pode desenvolver
ideias diferentes e ambos conseguirem resolver o mesmo problema. O que vai caracterizar que o
algoritmo est correto a conformidade do resultado que ele gera em relao aos dados de
entrada.
Uma linguagem de programao algortmica uma linguagem didtica, ou seja, utilizada para
ensinar lgica de programao, no sendo usada em programao real de computadores. Por ser
uma linguagem apenas didtica, cada escola pode desenvolver suas prprias palavras reservadas e
suas prprias regras de sintaxe. Aps o algoritmo ser testado, e comprovado que a lgica est
20
Competncia 01
1.7.1 Varivel
Um programa pode ser executado diversas vezes, com a vantagem de que em cada execuo
forneamos dados de entrada diferentes. Na codificao do programa, o dado precisa ser
representado, mas o valor dele s ser fornecido quando o programa for executado. Como pode ser
fornecido qualquer valor, esta representao do dado chamada de varivel. No algoritmo da
figura 8 podemos observar em destaque as variveis numero1, numero2 e soma. Elas representam
qualquer valor. Se em uma execuo do programa forem fornecidos os valores 10 e 20
respectivamente para as variveis numero 1 e numero 2, o valor da varivel soma ser 30. Se em
outra execuo forem fornecidos os valores 5 e 7, o valor da varivel soma ser 12. No fcil?
O programador deve ter o cuidado de declarar antecipadamente todas as variveis que vai utilizar
em seu algoritmo, de acordo com o tipo de dado que a varivel vai representar. Os dados ocupam
espao na memria do computador e a declarao de variveis a maneira de reservar os espaos
21
Competncia 01
O espao reservado pela declarao depende do tipo de dado declarado. O programador apenas faz
a declarao e o sistema operacional, que gerencia os recursos do computador, encarrega-se de
reservar o espao especfico.
22
Competncia 01
var
<nome_varivel>: <tipo>
Onde:
nome_varivel = nome da varivel. No pode ter espao, smbolos (exceto sublinhado _) e nem
iniciar por nmero. No pode ser uma palavra reservada utilizada na linguagem de programao,
como algoritmo, var, inicio, etc. Deve ser um nome sugestivo em relao ao dado que vai
armazenar.
Exemplo:
var
numero1: real
Note que o nome da varivel e o tipo so parmetros obrigatrios, pois esto entre parnteses
angulares <>.
Em um comando de declarao var devero ser declaradas todas as variveis do algoritmo, como no
exemplo a seguir:
var
numero1: real
numero2: real
nome: literal
23
Competncia 01
As variveis do mesmo tipo podem ser agrupadas em uma linha, separando-as por vrgula, com
apenas uma especificao do tipo, conforme o seguinte exemplo:
var
numero1, numero2: real
nome: literal
Veja como fica o algoritmo da figura 7 com o comando de declarao das variveis na figura 9 a
seguir:
Voc tambm deve ter observado que as variveis foram colocadas na linha seguinte ao comando
var e no se encontram alinhadas na mesma margem esquerda que o comando. Isso para permitir
uma melhor organizao do cdigo. Nada impede que todas as variveis estejam na mesma
margem esquerda do comando var, ou mesmo que a primeira varivel esteja na mesma linha do
comando var, como no exemplo da figura 10.
24
Competncia 01
25
Competncia 01
1.7.2 Constante
26
Competncia 01
Os tipos de constantes tambm seguem os mesmos tipos de variveis: literal ou texto; inteiro; real
ou numrico e lgico.
At o momento voc aprendeu como fazer parte de um algoritmo. Ainda esto faltando alguns
detalhes para que o algoritmo esteja completo e possa ser testado.
algoritmo "nome_algoritmo"
// Seo de Declaraes
var
inicio
27
Competncia 01
// Seo de Comandos
fimalgoritmo
algoritmo <nome_algoritmo>
Onde:
nome_algoritmo = um nome, entre aspas, que obrigatoriamente deve ser dado ao algoritmo.
Exemplos:
algoritmo soma
algoritmo media
algoritmo calcular mdia de 2 notas
algoritmo ## calcular rea ##
O nome de algoritmo pode conter espao, nmero ou caracteres especiais. O ideal colocar um
nome sugestivo, de acordo com o problema que o algoritmo resolve.
A primeira a seo de declarao, onde deve ser colocado o comando var, j estudado nesta
competncia.
A segunda a seo de comando, que inicia com o comando inicio. onde as instrues que
orientam o computador so codificadas.
Com base nesta estrutura vamos codificar totalmente um algoritmo que soma dois nmeros (veja a
figura 13).
28
Competncia 01
As linhas que descrevem as sees no precisam ser codificadas. Linhas iniciadas com os caracteres
// (barras duplas) indicam comentrios para melhor entendimento e podem ser acrescentadas
livremente pelo programador, de acordo com a necessidade. No exemplo da figura 14 foram
suprimidos os comentrios que descrevem as sees e foram acrescentados outros comentrios.
29
Competncia 01
Para que o processamento de dados ocorra necessrio que o computador tenha conhecimento
dos dados que dever processar. O conhecimento dos dados possvel pela entrada de dados na
memria, ou seja, armazenamento do dado na varivel. A entrada de dado ocorre atravs do
comando leia.
Exemplos:
leia (nome)
leia (numero)
Este comando pressupe que o dado vir de alguma fonte, que em nosso caso ser do teclado.
Quando o programa for executado ocorrer uma pausa para que o usurio digite o dado que ele
deseja introduzir. O dado introduzido dever ser do mesmo tipo declarado para a varivel que
receber o dado.
30
Competncia 01
Tudo que foi escrito no algoritmo, como a declarao das variveis, por exemplo, no visualizado
pelo usurio durante a sua execuo. Apenas o que tiver determinado pelo comando escreva.
Este comando a forma que o algoritmo tem para se comunicar com o usurio do algoritmo. Ele
pressupe que a informao ser exibida na tela.
Onde:
texto = texto opcional, pois se encontra entre colchetes. Pode ser um texto para descrever a
informao que ser exibida. Caso tenha optado em colocar esse texto, deve-se colocar uma vrgula
para separar do nome da varivel.
Exemplos:
escreva (numero)
escreva (Nome do aluno:, nome)
Um dos processamentos mais bsicos o de atribuir o resultado de uma operao aritmtica a uma
varivel. Na prxima competncia estudaremos vrios aspectos das operaes aritmticas. Por
enquanto vamos apenas nos preocupar como o resultado que guardado para ser posteriormente
utilizado em uma sada de informaes, por exemplo.
A atribuio a ao de guardar um dado em uma varivel. J sabemos que o comando leia recebe
um dado e o guarda em uma varivel, mas na atribuio o dado no recebido da digitao de um
usurio via teclado, mas sim conforme a instruo fornecida pelo programador.
31
Competncia 01
A atribuio ocorre atravs do comando := (dois pontos e igual sem espao entre eles) ou <- (maior
que e hfen sem espao entre os smbolos). Quando encontramos este comando lemos Recebe.
Onde:
expresso = constante, varivel ou expresso cujo resultado ser armazenado na varivel que
recebe a atribuio.
Voc deve usar um dos comandos por instruo, ou seja, usar := ou <- por cada instruo de
atribuio. No algoritmo, voc pode usar os dois comandos, desde que em linhas diferentes.
Exemplos:
numero := 124
nome := jose
resposta := numero1 + numero2
No primeiro exemplo o programador determinou que a varivel numero receba por atribuio a
constante inteira 124.
No segundo exemplo o programador determinou que a varivel nome recebesse por atribuio a
constante literal jose.
No terceiro exemplo o programador determinou que a varivel resposta recebesse por atribuio o
resultado da operao aritmtica de adio dos valores armazenados nas variveis numero1 e
numero2.
Como o algoritmo um pseudocdigo, no h como execut-lo para testar se ele est correto.
32
Competncia 01
Atualmente j existem diversas ferramentas que permitem escrever e testar o algoritmo. Usaremos
a ferramenta chamada Visualg. Voc ir precisar desta ferramenta para realizar exerccios e test-
los. Voc dever baix-lo no endereo (http://ultradownloads.com.br/download/Visualg/) e fazer
sua instalao.
Sempre que executamos o Visualg a tela abaixo aparece. um ambiente que segue os padres do
sistema operacional Windows e outros programas da Microsoft (Veja a figura 15).
33
Competncia 01
Para uma melhor compreenso do contedo deste item a partir deste ponto, sugerimos que
voc assista primeiro ao vdeo postado no link http://youtu.be/6N-EUkZxJIM.
Na parte superior temos a barra de menu que d acesso a todas as funcionalidades disponveis. As
funcionalidades so agrupadas por assunto: Arquivo, Editar, Exibir, Algoritmo, Cdigo, Ferramentas
e Ajuda, conforme a figura 16.
Abaixo da barra de menu temos as barras de ferramentas (figura 17). Nesta barra cada cone
representa uma funcionalidade que tambm pode ser acessada pela barra de menu, mas so
funcionalidades que so muito utilizadas, ento so colocadas nesta barra para fornecer um acesso
mais rpido. Dependendo da forma como a sua tela esteja configurada, esta barra poder ser
exibida em uma ou em mais linhas.
Na parte central do Visualg, encontramos a janela de edio onde devemos digitar o algoritmo
(figura 18). A estrutura bsica de um algoritmo j vem codificada.
34
Competncia 01
Na parte inferior esquerda temos a janela de variveis para exibir as variveis com seus
respectivos tipos e valores (figura 19).
Na parte inferior direita temos a janela em branco, que a janela de simulao, onde simulada a
execuo do algoritmo.
Finalmente temos a barra de status com informaes sobre o nmero da linha e da coluna em que
o cursor est posicionado, o estado do algoritmo (em branco ou modificado, se houve alguma
modificao no cdigo do algoritmo depois da ltima vez em que ele foi salvo) e informao para
35
Competncia 01
Para dominar melhor as funcionalidades do Visualg, recomendamos que voc leia a apostila
encontrada no endereo: www.slideshare.net/regispires/apostila-sobre-o-visualg-
presentation.
Execute o Visualg e vamos digitar nosso primeiro algoritmo com base na figura 13, est preparado?
Primeiro, vamos digitar o nome do algoritmo. Na primeira linha, substitua o texto semnome pelo
texto Somar 2 nmeros. Depois, abaixo do comando var digite a declarao das variveis
numero1, numero2 e soma. No se esquea de fazer a indentao (deslocar trs posies da
margem esquerda).
36
Competncia 01
var
numero1, numero2, soma: inteiro
// seo de comandos
inicio
leia (numero1)
leia (numero2)
soma := numero1 + numero2
escreva (soma)
fimalgoritmo
Revise com ateno para ter certeza de ter digitado tudo certinho, pois agora iremos mostrar como
testar o algoritmo.
A execuo inicia e, como voc pode conferir na figura 22, uma janela com fundo preto aparecer
sobre a janela do Visualg. Para entender melhor a execuo do algoritmo, arraste esta janela de
modo que voc possa enxergar a janela de variveis e a janela de simulao.
37
Competncia 01
Observe que a janela de variveis exibe as trs variveis declaradas, seu tipo (I indicando inteiro) e
seus respectivos valores, que at o presente momento 0 (zero).
Neste momento a execuo est parada aguardando a digitao do primeiro nmero para ser
38
Competncia 01
armazenado na varivel 1, j que a primeira instruo da seo de comandos possui a funo de ler
um dado de entrada. O computador est aguardando este dado de entrada. Digite um nmero, por
exemplo: 2, e tecle ENTER. Observe que na janela de variveis o valor da varivel nmero1 mudou
e na janela de simulao o valor digitado aparece abaixo da mensagem de incio da execuo.
Pronto! Voc j sabe como acompanhar a execuo do algoritmo. Esteja atento a estas duas
janelas.
Automaticamente a segunda instruo foi executada. Como tambm uma instruo para ler um
dado de entrada, nova pausa ocorreu, aguardando que o usurio digite novo dado de entrada.
Digite um nmero, por exemplo: 5, e tecle ENTER. Observe novamente os valores das variveis na
janela de variveis. Observando a janela de simulao voc verifica que a execuo do algoritmo j
chegou ao final, com o valor da varivel soma sendo exibida. No houve pausa para executar os
comandos de atribuio e de escrita, pois eles no necessitam da interveno do usurio. Eles so
executados automaticamente pelo simulador.
Voc deve estar pensando: quando houve as pausas para entrada dos dados, eu soube que era para
digitar nmeros para cada pausa porque fui eu quem digitou o algoritmo. Mas se o usurio fosse
outra pessoa, ela no saberia que dado deveria digitar. Ento, como voc j aprendeu um comando
que escreve na tela, antes de cada comando leia voc pode acrescentar um comando escreva
com uma mensagem indicando o dado que dever ser digitado. Acrescente as duas linhas em
destaque exatamente antes de cada comando leia, como demonstrado no algoritmo a seguir:
39
Competncia 01
Que tal tambm acrescentar um texto ao resultado final da varivel soma? Lembre-se da vrgula
para separar o texto da varivel.
Execute novamente o algoritmo e veja como ficou mais profissional. A partir de agora, s voc
exercer sua criatividade nos exerccios.
ATIVIDADE
As atividades a seguir so para que voc possa praticar e aprofundar sua aprendizagem.
1. Escreva um algoritmo para ler quatro nmeros inteiros e mostrar a soma deles.
2. Escreva um algoritmo para ler quatro nmeros reais e mostrar a soma deles.
Escreva um algoritmo para ler quatro nmeros, sendo dois inteiros e dois reais e mostrar:
a. A soma dos nmeros inteiros;
b. A soma dos nmeros reais;
c. A soma do resultado do item a com resultado do item b.
4. Escreva um algoritmo para ler dois nmeros para as variveis primeiro e segundo, inverter
os valores das variveis e mostr-los na tela. Exemplo: se o valor digitado para a varivel
primeiro for 100 e o valor digitado para a varivel segundo for 200, o processamento do
algoritmo dever fazer com que a varivel primeiro fique com o valor 200 e a varivel
segundo fique com 100.
40
Competncia 02
Na tabela 1 esto relacionados os operadores aritmticos que so utilizados nas operaes bsicas
da aritmtica: adio, subtrao, multiplicao e diviso.
OPERADORES OPERAO
+ Adio
- Subtrao
* Multiplicao
/ Diviso
Tabela 1 - Operadores aritmticos bsicos
Fonte: o autor (2013)
Nos algoritmos, as expresses matemticas so escritas de forma linear, como nos exemplos a
seguir:
10+20/2
4*2+10/2
41
Competncia 02
multiplicar: inteiro
dividir: real
// como uma diviso pode ocasionar um
// valor que no inteiro, a varivel
// dividir foi declarada como real.
inicio
escreva (Digite um nmero inteiro: )
leia (numero1)
escreva (Digite outro nmero inteiro: )
leia (numero2)
somar := numero1 + numero2
subtrair := numero1 - numero2
multiplicar := numero1 * numero2
dividir := numero1 / numero2
escreva (Soma: , somar)
escreva (Subtrao:, subtrair)
escreva (Multiplicacao:, multiplicar)
escreva (Diviso:, dividir)
fimalgoritmo
O exemplo anterior apresenta quatro sadas (quatro comandos escreva). Os resultados sero
exibidos na mesma linha. Para uma melhor apresentao podemos utilizar o comando
ESCREVAL. Com este comando, cada resultado apresentado em uma linha.
Sempre que houver um operador de diviso, pode ocorrer um resultado com nmeros decimais,
portanto a varivel que armazena o resultado da diviso dever ser do tipo real. Caso a varivel seja
declarada do tipo inteiro, ocorrer um erro durante a simulao do algoritmo.
Exemplo 1: 10+20/2
42
Competncia 02
Exemplo 2: 4*2+10/2
Para alterar as prioridades possvel utilizar parnteses. Se nos exemplos anteriores a necessidade
fosse resolver primeiro as operaes de adies, deveramos ter envolvido a parte da expresso que
requer prioridade entre parnteses. Observe nos prximos exemplos como os parnteses mudam o
resultado da expresso:
Exemplo 1: (10+20)/2
Resulta em 15, pois os parnteses obrigam a resolver primeiro o que estiver dentro dos parnteses,
neste caso a adio. S depois a diviso resolvida.
Exemplo 2: 4*(2+10)/2
Resulta em 24, pois primeiro resolvida a adio priorizada pelos parnteses e depois a
multiplicao e diviso.
Para fixar esta regra de forma prtica, vamos analisar um algoritmo para calcular a mdia aritmtica
de duas notas.
43
Competncia 02
Primeiro ponto a ser observado que as variveis foram declaradas do tipo real, pois tanto as notas
quanto a mdia podem ter valores decimais.
Observe que a expresso aritmtica que calcula a mdia na linha 11 d prioridade para a adio das
notas, como realmente deve ser. S aps a adio das notas que deve ocorrer a diviso por 2.
Alm dos operadores aritmticos bsicos j estudados, existem outros operadores aritmticos que
so utilizados em operaes matemticas. Na tabela 2 apresentamos dois operadores utilizados em
operaes matemticas, que esto representados na figura 23.
OPERADORES OPERAO
DIV Quociente de uma diviso inteira
MOD Resto de uma diviso inteira
Tabela 2 - Operadores para diviso entre nmeros inteiros
Fonte: o autor (2013)
Figura 23- Demonstrao de uma diviso inteira entre nmeros inteiros, onde so identificados os ele-
mentos envolvidos na diviso: dividendo, divisor, quociente e resto.
Fonte: o autor (2013)
Descrio: a imagem mostra uma diviso inteira entre nmeros inteiros. Os nmeros envolvidos na di-
viso so 16, colocado no lado esquerdo da imagem, e 5, colocado no lado direito da imagem. Um texto
aponta para o nmero 16 indicando que ele o dividendo e outro texto aponta para o nmero 5 indi-
cando que ele o divisor. Abaixo do nmero 5 foi colocado o nmero 3 como resultado da diviso in-
teira, onde um texto aponta este resultado como o quociente. Abaixo do nmero 16 foi colocado o n-
mero 1 como o nmero que sobrou da diviso inteira e um texto aponta para ele indicando que ele o
resto.
44
Competncia 02
Considerando-se que na diviso do exemplo mostrado na figura 23 foi utilizado o operador MOD,
que pega apenas a parte inteira do quociente, o resultado 3.
As variveis que armazenaro os valores de uma operao DIV ou MOD devero ser do tipo
inteiro.
O smbolo % tambm pode ser utilizado em substituio ao operador MOD, como no exemplo:
resto := (numero1 % numero2).
45
Competncia 02
Para que operaes matemticas mais complexas possam ser realizadas, algumas rotinas pr-
definidas, denominadas funes, foram estabelecidas. Os nomes destas funes compem o
conjunto de palavras reservadas da linguagem de programao algortmica.
Onde:
Tomemos por exemplo a funo EXP que executa a operao de exponenciao, operao escrita
como an (a elevado a n, onde a a base e n o expoente). Sua sintaxe especfica :
Neste caso, a lista de argumentos composta de dois elementos, o primeiro a base e o segundo o
expoente. O resultado do processamento desta funo em um valor do tipo real:
Exemplos:
numero1 := 10
numero2 := 2
46
Competncia 02
Como o resultado da funo exponenciao do tipo real, a varivel que ir armazenar o resultado
de uma exponenciao dever ser declarada do tipo real.
Na tabela 3 informamos trs funes aritmticas que podemos utilizar em nossos prximos
exerccios:
47
Competncia 02
ATIVIDADE
1. Escreva um algoritmo para ler um nmero e mostrar:
a. A raiz quadrada deste nmero
b. O nmero recebido elevado a quarta (n4)
c. O nmero recebido vezes o quociente do nmero dividido por 2.
2. Escreva um algoritmo para ler o valor do raio de um crculo, calcular e mostrar o
valor da sua rea.
Obs.: Frmula para calcular a rea de um crculo : x raio2. Considere que o valor de
3,14.
48
Competncia 03
Este captulo ir tratar da estrutura de deciso que pode ser colocada em um algoritmo, permitindo
que haja uma tomada de deciso durante a execuo do programa.
Para que haja uma deciso, uma operao condicional precisa ser estabelecida, como no exemplo
citado da introduo deste captulo, onde a condio para solicitar o nome do cnjuge ser
solteiro. Na programao, uma operao condicional ocorre quando relacionamos dois elementos.
OPERADOR OBJETIVO
= Igual
<> Diferente
> Maior que
< Menor que
>= Maior ou igual
<= Menor ou igual
Tabela 5 - Operadores relacionais
Fonte: o autor (2013)
49
Competncia 03
A partir dos operadores da tabela 5, podemos elaborar operaes condicionais, desde que sigamos
a seguinte sintaxe:
Onde:
Qualquer um destes elementos pode ser uma varivel, uma constante ou uma expresso
matemtica.
OPERAO 4>6
Est sendo comparado se a constante numrica 4 maior que outra
COMENTRIO
constante numrica 6.
O resultado da comparao FALSO, pois o nmero 4 no maior
RESULTADO
que o nmero 6.
OPERAO A <> B
Como A e B esto entre aspas, no se tratam de variveis, mas
COMENTRIO de constantes literais (texto). Est sendo comparado se a letra A
maiscula diferente da letra B maiscula.
RESULTADO O resultado da comparao VERDADEIRO.
50
Competncia 03
OPERAO 1 = 1
O primeiro elemento da comparao o nmero 1 e o segundo
COMENTRIO elemento o literal 1 (observe que est entre aspas, o que
caracteriza ser um literal).
O resultado da comparao FALSO, pois esto sendo comparados
RESULTADO elementos de tipos diferentes. Veja a observao do exemplo
anterior.
OPERAO A < a
Como A e a esto entre aspas, no se tratam de variveis, mas
COMENTRIO de constantes literais (texto). Est sendo comparado se a letra A
maiscula menor que a letra a minscula.
RESULTADO O resultado da comparao VERDADEIRO.
Aqui voc pode ter achado essa comparao estranha, pode ter
pensado: -mas como eu posso afirmar que uma letra menor ou
OBSERVAO
maior que a outra?. A explicao pra isso segue logo abaixo, no
deixem de ler o texto do link.
51
Competncia 03
Cada caractere (letra, nmero ou smbolo) do computador corresponde a um cdigo que est
relacionado a uma tabela do computador, denominada Tabela ASCII, que voc poder consultar no
imprimveis da pgina deste link, as tabelas apresentam na segunda coluna os cdigos em nmeros
computador compara os cdigos correspondentes aos caracteres comparados. Por isso, no exemplo
Alguns problemas computacionais exigem que uma operao condicional tenha mais que uma
relao. o caso da obrigatoriedade de votar. A pessoa tem que ter a idade maior que 17 anos e
menor que 66 anos. Supondo que a idade esteja armazenada na varivel idade, escrevendo estas
Note que para uma pessoa votar deve atender a duas condies (a primeira condio E a segunda
condio). Surge ento a necessidade de conectarmos duas condies. Nesse caso, a sintaxe da
linguagem algortmica exige que cada condio esteja entre parnteses.
A tabela 6 apresenta dois operadores lgicos de conexo que permitem a elaborao de expresses
lgicas mais complexas:
52
Competncia 03
CONECTOR
E
OU
Tabela 6 - Operadores Lgicos
Fonte: o autor (2013)
Como cada condio resulta em um valor lgico (VERDADEIRO ou FALSO), aplicam-se as tabelas 7 e
8, denominadas Tabela Verdade, para definir o resultado final da expresso.
E
RESULTADO DA 1 RESULTADO DA 2 RESULTADO DA
CONDIO CONDIO EXPRESSO
V V V
V F F
F V F
F F F
Tabela 7 - Tabela Verdade E
Fonte: o autor (2013)
OU
RESULTADO DA 1 RESULTADO DA 2 RESULTADO DA
CONDIO CONDIO EXPRESSO
V V V
V F V
F V V
F F F
Tabela 08 - Tabela Verdade OU
Fonte: o autor (2013)
Exemplo 1: para verificar se uma pessoa obrigada a votar, podemos ter a seguinte expresso:
Se a primeira condio (idade > 17) for VERDADEIRA E a segunda condio (idade < 66) tambm for
VERDADEIRA, pela tabela verdade do E, o resultado final da expresso VERDADEIRO. Ainda pela
tabela verdade do E, se alguma das condies resultarem em FALSO, o resultado final da expresso
FALSO.
53
Competncia 03
Exemplo 2: Para verificar se uma pessoa no obrigada a votar, podemos ter a seguinte expresso:
Se alguma das condies (idade < 18) OU (idade > 65) for VERDADEIRA, pela tabela verdade do OU,
o resultado final da expresso VERDADEIRO. Ainda pela tabela verdade do OU, o resultado final da
expresso s ser FALSO se as duas condies resultarem em FALSO.
Alm dos operadores E OU, para conectar condies, h tambm o operador de negao NAO, que
inverte o resultado de uma expresso lgica. Este operador escrito sem o acento ~ na letra A.
Para exemplificarmos seu uso vamos considerar uma situao onde teremos como entrada o tipo
de ligao telefnica, que pode ser: L (local fixo), C (celular local), E (estadual) ou I (internacional).
Sempre que a ligao for do tipo C, E ou I dever ser solicitada uma senha. A expresso condicional
para atender a este critrio pode ser assim escrita:
NAO(Tipo=L)
A expresso lgica fica mais simples utilizando o operador de negao e comparando apenas o
nico tipo que no exige senha.
54
Competncia 03
OU
RESULTADO DA 1 RESULTADO DA 2 RESULTADO DA
CONDIO CONDIO EXPRESSO
V V V
V F V
F V V
F F F
Tabela 9 Prioridade dos operadores lgicos
Fonte: o autor (2013)
Para resolver esta expresso, primeiro resolve-se cada relacionamento da expresso condicional.
Como resultado, temos a seguinte expresso:
Agora resolvemos primeiro os operadores lgicos E, conforme a tabela verdade, que resulta na
seguinte expresso:
Com base na expresso acima resolvemos o 1 operador lgico OU, resultando na expresso abaixo:
verdadeiro OU falso
Por fim resolvemos o ltimo operador OU, e temos o resultado final: verdadeiro
Podem-se utilizar parnteses para alterar a prioridade. No exemplo abaixo, o segundo operador OU
dever ser resolvido primeiro, por conta dos parnteses que agrupam os elementos da parte da
expresso.
Para resolver esta expresso, primeiro resolve-se cada relacionamento da expresso condicional,
que resulta na seguinte expresso:
55
Competncia 03
Agora, vamos resolver primeiro a parte da expresso que est dentro de parnteses, conforme a
tabela verdade, o que resulta na seguinte expresso:
falso OU falso
Exemplo 1: Considere a situao das pessoas que no so obrigadas a votar. De acordo com a
legislao eleitoral, existem dois casos onde o voto opcional:
Caso 1: Para quem tem mais de 15 anos e menos de 18 anos, que podemos representar com a
seguinte expresso lgica:
(idade>15) E (idade<=17)
Caso 2: Para quem tem mais de 65 anos, que podemos representar com a seguinte expresso
lgica:
idade>65
Como no caso 1 OU no caso 2 o voto opcional, podemos juntar as duas expresses atravs do
operador lgico OU e quaisquer uma das seguintes expresses pode ser escrita:
56
Competncia 03
Voc deve lembrar-se de que pela tabela 7 de prioridade dos operadores lgicos, independente da
ordem em que os operadores lgicos esto colocados na expresso, primeiro deve ser resolvido o
operador E (verificando se a idade est na faixa de 16 a 17 anos) para s depois verificar o operador
OU.
Se o valor armazenado na varivel idade for 7 anos, teremos pela primeira expresso:
Resolvendo o operador E (pela tabela 7 - tabela verdade E), falso E verdadeiro resulta em falso,
ficando assim a expresso:
falso OU falso
Por fim, resolvendo o operador OU (pela tabela 8 tabela verdade OU), falso OU falso resulta em
falso, ou seja, falso para uma pessoa de 7 anos que o voto opcional.
Agora faa o teste acima com as idades 16, 30 e 70 anos e verifique como o resultado corresponde
realidade em relao ao que a lei eleitoral estabelece quanto idade para o voto opcional.
Tambm resolva a expresso 2 abaixo, com as idades 7, 16, 30 e 70 e comprove que o resultado o
mesmo da expresso 1.
57
Competncia 03
Exemplo 2: Agora consideremos a situao onde para ser aprovado o aluno tem que:
Caso 1: ter frequentado pelo menos 75% das aulas, que podemos representar com a seguinte
expresso lgica:
perc_freq>=75
Caso 2: ter obtido o conceito A ou B, que podemos representar com a seguinte expresso
lgica:
(conc=A) OU (conc=B)
No exemplo 1, um dos dois casos deveria ser verdadeiro para que a pessoa pudesse votar de forma
opcional, por isso, conectamos as expresses lgicas com o conector E. Na situao deste exemplo,
os dois casos devem ser atendidos para que o aluno seja aprovado. Logo, iremos conectar as
expresses com o conector E, que pode resultar em uma das expresses:
A princpio voc pode achar que as expresses esto corretas, mas h um erro lgico, considerando-
se as tabelas verdades 8 e 9.
Se o valor armazenado na varivel perc_freq for 60 e o valor armazenado na varivel conceito for
A, teremos pela primeira expresso:
58
Competncia 03
Resolvendo o operador E (pela tabela 7 - tabela verdade E), falso E verdadeiro resulta em falso,
ficando assim a expresso:
falso OU falso
Por fim, resolvendo o operador OU (pela tabela 8 tabela verdade OU), falso OU falso resulta em
falso, ou seja, falso para uma pessoa com 60% de frequncia e conceito A que esteja aprovado.
Tambm resolva a expresso 2 com os mesmos valores e comprove que o resultado o mesmo da
expresso 1.
Bem, a voc pergunta: No vi erro nenhum, cad o erro lgico de que voc falou?. Realmente,
para os dados colocados o erro no aparece. Mas ai que est o segredo do que estamos
estudando a lgica de programao utilizando algoritmos. Para que um algoritmo esteja correto,
ele tem que atender corretamente a situao de todos os alunos que possamos imaginar. Vamos
colocar agora um aluno tambm com 60% de frequncia e com o conceito B, ficando assim, pela
primeira expresso:
Resolvendo o operador E (pela tabela 7 - tabela verdade E), falso E falso resulta em falso, ficando
assim a expresso:
falso OU verdadeiro
59
Competncia 03
Resolvendo o operador OU (pela tabela 8 tabela verdade OU), falso OU verdadeiro resulta em
verdadeiro, ou seja, verdadeiro para uma pessoa com 60% de frequncia e conceito B que
esteja aprovado, o que no faz o menor sentido, porque ele tem apenas 60% de frequncia. Mesmo
se utilizarmos a expresso 2, o resultado tambm estaria errado.
Esse tipo de erro o que chamamos de erro lgico, uma vez que a sintaxe da expresso est
correta, mas a lgica em relao ao problema que desejamos resolver no est.
Para ser aprovado um aluno deve atender aos dois casos seguintes:
Caso 1: perc_freq>=75
Como temos dois casos, mas trs condies, o computador no sabe se so trs casos ou dois casos,
combinando a 1 condio com a 2 condio ou combinando a 2 condio com a 3 condio.
Nessa situao, ele obedece regra de prioridade dos conectores lgicos. Analisando novamente as
duas condies vistas anteriormente, o computador estar resolvendo primeiro o conector lgico E,
que tem mais prioridade que o conector lgico OU, conforme destacado nas expresses abaixo:
Para fazer o Caso 2 ser resolvido prioritariamente e s depois ser conectado ao Caso 1, voc deve
recorrer ao uso dos parnteses, pois ele faz com que a expresso que est dentro dos parnteses
seja resolvida primeiro, conforme as expresses a seguir:
60
Competncia 03
Vamos resolver agora expresso 1 com os mesmos valores que serviram para identificarmos o erro
lgico: 60% de frequncia e conceito B, ficando assim, a soluo:
Resolvendo primeiro o operador OU por causa dos parnteses (pela tabela 8 - tabela verdade OU),
falso OU verdadeiro resulta em verdadeiro, ficando assim a expresso:
falso E verdadeiro
Resolvendo o operador E (pela tabela 7 tabela verdade E), falso E verdadeiro resulta em falso, ou
seja, falso para uma pessoa com 60% de frequncia e conceito B que esteja aprovado.
Esta estrutura utilizada em situaes onde uma mudana da sequncia normal de execuo das
61
Competncia 03
instrues deve ocorrer apenas se a condio avaliada resultar em um valor lgico VERDADEIRO.
Se o resultado da condio avaliada for um valor lgico FALSO, no haver mudana da sequncia e
a execuo segue seu fluxo normal.
A representao grfica da figura 24 faz uma comparao com uma avenida. Se em um trecho
houver uma obstruo, voc pode tomar um desvio e retomar a avenida em um ponto mais a
frente, aps a obstruo.
SE <expresso_condicional> ENTAO
<bloco_de_instrues>
FIMSE
Denominamos de estrutura, porque no uma simples instruo de uma linha, mas uma estrutura
iniciada com o comando SE e finalizado como o comando FIMSE. Entre os dois comandos podemos
colocar diversas instrues, tantas quanto forem necessrias para resolver o problema. A expresso
condicional deve atender aos conceitos estudados nos itens anteriores deste captulo.
62
Competncia 03
Consideremos uma situao onde dever ser concedido um desconto quando a venda de um
produto for maior que quatro unidades. Desenvolvemos o seguinte algoritmo para resolver este
problema.
Esta estrutura utilizada em situaes onde duas mudanas de sequncia so previstas. Uma
63
Competncia 03
Caro aluno, vamos comparar novamente com uma avenida? Observe na figura 25, onde em certo
ponto da avenida no d para seguir em frente, mas se deve tomar uma deciso entre duas
alternativas possveis.
SE <expresso_condicional> ENTAO
<bloco_de_instrues_1>
SENAO
<bloco_de_instrues_2>
FIMSE
Como aplicao prtica desta estrutura, vamos elaborar um algoritmo que receba duas notas,
64
Competncia 03
calcule e mostre a mdia. Considerando que a mdia para aprovao seja 6, mostre tambm se o
aluno foi aprovado ou reprovado.
Entendeu? Aps calcular e mostrar a mdia preciso informar uma das alternativas: aprovado ou
reprovado. Como so duas alternativas colocamos uma estrutura de deciso composta, testando se
a mdia inferior a 6. Se resultar em verdadeiro, ser mostrado Aluno Reprovado, se no resultar
em verdadeiro s pode resultar em falso, neste caso ser mostrado Aluno Aprovado. No legal?
assim que o computador toma decises.
Agora, vamos desenvolver um algoritmo para informar se um nmero inteiro par ou mpar. Voc
j pode imaginar que uma estrutura de deciso composta deve ser utilizada porque dois caminhos
so possveis: um caminho se o nmero for par e outro caminho se o nmero no for par, ou seja,
for mpar. E como saber se um nmero par? Bem, todo nmero par quando dividido por 2, resta
0. Opa! Lembrou-se do operador MOD, estudado na competncia anterior, que mostra o resto de
uma diviso inteira? Ento, vamos combinar uma estrutura condicional e uma expresso utilizando
o operador MOD para resolver o problema.
65
Competncia 03
numero: inteiro
inicio
escreva ("Digite um nmero inteiro: ")
leia (numero)
Muito simples, no foi? Digite este algoritmo no Visualg e faa o teste para conferir.
Um bloco de comando de uma estrutura condicional pode conter qualquer instruo, inclusive
outras estruturas condicionais. Quando isto necessrio, temos uma srie de estruturas
condicionais, que denominamos de estrutura encadeada ou estrutura aninhada.
Esta estrutura utilizada em situaes onde mais de duas mudanas de sequncia so previstas.
Uma mudana de sequncia executada se o resultado da condio avaliada for um valor lgico
VERDADEIRO e a outra mudana de sequncia ser executada se o resultado da condio avaliada
for um valor lgico FALSO, mas dentro de cada uma das duas sequncias pode haver outras
mudanas.
Para exemplificar esta estrutura, consideremos uma situao onde o aluno pode estar aprovado,
em recuperao ou reprovado, conforme as condies a seguir:
66
Competncia 03
ATIVIDADE
As atividades a seguir so para que voc possa praticar e aprofundar sua aprendizagem.
1. Escreva um algoritmo para ler o salrio de dois funcionrios. Os valores dos salrios
devero ser diferentes e podero ser informados em qualquer ordem: primeiro o menor
salrio depois o maior salrio ou vice-versa. O algoritmo dever executar um processamento
para que o maior salrio fique armazenado na 1 varivel declarada e o menor salrio fique
armazenado na 2 varivel declarada. O algoritmo dever mostrar os salrios em ordem do
menor para o maior.
2. O ingresso para um show promovido pelo clube social da cidade tem o valor padro de R$
70,00. Escreva um algoritmo para ler o tipo de expectador que assistir ao show (S para
scio e N para no scio). Dever ser exibido o valor que dever ser pago pelo ingresso.
Obs.: Scio paga 50% do valor padro do ingresso.
3. Escreva um algoritmo para ler:
a. O preo normal do ingresso de um show
b. A quantidade total de ingressos vendidos
c. A quantidade de ingressos meia-entrada vendidos.
Calcule e mostre o valor total arrecadado, considerando que o ingresso de meia-entrada custa
metade do preo normal do ingresso.
4. Escreva um algoritmo para ler dois nmeros e mostrar de acordo com os valores dos
nmeros:
a. O primeiro nmero menor que o segundo
b. O primeiro nmero maior que o segundo
c. Os nmeros so iguais
5. Escreva um algoritmo para ler o valor da uma conta de restaurante, a quantidade de
homens, a quantidade de mulheres e a quantidade de crianas que participaram da refeio.
Calcule e mostre o valor que cada grupo deve pagar, considerando que mulheres e crianas
67
Competncia 04
Alm das estruturas estudadas no captulo anterior, que permitem diversas sequncias de
instrues em um algoritmo, existem vrias estruturas que permitem a repetio de uma sequncia
de instrues. Esses tipos de estruturas so teis em diversas situaes, como por exemplo: crtica
de dados, onde uma instruo de entrada de dados repetida, at que um valor vlido seja
digitado. Nesta competncia sero estudados trs tipos de estruturas de repetio e voc
entender quando utilizar cada uma delas.
Em situaes onde no sabemos quantas vezes uma sequncia de instrues deve ser repetida,
voc deve utilizar uma estrutura de repetio indefinida. Existem duas estruturas de repetio
indefinida. Uma em que o bloco de repetio ocorre pelo menos uma vez e outra em que o bloco de
repetio pode no ocorrer nenhuma vez.
Para repetir pelo menos uma vez, podemos utilizar a estrutura REPITA, cuja sintaxe a seguinte:
REPITA
<bloco_de_instrues>
ATE <expresso_condicional>
Quando a execuo do algoritmo atinge o comando REPITA, ele entende que comeou um bloco de
instrues que pode se repetir. Esse bloco estende-se at o comando ATE. O bloco executado pela
primeira vez, ou seja, ocorre a primeira repetio. Ao atingir o comando ATE, a expresso
condicional contida neste comando avaliada. Se o resultado da expresso condicional for FALSO
ocorrer nova repetio do bloco de instruo. A cada final de repetio a expresso condicional
avaliada. Quando acontecer do resultado da expresso condicional ser VERDADEIRO, a repetio
para e a execuo do algoritmo continua sequencialmente.
68
Competncia 04
Instruo_1
Instruo_2
Instruo_3
REPITA
Instruo_4
Instruo_5
ATE condio
Instruo_6
Instruo_7
As instrues 4 e 5, que fazem parte de um bloco de repetio, sero executadas uma vez. Como a
repetio definida pelo comando REPITA, cuja condio de repetio codificada no final do
bloco, no comando ATE, a possibilidade de repetio depende da avaliao desta condio. Se o
resultado for FALSO, as instrues 4 e 5 sero executadas novamente, ou seja, ocorrer nova
repetio destes comandos. Quando o resultado da condio for VERDADEIRO, a repetio termina
e sero executados os comandos 6 e 7.
Vamos considerar o algoritmo que calcula a mdia aritmtica entre duas notas. O valor mximo de
cada nota s pode ser 10. Caso o usurio digite um valor maior que 10, o valor no deve ser aceito e
a instruo de entrada deve se repetir at que um valor menor ou igual a 10 seja digitado. Nosso
algoritmo deve ficar da seguinte forma:
69
Competncia 04
4.2 Contador
Com o uso de estrutura de repetio surge a necessidade de realizarmos algumas contagens como,
por exemplo:
Um contador uma varivel que, a partir de um valor inicial, a cada repetio pode ter o seu valor
aumentado ou diminudo de um valor constante.
A sintaxe de um contador :
Vamos desenvolver um algoritmo para receber o sexo de vrias pessoas. Dever ser digitado M
para masculino e F para feminino. Para finalizar o algoritmo dever ser digitado o sexo X. Ao final da
execuo o algoritmo dever exibir a quantidade de pessoas do sexo masculino e a quantidade de
pessoas do sexo feminino.
algoritmo "Contador"
var
sexo: literal
70
Competncia 04
Nesse algoritmo, toda vez em que digitado a letra M para uma leitura de um sexo, adicionado
no valor da constante numrica 1 a varivel contadora masculino. E toda vez em que digitada a
letra F para uma leitura de um sexo, adicionado o valor da constante numrica 1 a varivel
contadora feminino.
Observe a condio colocada no comando ATE. Esta condio (sexo = X) que determina at
quando a repetio ocorrer.
4.3 Acumulador
O conceito de acumulador muito parecido com o conceito de contador, sendo que o acumulador,
a partir de um valor inicial, pode aumentar ou diminuir um valor varivel a cada repetio, cuja
sintaxe a seguinte:
71
Competncia 04
Vamos desenvolver um algoritmo para receber o preo de vrios produtos. Para finalizar o
algoritmo dever ser digitado o preo 0 (zero). No final ser exibido o valor total dos produtos.
algoritmo "Acumulador"
var
preco, total: real
inicio
// Iniciando o valor do acumulador com zero
total := 0
repita
escreva ("Digite o preo: ")
leia (preco)
total := total + preco
ate (preco=0)
escreval ("Valor total: ", total)
fimalgoritmo
Neste algoritmo, o valor do preo digitado a cada repetio adicionado ao acumulador total, at
que seja digitado um preo 0.
Como o acumulo realizado a partir de um valor inicial, inicializamos a varivel acumuladora total
com o valor zero no incio da seo de comandos.
Para situao onde a repetio de um bloco de comando, ainda que seja a primeira repetio,
depende de uma condio inicial, voc deve utilizar a estrutura ENQUANTO, cuja condio fica no
incio da estrutura e tem a seguinte sintaxe:
Voc notou a diferena entre a estrutura REPITA e a estrutura ENQUANTO? A expresso condicional
nesta estrutura colocada no incio do bloco que se deseja repetir.
72
Competncia 04
Instruo_1
Instruo_2
Instruo_3
ENQUANTO condio FACA
Instruo_4
Instruo_5
FIMENQUANTO
Instruo_6
Instruo_7
Vamos elaborar um algoritmo para solicitar a quantidade de filhos de um casal. Para cada filho
dever ser solicitada a idade. No final do algoritmo dever ser mostrada a mdia de idades dos
filhos do casal.
algoritmo "Repetio"
var
quant_filhos, idade: inteiro
contador, acumulador: inteiro
media: real
inicio
escreva(Digite a quantidade de filhos: )
leia (quant_filhos)
73
Competncia 04
Onde:
74
Competncia 04
Vamos desenvolver um algoritmo para informar a temperatura mdia de cada dia da semana. No
final do algoritmo dever ser mostrada a temperatura mdia da semana.
algoritmo "Repetio"
var
dia: inteiro
temp_dia, temp_semana, media: real
inicio
// inicializado o acumulador com zero
temp_semana :=0
para dia de 1 ate 7 faca
escreva (Temperatura do ,dia, dia: )
leia (temp_dia)
temp_semana := temp_semana + temp_dia
fimpara
media:= temp_semana / 7
escreva (Temp. mdia da semana: , media)
fimalgoritmo
ATIVIDADE
As atividades a seguir so para que voc possa praticar e aprofundar sua aprendizagem da
competncia 4.
1. Escreva um algoritmo para ler as duas notas de 10 alunos, calcular a mdia aritmtica de
cada aluno e mostrar a quantidade de alunos aprovados e a quantidade de alunos
reprovados.
Considere que a mdia para aprovao 6.
2. Escreva um algoritmo para ler o estado civil de 10 participantes de um curso. O algoritmo
deve criticar para que seja aceito apenas as letras C, c ,S e s como entrada para o
estado civil. No final o algoritmo deve mostrar se houve mais participantes solteiros, mais
participantes casados ou se a quantidade de participantes solteiros e casados so iguais.
3.Escreva um algoritmo para ler o nome, o estado civil e a quantidade de dependentes de
quatro funcionrios. Se houver dependentes, para cada dependente dever ser lida a idade e
o tipo de dependente que pode ser:
C para cnjuge ou
X para outro tipo de dependente
O algoritmo dever mostrar o valor total do benefcio que cada funcionrio deve receber,
considerando-se que:
a) Para o funcionrio pago um valor de R$ 40,00.
b) Para o cnjuge de funcionrio casado pago um valor de R$ 20,00.
c) Para outro tipo de dependente com idade de at 17 anos pago o valor de R$ 15,00.
75
Concluso
Prezado (a) aluno (a), finalmente conclumos as quatro competncias previstas para esta disciplina,
onde tivemos a oportunidade de aprender como programar um computador.
Consolidados os princpios da lgica de programao algortmica, partimos para uma etapa onde
tivemos conhecimento sobre vrios operadores e funes que muito nos ajudam a desenvolver
algoritmos para realizao de operaes matemtica.
Etapa a etapa, formos aprimorando nosso conhecimento e tivemos contato com as estruturas de
deciso, lembram-se? Estrutura de deciso simples, composta e encadeada? Agora sim, nossos
algoritmos podem fazer comparaes e decidir por qual caminho seguir.
Finalizamos esta disciplina estudando as estruturas de repetio, onde foi possvel desenvolver
algoritmos mais elaborados utilizando contadores e acumuladores.
Espero que voc tenha aprendido bem todas as etapas, pois so fundamentais para as disciplinas
Linguagem de Programao para Web, Orientao a Objetos e Projeto de Desenvolvimento de
Software. importante que voc busque aprofundar e complementar seus conhecimentos, para
que possa se tornar um profissional bem qualificado e consequentemente bem sucedido.
76
Referncias
MANZANO, Jos Augusto; OLIVEIRA, Jayr Figueiredo de. Estudo Dirigido de Algoritmos. 1 ed.:
ERICA, 1997
77
Minicurrculo do Professor
78