Вы находитесь на странице: 1из 74

Lgica de Programao

Aldo de Moura Lima

Curso Tcnico em Informtica


Educao a Distncia
2016

EXPEDIENTE
Professor Autor
Aldo de Moura Lima
Design Instrucional
Deyvid Souza Nascimento
Maria de Ftima Duarte Angeiras
Renata Marques de Otero
Terezinha Mnica Sincio Beltro
Reviso de Lngua Portuguesa
Letcia Garcia
Diagramao
Izabela Cavalcanti
Coordenao
Joo Ferreira
Coordenao Executiva
George Bento Catunda
Coordenao Geral
Paulo Fernando de Vasconcelos Dutra

Contedo produzido para os Cursos Tcnicos da Secretaria Executiva de Educao Profissional de


Pernambuco, em convnio com o Ministrio da Educao (Rede e-Tec Brasil).
Abril, 2016

L732l
Lima, Aldo de Moura.
Lgica de Programao: Curso Tcnico em Informtica:
Educao a distncia / Aldo de Moura Lima. Recife:
Secretaria Executiva de Educao Profissional de
Pernambuco, 2016.
71 p.: il.
Inclui referncias bibliogrficas.
1. Educao a distncia. 2. Lgica de Programao. 3.
Informtica. I. Lima, Aldo de Moura. II. Ttulo. III. Rede e-Tec
Brasil.

CDD 005.1

Sumrio
Introduo ........................................................................................................................................ 6
1.Competncia 01 | Conhecer os Princpios de Lgica de Programao Algortmica .......................... 7
1.1 Dado e Informao ............................................................................................................................... 7
1.1.1 Dado .................................................................................................................................................. 7
1.1.2 Informao ........................................................................................................................................ 7
1.2 Sistema Computacional ........................................................................................................................ 9
1.2.1 Elementos de um Sistema Computacional ......................................................................................... 9
1.2.1.1 Hardware.......................................................................................................................................10
1.2.1.2 Software ........................................................................................................................................10
1.3 Desenvolvimento de Software .............................................................................................................10
1.4 Codificao ..........................................................................................................................................12
1.4.1 Processamento de Dados ..................................................................................................................12
1.4.2 Processamento Eletrnico de Dados .................................................................................................14
1.4.3 Programa..........................................................................................................................................15
1.4.4 Programao ....................................................................................................................................15
1.4.5 Programador ....................................................................................................................................15
1.5 Lgica de Programao ........................................................................................................................15
1.5.1 Fluxograma.......................................................................................................................................16
1.5.2 Algoritmo .........................................................................................................................................17
1.6 Lgica de Programao Algortmica .....................................................................................................19
1.7 Representao e Armazenamento dos Dados ......................................................................................19
1.7.1 Varivel ............................................................................................................................................19
1.7.1.1 Tipo de Varivel .............................................................................................................................20
1.7.1.2 Declarao de Varivel...................................................................................................................21
1.7.2 Constante .........................................................................................................................................24
1.8 Estrutura de um Algoritmo ..................................................................................................................25

1.9 Entrada de Dados ................................................................................................................................28


1.10 Sada de Informaes.........................................................................................................................28
1.11 Atribuio de Dados ..........................................................................................................................29
1.12 Ferramenta para Edio e Teste de Algoritmo....................................................................................30
1.12.1 Tela Principal ..................................................................................................................................30
1.12.2 Digitando o Algoritmo .....................................................................................................................33

2. Competncia 02 | Desenvolver um Algoritmo para a Realizao de Operaes Matemticas ..... 38


2.1 Operadores Aritmticos Bsicos ..........................................................................................................38
2.2 Prioridade dos Operadores ..................................................................................................................39
2.3 Outros Operadores Aritmticos ...........................................................................................................40
2.4 Funes Aritmticas ............................................................................................................................42
2.5 Tabela de Prioridades ..........................................................................................................................43

3.Competncia 03 | Desenvolver um Algoritmo para Resoluo de um Problema Utilizando


Estrutura de Deciso ....................................................................................................................... 45
3.1 Operao Condicional ..........................................................................................................................45
3.2 Operadores Lgicos .............................................................................................................................48
3.3 Prioridade dos Operadores Lgicos ......................................................................................................50
3.4 Estrutura de Deciso ............................................................................................................................55
3.4.1 Estrutura de Deciso Simples ............................................................................................................55
3.4.2 Estrutura de Deciso Composta ........................................................................................................57
3.4.3 Estrutura de Deciso Encadeada .......................................................................................................59

4.Competncia 04 | Desenvolver um Algoritmo para Resoluo de um Problema Utilizando


Estrutura de Repetio .................................................................................................................... 62
4.1 Estrutura de Repetio Indefinida, com uma Repetio Obrigatria.....................................................62
4.2 Contador .............................................................................................................................................63
4.3 Acumulador .........................................................................................................................................65
4.4 Estrutura de Repetio Indefinida, com Repetio Opcional ................................................................65

4.5 Estrutura com Repetio Definida........................................................................................................67

Concluso ........................................................................................................................................ 69
Referncias ..................................................................................................................................... 70
Minicurrculo do Professor .............................................................................................................. 71

Introduo
Gostaria de dar-lhe 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 de
estudos que estaremos propondo neste caderno e em outros que voc, sem dvida, ir pesquisar.
Vamos nessa?
Aldo Moura

Competncia 01

1.Competncia 01 | Conhecer os Princpios de Lgica de Programao


Algortmica
Iniciaremos nossos estudos conhecendo os princpios da Lgica de Programao, mas
primeiramente precisamos compreender alguns conceitos da rea da Informtica.

1.1 Dado e Informao


So dois conceitos elementares da Informtica.

1.1.1 Dado
Um dado representa um fato bsico que pode sofrer manipulao.
Pode ser de diversos tipos, como:

Numrico: composto apenas de nmeros que normalmente utilizamos em operaes


aritmticas.
Exemplos: 2, 20.3, 25

Alfanumrico ou texto: composto de letras, smbolos e/ou nmeros que normalmente no


sero usados em operaes aritmticas.
Exemplos: Antonio, 2, maria@gmail.com, 2, F#, casa

Imagens: composto de figuras ou fotos.

udio: composto de sons ou rudos.

Vdeo: composto de imagens ou figuras em movimento.

1.1.2 Informao
Temos uma informao quando, atravs de processamento ou interpretao, de acordo com um
contexto, um significado atribudo a um ou vrios dados.
Este significado d um valor adicional ao dado, alm do valor do fato representado.
Exemplos 1: nestes exemplos, para cada dado foi atribudo um significado, respectivamente: dias,
anos, smbolo monetrio do real e telefone.

53 dias

Competncia 01

53 anos
R$ 53,00
Telefone 99999-0101

Exemplos 2: nos exemplos abaixo temos trs listas que possivelmente sofreram processamento,
resultando em:
1 lista: relao dos nomes de pessoas em ordem alfabtica.
2 lista: relao dos nomes de pessoas do sexo feminino em ordem alfabtica.
3 lista: relao dos nomes de pessoas do sexo masculino em ordem alfabtica.

Afonso
Alusio

Beatriz

Afonso

Betnia

Alusio

Marta

Antonio

Mrcia

Cssio

Rute

Celso

Vnia

Ccero

Vernica

Paulo

Zlia

Pedro

Antonio
Beatriz
Betnia
Cssio
Celso
Ccero
Marta
Mrcia
Paulo
Pedro

Renato

Renato
Rute
Vnia
Vernica
Zlia

Competncia 01

1.2 Sistema Computacional


Um sistema baseado em computador um composto de infraestrutura tecnolgica cujos elementos
so organizados para coletar, manipular e processar dados em informaes.

1.2.1 Elementos de um Sistema Computacional


Um sistema computacional composto pelos elementos representados na figura 1.

Figura 1- Representao da interao dos Elementos de um sistema computacional


Fonte: o autor (2013)
Descrio: A imagem mostra um circulo central preenchido na cor roxa com a palavra sistema no centro do
circulo. Ao redor deste circulo esto dispostos seis elipses. Cada elipse representa um dos elementos de um
sistema computacional. A primeira elipse, disposto acima do circulo central contm o palavra procedimento
e est preenchido na cor verde. Considerando-se o sentido anti-horrio, a segunda elipse contm a palavra
hardware e est preenchido na cor amarela; a terceira elipse contm a palavra software e est preenchido
na cor laranja; a quarta elipse contm a palavra pessoas e est preenchida na cor azul; a quinta elipse contm a palavra banco de dados e est preenchida na cor rosa e a ltima elipse contm a palavra telecomunicaes e est preenchida na cor marrom. Existem linhas ligando o crculo a algumas elipses, bem como linhas ligando as elipses, para representar que os elementos interagem entre si para formar o sistema. Esta
formao do sistema est representada por uma elipse maior que envolver todas as seis elipses. Essa elipse
maior est preenchida na cor cinza.

