Você está na página 1de 81

Lgica de Programao

5 297860

Aldo de Moura Lima

Curso Tcnico em Informtica


Educao a Distncia
2017
EXPEDIENTE

Professor Autor
Aldo de Moura Lima

Design Instrucional
Deyvid Souza Nascimento
Renata Marques de Otero
Terezinha Mnica Sincio Beltro

Reviso de Lngua Portuguesa


Letcia Garcia

Diagramao
Izabela Cavalcanti

Coordenao
Anderson Elias

Coordenao Executiva
George Bento Catunda

Coordenao Geral
Paulo Fernando de Vasconcelos Dutra

Produzido pela Secretaria Executiva de Educao Profissional de Pernambuco, em


convnio com o Ministrio da Educao (Rede e-Tec Brasil).
Setembro, 2017
L732I
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.
78 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 ............................................................................................................................................... 16

1.4.4 Programao ......................................................................................................................................... 16

1.4.5 Programador ......................................................................................................................................... 16

1.5 Lgica de Programao ............................................................................................................................ 16

1.5.1 Fluxograma............................................................................................................................................ 17

1.5.2 Algoritmo .............................................................................................................................................. 19

1.6 Lgica de Programao Algortmica......................................................................................................... 20

1.7 Representao e Armazenamento dos Dados ......................................................................................... 21

1.7.1 Varivel ................................................................................................................................................. 21

1.7.1.1 Tipo de Varivel.................................................................................................................................. 22

1.7.1.2 Declarao de Varivel....................................................................................................................... 22

1.7.2 Constante .............................................................................................................................................. 26

1.8 Estrutura de um Algoritmo ...................................................................................................................... 27


1.9 Entrada de Dados ..................................................................................................................................... 30

1.10 Sada de Informaes ............................................................................................................................. 30

1.11 Atribuio de Dados ............................................................................................................................... 31

1.12 Ferramenta para Edio e Teste de Algoritmo ...................................................................................... 32

1.12.1 Tela Principal ....................................................................................................................................... 33

1.12.2 Digitando o Algoritmo ......................................................................................................................... 36

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

2.1 Operadores Aritmticos Bsicos .............................................................................................................. 41

2.2 Prioridade dos Operadores ...................................................................................................................... 42

2.3 Outros Operadores Aritmticos ............................................................................................................... 44

2.4 Funes Aritmticas ................................................................................................................................. 46

2.5 Tabela de Prioridades............................................................................................................................... 47

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


Estrutura de Deciso ............................................................................................................................ 49

3.1 Operao Condicional .............................................................................................................................. 49

3.2 Operadores Lgicos.................................................................................................................................. 52

3.3 Prioridade dos Operadores Lgicos ......................................................................................................... 54

3.4 Estrutura de Deciso ................................................................................................................................ 61

3.4.1 Estrutura de Deciso Simples................................................................................................................ 61

3.4.2 Estrutura de Deciso Composta ............................................................................................................ 63

3.4.3 Estrutura de Deciso Encadeada........................................................................................................... 66

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


Estrutura de Repetio ......................................................................................................................... 68

4.1 Estrutura de Repetio Indefinida, com uma Repetio Obrigatria ...................................................... 68

4.2 Contador .................................................................................................................................................. 70

4.3 Acumulador .............................................................................................................................................. 71

4.4 Estrutura de Repetio Indefinida, com Repetio Opcional .................................................................. 72


4.5 Estrutura com Repetio Definida ........................................................................................................... 74

Concluso ............................................................................................................................................. 76

Referncias ........................................................................................................................................... 77

Minicurrculo do Professor ................................................................................................................... 78


Introduo

Gostaria de dar a vocs as boas-vindas disciplina Lgica de Programao. Os assuntos que sero
tratados nesta disciplina fazem parte de uma rea da Informtica chamada de Desenvolvimento de
Software e envolvem a programao do computador.

A programao permite instruir o computador para que ele realize as tarefas que desejamos como,
por exemplo: controlar o estoque de uma empresa, simular os cenrios de um jogo, escrever e
enviar uma mensagem em uma rede social ou disponibilizar imagens em uma tela. Os
computadores precisam de programas para fazer com que seus componentes eletrnicos
processem os dados e realizem os resultados que desejamos.