Competncia 01

Os outros elementos de um sistema computacional:


Pessoas: todos que gerenciam, usam, programam e mantm o sistema computacional.
Banco de dados: coleo de dados e informaes acessadas pelo software que integra o
sistema.

Telecomunicaes: transmisso eletrnica de sinais para comunicaes que permitem


s organizaes executarem seus processos e tarefas por meio de redes de computadores.

Procedimentos: estratgias, polticas, mtodos e regras que definem o uso dos


elementos do sistema.

Os elementos que mais reconhecemos em um sistema computacional so: Hardware e Software.

1.2.1.1 Hardware
Os hardwares so os equipamentos eletrnicos como: computador, impressora e pen drive.

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.
Este mdulo trata essencialmente sobre o desenvolvimento de software.

1.3 Desenvolvimento de Software


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

Figura 2- Representao do processo de Software - Modelo Cascata


Fonte: o autor (2013)
Descrio: A imagem mostra sete retngulos preenchidos na cor marrom, onde cada retngulo representa uma
etapa do processo. Os retngulos esto dispostos um aps o outro em degraus decrescentes. No centro da lateral
direita de cada retngulo sai uma linha horizontal que faz uma curva de 90 graus e se liga ao centro da lateral superior do retngulo seguinte. No final de cada linha tem uma seta indicando que as etapas ocorrem uma aps a
outra. Em cada retngulo encontra-se o nome da etapa, sendo: primeiro retngulo a etapa de requisitos; o segundo retngulo a etapa de anlise; o terceiro retngulo a etapa de projeto; o quarto retngulo a etapa de codificao; o quinto retngulo a etapa de teste; o sexto retngulo a etapa de implantao e o ltimo retngulo a etapa
de manuteno.

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.

Etapas do modelo cascata:

Requisito: identificao e especificao do que o software deve fazer.

Anlise: definio dos dados necessrios e como eles se relacionam.

Projeto: determinaes de como as funcionalidades do sistema sero implantadas.

Codificao: construo do programa, traduzindo-se o projeto das funcionalidades em um


conjunto de instrues.

11

Competncia 01

Teste: Verificao para saber se as funcionalidades implantadas atendem aos requisitos


especificados.

Implantao: o software instalado e colocado em uso.

Manuteno: o software sofre alteraes para correo, adaptao ou acrscimo de


funcionalidades.
Normalmente a etapa de Codificao executada por profissionais de nvel tcnico um
programador.
Na execuo desta etapa, dois fatores so relevantes:
1.
A codificao realizada atravs da escrita de um programa, que um conjunto de
instrues codificado em uma linguagem especfica, chamado de linguagem de programao, como
por exemplo: Java, C# (l-se C sharp) e PHP.
2.
Como o programa instrui um hardware, que possui limitaes em relao ao ser humano, o
conjunto de instrues precisa atender ao modo prprio do hardware lidar com cada instruo. Este
modo prprio deve obedecer a uma lgica especfica denominado de lgica de programao.
Entender esta lgica ser o objetivo desta disciplina.

1.4 Codificao
Na etapa da codificao sero escritos os programas que permitiro ao computador realizar o
processamento eletrnico de dados.

1.4.1 Processamento de Dados


Consiste em um conjunto de atividades ordenadas com o objetivo de manipular dados iniciais em
informaes desejveis.
As etapas de um processamento de dados so:

Entrada

Processamento

Sada

Figura 3 Representao das etapas do Processamento de dados


Fonte: o autor (2013)
Descrio: A imagem mostra trs retngulos preenchidos na cor cinza, onde cada retngulo representa
uma etapa do processamento de dados. O primeiro retngulo contm o texto entrada, o segundo retngulo contm o texto processamento e o terceiro retngulo o texto sada. Existe uma linha do primeiro
para o segundo retngulo com uma seta apontando para o segundo retngulo e uma linha do segundo
para o terceiro retngulo com uma seta apontando para o terceiro retngulo, indicando a ordem das
etapas.

12

Competncia 01

A entrada responsvel pela obteno dos dados iniciais.


A manipulao dos dados iniciais chamada de processamento.
O resultado do processamento a sada.
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.
A etapa da sada onde as informaes desejadas, obtidas com o processamento, so apresentadas
aos interessados.
Exemplos de processamento de dados:

Exemplo 1: ordenar uma lista de nomes

Entrada: nomes desordenados


Processamento: ordenao
Sada: lista ordenada de nomes

Exemplo 2: calcular uma mdia de notas

Entrada: notas
Processamento: clculo
Sada: mdia
Como os dados de sada so mais qualificados, esses dados so denominados de informaes.
Estas trs fases tambm esto presentes no mecanismo de um sistema, considerado como um
conjunto de elementos que interagem para atingir objetivos.
Exemplos de processamento de dados:

Sistema digestivo
Sistema sanguneo
Sistema de transporte
Sistema hidrulico
Sistema eltrico
Sistema de sade

13

Competncia 01

Cada um destes sistemas composto por diversos elementos que colaboram para que o objetivo
desejado seja atingido.

1.4.2 Processamento Eletrnico de Dados


Quando um processamento de dados realizado por equipamentos eletrnicos, por exemplo,
microcomputadores, tablets e smartphones, temos o que denominamos de processamento
eletrnico de dados.
Dependendo da quantidade de dados que desejamos processar e do processamento que queremos
realizar, a quantidade de instrues de cada atividade pode variar de uma a centenas a milhares de
instrues.

Exemplo 1: para encontramos o maior nmero entre dois nmeros iniciais, precisamos
basicamente de cinco instrues:
1.
2.
3.
4.
5.

Obter o 1 nmero;
Obter o 2 nmero;
Comparar o 1 nmero com o 2 nmero;
Memorizar o maior nmero comparado;
Exibir o nmero memorizado.

Exemplo 2: Para encontramos o maior nmero entre trs nmeros iniciais, precisamos
basicamente de oito instrues:
1.
2.
3.
4.
5.
6.
7.
8.

Obter o 1 nmero;
Obter o 2 nmero;
Obter o 3 nmero;
Comparar o 1 nmero com o 2 nmero;
Memorizar o maior nmero comparado;
Comparar o 3 nmero com o maior nmero memorizado;
Memorizar o maior nmero na nova comparao;
Exibir o nmero memorizado.

Aumentou apenas um nmero na comparao, mas a quantidade de instrues quase dobrou.


medida que a quantidade de nmeros a serem comparados aumenta, ou se consideramos que
pode haver nmeros iguais, a quantidade de instrues aumenta consideravelmente.
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.
No processamento eletrnico de dados, um roteiro com as instrues para processamento
denominado de programa.

14

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
a atividade de elaborar um programa para o computador.

1.4.5 Programador
O profissional responsvel pela elaborao do programa.

1.5 Lgica de Programao


Como uma linguagem de programao tem regras prprias, as instrues de um programa devero
ser escritas em uma sequencia lgica, para que a tarefa seja de fato executada. Esta sequencia
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.
No caso da programao, as duas formas bsicas para representar a lgica de programao so
fluxograma e algoritmo.

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.

15

Competncia 01

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.

Figura 4-Exemplos de smbolos usados em fluxograma


Fonte: o autor (2013)
Descrio: A imagem mostra quatro smbolos utilizados para elaborao de fluxogramas. O primeiro
smbolo se parece com um retngulo, sendo que a lateral esquerda e a lateral direta so arredondadas como um meio circulo, com as curvas para os lados de fora do retngulo. Neste smbolo encontra-se a palavra terminador e ao lado direito um texto explicando o objetivo deste smbolo que iniciar e finalizar um fluxograma. O segundo smbolo um trapzio com a palavra entrada manual e o
texto explicativo ao lado direito informa que representa uma entrada de dado via digitao. O terceiro smbolo um retngulo que em seu interior tem o texto processo e o texto explicativo em seu
lado direito informa que representa um processamento a ser realizado. O quarto smbolo se parece
com um retngulo, sendo que a lateral esquerda pontuda como um sinal de maior que e a lateral
direita arredondado como um meio circulo. Em seu interior tem o texto exibio e de seu lado direito um texto explicado do objetivo do smbolo que indicar a exibio de resultado.

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).

16

Competncia 01

Figura 5 - Fluxograma para somar dois nmeros


Fonte: o autor (2013)
Descrio: A imagem mostra um fluxograma que recebe dois nmeros e exibe a soma deles. Alm de dois terminadores, um iniciado e outro finalizando o fluxograma, encontramos dois smbolos de entrada manual representando a entrada dos dois nmeros, representados por numero1 e numero2. Em seguida tem o smbolo de processo que executa a
soma dos valores representados por numero1 e numero2, armazenando o resultado em
soma. Finalizando foi colocado um smbolo de exibio para mostrar o valor de soma.

E, ento, considerando o significado dos smbolos da figura 4, voc consegue descrever o que o
fluxograma da figura 5 faz?
Escreva em uma folha de papel e depois compare com a descrio abaixo.

O fluxograma tem incio com o terminador nomeado de incio;

Um nmero dar entrada no sistema, e, conforme o smbolo, a entrada ser manual (pode
ser um usurio digitando via teclado);

Outro nmero dar entrada no sistema, tambm de forma manual;

Haver um processamento onde os dois nmeros que deram entrada no sistema sero
somados e o resultado representando pela palavra Soma;

O resultado apresentado;

O fluxograma encerra com o terminador nomeado de fim.


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

17

Competncia 01

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.

Figura 6-Exemplos de palavras reservadas usadas em algoritmo


Fonte: O autor (2013)
Descrio: A imagem mostra cinco palavras reservadas utilizadas para elaborao de algoritmo
e ao lado de cada palavra um texto explicando para que cada palavra usada. A primeira a
palavra inicio, escrita sem acentuao, usada para iniciar um algoritmo. A segunda a palavra
fim, usada para finalizar um algoritmo. A terceira a palavra leia, usada para entrada de dados.
A quarta a palavra escreva, usada para exibir um resultado. A ltima palavra reservada formada pelo caractere dois ponto e o caractere igual. Eles so escritos juntos e serve para atribuir
um valor no processamento.

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.
A partir dos exemplos de palavras reservadas da figura 6 j podemos representar a lgica de
programao algortmica para somar dois nmeros (veja Figura 7).

Figura 7 - Exemplo de um algoritmo


Fonte: o autor (2013)
Descrio: A imagem mostra um algoritmo que recebe dois nmeros e exibe a soma deles. Aps iniciar o algoritmo com a palavra reservada inicio, encontramos duas entradas
manuais para receber dois nmeros, representados por numero1 e numero2. Segue-se
um processamento onde numero1 somado ao numero2 e o resultado armazenando em
soma, que em seguida exibido e encerra-se o algoritmo com a palavra reservada fim.

18

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.

1.6 Lgica de Programao Algortmica


Conforme j explicado, a lgica de programao algortmica a maneira de representar a lgica
(ideia) de programao que temos para resolver um determinado problema em forma de algoritmo.
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
correta, o programador precisa codificar o programa em uma linguagem de programao.

1.7 Representao e Armazenamento dos Dados


Na programao podemos representar e armazenar os dados de duas maneiras: varivel ou
constante, conforme veremos a seguir.

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?

19

Competncia 01

Figura 8 - Algoritmo indicando as variveis utilizadas no processamento


Fonte: o autor (2013)
Descrio: A imagem mostra um algoritmo que recebe dois nmeros e exibe a soma deles. Aps iniciar o algoritmo com a palavra reservada inicio, encontramos duas entradas
manuais para receber dois nmeros, representados por numero1 e numero2. Segue-se
um processamento onde numero1 somado ao numero2 e o resultado armazenando em
soma, que em seguida exibido e encerra-se o algoritmo com a palavra reservada fim. No
lado direito do algoritmo tem um texto com a palavra varivel e trs setas apontam do
texto para os elementos numero1, numero2 e soma, indicando que esses elementos representam variveis no algoritmo.

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
de que os dados necessitam.

1.7.1.1 Tipo de Varivel


Os tipos de variveis que iremos utilizar so:

Caractere ou literal: armazena dado textual, que normalmente no usado em operaes


matemticas. Os dados literais so descritos entre aspas.
Exemplos: Carlos, jose@gmail.com, Sala B2

Inteiro: armazena dado numrico inteiro. Exemplos: 2, 150

Real ou numrico: armazena dado numrico com decimais. Exemplos: 2.5, 124.55

Lgico: armazena apenas os valores lgicos. Os dados lgicos so descritos sem aspas e
podem ser VERDADEIRO ou FALSO.

20

Competncia 01

A partir de agora iremos apresentar formalmente os comandos da linguagem de programao


algortmica. Sempre que um novo comando for apresentado, informaremos a sintaxe (forma
correta) de sua utilizao.
O formato da sintaxe : nome_comando parmetro
Onde: nome_comando: o nome do comando em estudo.
parmetro: complemento que pode ser acrescido ao comando para que a instruo possa ser
executada pelo computador.
Obs.: Se o parmetro estiver entre parnteses angulares <>, o parmetro obrigatrio. Se o
parmetro estiver entre colchetes [], o parmetro opcional.

1.7.1.2 Declarao de Varivel


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.
Sintaxe para declarao de variveis:
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.
tipo = indica o tipo de dados que a varivel pode 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

21

Competncia 01

numero2: real
nome: literal
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:

Figura 9- Algoritmo com declarao de variveis


Fonte: O autor (2013)
Descrio: A imagem mostra um algoritmo que comea declarando as variveis que sero utilizadas no processamento. A declarao ocorre atravs da palavra reservada var.
Em seguida, linha aps linha as variveis so descritas deslocadas da margem esquerda
de trs posies. Aps a declarao das variveis inicia-se o algoritmo propriamente
dito com a palavra reservada inicio, depois temos duas entradas manuais para receber
dois nmeros, representados por numero1 e numero2. Segue-se um processamento
onde numero1 somado ao numero2 e o resultado armazenando em soma, que em
seguida exibido e encerra-se o algoritmo com a palavra reservada fim.

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.

22

Competncia 01

Figura 10 - Algoritmo com declarao de variveis sem endentao


Fonte: o autor (2013)
Descrio: A imagem mostra um algoritmo que comea declarando as variveis que sero utilizadas no processamento. A declarao ocorre atravs da palavra reservada var.
Em seguida, linha aps linha as variveis so descritas sem o deslocamento da margem
esquerda, j que o deslocamento opcional e serve para organizar o algoritmo. Aps a
declarao das variveis inicia-se o algoritmo propriamente dito com a palavra reservada inicio, depois temos duas entradas manuais para receber dois nmeros, representados por numero1 e numero2. Segue-se um processamento onde numero1 somado ao numero2 e o resultado armazenando em soma, que em seguida exibido e
encerra-se o algoritmo com a palavra reservada fim.

No so todas as linguagens de programao que exigem o comando de declarao de variveis e


em algumas delas a declarao pode ser feita em qualquer parte do cdigo, como nas linguagens
java e phyton.
O recurso de deslocar os parmetros subordinados a um comando ou tambm o de deslocar os
comandos subordinados a outros comandos, caso dos comandos que esto entre os comandos
inicio e fim, (como na figura 11 a seguir) conhecido como endentao. Normalmente, trs
posies so deslocadas em relao margem esquerda do comando superior. um recurso
profissionalmente exigido para melhorar a compreenso do cdigo, principalmente em futuras
modificaes do algoritmo. Veja como o cdigo da figura 11 mais legvel que o cdigo da figura
10.

23

Competncia 01

Figura 11- Algoritmo demonstrando o uso da endentao


Fonte: O autor (2013)
Descrio: A imagem mostra um algoritmo que comea declarando as variveis que sero utilizadas no processamento. A declarao ocorre atravs da palavra reservada var.
Em seguida, linha aps linha as variveis so descritas deslocadas da margem esquerda
de trs posies. Aps a declarao das variveis inicia-se o algoritmo propriamente
dito com a palavra reservada inicio, depois temos duas entradas manuais para receber
dois nmeros, representados por numero1 e numero2. Segue-se um processamento
onde numero1 somado ao numero2 e o resultado armazenando em soma, que em
seguida exibido e encerra-se o algoritmo com a palavra reservada fim. Neste algoritmo as duas entradas manuais, o processamento e a exibio do resultado tambm
esto deslocados 3 posies em relao a margem esquerda.