A programao de computadores ocorre de forma diferente da que um ser humano utiliza para
instruir outro ser humano. Esta forma envolve a lgica de programao e poder ser expressa de
vrias maneiras. Utilizaremos a forma algortmica, onde as instrues que o computador deve
executar so codificadas em forma de texto, com comandos escritos na lngua portuguesa.

Nesta disciplina voc aprender os princpios e as principais estruturas que regem a programao.
Realizando os exerccios adequadamente, o seu raciocnio estar preparado para criar qualquer tipo
de programa, quando em disciplina posterior aprender uma linguagem de programao especfica
para computao.

Tenho certeza de que voc no vai querer ficar fora desta oportunidade. Como programao uma
rea muito abrangente, voc precisar complementar seus estudos atravs de outros materiais que
estaremos propondo neste caderno e em outros que voc, sem dvida, ir pesquisar.

Vamos nessa?

Aldo Moura

6
Competncia 01

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

7
Competncia 01

Exemplos 1: nestes exemplos, para cada dado foi atribudo um significado, respectivamente: dias,
anos, smbolo monetrio do real e telefone.

53 dias
53 anos
R$ 53,00
Telefone 99999-0101

Exemplos 2: nos exemplos abaixo temos trs listas que possivelmente sofreram processamento,
resultando em:

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 Beatriz Afonso


Alusio
Betnia Alusio
Antonio
Marta Antonio
Beatriz
Betnia Mrcia Cssio
Cssio
Rute Celso
Celso
Vnia Ccero
Ccero
Marta Vernica Paulo
Mrcia
Zlia Pedro
Paulo
Renato
Pedro
Renato
Rute
Vnia
Vernica
Zlia

8
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 crculo central preenchido na cor roxa com a palavra sistema no centro do
crculo. Ao redor deste crculo esto dispostas seis elipses. Cada elipse representa um dos elementos de um
sistema computacional. A primeira elipse, disposta acima do crculo central contm a palavra procedimento
e est preenchida na cor verde. Considerando-se o sentido anti-horrio, a segunda elipse contm a palavra
hardware e est preenchida na cor amarela; a terceira elipse contm a palavra software e est preenchida
na cor laranja; a quarta elipse contm a palavra pessoas e est preenchida na cor azul; a quinta elipse con-
tm a palavra banco de dados e est preenchida na cor rosa e a ltima elipse contm a palavra telecomuni-
caes e est preenchida na cor marrom. Existem linhas ligando o crculo a algumas elipses, bem como li-
nhas 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 envolve todas as seis elipses. Essa elipse
maior est preenchida na cor cinza.

9
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 su-
perior 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 o primeiro retngulo a etapa de requisitos; o se-
gundo retngulo a etapa de anlise; o terceiro retngulo a etapa de projeto; o quarto retngulo a etapa de codifi-
cao; 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.

11
Competncia 01

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

12
Competncia 01

Entrada Processamento Sada

Figura 3 Representao das etapas do Processamento de dados


Fonte: o autor (2013)
Descrio: trs retngulos preenchidos na cor cinza, onde cada retngulo representa uma etapa do
processamento de dados. O primeiro retngulo contm a palavra entrada, o segundo retngulo contm a
palavra processamento e o terceiro retngulo a palavra 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.

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

13
Competncia 01

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 digestrio
Sistema sanguneo
Sistema de transporte
Sistema hidrulico
Sistema eltrico
Sistema de sade

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

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. Obter o 1 nmero;

14
Competncia 01

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

Exemplo 2: Para encontramos o maior nmero entre trs nmeros iniciais, precisamos
basicamente de oito instrues:

1. Obter o 1 nmero;
2. Obter o 2 nmero;
3. Obter o 3 nmero;
4. Comparar o 1 nmero com o 2 nmero;
5. Memorizar o maior nmero comparado;
6. Comparar o 3 nmero com o maior nmero memorizado;
7. Memorizar o maior nmero na nova comparao;
8. Exibir o nmero memorizado.

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.

15
Competncia 01

1.4.3 Programa