A endentao ser exigida em nossos exerccios.

1.7.2 Constante
Quando em um algoritmo temos a necessidade de representar um dado que no sofrer alterao,
ao invs de variveis temos uma constante. Por exemplo, se o problema obter a mdia aritmtica
entre duas notas, teremos que somar as duas notas e dividir a soma por 2. Logo, o divisor sempre
ser 2. No precisa declarar uma varivel para que o valor 2 seja fornecido na execuo do
programa. J durante a programao podemos definir o valor do divisor como 2. Em nossa
linguagem algortmica as constantes no so declaradas, basta escrev-las no algoritmo. Observe no
exemplo da figura 12 o uso de uma constante. No se preocupe agora com a forma que a expresso
matemtica foi codificada, pois este ser assunto da nossa prxima competncia. Observe apenas
que na linha com a expresso que calcula a mdia aritmtica, o nmero 2 sempre ter o mesmo
valor. Logo, um dado constante.

24

Competncia 01

Figura 12 - Algoritmo para calcular a mdia aritmtica, a partir de duas notas


Fonte: o autor (2013)
Descrio: A imagem mostra um algoritmo que comea declarando as variveis que sero utilizadas no processamento, que so nota1, nota2 e media. Aps o inicio do algoritmo so colocadas a entradas das notas nota1 e nota2, seguindo-se do processamento da mdia que a soma da nota1 e da nota2 e o resultado dividido por 2. Em seguida a mdia calculada exibida. No lado esquerdo do algoritmo tem texto com a
palavra constante e uma seta apontando para o nmero 2 na expresso que calcula a
mdia.

Os tipos de constantes tambm seguem os mesmos tipos de variveis: literal ou texto; inteiro; real
ou numrico e lgico.

Algumas linguagens de programao algortmica utilizam declarao de constantes da seguinte


forma:
CONSTANTE
PI = 3.14
Onde PI o nome da constante e 3.14 o valor atribudo mesma.

1.8 Estrutura de um Algoritmo


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.
A linguagem de programao algortmica que estudamos utiliza a seguinte estrutura para um
algoritmo:
algoritmo "nome_algoritmo"
// Seo de Declaraes
var
inicio
// Seo de Comandos
fimalgoritmo
Um algoritmo inicia com o comando algoritmo e finaliza com o comando fimalgoritmo.

25

Competncia 01

A sintaxe do comando algoritmo :


algoritmo <nome_algoritmo>
Onde:
nome_algoritmo = um nome, entre aspas, que obrigatoriamente deve ser dado ao algoritmo.
Exemplos:
algoritmo
algoritmo
algoritmo
algoritmo

soma
media
calcular mdia de 2 notas
## 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 sintaxe do comando fimalgoritmo simplesmente s o nome do comando, sem nenhum
parmetro adicional.
Um algoritmo tem duas sees:
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).

26

Competncia 01

Figura 13 - Algoritmo com comentrios


Fonte: o autor (2013)
Descrio: A imagem descreve um algoritmo para receber dois nmeros e mostrar a
soma deles. As duas sees de um algoritmo so indicadas por linha iniciadas por duas
barras juntas, indicando que as linhas so apenas comentrios, utilizados apenas para
melhorar o entendimento do algoritmo. Logo aps a palavra algoritmo, que define o
incio do algoritmo foi colocado uma linha com barra dupla e o texto seo de declaraes. Na linha anterior a palavra reservada inicio, que inicia a sequencia lgica dos comandos foi colocada uma linha iniciada com barra dupla e o texto seo de comandos.

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.

Figura 14 - Algoritmo com comentrios


Fonte: o autor (2013)
Descrio: A imagem descreve um algoritmo para receber dois nmeros e mostrar a
soma deles. Neste algoritmo foram colocadas linhas de comentrios indicando onde
inicia cada etapa do processamento. Antes das instrues de entrada dos nmeros foi
colocada uma linha de comentrio com o texto entrada de dados. Antes da instruo
de calcula a soma dos nmeros foi colocada uma linha de comentrio com o texto
processamento. Antes da instruo de exibe o resultado da soma foi colocada uma linha de comentrio com o texto sada.

27

Competncia 01

Os comentrios so utilizados em algoritmos e tambm em programas. O objetivo servir de


orientao para o programador, no tendo nenhuma influncia na execuo do programa. Em
pequenos programas, comentrios podem ser desnecessrios, mas em grandes programas, que
podem conter milhares de linhas, eles so muito importantes e at indispensveis.
Um comentrio pode ser utilizado para qualquer propsito como: justificar porque determinada
instruo foi utilizada, para informar sobre uma modificao (quem solicitou, a data da
solicitao ou se est baseada em alguma legislao).

1.9 Entrada de Dados


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.
A sintaxe do comando leia : leia (<nome_varivel>)
Onde nome_varivel o nome da varivel que armazenar o dado a ser recebido.
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.

1.10 Sada de Informaes


Aps o processamento, normalmente, informaes so exibidas. Dizemos que esta exibio a
sada do processamento. A sada de informao ocorre atravs do comando escreva.
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.
A sintaxe do comando escreva :
escreva ([texto , ] [nome_varivel])

28

Competncia 01

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.
nome_varivel = varivel que contm o dado que se deseja exibir.
Exemplos:
escreva (numero)
escreva (Nome do aluno:, nome)

1.11 Atribuio de Dados


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.
A atribuio ocorre atravs do comando := (dois ponto e igual sem espao entre eles) ou <- (maior
que e hfen sem espao entre os smbolos). Quando encontramos este comando lemos Recebe.
Os comandos := / <- tm a seguinte sintaxe:
<nome_varivel> := / <- <expresso>
Onde:
nome_varivel = varivel que armazenar o dado resultante da expresso.
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.

29

Competncia 01

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.

1.12 Ferramenta para Edio e Teste de Algoritmo


Como o algoritmo um pseudocdigo, no h como execut-lo para testar se ele est correto.
Tradicionalmente o teste simulado seguindo as instrues e verificando se h erros. Esse tipo de
teste chamado teste de mesa.
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 testlos. Voc dever baix-lo no endereo (http://ultradownloads.com.br/download/Visualg/) e fazer
sua instalao.
Iniciaremos mostrando a tela do Visualg e algumas de suas funcionalidades. Posteriormente, nas
prximas competncias, mostraremos outras funcionalidades.

1.12.1 Tela Principal


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).

30

Competncia 01

Figura 15 - Tela principal do aplicativo Visualg utilizado para praticar os exerccios


Fonte: aplicativo Visualg verso 2.0 (2013)
Descrio: A imagem mostra a tela principal do Visualg verso 2.0, aplicativo que ser utilizado para praticar os algoritmos propostos. A tela tem 5 divises. A primeira diviso fica no topo da tela. A segunda
diviso fica abaixo da primeira diviso. A terceira diviso fica abaixo a segunda diviso, A quarta diviso
fica abaixo da terceira diviso e a esquerda da tela e a quinta diviso fica abaixo da terceira diviso e a
direita da tela. A finalidade de cada diviso ser explicado nas imagens a seguir.

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.

Figura 16 - Barra de menu do Visualg


Fonte: aplicativo Visualg verso 2.0 (2013)
Descrio: A imagem apresenta a primeira diviso do Visualg, denominada de barra de menu, composta de um
em menu com os grupos de funcionalidades do aplicativo. Cada opo do menu reuni um conjunto de
funcionalidade, agrupados por afinidade.

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

31

Competncia 01

mais rpido. Dependendo da forma como a sua tela esteja configurada, esta barra poder ser
exibida em uma ou em mais linhas.

Figura 17- Barra de menu do aplicativo Visualg


Fonte: aplicativo Visualg verso 2.0 (2013)
Descrio: A imagem apresenta a segunda diviso do Visualg, denominada de barra de ferramentas, composta
de botes com as funcionalidades mais utilizadas no aplicativo.

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.

Figura 18 - Janela de edio do Visualg


Fonte: aplicativo Visualg verso 2.0 (2013)
Descrio: A imagem apresenta a terceira diviso do Visualg, denominada de janela de
edio. uma janela onde um algoritmo pode ser criado e modificado.

Na parte inferior esquerda temos a janela de variveis para exibir as variveis com seus
respectivos tipos e valores (figura 19).

Figura 19 - Janela de variveis do Visualg