Conjunto de instrues que um computador interpreta para executar uma tarefa especfica.

Sendo uma mquina eletrnica, o computador est submetido s regras da eletrnica digital. Com
isso, as diversas regras das linguagens naturais (portugus, ingls, japons, etc.) no so entendidas
pelo computador. Ento, foram criadas linguagens de programao com regras prprias, indicando
como as instrues devero ser codificadas.

1.4.4 Programao

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 sequncia lgica, para que a tarefa seja de fato executada. Esta sequncia
lgica o que chamamos de lgica de programao.

Antes de escrever o programa propriamente dito, comum primeiro fazermos uma representao
abstrata, sem muitos detalhes, da ideia (lgica) que temos para resolver o problema para o qual o
programa est sendo criado. Os arquitetos ou engenheiros civis normalmente fazem algo parecido.
Quando um cliente solicita que eles elaborem um projeto para a construo de um imvel, antes de
desenhar a planta arquitetnica, eles primeiro fazem um rascunho (croqui) para entender melhor o
desejo do cliente e verificar se a proposta desenhada no croqui atende ao que o cliente quer.
Quando verificado que realmente atende, a planta finalmente elaborada com todos os detalhes
necessrios, de acordo com as regras da engenharia civil.

No caso da programao, as duas formas bsicas para representar a lgica de programao so


fluxograma e algoritmo.

16
Competncia 01

Linguagem de programao:
conjunto de comandos (texto e smbolos) com sentido predeterminado e regras de sintaxe
prprias que permitem a construo de instrues que um computador pode executar.

Codificao:
termo utilizado para substituir a programao, j que o ato de programar envolve escrever
um programa nos cdigos especficos de uma linguagem de programao.

1.5.1 Fluxograma

uma forma de representao grfica da lgica de programao, que utiliza smbolos como
comandos para o computador. O programador deve conhecer os smbolos predefinidos que pode
utilizar e o que cada smbolo representa, como, por exemplo, os smbolos relacionados na figura 4.

Figura 4-Exemplos de smbolos usados em fluxograma


Fonte: o autor (2013)
Descrio: 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
crculo, 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 arredondada como um meio crculo. No seu interior h o texto exibio e do lado direito um
texto explicando o 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).

17
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 de-
les. Alm de dois terminadores, um iniciado e outro finalizando o fluxograma, encontra-
mos dois smbolos de entrada manual representando a entrada dos dois nmeros, repre-
sentados por nmero 1 e nmero 2. Em seguida, o smbolo de processo que executa a
soma dos valores representados por nmero 1 e nmero 2, 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.

18
Competncia 01

Muito bem, espero que tenha acertado. Pode no ter ficado igual ao que fiz, mas o importante
que voc tenha entendido.

1.5.2 Algoritmo

uma forma de representao textual da lgica de programao, que utiliza palavras como
comandos para o computador. O programador deve conhecer as palavras predeterminadas da
linguagem algortmica que pode utilizar e o que cada palavra representa. Dizemos que as palavras
da linguagem algortmica so palavras reservadas, como as palavras relacionadas na figura 6.

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 for-
mada pelo caractere dois pontos e o caractere igual. Eles so escritos juntos e servem 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

19
Competncia 01

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 de-
les. 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. Encerra-se o algoritmo com a palavra reservada fim.

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

20
Competncia 01

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?

Figura 8 - Algoritmo indicando as variveis utilizadas no processamento


Fonte: o autor (2013)
Descrio: 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 se encerra o algoritmo com a palavra reservada fim. No
lado direito do algoritmo h um texto com a palavra varivel e trs setas apontam do
texto para os elementos numero1, numero2 e soma, indicando que esses elementos re-
presentam 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

21
Competncia 01

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.

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.

22
Competncia 01

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

23
Competncia 01

As variveis do mesmo tipo podem ser agrupadas em uma linha, separando-as por vrgula, com
apenas uma especificao do tipo, conforme o seguinte exemplo:

var
numero1, numero2: real
nome: literal

Veja como fica o algoritmo da figura 7 com o comando de declarao das variveis na figura 9 a
seguir:

Figura 9 - Algoritmo com declarao de variveis