Fonte: aplicativo Visualg verso 2.0 (2013)
Descrio: A imagem apresenta a quarta diviso do Visualg, denominada de janela de
variveis. Nesta janela so apresentadas as variveis declaradas no algoritmo, com seus
respectivos tipos e, medida que o algoritmo executado, tambm so exibidos os valores
armazenados em cada varivel.

32

Competncia 01

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
acessar os comandos predefinidos do visualg (figura 20).

Figura 20 - Barra de status do Visualg


Fonte: aplicativo Visualg verso 2.0 (2013)
Descrio: A imagem apresenta ltima linha do Visualg, denominada de barra de status do Visualg. Ela apresenta informaes sobre o nmero da linha e da coluna em que o cursor est posicionado e o estado do algoritmo.

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.

Assista ao vdeo postado no link http://youtu.be/zQtTpt76IqI para que voc possa compreender
e praticar o que est sendo ensinado no item a seguir.

1.12.2 Digitando o Algoritmo


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 endentao (deslocar trs posies da
margem esquerda).
Agora, na seo de comandos, tambm endentado, vamos digitar os demais comandos do
algoritmo. Para abrir linhas em branco para digitao coloque o cursor no incio da linha
fimalgoritmo e digite vrias vezes a tecla ENTER.
O algoritmo digitado dever ser o seguinte:
algoritmo "Somar 2 nmeros"

33

Competncia 01

// Seo de Declaraes
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.
Na barra de ferramenta clique no cone executar, em destaque na figura 21.

Figura 21 - Barra de ferramenta do aplicativo Visualg destacando o boto Executar


Fonte: aplicativo Visualg verso 2.0 (2013)
Descrio: A imagem apresenta a barra de ferramentas do visual, onde o boto executar est sinalizado com
um retngulo vermelho. Na configurao da tela apresentada o boto est localizado no incio da na segunda
linha de botes.

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.

34

Competncia 01

Figura 22 - Tela principal do Visualg mostrando um algoritmo em execuo


Fonte: aplicativo Visualg verso 2.0 (2013)
Descrio: A imagem mostra a tela principal do Visualg onde na janela de edio foi digitado um algoritmo
para receber dois nmeros, soma-los e exibir o resultado, na janela de variveis aparecem as trs variveis
declaradas no algoritmo, que so: numero1, numero2 e soma, com seus respectivos tipos e valores. Como a
execuo do algoritmo ainda est no incio, os valores das variveis zero.

Existem dois modos de executar um algoritmo no Visualg.


O primeiro baseado no modo texto do sistema operacional DOS. Em uma tela de fundo preto
ocorre a execuo das instrues em modo texto, sem recurso grfico.
O segundo baseado no modo grfico do sistema operacional Windows. A entrada de dados
ocorre em uma janela com uma caixa de texto, onde o usurio digita o dado.
Voc pode alternar para qualquer um dos modos clicando no cone Executar o algoritmo como
DOS
, na barra de ferramenta.

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).
A janela de simulao informa que houve o incio da execuo do algoritmo.
Neste momento a execuo est parada aguardando a digitao do primeiro nmero para ser
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

35

Competncia 01

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.

Assista no vdeo postado no link http://youtu.be/dG8vhXiwsjE a execuo de um algoritmo em


cada um dos modos de execuo disponveis do Visualg.

Feche a janela de execuo do DOS para voltar ao Visualg.


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:
No se esquea de que o texto deve estar entre aspas.
Que tal tambm acrescentar um texto ao resultado final da varivel soma? Lembre-se da vrgula
para separar o texto da varivel.
algoritmo "Somar 2 nmeros"
// Seo de Declaraes
var
numero1, numero2, soma: inteiro
// seo de comandos
Inicio
escreva (Digite um nmero inteiro)
leia (numero1)
escreva (Digite outro nmero inteiro)
leia (numero2)
soma := numero1 + numero2
escreva (A soma dos nmeros :, soma)

36

Competncia 01

fimalgoritmo
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 do nmeros inteiros;
b. A soma do 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.

37

Competncia 02

2. Competncia 02 | Desenvolver um Algoritmo para a Realizao de


Operaes Matemticas
No captulo anterior, aprendemos os princpios de lgica de programao algortmica, e at j
elaboramos alguns algoritmos utilizando a operao matemtica de adio. Neste captulo,
aprenderemos a desenvolver algoritmos para realizar diversas operaes matemticas, alm da
adio.

2.1 Operadores Aritmticos Bsicos


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
Observe no prximo algoritmo como realizar as operaes matemticas bsicas, utilizando os
operadores aritmticos sobre os valores armazenados nas variveis numero1 e numero2.
algoritmo "Operaes Matemticas"
var
numero1: inteiro
numero2: inteiro
somar: inteiro
subtrair: inteiro
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)

38

Competncia 02

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.

2.2 Prioridade dos Operadores


Seguindo a regra da matemtica, as expresses matemticas so resolvidas dando prioridade aos
operadores de multiplicao e diviso. Relembre desta regra a partir dos exemplos que seguem:
Exemplo 1: 10+20/2
Resulta em 20, pois primeiro resolvida a diviso e depois a adio.
Exemplo 2: 4*2+10/2
Resulta em 13, pois primeiro so resolvidas a multiplicao e a diviso e depois a adio.
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.

39

Competncia 02

Para fixar esta regra de forma prtica, vamos analisar um algoritmo para calcular a mdia aritmtica
de duas notas.
1
2
3
4
5
6
7
8
9
10
11
12
13

algoritmo "Calcula Media"


var
nota1: real
nota2: real
media: real
inicio
escreva ("Digite a 1 nota: ")
leia (nota1)
escreva ("Digite a 2 nota: ")
leia (nota2)
media := (nota1 + nota2) / 2
escreva ("A mdia : ", media)
fimalgoritmo

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.

Assista no vdeo postado no link http://youtu.be/FdENDhbUoWg um resumo sobre os assuntos


estudados neste item.

2.3 Outros Operadores Aritmticos


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
DIV
MOD

OPERAO
Quociente de uma diviso inteira
Resto de uma diviso inteira

Tabela 2 - Operadores para diviso entre nmeros inteiros


Fonte: o autor (2013)

40

Competncia 02

Figura 23- Demonstrao de uma diviso inteira entre nmeros inteiros, onde so identificados os elementos 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 diviso so 16, colocado no lado esquerdo a 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 indicando que ele o divisor. Abaixo do nmero 5 foi colocado o nmero 3 como resultado da diviso inteira, onde um texto aponta este resultado como o quociente. Abaixo do nmero 16 foi colocado o nmero 1 como o nmero que sobrou da diviso inteira e um texto aponta para ele indicando que ele o
resto.

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.

Diferentes dos operadores aritmticos bsicos que so smbolos, os operadores apresentados na


tabela 02 so palavras reservadas que representam operadores aritmticos. Veja no algoritmo a
seguir exemplos de operaes matemticas com esses operadores. Exemplos mais significativos
com os operadores MOD e DIV sero explorados quando a prxima competncia for abordada.
algoritmo "Operadores Aritmticos"
var
numero1, numero2, resto, quociente: inteiro
inicio
escreva ("Digite o 1 nmero: ")
leia (numero1)
escreva ("Digite o 2 nmero: ")
leia (numero2)
resto := (numero1 MOD numero2)
quociente := (numero1 DIV numero2)
escreval ("Resto da diviso: ", resto)
escreval ("Quociente da diviso: ", quociente)
fimalgoritmo

41

Competncia 02

O smbolo % tambm pode ser utilizado em substituio ao operador MOD, como no exemplo:
resto := (numero1 % numero2).

Assista no vdeo postado no link http://youtu.be/LRT7Udjn00Q o exemplo anterior sendo


executado e comentado.

2.4 Funes Aritmticas


Para que operaes matemticas mais complexas possam ser realizadas, algumas rotinas prdefinidas, denominadas funes, foram estabelecidas. Os nomes destas funes compem o
conjunto de palavras reservadas da linguagem de programao algortmica.
Em linhas gerais, a sintaxe de uma funo :
Nome_funo (<lista de argumento>): tipo
Onde:

Nome_funao = a palavra reservada que representa a funo.

Lista de argumento = um ou mais dados necessrios para que a funo possa processar o
seu objetivo.

Tipo = tipo do resultado que a funo retorna aps o processamento. Toda funo retorna
(resulta) em um valor que pode ser usado como parte de uma expresso matemtica, armazenado
ou exibido. O tipo no escrito no algoritmo, ele apenas representa o tipo do resultado esperado.
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 :
EXP (<base>,<expoente>): real
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
resultado:= EXP(numero1, numero2)
// resultado da exponenciao sendo
// armazenada em uma varivel
resultado:= 2 * EXP(numero1, numero2) + 10