Fonte: O autor (2013)
Descrio: 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 se encerra 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.

24
Competncia 01

Figura 10 - Algoritmo com declarao de variveis sem indentao


Fonte: o autor (2013)
Descrio: 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 se encerra
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 indentao. 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.

25
Competncia 01

Figura 11- Algoritmo demonstrando o uso da indentao


Fonte: o autor (2013)
Descrio: 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 trs posies da margem
esquerda. Aps a declarao das variveis, inicia-se o algoritmo propriamente dito
com a palavra reservada incio, 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 trs posies em relao margem esquerda.

A indentao 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.

26
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 se-
ro utilizadas no processamento, que so nota1, nota2 e media. Aps o incio do algo-
ritmo so colocadas a entradas das 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 h 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

27
Competncia 01

// Seo de Comandos
fimalgoritmo

Um algoritmo inicia com o comando algoritmo e finaliza com o comando fimalgoritmo.

A sintaxe do comando algoritmo :

algoritmo <nome_algoritmo>

Onde:

nome_algoritmo = um nome, entre aspas, que obrigatoriamente deve ser dado ao algoritmo.

Exemplos:

algoritmo soma
algoritmo media
algoritmo calcular mdia de 2 notas
algoritmo ## calcular rea ##

O nome de algoritmo pode conter espao, nmero ou caracteres especiais. O ideal colocar um
nome sugestivo, de acordo com o problema que o algoritmo resolve.

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

28
Competncia 01

Figura 13 - Algoritmo com comentrios


Fonte: o autor (2013)
Descrio: algoritmo para receber dois nmeros e mostrar a soma deles. As duas
sees de um algoritmo so indicadas por linhas iniciadas por duas barras juntas,
apontando 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 palavra reservada, inicio, em que comea a sequncia lgica dos co-
mandos, 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 calcular 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 li-
nha de comentrio com o texto sada.

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

30
Competncia 01

Tudo que foi escrito no algoritmo, como a declarao das variveis, por exemplo, no visualizado
pelo usurio durante a sua execuo. Apenas o que tiver determinado pelo comando escreva.
Este comando a forma que o algoritmo tem para se comunicar com o usurio do algoritmo. Ele
pressupe que a informao ser exibida na tela.

A sintaxe do comando escreva :

escreva ([texto , ] [nome_varivel])

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.

31
Competncia 01

A atribuio ocorre atravs do comando := (dois pontos e igual sem espao entre eles) ou <- (maior
que e hfen sem espao entre os smbolos). Quando encontramos este comando lemos Recebe.

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.

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.

32
Competncia 01

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

Figura 15 - Tela principal do aplicativo Visualg utilizado para praticar 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 pra-
ticar 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 da segunda diviso. A quarta diviso
fica abaixo da terceira diviso e esquerda da tela e a quinta diviso fica abaixo da terceira diviso e
direita da tela. A finalidade de cada diviso ser explicada nas imagens a seguir.

33
Competncia 01

Para uma melhor compreenso do contedo deste item a partir deste ponto, sugerimos que
voc assista primeiro ao vdeo postado no link http://youtu.be/6N-EUkZxJIM.

Na parte superior temos a barra de menu que d acesso a todas as funcionalidades disponveis. As
funcionalidades so agrupadas por assunto: Arquivo, Editar, Exibir, Algoritmo, Cdigo, Ferramentas
e Ajuda, conforme a figura 16.

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
menu com os grupos de funcionalidades do aplicativo. Cada opo do menu rene 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
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.

34
Competncia 01

Figura 18 - Janela de edio do Visualg


Fonte: aplicativo Visualg verso 2.0 (2013)
Descrio: 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: quarta diviso do Visualg, denominada de janela de variveis. Nesta janela so
apresentadas as variveis declaradas no algoritmo, com seus respectivos tipos e, medida
em que o algoritmo executado, tambm so exibidos os valores armazenados em cada
varivel.

Na parte inferior direita temos a janela em branco, que a janela de simulao, onde simulada a
execuo do algoritmo.

Finalmente temos a barra de status com informaes sobre o nmero da linha e da coluna em que
o cursor est posicionado, o estado do algoritmo (em branco ou modificado, se houve alguma
modificao no cdigo do algoritmo depois da ltima vez em que ele foi salvo) e informao para

35
Competncia 01

acessar os comandos predefinidos do visualg (figura 20).

Figura 20 - Barra de status do Visualg


Fonte: aplicativo Visualg verso 2.0 (2013)
Descrio: 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 indentao (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"


// Seo de Declaraes

36
Competncia 01

var
numero1, numero2, soma: inteiro
// seo de comandos
inicio
leia (numero1)
leia (numero2)
soma := numero1 + numero2
escreva (soma)
fimalgoritmo

Revise com ateno para ter certeza de ter digitado tudo certinho, pois agora iremos mostrar como
testar o algoritmo.

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.

37
Competncia 01

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


Fonte: aplicativo Visualg verso 2.0 (2013)
Descrio: tela principal do Visualg onde na janela de edio foi digitado um algoritmo para receber dois
nmeros, som-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, o valor 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

38
Competncia 01

armazenado na varivel 1, j que a primeira instruo da seo de comandos possui a funo de ler
um dado de entrada. O computador est aguardando este dado de entrada. Digite um nmero, por
exemplo: 2, e tecle ENTER. Observe que na janela de variveis o valor da varivel nmero1 mudou
e na janela de simulao o valor digitado aparece abaixo da mensagem de incio da execuo.
Pronto! Voc j sabe como acompanhar a execuo do algoritmo. Esteja atento a estas duas
janelas.

Automaticamente a segunda instruo foi executada. Como tambm uma instruo para ler um
dado de entrada, nova pausa ocorreu, aguardando que o usurio digite novo dado de entrada.
Digite um nmero, por exemplo: 5, e tecle ENTER. Observe novamente os valores das variveis na
janela de variveis. Observando a janela de simulao voc verifica que a execuo do algoritmo j
chegou ao final, com o valor da varivel soma sendo exibida. No houve pausa para executar os
comandos de atribuio e de escrita, pois eles no necessitam da interveno do usurio. Eles so
executados automaticamente pelo simulador.

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.

39
Competncia 01

Que tal tambm acrescentar um texto ao resultado final da varivel soma? Lembre-se da vrgula
para separar o texto da varivel.

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)
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 dos nmeros inteiros;
b. A soma dos nmeros reais;
c. A soma do resultado do item a com resultado do item b.
4. Escreva um algoritmo para ler dois nmeros para as variveis primeiro e segundo, inverter
os valores das variveis e mostr-los na tela. Exemplo: se o valor digitado para a varivel
primeiro for 100 e o valor digitado para a varivel segundo for 200, o processamento do
algoritmo dever fazer com que a varivel primeiro fique com o valor 200 e a varivel
segundo fique com 100.

40
Competncia 02

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

41
Competncia 02

multiplicar: inteiro
dividir: real
// como uma diviso pode ocasionar um
// valor que no inteiro, a varivel
// dividir foi declarada como real.
inicio
escreva (Digite um nmero inteiro: )
leia (numero1)
escreva (Digite outro nmero inteiro: )
leia (numero2)
somar := numero1 + numero2
subtrair := numero1 - numero2
multiplicar := numero1 * numero2
dividir := numero1 / numero2
escreva (Soma: , somar)
escreva (Subtrao:, subtrair)
escreva (Multiplicacao:, multiplicar)
escreva (Diviso:, dividir)
fimalgoritmo

O exemplo anterior apresenta quatro sadas (quatro comandos escreva). Os resultados sero
exibidos na mesma linha. Para uma melhor apresentao podemos utilizar o comando
ESCREVAL. Com este comando, cada resultado apresentado em uma linha.

Sempre que houver um operador de diviso, pode ocorrer um resultado com nmeros decimais,
portanto a varivel que armazena o resultado da diviso dever ser do tipo real. Caso a varivel seja
declarada do tipo inteiro, ocorrer um erro durante a simulao do algoritmo.

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.

42
Competncia 02

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.

Para fixar esta regra de forma prtica, vamos analisar um algoritmo para calcular a mdia aritmtica
de duas notas.