42

Competncia 02

// resultado da exponenciao sendo usada


// como parte de uma expresso matemtica
escreva(Resultado: , EXP(numero1, numero2))
// resultado da exponenciao sendo exibida
// diretamente
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:
FUNO
INT
RAIZQ
QUAD

OPERAO
Converte um valor real em valor inteiro
Raiz quadrada
Quadrado

SINTAXE
INT(valor:real): inteiro
RAIZQ(valor:real): real
QUAD(valor:real): real

Tabela 3 - Algumas funes aritmticas


Fonte: o autor (2013)

Assista ao vdeo postado no link http://youtu.be/nBnalT6oG-8 onde temos um exemplo de um


algoritmo sendo desenvolvido, nele utilizada a funo INT. No deixe de assisti-lo.

2.5 Tabela de Prioridades


Alm das prioridades apresentadas anteriormente entre os operadores aritmticos bsicos, os
demais operadores e as funes aritmticas tambm tm prioridades, conforme tabela 4:
PRIORIDADE
1
2
3
4

OPERADOR / FUNO
()
Funes
* / DIV MOD
+ -

Tabela 4-Tabela geral de prioridades


Fonte: o autor (2013)

Os parnteses so resolvidos primeiros, depois as funes, seguidas dos operadores de


multiplicao, diviso, quociente e resto, e por fim os operadores de adio e subtrao.

43

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 o valor de 3,14.

44

Competncia 03

3.Competncia 03 | Desenvolver um Algoritmo para Resoluo de um


Problema Utilizando Estrutura de Deciso
Nos algoritmos desenvolvidos nos captulos anteriores, todas as instrues eram executadas
sequencialmente, ou seja, todas eram executadas na ordem em que foram codificadas. Nem todos
os problemas exigem que todas as instrues sejam executadas, como por exemplo: foi codificada
uma instruo para solicitar o estado civil de uma pessoa e outra instruo para solicitar o nome do
cnjuge (esposo ou esposa). Embora a instruo solicitando o nome do cnjuge tenha de ser
codificada no algoritmo - o algoritmo tem que atender a qualquer tipo de pessoa - se a resposta ao
estado civil for solteiro, no faz sentido solicitar o nome do cnjuge. A execuo do algoritmo deve
pular esta instruo.
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.

3.1 Operao Condicional


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.
O relacionamento de dois elementos feito atravs de operadores relacionais e sempre resulta em
um valor lgico: VERDADEIRO ou FALSO. Na tabela 5 esto listados os operadores relacionais que
podem ser usados em uma operao condicional.
OPERADOR

OBJETIVO

Igual

<>

Diferente

>

Maior que

<

Menor que

>=

Maior ou igual

<=

Menor ou igual

Tabela 5 - Operadores relacionais


Fonte: o autor (2013)

A partir dos operadores da tabela 5, podemos elaborar operaes condicionais, desde que sigamos
a seguinte sintaxe:
<elemento_1> <operador_relacional> <elemento_2>

45

Competncia 03

Onde:
operador_relacional um dos operadores relacionais da tabela 5.
elemento_1 e elemento_2 so os elementos que queremos comparar.
Qualquer um destes elementos pode ser uma varivel, uma constante ou uma expresso
matemtica.
Exemplos de operaes condicionais:
OPERAO
COMENTRIO

RESULTADO

OPERAO
COMENTRIO
RESULTADO

OPERAO
COMENTRIO
RESULTADO

num1 = num2
Est sendo comparado se os dados armazenados nas variveis num1
e num2 so iguais.
Depende dos valores armazenados em num1 e num2.
Supondo que as variveis armazenem os valores 10 cada uma, o
resultado da comparao VERDADEIRO.
Se a varivel num1 armazena o valor 10 e a varivel num2 armazena
o valor 5, o resultado da comparao FALSO.

4>6
Est sendo comparado se a constante numrica 4 maior que outra
constante numrica 6.
O resultado da comparao FALSO, pois o nmero 4 no maior
que o nmero 6.

A <> B
Como A e B esto entre aspas, no se tratam de variveis, mas
de constantes literais (texto). Est sendo comparado se a letra A
maiscula diferente da letra B maiscula.
O resultado da comparao VERDADEIRO.

46

Competncia 03

OPERAO
COMENTRIO

RESULTADO

OBSERVAO

OPERAO
COMENTRIO

RESULTADO

OPERAO
COMENTRIO
RESULTADO
OBSERVAO

num1 <> 6
Est sendo comparado se o dado armazenado na varivel num1
diferente da constante numrica 6.
Depende do tipo da varivel num1 e do valor armazenado nela.
Considerando que a varivel num1 seja numrica (inteiro ou real):
se a varivel num1 armazena o valor 6, o resultado da comparao
FALSO.
Se a varivel num1 armazena qualquer outro valor numrico, o
resultado da comparao VERDADEIRO.
Considerando que a varivel num2 no seja numrica: o resultado
FALSO, pois esto sendo comparados elementos de tipos diferentes.
Varivel literal ou lgica sendo comparado com uma constante
numrica.
O correto comparamos elementos numerais com numerais, lgico
com lgico ou literal com literal.
Este exemplo apenas ilustrativo, pois a maioria das linguagens de
programao entende como erro a comparao entre tipos
diferentes.
O Visualg no est preparado para este tipo de comparao,
resultando sempre em FALSO.

1 = 1
O primeiro elemento da comparao o nmero 1 e o segundo
elemento o literal 1 (observe que est entre aspas, o que
caracteriza ser um literal).
O resultado da comparao FALSO, pois esto sendo comparados
elementos de tipos diferentes. Veja a observao do exemplo
anterior.

A < a
Como A e a esto entre aspas, no se tratam de variveis, mas
de constantes literais (texto). Est sendo comparado se a letra A
maiscula menor que a letra a minscula.
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
maior que a outra?. A explicao pra isso segue logo abaixo, no
deixem de ler o texto do link.

47

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
link http://pt.wikipedia.org /wiki/ASCII, acessado em 21/06/2014. No tpico Caracteres
imprimveis da pgina deste link, as tabelas apresentam na segunda coluna os cdigos em nmeros
decimais e na quarta coluna a que caractere corresponde. Em uma operao condicional, o
computador compara os cdigos correspondentes aos caracteres comparados. Por isso, no exemplo
acima a constante A (cdigo 65) menor que a constante a (cdigo 97).

3.2 Operadores Lgicos


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
condies na sintaxe de uma operao condicional temos:
Condio 1: idade > 17
Condio 2: idade < 66
Escrevendo-as em linha temos:
(idade > 17) E (idade < 66)
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:
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.

48

Competncia 03

RESULTADO DA 1
CONDIO
V
V
F
F

E
RESULTADO DA 2
CONDIO
V
F
V
F

RESULTADO DA
EXPRESSO
V
F
F
F

OU
RESULTADO DA 2
CONDIO
V
F
V
F

RESULTADO DA
EXPRESSO
V
V
V
F

Tabela 7 - Tabela Verdade E


Fonte: o autor (2013)

RESULTADO DA 1
CONDIO
V
V
F
F
Tabela 08 - Tabela Verdade OU
Fonte: o autor (2013)

Exemplos de operaes condicionais:


Exemplo 1: para verificar se uma pessoa obrigada a votar, podemos ter a seguinte expresso:
(idade > 17) E (idade < 66)
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.
Exemplo 2: Para verificar se uma pessoa no obrigada a votar, podemos ter a seguinte expresso:
(idade <18) OU (idade >65)
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 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.

49

Competncia 03

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:
(Tipo=C) OU (Tipo=E) OU (Tipo=I)
O uso do operador NAO pode simplificar a expresso da seguinte forma:
NAO(Tipo=L)
A expresso lgica fica mais simples utilizando o operador de negao e comparando apenas o
nico tipo que no exige senha.

3.3 Prioridade dos Operadores Lgicos


Assim como os operadores matemticos, os operadores lgicos tambm tm prioridade de
execuo em uma expresso lgica. A tabela 9 apresenta as prioridades dos operadores lgicos.

RESULTADO DA 1
CONDIO
V
V
F
F

OU
RESULTADO DA 2
CONDIO
V
F
V
F

RESULTADO DA
EXPRESSO
V
V
V
F