1 algoritmo "Calcula Media"


2 var
3 nota1: real
4 nota2: real
5 media: real
6 inicio
7 escreva ("Digite a 1 nota: ")
8 leia (nota1)
9 escreva ("Digite a 2 nota: ")
10 leia (nota2)
11 media := (nota1 + nota2) / 2
12 escreva ("A mdia : ", media)
13 fimalgoritmo

43
Competncia 02

Primeiro ponto a ser observado que as variveis foram declaradas do tipo real, pois tanto as notas
quanto a mdia podem ter valores decimais.

Observe que a expresso aritmtica que calcula a mdia na linha 11 d prioridade para a adio das
notas, como realmente deve ser. S aps a adio das notas que deve ocorrer a diviso por 2.

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 OPERAO
DIV Quociente de uma diviso inteira
MOD Resto de uma diviso inteira
Tabela 2 - Operadores para diviso entre nmeros inteiros
Fonte: o autor (2013)

Figura 23- Demonstrao de uma diviso inteira entre nmeros inteiros, onde so identificados os ele-
mentos envolvidos na diviso: dividendo, divisor, quociente e resto.
Fonte: o autor (2013)
Descrio: a imagem mostra uma diviso inteira entre nmeros inteiros. Os nmeros envolvidos na di-
viso so 16, colocado no lado esquerdo da imagem, e 5, colocado no lado direito da imagem. Um texto
aponta para o nmero 16 indicando que ele o dividendo e outro texto aponta para o nmero 5 indi-
cando que ele o divisor. Abaixo do nmero 5 foi colocado o nmero 3 como resultado da diviso in-
teira, onde um texto aponta este resultado como o quociente. Abaixo do nmero 16 foi colocado o n-
mero 1 como o nmero que sobrou da diviso inteira e um texto aponta para ele indicando que ele o
resto.

44
Competncia 02

Considerando-se que na diviso do exemplo mostrado na figura 23 foi utilizado o operador MOD,
que pega apenas a parte inteira do quociente, o resultado 3.

As variveis que armazenaro os valores de uma operao DIV ou MOD devero ser do tipo
inteiro.

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

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.

45
Competncia 02

2.4 Funes Aritmticas

Para que operaes matemticas mais complexas possam ser realizadas, algumas rotinas pr-
definidas, denominadas funes, foram estabelecidas. Os nomes destas funes compem o
conjunto de palavras reservadas da linguagem de programao algortmica.

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

46
Competncia 02

resultado:= EXP(numero1, numero2)


// resultado da exponenciao sendo
// armazenada em uma varivel

resultado:= 2 * EXP(numero1, numero2) + 10


// 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 OPERAO SINTAXE


INT Converte um valor real em valor inteiro INT(valor:real): inteiro
RAIZQ Raiz quadrada RAIZQ(valor:real): real
QUAD Quadrado 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:

47
Competncia 02

PRIORIDADE OPERADOR / FUNO


1 ()
2 Funes
3 * / DIV MOD
4 + -
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.

ATIVIDADE
1. Escreva um algoritmo para ler um nmero e mostrar:
a. A raiz quadrada deste nmero
b. O nmero recebido elevado a quarta (n4)
c. O nmero recebido vezes o quociente do nmero dividido por 2.
2. Escreva um algoritmo para ler o valor do raio de um crculo, calcular e mostrar o
valor da sua rea.
Obs.: Frmula para calcular a rea de um crculo : x raio2. Considere que o valor de
3,14.

48
Competncia 03

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 solteira, 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)

49
Competncia 03

A partir dos operadores da tabela 5, podemos elaborar operaes condicionais, desde que sigamos
a seguinte sintaxe:

<elemento_1> <operador_relacional> <elemento_2>

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 num1 = num2


Est sendo comparado se os dados armazenados nas variveis num1
COMENTRIO
e num2 so iguais.
Depende dos valores armazenados em num1 e num2.
Supondo que as variveis armazenem os valores 10 cada uma, o
RESULTADO 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.

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

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

50
Competncia 03

OPERAO num1 <> 6