Tabela 9 Prioridade dos operadores lgicos


Fonte: o autor (2013)

Exemplo de uma expresso lgica composta:


(6=3) OU (5<8) E (3=3) OU (5<=4) E (3=2)
Para resolver esta expresso, primeiro resolve-se cada relacionamento da expresso condicional.
Como resultado, temos a seguinte expresso:
falso OU verdadeiro E verdadeiro OU falso E falso
Agora resolvemos primeiro os operadores lgicos E, conforme a tabela verdade, que resulta na
seguinte expresso:
falso OU verdadeiro OU falso
Com base na expresso acima resolvemos o 1 operador lgico OU, resultando na expresso abaixo:

50

Competncia 03

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.
(6=3) OU (5<8) E ((3=3) OU (5<=4)) E (3=2)
Para resolver esta expresso, primeiro resolve-se cada relacionamento da expresso condicional,
que resulta na seguinte expresso:
falso OU verdadeiro E (verdadeiro OU falso) E falso
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 verdadeiro E verdadeiro E falso
Em seguida resolvemos o primeiro operador E, resultando na expresso:
falso OU verdadeiro E falso
Vamos resolver agora o segundo E, que resulta na expresso:
falso OU falso
E finalmente, resolvendo o operador OU que resta, chegamos ao resultado final: falso
Para melhor fixao deste assunto, vamos observar alguns exemplos:
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

51

Competncia 03

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 podem ser escritas:
Expresso 1: idade>15 E idade<=17 OU idade>65
Expresso 2: idade>65 OU idade>15 E idade<=17
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:
(7>15) E (7<=17) OU (7>65)
Resolvendo as condies teremos:
falso E verdadeiro OU falso
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.
Expresso 2: (idade>65) OU (idade>15) E (idade<=17)
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

52

Competncia 03

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:
Expresso 1: (perc_freq>=75) E (conc=A) OU (conc=B)
Expresso 2: (conc=A) OU (conc=B) E (perc_freq>=75)
A princpio voc pode achar que as expresses esto corretas, mas h um erro lgico, considerandose as tabelas verdades 8 e 9.
Vamos resolver as sentenas para entendermos o erro lgico da expresso:
Se o valor armazenado na varivel perc_freq for 60 e o valor armazenado na varivel conceito for
A, teremos pela primeira expresso:
(60>=75) E (A=A) OU (A=B)
Resolvendo as condies teremos:
falso E verdadeiro OU falso
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.
Expresso 2: (conc=A) OU (conc=B) E (perc_freq>=75)
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

53

Competncia 03

primeira expresso:
(60>=75) E (B=A) OU (B=B)
Resolvendo as condies teremos:
falso E falso OU verdadeiro
Resolvendo o operador E (pela tabela 7 - tabela verdade E), falso E falso resulta em falso, ficando
assim a expresso:
falso OU verdadeiro
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.
Vamos pensar mais sobre o problema?
Para ser aprovado um aluno deve atender aos dois casos seguintes:
Caso 1: perc_freq>=75
Caso 2: (conc=A) OU (conc=B)
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:
Expresso 1: (perc_freq>=75) E (conc=A) OU (conc=B)
Expresso 2: (conc=A) OU (conc=B) E (perc_freq>=75)
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:
Expresso 1: (perc_freq>=75) E ((conc=A) OU (conc=B))
Expresso 2: ((conc=A) OU (conc=B)) E (perc_freq>=75)

54

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:
(60>=75) E ((B=A) OU (B=B))
Resolvendo as condies teremos:
falso E (falso OU verdadeiro)
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.
Dominar a elaborao e a resoluo de expresses lgicas uma habilidade fundamental para a
competncia que estamos estudando e para poder desenvolver algoritmos com a estrutura de
deciso que estudaremos no prximo item.

3.4 Estrutura de Deciso


Durante todos os tpicos anteriores, estivemos fundamentando os conceitos que envolvem a
tomada de deciso por parte do computador, via linguagem de programao algortmica. Agora
chegou a hora de conhecermos o que ir suportar a tomada de deciso e alterar o fluxo do
programa. Denominamos de estrutura, porque no uma simples instruo de uma linha, mas no
mnimo duas linhas que formaro um bloco de instrues.

3.4.1 Estrutura de Deciso Simples


Esta estrutura utilizada em situaes onde uma mudana da sequncia normal de execuo das
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.

55

Competncia 03

Figura 24 - Representao grfica de uma estrutura de desvio simples


Fonte: o autor (2008)
Descrio: A imagem tem dois quadros e em ambos os quadros esto representados de maneira idntica dois
caminhos em paralelos que atravessam um rio. Existem pontes sobre o rio. Antes e depois das pontes h uma ligao entre os caminhos. No primeiro quadro tem um texto como ttulo informando obstruo: verdadeira.
Uma rvore cada sobre o caminho do lado direito, impede o trajeto em frente sobre a ponte. Setas vermelhas
demonstram que para passar para o outro lado da ponte ser necessrio fazer um desvio e seguir para o caminho do lado oposto, atravessar a ponte deste caminho e depois retornar ao caminho original. No segundo quadro tem um texto como ttulo informando obstruo: falso. No h rvore obstruindo o caminho possibilitando
um trajeto sem desvio. Uma seta vermelha demonstra que no ser necessrio fazer um desvio, sendo possvel
seguir em frente normalmente.

A sintaxe da estrutura condicional que permite este tipo de desvio :


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.
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.
algoritmo "Estrutura de Deciso Simples"
var
preco_unit: real
quantidade: inteiro
perc_desconto: real
valor_desconto: real
preco_total: real
inicio

56

Competncia 03

escreva("Digite o preo unitrio: ")


leia(preco_unit)
escreva("Digite a quantidade vendida: ")
leia(quantidade)
// calculando o preo total (sem desconto)
preco_total := preco_unit * quantidade
// Tomando deciso sobre desconto
se (quantidade>4) entao
escreva("Digite o % de desconto: ")
leia(perc_desconto)
// Calculando o desconto
valor_desconto := preco_total*perc_desconto/100
// retirando o desconto do preco total
preco_total := preco_total - valor_desconto
fimse
escreva("Preo Total: ", preco_total)
fimalgoritmo
As instrues colocadas entre os comandos se e fimse s sero executadas se a expresso lgica do
comando se resultar em verdadeiro. Nesse caso, ser solicitado o percentual do desconto, calculado
o valor do desconto e recalculado o preo total. Note que o preo total, sem desconto, j foi
calculado antes da estrutura se. Dentro da estrutura se o preo total apenas est sendo recalculado,
abatendo-se o valor do desconto.

3.4.2 Estrutura de Deciso Composta


Esta estrutura utilizada em situaes onde 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.
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.

57

Competncia 03

Figura 25 - Representao grfica de uma estrutura de desvio composta


Fonte: o autor (2008)
Descrio: A imagem tem dois quadros e em ambos os quadros temos, de formas idnticas, o incio de um
caminho. Em certo ponto do caminho h uma bifurcao, permitindo seguir um trajeto por um caminho a direita ou por um caminho a esquerda. Posteriormente estes caminhos se encontram formando um nico caminho. O primeiro quadro tem um ttulo informando resultado verdadeiro. Uma seta tracejada indica que ser
o resultado para uma determinada situao for verdadeiro, deve-se tomar o caminho da direita. O segundo
quadro tem um ttulo informando resultado falso. Uma seta tracejada indica que ser o resultado para uma determinada situao for falso, deve-se tomar o caminho da esquerda.

A sintaxe da estrutura condicional que permite este tipo de desvio :


SE <expresso_condicional> ENTAO
<bloco_de_instrues_1>
SENAO
<bloco_de_instrues_2>
FIMSE
Esta estrutura permite a definio de dois blocos de comandos. O bloco_de_instruo_1 a ser
executado se o teste da condio resultar em VERDADEIRO. Se no for VERDADEIRO, isto , for
FALSO, o bloco_de_instruo_2 ser executado, tendo incio a partir do comando SENAO.
Como aplicao prtica desta estrutura, vamos elaborar um algoritmo que receba duas notas,
calcule e mostre a mdia. Considerando que a mdia para aprovao seja 6, mostre tambm se o
aluno foi aprovado ou reprovado.
algoritmo "Calcula Media"
var
nota1, nota2, media: real
inicio
escreva ("Digite a 1 nota: ")
leia (nota1)
escreva ("Digite a 2 nota: ")
leia (nota2)
media := (nota1 + nota2) / 2

58