Est sendo comparado se o dado armazenado na varivel num1
COMENTRIO
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
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
OBSERVAO programao entende como erro a comparao entre tipos
diferentes.
O Visualg no est preparado para este tipo de comparao,
resultando sempre em FALSO.

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

OPERAO A < a
Como A e a esto entre aspas, no se tratam de variveis, mas
COMENTRIO de constantes literais (texto). Est sendo comparado se a letra A
maiscula menor que a letra a minscula.
RESULTADO O resultado da comparao VERDADEIRO.
Aqui voc pode ter achado essa comparao estranha, pode ter
pensado: -mas como eu posso afirmar que uma letra menor ou
OBSERVAO
maior que a outra?. A explicao pra isso segue logo abaixo, no
deixem de ler o texto do link.

51
Competncia 03

Cada caractere (letra, nmero ou smbolo) do computador corresponde a um cdigo que est

relacionado a uma tabela do computador, denominada Tabela ASCII, que voc poder consultar no

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:

52
Competncia 03

CONECTOR
E
OU
Tabela 6 - Operadores Lgicos
Fonte: o autor (2013)

Como cada condio resulta em um valor lgico (VERDADEIRO ou FALSO), aplicam-se as tabelas 7 e
8, denominadas Tabela Verdade, para definir o resultado final da expresso.

E
RESULTADO DA 1 RESULTADO DA 2 RESULTADO DA
CONDIO CONDIO EXPRESSO
V V V
V F F
F V F
F F F
Tabela 7 - Tabela Verdade E
Fonte: o autor (2013)

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

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.

53
Competncia 03

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 OU, para conectar condies, h tambm o operador de negao NAO, que
inverte o resultado de uma expresso lgica. Este operador escrito sem o acento ~ na letra A.

Para exemplificarmos seu uso vamos considerar uma situao onde teremos como entrada o tipo
de ligao telefnica, que pode ser: L (local fixo), C (celular local), E (estadual) ou I (internacional).
Sempre que a ligao for do tipo C, E ou I dever ser solicitada uma senha. A expresso condicional
para atender a este critrio pode ser assim escrita:

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

54
Competncia 03

OU
RESULTADO DA 1 RESULTADO DA 2 RESULTADO DA
CONDIO CONDIO EXPRESSO
V V V
V F V
F V V
F F F
Tabela 9 Prioridade dos operadores lgicos
Fonte: o autor (2013)

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:
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:

55
Competncia 03

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

Como no caso 1 OU no caso 2 o voto opcional, podemos juntar as duas expresses atravs do
operador lgico OU e quaisquer uma das seguintes expresses pode ser escrita:

56
Competncia 03

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)

57
Competncia 03

Exemplo 2: Agora consideremos a situao onde para ser aprovado o aluno tem que:

Caso 1: ter frequentado pelo menos 75% das aulas, que podemos representar com a seguinte
expresso lgica:

perc_freq>=75

Caso 2: ter obtido o conceito A ou B, que podemos representar com a seguinte expresso
lgica:

(conc=A) OU (conc=B)

No exemplo 1, um dos dois casos deveria ser verdadeiro para que a pessoa pudesse votar de forma
opcional, por isso, conectamos as expresses lgicas com o conector E. Na situao deste exemplo,
os dois casos devem ser atendidos para que o aluno seja aprovado. Logo, iremos conectar as
expresses com o conector E, que pode resultar em uma das expresses:

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, considerando-
se 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

58
Competncia 03

Resolvendo o operador E (pela tabela 7 - tabela verdade E), falso E verdadeiro resulta em falso,
ficando assim a expresso:

falso OU falso

Por fim, resolvendo o operador OU (pela tabela 8 tabela verdade OU), falso OU falso resulta em
falso, ou seja, falso para uma pessoa com 60% de frequncia e conceito A que esteja aprovado.

Tambm resolva a expresso 2 com os mesmos valores e comprove que o resultado o mesmo da
expresso 1.

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

59
Competncia 03

Resolvendo o operador OU (pela tabela 8 tabela verdade OU), falso OU verdadeiro resulta em
verdadeiro, ou seja, verdadeiro para uma pessoa com 60% de frequncia e conceito B que
esteja aprovado, o que no faz o menor sentido, porque ele tem apenas 60% de frequncia. Mesmo
se utilizarmos a expresso 2, o resultado tambm estaria errado.

Esse tipo de erro o que chamamos de erro lgico, uma vez que a sintaxe da expresso est
correta, mas a lgica em relao ao problema que desejamos resolver no est.

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)

60
Competncia 03

Vamos resolver agora expresso 1 com os mesmos valores que serviram para identificarmos o erro
lgico: 60% de frequncia e conceito B, ficando assim, a soluo:

(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

61
Competncia 03

instrues deve ocorrer apenas se a condio avaliada resultar em um valor lgico VERDADEIRO.

Se o resultado da condio avaliada for um valor lgico FALSO, no haver mudana da sequncia e
a execuo segue seu fluxo normal.

A representao grfica da figura 24 faz uma comparao com uma avenida. Se em um trecho
houver uma obstruo, voc pode tomar um desvio e retomar a avenida em um ponto mais a
frente, aps a obstruo.

Figura 24 - Representao grfica de uma estrutura de desvio simples


Fonte: o autor (2008)
Descrio: dois quadros representados de maneira idntica, com 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 h um texto como ttulo informando obstruo: verdadeiro. 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 h 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.

62
Competncia 03

Consideremos uma situao onde dever ser concedido um desconto quando a venda de um
produto for maior que quatro unidades. Desenvolvemos o seguinte algoritmo para resolver este
problema.

algoritmo "Estrutura de Deciso Simples"


var
preco_unit: real
quantidade: inteiro
perc_desconto: real
valor_desconto: real
preco_total: real
inicio
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

63
Competncia 03

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.

Figura 25 - Representao grfica de uma estrutura de desvio composta


Fonte: o autor (2008)
Descrio: dois quadros de formas idnticas, indicando o incio de um caminho. Em certo ponto do caminho
h uma bifurcao, permitindo seguir um trajeto por um caminho direita ou por um caminho esquerda.
Posteriormente, estes caminhos se encontram formando um nico caminho. O primeiro quadro tem um ttulo
informando resultado verdadeiro. Uma seta tracejada indica que se 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 se 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,

64
Competncia 03

calcule e mostre a mdia. Considerando que a mdia para aprovao seja 6, mostre tambm se o
aluno foi aprovado ou reprovado.

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

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

65
Competncia 03

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.

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

66
Competncia 03

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

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.

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

68
Competncia 04

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.

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)

69
Competncia 04

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.

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

70
Competncia 04

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.

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>

71
Competncia 04

Vamos desenvolver um algoritmo para receber o preo de vrios produtos. Para finalizar o
algoritmo dever ser digitado o preo 0 (zero). No final ser exibido o valor total dos produtos.

algoritmo "Acumulador"
var
preco, total: real
inicio
// Iniciando o valor do acumulador com zero
total := 0
repita
escreva ("Digite o preo: ")
leia (preco)
total := total + preco
ate (preco=0)
escreval ("Valor total: ", total)
fimalgoritmo

Neste algoritmo, o valor do preo digitado a cada repetio adicionado ao acumulador total, at
que seja digitado um preo 0.

Como o acumulo realizado a partir de um valor inicial, inicializamos a varivel acumuladora total
com o valor zero no incio da seo de comandos.

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

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

73
Competncia 04

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

74
Competncia 04

Vamos desenvolver um algoritmo para informar a temperatura mdia de cada dia da semana. No
final do algoritmo dever ser mostrada a temperatura mdia da semana.

algoritmo "Repetio"
var
dia: inteiro
temp_dia, temp_semana, media: real
inicio
// inicializado o acumulador com zero
temp_semana :=0
para dia de 1 ate 7 faca
escreva (Temperatura do ,dia, dia: )
leia (temp_dia)
temp_semana := temp_semana + temp_dia
fimpara
media:= temp_semana / 7
escreva (Temp. mdia da semana: , media)
fimalgoritmo

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.

75
Concluso

Prezado (a) aluno (a), finalmente conclumos as quatro competncias previstas para esta disciplina,
onde tivemos a oportunidade de aprender como programar um computador.

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.

76
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

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

78