Competncia 03

escreva ("A mdia : ", media)


// Tomando deciso sobre aprovao
se (media < 6) entao
escreval ("Aluno Reprovado")
senao
escreval ("Aluno Aprovado")
fimse
fimalgoritmo
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.
algoritmo "Par ou Impar"
var
numero: inteiro
inicio
escreva ("Digite um nmero inteiro: ")
leia (numero)
se numero MOD 2 = 0 entao
escreva (O nmero par)
senao
escreva (O nmero impar)
fimse
fimalgoritmo
Muito simples, no foi? Digite este algoritmo no Visualg e faa o teste para conferir.

3.4.3 Estrutura de Deciso Encadeada


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.

59

Competncia 03

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:
Condio para aprovao: mdia igual ou superior a 6.
Condio para recuperao: mdia inferior a 6 at 3.
Condio para reprovao: mdia menor que 3.
algoritmo "Calcula Media"
var
nota1, nota2, media: real
inicio
escreva ("Digite a 1 nota: ")
leia (nota1)
escreva ("Digite a 2 nota: ")
leia (nota2)
media := (nota1 + nota2) / 2
escreval ("A mdia : ", media)
se (media < 3) entao
escreval ("Reprovado")
senao
se (media < 6) entao
escreval ("Recuperao")
senao
escreval ("Aprovado")
fimse
fimse
fimalgoritmo

60

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 pagam a
metade do valor que os homens pagam.

61

Competncia 04

4.Competncia 04 | Desenvolver um Algoritmo para Resoluo de um


Problema Utilizando Estrutura de Repetio
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.

4.1 Estrutura de Repetio Indefinida, com uma Repetio Obrigatria


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.
Para compreender melhor o conceito desta repetio, observe o seguinte pseudocdigo:
Instruo_1
Instruo_2
Instruo_3
REPITA
Instruo_4
Instruo_5
ATE condio
Instruo_6
Instruo_7
As instrues 1, 2 e 3 sero executadas sequencialmente no incio da execuo do algoritmo.

62

Competncia 04

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:
algoritmo "Calcula Media"
var
nota1, nota2, media: real
inicio
repita
escreva ("Digite a 1 nota: ")
leia (nota1)
ate (nota1<=10)
repita
escreva ("Digite a 2 nota: ")
leia (nota2)
ate (nota2<=10)
media := (nota1 + nota2) / 2
escreva ("A mdia : ", media)
fimalgoritmo

Assista ao vdeo postado no link http://youtu.be/9xCtVeIJWXk e veja como melhorar ainda mais
a interao do algoritmo com o usurio.

4.2 Contador
Com o uso de estrutura de repetio surge a necessidade de realizarmos algumas contagens como,
por exemplo:

A quantidade de vezes em que a repetio ocorreu;

Se a repetio foi por erro, quantas vezes o usurio errou;

Se no bloco de repetio foi solicitado o sexo de uma pessoa, quantas so do sexo masculino
e quantas so do sexo feminino.
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.

63

Competncia 04

A sintaxe de um contador :
<contador> := <contador> + / - <constante_numerica>
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
masculino, feminino: inteiro
inicio
// Iniciando o valor dos contadores com zero
masculino := 0
feminino := 0
repita
escreva ("Digite o sexo (M/F): ")
leia (sexo)
se sexo=M entao
masculino := masculino + 1
senao
se sexo=F entao
feminino := feminino + 1
fimse
fimse
ate (sexo=X)
escreval ("Masculino(s): ", masculino)
escreval ("Feminino(s): ", feminino)
fimalgoritmo
Como a contagem realizada a partir de um valor inicial, inicializamos as variveis contadoras
masculino e feminino com o valor zero no incio da seo de comandos.
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.

64

Competncia 04

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:
<acumulador> := <acumulador> + / - <varivel_numerica>
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.

4.4 Estrutura de Repetio Indefinida, com Repetio Opcional


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:
ENQUANTO <expresso_condicional> FACA
<bloco_de_instrues>
FIMENQUANTO
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.
Quando a execuo do algoritmo encontra a condio contida no comando ENQUANTO, a condio

65

Competncia 04

avaliada. Se o resultado for VERDADEIRO, o bloco de comando entre o comando ENQUANTO e o


comando FIMENQUANTO executado e a execuo retorna ao comando ENQUANTO que testa a
condio novamente. Se o resultado da condio for FALSO, o algoritmo pula o bloco de comando
e segue executando os comandos aps o comando FIMENQUANTO.
Vamos utilizar o mesmo pseudocdigo utilizado na estrutura de repetio anterior para
compreender melhor o conceito desta repetio.
Instruo_1
Instruo_2
Instruo_3
ENQUANTO condio FACA
Instruo_4
Instruo_5
FIMENQUANTO
Instruo_6
Instruo_7
As instrues 1, 2 e 3 sero executadas sequencialmente no incio da execuo do algoritmo.
Ao atingir o comando ENQUANTO a condio avaliada. Se o resultado for FALSO, a execuo
continua nas instrues 6 e 7. Se o resultado for VERDADEIRO, as instrues 4 e 5 so executadas, o
fluxo de execuo retorna ao comando ENQUANTO para avaliar a condio novamente e julgar se
repetir as instrues 4 e 5 mais uma vez ou encerrar a repetio e executar os comandos 5 e 6.
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)
// Iniciando contador e acumulador com zero
contador := 0
acumulador := 0
enquanto contador<quant_filhos faca
contador := contador + 1
escreva (Idade do ,contador, filho: )
leia (idade)
acumulador := acumulador + idade
fimenquanto

66

Competncia 04

media:=0
se quant_filhos <> 0 entao
media:= acumulador / quant_filhos
fimse
escreva (Mdia das idades: , media)
fimalgoritmo

Assista no vdeo postado no link http://youtu.be/SE7Tu1UE3vQ a execuo comentada deste


algoritmo.

4.5 Estrutura com Repetio Definida


Em situaes onde a quantidade de repetio j conhecida, podemos utilizar a estrutura de
repetio PARA, que tem a seguinte sintaxe:
PARA <contador> DE <valor_inicial> ATE <valor_final> FACA
<bloco_de_instrues>
FIMPARA
Onde:
Contador: uma varivel contadora.
Valor_inicial: o valor que inicializar o contador automaticamente.
Valor_final: o valor que, quando atingido pelo contador, encerrar a repetio.
A cada repetio realizada o valor da varivel controladora incrementado automaticamente em 1.
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

67

Competncia 04

escreva (Temp. mdia da semana: , media)


fimalgoritmo

A execuo deste algoritmo comentada, voc pode assistir no


link http://youtu.be/YWdrW9xQ8Ec

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.

68

Concluso
Prezado aluno, finalmente conclumos as quatro competncias previstas para esta disciplina, onde
tivemos a oportunidade de aprender como programar um computador.
Iniciamos pelos princpios da lgica de programao algortmica, conhecendo sobre dados e
informaes e linguagem de programao. Tambm vimos como ocorre a entrada dos dados, como
os dados processados so atribudos a variveis e como as informaes geradas so exibidas aos
usurios. Foi nesta primeira etapa que tivemos contato com o Visualg ferramenta para edio e
execuo de algoritmo.
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.

69

Referncias
FARRER, Harry. et al. Algoritmos Estruturados. 3 ed.: LTC, 2011
MANZANO, Jos Augusto; OLIVEIRA, Jayr Figueiredo de. Estudo Dirigido de Algoritmos. 1 ed.:
ERICA, 1997

70

Minicurrculo do Professor

Aldo de Moura Lima

Possui graduao em Anlise e Desenvolvimento de Sistemas pela Faculdade de Tecnologia Ibratec


e especializao em Produo de Software, com nfase em software livre, pela Universidade
Federal de Lavras-MG. Atualmente professor universitrio da Faculdade de Tecnologia Ibratec.
Possui experincia de ensino de quase 30 anos em cursos de qualificao profissional, tcnico,
graduao e ps-graduao, em disciplinas de Lgica de Programao, Linguagens de Programao,
Banco de Dados, Gerncia de Configurao, Engenharia de Software, Sistemas de Informao e
Metodologias de Desenvolvimento de Sistemas.
Elaborou as apostilas Tcnicas de Programao (2002) e Lgica de Programao (2008) e
desenvolveu diversos sistemas para rea comercial, industrial e de servios para empresas nos
estados de Pernambuco, Joo Pessoa, Rio Grande do Norte e Cear.

71

Вам также может понравиться