You are on page 1of 83

Tcnico em Informtica

Lgica de Programao

Aldo de Moura Lima

2014

Presidenta da Repblica
Dilma Vana Rousseff

Governador do Estado de Pernambuco


Joo Soares Lyra Neto

Vice-presidente da Repblica
Michel Temer

Secretrio de Educao e Esportes de


Pernambuco
Jos Ricardo Wanderley Dantas de Oliveira

Ministro da Educao
Jos Henrique Paim Fernandes

Secretrio Executivo de Educao Profissional


Paulo Fernando de Vasconcelos Dutra

Secretrio de Educao Profissional e


Tecnolgica
Alssio Trindade de Barros

Gerente Geral de Educao Profissional


Josefa Rita de Cssia Lima Serafim

Diretor de Integrao das Redes


Marcelo Machado Feres

Coordenador de Educao a Distncia


George Bento Catunda

Coordenao Geral de Fortalecimento


Carlos Artur de Carvalho Aras
Coordenador Rede e-Tec Brasil
Cleanto Csar Gonalves

Coordenao do Curso
Joo Ferreira
Coordenao de Design Instrucional
Diogo Galvo
Reviso de Lngua Portuguesa
Letcia Garcia
Diagramao
Izabela Cavalcanti

Sumrio
INTRODUO............................................................................................................................ 3
1.COMPETNCIA 01 | CONHECER OS PRINCPIOS DE LGICA DE PROGRAMAO
ALGORTMICA ........................................................................................................................... 4
1.1 Dado e Informao ................................................................................................. 4
1.1.1 Dado .................................................................................................................... 4
1.1.2 Informao .......................................................................................................... 5
1.2 Sistema Computacional.......................................................................................... 6
1.2.1 Elementos de um S istema Computacional ........................................................ 7
1.2.1.1 Hardware .......................................................................................................... 7
1.2.1.2 Software ........................................................................................................... 7
1.3 Desenvolvimento de Software ............................................................................... 8
1.4 Codificao ............................................................................................................. 9
1.4.1 Processamento de Dados .................................................................................... 9
1.4.2 Processamento Eletrnico de Dados ................................................................ 11
1.4.3 Programa ........................................................................................................... 13
1.4.4 Programao ..................................................................................................... 13
1.4.5 Programador ..................................................................................................... 13
1.5 Lgica de Programao ........................................................................................ 13
1.5.1 Fluxograma ........................................................................................................ 14
1.5.2 Algoritmo........................................................................................................... 16
1.6 Lgica de Programao Algortmica ..................................................................... 17
1.7 Representao e Armazenamento dos Dados ..................................................... 18
1.7.1 Varivel.............................................................................................................. 18
1.7.1.1 Tipo de Varivel .............................................................................................. 19
1.7.1.2 Declarao de Varivel ................................................................................... 19
1.7.2 Constante .......................................................................................................... 22
1.8 Estrutura de um Algoritmo .................................................................................. 23
1.9 Entrada de Dados ................................................................................................. 25
1.10 Sada de Informaes ......................................................................................... 26
1.11 Atribuio de Dados ........................................................................................... 27
1.12 Ferramenta para Edio e Teste de Algoritmo .................................................. 28
1.12.1 Tela Principal ................................................................................................... 29

1.12.2 Digitando o Algoritmo .................................................................................... 31

2.COMPETNCIA 02 | DESENVOLVER UM ALGORITMO PARA A REALIZAO DE OPERAES


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

3.COMPETNCIA 03 | DESENVOLVER UM ALGORITMO PARA RESOLUO DE UM


PROBLEMA UTILIZANDO ESTRUTURA DE DECISO ................................................................44
3.1 Operao Condicional .......................................................................................... 44
3.2 Operadores Lgicos .............................................................................................. 47
3.3 Prioridade dos Operadores Lgicos ..................................................................... 50
3.4 Estrutura de Deciso ............................................................................................ 57
3.4.1 Estrutura de Deciso Simples ............................................................................ 58
3.4.2 Estrutura de Deciso Composta ........................................................................ 60
3.4.3 Estrutura de Deciso Encadeada ....................................................................... 63

4.COMPETNCIA 04 | DESENVOLVER UM ALGORITMO PARA RESOLUO DE UM


PROBLEMA UTILIZANDO ESTRUTURA DE REPETIO ............................................................66
4.1 Estrutura de Repetio Indefinida, com uma Repetio Obrigatria .................. 66
4.2 Contador............................................................................................................... 68
4.3 Acumulador .......................................................................................................... 70
4.4 Estrutura de Repetio Indefinida, com Repetio Opcional .............................. 71
4.5 Estrutura com Repetio Definida ....................................................................... 73

CONCLUSO ...........................................................................................................................76
MINICURRCULO DO PROFESSOR ...........................................................................................77

INTRODUO
Gostaria de dar-lhe as boas vindas disciplina Lgica de Programao. Os
assuntos que sero tratados nesta disciplina fazem parte de uma rea da
informtica chamada de desenvolvimento de software e envolvem a
programao do computador.
A programao permite instruir o computador para que ele realize as tarefas
que desejamos, como por exemplo: controlar o estoque de uma empresa,
simular os cenrios de um jogo, escrever e enviar uma mensagem em uma
rede social ou disponibilizar imagens em uma tela. Os computadores precisam
de programas para fazer com que seus componentes eletrnicos processem
os dados e realizem os resultados que desejamos.
A programao de computadores ocorre de forma diferente da que um ser
humano utiliza para instruir outro ser humano. Esta forma envolve a lgica de
programao e poder ser expressa de vrias maneiras. Utilizaremos a forma
algortmica, onde as instrues que o computador deve executar so
codificadas em forma de texto, com comandos escritos na lngua portuguesa.
Nesta disciplina voc aprender os princpios e as principais estruturas que
regem a programao. Realizando os exerccios adequadamente, o seu
raciocnio estar preparado para criar qualquer tipo de programa, quando em
disciplina posterior aprender uma linguagem de programao especfica para
computao.
Tenho certeza de que voc no vai querer ficar fora desta oportunidade.
Como programao uma rea muito abrangente, voc precisar
complementar seus estudos atravs de outros materiais de estudos que
estaremos propondo neste caderno e em outros que voc, sem dvida, ir
pesquisar.
Vamos nessa?
Aldo Moura

Lgica de Programao

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 por nmeros que normalmente utilizamos
em operaes aritmticas.
Exemplos: 2, 20.3, 25
Alfanumrico ou texto: Composto por letras, smbolos e/ou nmeros que
normalmente no sero usados em operaes aritmticas.
Exemplos: Antonio, 2, maria@gmail.com, 2, F#, casa

Imagens: Composto por figuras ou fotos.

udio: Composto por sons ou rudos.

Vdeo: composto por imagens ou figuras em movimento.

Tcnico em Informtica

Competncia 01
1.1.2 Informao
Quando atravs de proces samento ou interpretao, de acordo com um
contexto, um significado atribudo a um ou vrios dados temos uma
informao.
Este significado d um valor adicional ao dado, alm do valor do fato
representado.
Exemplos 1: Nestes exemplos, para cada dado foi atribudo um significado,
que foram respectivamente: dias, anos, smbolo monetrio do real e telefone.

53 dias
53 anos
R$ 53,00
Telefone 9999-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.

Lgica de Programao

Competncia 01
Afonso

Beatriz

Afonso

Alusio

Betnia

Alusio

Antonio

Marta

Antonio

Beatriz

Mrcia

Cssio

Betnia

Rute

Celso

Cssio

Vnia

Ccero

Celso

Vernica

Paulo

Ccero

Zlia

Pedro

Marta

Renato

Mrcia
Paulo
Pedro
Renato
Rute
Vnia
Vernica
Zlia

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.

Tcnico em Informtica

Competncia 01
1.2.1 Elementos de um S istema Computacional
Um sistema computacional composto pelos elementos representados na
figura 1.

Figura 1-Elementos de um sistema computacional


Fonte: O autor (2013)

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

Lgica de Programao

Competncia 01
estoque.
Este m dulo 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 se desenvolver um software deve
haver um processo de software definido.
O processo de software mais tradicional conhecido como Modelo Cascata,
representado na figura 2.

Figura 2-Processo de Software - Modelo Cascata


Fonte: O autor (2013)

Etapas do modelo cascata:


Requisito: Identificao e especificao do que o software deve fazer.
Anlise: Definio dos dados necessrios e como eles se relacionam.
Projeto: Determinaes de como as funcionalidades do sistema sero
implantadas.

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
integram o sistema.
Telecomunicaes:
Transmisso
eletrnica de sinais
para comunicaes
que permitem as
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.

Processo de
Software:
Conjunto de
atividades
relacionadas que
levam produo
de um software.

Tcnico em Informtica

Competncia 01
Codifica o: 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:

Para conhecer
outros modelos,
pesquise sobre
Modelo de
Processo de
Software. Alm do
modelo cascata
descrito acima,
voc dever
encontrar vrios
outros modelos,
como: Modelo
Incremental,
Prototipagem e
Espiral.

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.

Lgica de Programao

Competncia 01
As etapas de um processamento de dados so:

Entrada

Processamento

Sada

Figura 3-Etapas do Processamento de dados


Fonte: O autor (2013)

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, como por exemplo: 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

10

Tcnico em Informtica

Competncia 01

Exemplo 2: Calcular uma mdia de notas

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

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

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

11

Lgica de Programao

Competncia 01
atividade pode variar de uma a centenas a milhares de instrues.
Exemplo 1: Para encontramos o maior nmero entre dois nmeros
iniciais, precisamos basicamente de cinco instrues:
1.
2.
3.
4.
5.

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

Exemplo 2: Para encontramos o maior nmero entre trs nmeros iniciais,


precisamos basicamente de oito instrues:
1.
2.
3.
4.
5.
6.
7.
8.

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

Aumentou apenas um nmero na comparao, mas a quantidade de


instrues quase dobrou.
medida que a quantidade de nmeros a serem comparados aumenta, ou se
consideramos que pode haver nmeros iguais, a quantidade de instrues
aumenta consideravelmente.
Imaginem a quantidade de instrues que deve ter um processamento para
processar um pedido, envolvendo clculo do valor total, clculo dos impostos,
clculo dos descontos, fazer baixa do estoque, calcular as parcelas quando for

12

Tcnico em Informtica

Competncia 01
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.
1.4.3 Programa
Conjunto de instrues que um computador interpreta para executar uma
tarefa especfica.
Sendo uma mquina eletrnica, o computador est submetido s regras da
eletrnica digital. Com isso, as diversas regras das linguagens naturais
(portugus, ingls, japons, etc.) no so entendidas pelo computador. Ento,
foram criadas linguagens de programao com regras prprias, indicando
como as instrues devero ser codificadas.
1.4.4 Programao
a atividade de elaborar um programa para o computador.
1.4.5 Programador
O profissional responsvel pela elaborao do programa.
1.5 Lgica de Programao
Como uma linguagem de programao tem regras prprias, as instrues de
um programa devero ser escritas em uma sequencia lgica, para que a tarefa
seja de fato executada. Esta sequencia lgica o que chamamos de lgica de
programao.

Linguagem de
programao:
um conjunto de
comandos (texto e
smbolos) com
sentido
predeterminado e
regras de sintaxe
prpria que
permite 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.

Antes de escrever o programa propriamente dito, comum primeiro fazermos

13

Lgica de Programao

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

14

Tcnico em Informtica

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

Figura 5-Exemplo de um fluxograma


Fonte: O autor (2013)

E, ento, considerando o significado dos smbolos da figura 4, voc consegue


descrever o que o fluxograma da figura 5 faz?
Escreva em uma folha de papel e depois compare com a descrio abaixo.
O fluxograma tem incio com o terminador nomeado de incio;
Um nmero dar entrada no sistema, e, conforme o smbolo, a entrada
ser manual (pode ser um usurio digitando via teclado);
Outro nmero dar entrada no sistema, tambm de forma manual;
Haver um processamento onde os dois nmeros que deram entrada no
sistema sero somados e o resultado representando pela palavra Soma;
O resultado apresentado;
O fluxograma encerra com o terminador nomeado de fim.
Muito bem, espero que tenha acertado. Pode no ter ficado igual ao que fiz,
mas o importante que voc tenha entendido.

15

Lgica de Programao

Competncia 01
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)

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, como por exemplo, a palavra leia foi reservada para significar
entrada de dados. Caso voc tenha algum item do algoritmo que queira
chamar de leia, utilize um sinnimo, por exemplo, no caso de leia pode ser
estude.
A partir dos exemplos de palavras reservadas da figura 6 j podemos
representar a lgica de programao algortmica para somar dois nmeros
(veja Figura 7).

16

Tcnico em Informtica

Competncia 01

Figura 7-Exemplo de um algoritmo


Fonte: O autor (2013)

Creio que voc um bom observador e deve ter percebido alguns detalhes
como: 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 no subtpico anterior, a lgica de programao
algortmica a forma de representar a lgica (ideia) de programao que
temos para resolver um determinado problema em forma de algoritmo.
Esta forma utiliza uma linguagem prpria linguagem algortmica, com regras
prprias.
No existe apenas uma maneira de resolver um problema. Cada programador
pode desenvolver ideias diferentes e ambos conseguirem resolver o mesmo
problema. O que vai caracterizar que o algoritmo est correto a
conformidade do resultado que ele gera em relao aos dados de entrada.
Uma linguagem de programao algortmica uma linguagem didtica, ou
seja, utilizada para ensinar lgica de programao, no sendo usada em
programao real de computadores. Por ser uma linguagem apenas didtica,
cada escola pode desenvolver suas prprias palavras reservadas e suas
prprias regras de sintaxe. Aps o algoritmo ser testado, e comprovado que a
lgica est correta, o programador precisa codificar o programa em uma

17

Lgica de Programao

Competncia 01
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 quaisquer valores. 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-Exemplos de variveis em um algoritmo


Fonte: O autor (2013)

O programador deve ter o cuidado de declarar antecipadamente todas as


variveis que vai utilizar em seu algoritmo, de acordo com o tipo de dado que
a varivel vai representar. Os dados ocupam espao na memria do
computador e a declarao de variveis a maneira de reservar os espaos de
que os dados necessitam.

18

Tcnico em Informtica

Competncia 01
1.7.1.1 Tipo de Varivel
Os tipos de variveis que iremos utilizar so:
Caracter 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.
1.7.1.2 Declarao de Varivel
O espao reservado pela declarao depende do tipo de dado declarado. O
programador apenas faz a declarao e o sistema operacional, que gerencia
os recursos do computador, encarrega-se de reservar o espao especfico.
Sintaxe para declarao de variveis:
var
<nome_varivel>: <tipo>
Onde:
nome_varivel = nome da varivel. No pode ter espao, smbolos (exceto
sublinhado _) e nem iniciar por nmero. No pode ser uma palavra
reservada utilizada na linguagem de programao, como algoritmo, var, inicio,

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 estive
entre colchetes []
o parmetro
opcional.

19

Lgica de Programao

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

20

Tcnico em Informtica

Competncia 01

Figura 9-Exemplo de um algoritmo


Fonte: O autor (2013)

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.

Figura 10-Exemplo de um algoritmo


Fonte: O autor (2013)

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, por exemplo, as linguagem java e phyton.
O recurso de deslocar os parmetros subordinados a um comando ou
tambm o de deslocar os comandos subordinados a outros comandos, como
os comandos que esto entre os comandos inicio e fim, (como na figura 11 a
seguir) conhecido como endentao. Normalmente, trs posies so

21

Lgica de Programao

Competncia 01
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.

Figura 11-Exemplo de um algoritmo


Fonte: O autor (2013)

A endentao ser exigida em nossos exerccios.


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

22

Tcnico em Informtica

Competncia 01

Figura 12-Exemplo de algoritmo com constante


Fonte: O autor (2013)

Os tipos de constantes tambm seguem os mesmos tipos de variveis: literal


ou texto, inteiro, real ou numrico e lgico.
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:

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.

algoritmo "nome_algoritmo"
// Seo de Declaraes
var
inicio
// Seo de Comandos
fimalgoritmo
Um algoritmo inicia com o comando algoritmo e finaliza com o comando
fimalgoritmo.
A sintaxe do comando algoritmo :

23

Lgica de Programao

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

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

O nome de algoritmo pode conter espao, nmero ou caracteres especiais. O


ideal colocar um nome sugestivo, de acordo com o problema que o
algoritmo resolve.
A sintaxe do comando fimalgoritmo simplesmente s o nome do
comando, sem nenhum parmetro adicional.
Um algoritmo tem duas sees:
A primeira a seo de declarao, onde deve ser colocado o comando var, j
estudado nesta competncia.
A segunda a seo de comando, que inicia com o comando inicio e 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).

24

Tcnico em Informtica

Competncia 01

Figura 13-Exemplo de um algoritmo


Fonte: O autor (2013)

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-Exemplo de um algoritmo


Fonte: O autor (2013)

1.9 Entrada de Dados

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

Para que o processamento de dados ocorra necessrio que o computador


tenha conhecimento dos dados que dever processar. O conhecimento dos
dados d-se 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>)

25

Lgica de Programao

Competncia 01
Onde nome_varivel o nome da varivel que armazenar o dado a ser
recebido.
Exemplos:
leia (nome)
leia (numero)
Este comando pressupe que o dado vir de alguma fonte, que em nosso caso
ser do teclado. Quando o programa for executado ocorrer uma pausa para
que o usurio digite o dado que ele deseja introduzir. O dado introduzido
dever ser do mesmo tipo declarado para a varivel que receber o dado.
1.10 Sada de Informaes
Aps o processamento, normalmente, informaes so exibidas. Dizemos que
esta exibio a sada do processamento. A sada de informao ocorre
atravs do comando escreva.
Tudo que foi escrito no algoritmo, como a declarao das variveis, por
exemplo, no visualizado pelo usurio durante a sua execuo. Apenas o
que tiver determinado pelo comando escreva. Este comando a forma que
o algoritmo tem para se comunicar com o usurio do algoritmo. Ele
pressupe que a informao ser exibida na tela.
A sintaxe do comando escreva :
escreva ([texto , ] [nome_varivel])
Onde:
texto = texto opcional, pois se encontra entre colchete. 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.

26

Tcnico em Informtica

Competncia 01
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 guarda-o em uma varivel, mas na atribuio
o dado no recebido da digitao de um usurio via teclado, mas sim
conforme a instruo fornecida pelo programador.
A atribuio ocorre atravs do comando := (dois ponto e igual sem espao
entre eles) ou <- (maior que e hfen sem espao entre os smbolos). Quando
encontramos este comando l-se Recebe.
Os comandos := / <- tem 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

27

Lgica de Programao

Competncia 01
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 receba
por atribuio a constante literal jose.
No terceiro exemplo o programador determinou que a varivel resposta
receba por atribuio o resultado da operao aritmtica de adio dos
valores armazenados nas variveis numero1 e numero2.
1.12 Ferramenta para Edio e Teste de Algoritmo
Como o algoritmo um pseudocdigo, no h como execut-lo para testar se
ele est correto. Tradicionalmente o teste simulado seguindo as instrues e
verificando se h erros. Esse tipo de teste chamado teste de mesa.
Atualmente j existem diversas ferramentas que permitem escrever e testar o
algoritmo. Usaremos a ferramenta chamada Visualg. Voc ir precisar desta
ferramenta para realizar exerccios e 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.

28

Tcnico em Informtica

Competncia 01
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 Visualg


Fonte: O autor (2013)

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: O autor (2013)

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

29

Lgica de Programao

Competncia 01
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 ferramenta do Visualg


Fonte: O autor (2013)

Na parte central do Visualg, encontramos a janela de edio onde devemos


digitar o algoritmo (figura 18). A estrutura bsica de um algoritmo j vem
codificada.

Figura 18-Janela de edio do Visualg


Fonte: O autor (2013)

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: O autor (2013)

30

Tcnico em Informtica

Competncia 01
Na parte inferior direita temos a janela em branco, que a janela de
simulao, onde simulada a execuo do algoritmo.
Finalmente temos a barra de status com informaes sobre o nmero da linha
e da coluna em que o cursor est posicionado, o estado do algoritmo (em
branco ou modificado, se houve alguma modificao no cdigo do algoritmo
depois da ltima vez em que ele foi salvo) e informao para acessar os
comandos predefinidos do visualg (figura 20).

Figura 20-Barra de status do Visualg


Fonte: O autor (2013)

Para dominar
melhor as
funcionalidades do
Visualg,
recomendamos que
voc leia a apostila
encontrada no
endereo:
www.slideshare.net/
regispires/apostilasobre-o-visualgpresentation.

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 d o algoritmo. Na
primeira linha, substitua o texto semnome pelo texto Somar 2 nmeros.
Depois, abaixo do comando var digite a declarao das variveis numero1,
numero2 e soma. No se esquea de fazer a endentao (deslocar trs
posies da margem esquerda).

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

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
var
numero1, numero2, soma: inteiro

31

Lgica de Programao

Competncia 01
// 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-Destaque do cone executar - Visualg


Fonte: O autor (2013)

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.

32

Tcnico em Informtica

Competncia 01

Figura 22-Execuo inicial de um algoritmo no Visualg


Fonte: O autor (2013)

Observe que a janela de variveis exibe as trs variveis declaradas, seu tipo (I
indicando inteiro) e seus respectivos valores, que at o presente momento 0
(zero).
A janela de simulao informa que houve o incio da execuo do algoritmo.
Neste momento a execuo est parada aguardando a digitao do primeiro
nmero para ser armazenado na varivel 1, j que a primeira instruo da
seo de comandos possui a funo de ler um dado de entrada. O
computador est aguardando este dado de entrada. Digite um nmero, por
exemplo: 2, e tecle ENTER. Observe que na janela de variveis o valor da
varivel nmero1 mudou 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 atendo a estas duas janelas.
Automaticamente a segunda instruo foi executada. Como tambm uma

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.

33

Lgica de Programao

Competncia 01
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 so
ma 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/dG
8vhXiwsjE a
execuo de um
algoritmo em cada
um dos modos de
execuo disponvel
do Visualg.

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


Voc deve estar pensando: quando houve as pausas para entrada dos dados,
eu soube que era para digitar nmeros para cada pausa porque fui eu quem
digitou o algoritmo. Mas se o usurio fosse outra pessoa, ela no saberia que
dado deveria digitar. Ento, como voc j aprendeu um comando que escreve
na tela, antes de cada comando leia voc pode acrescentar um comando
escreva com uma mensagem indicando o dado que dever ser digitado.
Acrescente as duas linhas em destaque exatamente antes de cada comando
leia, como demonstrado no algoritmo a seguir:
No se esquea de que o texto deve estar entre aspas.
Que tal tambm acrescentar um texto ao resultado final da varivel soma?
Lembre-se da vrgula para separar o texto da varivel.
algoritmo "Somar 2 nmeros"
// Seo de Declaraes
var
numero1, numero2, soma: inteiro
// seo de comandos
Inicio
escreva (Digite um nmero inteiro)
leia (numero1)

34

Tcnico em Informtica

Competncia 01
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.

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

35

Lgica de Programao

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, que so: 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 variareis numero1 e numero2.

36

Tcnico em Informtica

Competncia 02
algoritmo "Operaes Matemticas"
var
numero1: inteiro
numero2: inteiro
somar: inteiro
subtrair: inteiro
multiplicar: inteiro
dividir: real
// como uma diviso pode ocasionar um
// valor que no inteiro, a varivel
// dividir foi declarada como real.
inicio
escreva (Digite um nmero inteiro: )
leia (numero1)
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
Sempre que houver um operador de diviso, pode ocorrer um resultado c om
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

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.

37

Lgica de Programao

Competncia 02
regra a partir dos exemplos que seguem:
Exemplo 1: 10+20/2
Resulta em 20, pois primeiro resolvida a diviso e depois a adio.
Exemplo 2: 4*2+10/2
Resulta em 13, pois primeiro so resolvidas a multiplicao e a diviso e
depois a adio.
Para alterar as prioridades possvel utilizar parnteses. Se nos exemplos
anteriores a necessidade fosse resolver primeiro as operaes de adies,
deveramos ter envolvido a parte da expresso que requer prioridade entre
parnteses. Observe nos prximos exemplos como os parnteses mudam o
resultado da expresso:
Exemplo 1: (10+20)/2
Resulta em 15, pois os parnteses obrigam a resolver primeiro o que estiver
dentro dos parnteses, neste caso a adio. S depois a diviso resolvida.
Exemplo 2: 4*(2+10)/2
Resulta em 24, pois primeiro resolvida a adio priorizada pelos parnteses
e depois a multiplicao e diviso.
Para fixar esta regra de forma prtica, vamos analisar um algoritmo para
calcular a mdia aritmtica de duas notas.
1
2
3
4
5
6
7

algoritmo "Calcula Media"


var
nota1: real
nota2: real
media: real
inicio
escreva ("Digite a 1 nota: ")

38

Tcnico em Informtica

Competncia 02
8
9
10
11
12
13

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

Primeiro ponto a ser observado que as variveis foram declaradas do tipo


real, pois tanto as notas quanto a mdia podem ter valore s 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/Fd
ENDhbUoWg um
resumo sobre os
assuntos estudados
neste item.

2.3 Outros Operadores Aritmticos


Alm dos operadores aritmticos bsicos j estudados, existem outros
operadores aritmticos que so utilizados em operaes matemticas. Na
tabela 2 apresentamos dois operadores utilizados em operaes matemticas,
que esto representados na figura 23.
OPERADORES
DIV
MOD

OPERAO
Quociente de uma diviso inteira
Resto de uma diviso inteira

Tabela 2 - Operadores para diviso entre nmeros inteiros


Fonte: O autor (2013)

Figura 23-Quociente e resto (entre nmeros inteiros)


Fonte: O autor (2013)

39

Lgica de Programao

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.
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 operado r MOD,
como no exemplo: resto := (numero1 % numero2).

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

2.4 Funes Aritmticas


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

Assista no vdeo
postado no link
http://youtu.be/LRT7
Udjn00Q
o exemplo anterior
sendo executado e
comentado.

40

Tcnico em Informtica

Competncia 02
Em linhas gerais, a sintaxe de uma funo :
Nome_funo (<lista de argumento>): tipo
Onde:
Nome_funao = a palavra reservada que representa a funo.
Lista de argumento = um ou mais dados necessrios para que a funo
possa processar o seu objetivo.
Tipo = Tipo do resultado que a funo retorna aps o processamento.
Toda funo retorna (resulta) em um valor que pode ser usado como parte de
uma expresso matemtica, armazenado ou exibido. O tipo no escrito no
algoritmo, ele apenas representa o tipo do resultado esperado.
Tomemos por exemplo a funo EXP que executa a operao de
exponenciao, operao escrita como an (a elevado a n, onde a a
base e n o expoente). Sua sintaxe especfica :
EXP (<base>,<expoente>): real
Neste caso, a lista de argumentos composta de dois elementos, o primeiro a
base e o segundo o expoente. O resultado do processamento desta funo em
um valor do tipo real:
Exemplos:
numero1 := 10
numero2 := 2
resultado:= EXP(numero1, numero2)
// resultado da exponenciao sendo
// armazenada em uma varivel
resultado:= 2 * EXP(numero1, numero2) + 10
// resultado da exponenciao sendo usada

41

Lgica de Programao

Competncia 02
// como parte de uma expresso matemtica
escreva(Resultado: , EXP(numero1, numero2))
// resultado da exponenciao sendo exibida
// diretamente
Como o resultado da funo exponenciao do tipo real, a varivel que ir
armazenar o resultado de uma exponenciao dever ser declarada do tipo
real.
Na tabela 3 informamos trs funes aritmticas que podemos utilizar em
nossos prximos exerccios:
FUNO
INT
RAIZQ
QUAD

OPERAO
Converte um valor real em valor
inteiro
Raiz quadrada
Quadrado

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

Tabela 3 - Algumas funes aritmticas


Fonte: O autor (2013)

Assista ao vdeo
postado no link
http://youtu.be/nB
nalT6oG-8 onde
temos um exemplo
de um algoritmo
sendo
desenvolvido, nele
utilizada a funo
INT. No deixe de
assisti-lo.

2.5 Tabela de Prioridades


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

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

Tabela 4-Tabela geral de prioridades


Fonte: O autor (2013)

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

42

Tcnico em Informtica

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

1. Escreva um algoritmo para ler um nmero e mostrar:


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

43

Lgica de Programao

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, pois o algoritmo tem que
atender a qualquer tipo de pessoa, se a resposta ao estado civil for solteiro,
no faz sentido solicitar o nome do cnjuge. A execuo do algoritmo deve
pular esta instruo.
Este captulo ir tratar da estrutura de deciso que pode ser colocada em um
algoritmo, permitindo que haja uma tomada de deciso durante a execuo
do programa.
3.1 Operao Condicional
Para que haja uma deciso, uma operao condicional precisa ser
estabelecida, como no exemplo citado da introduo deste captulo, onde a
condio para solicitar o nome do cnjuge ser solteiro. Na programao,
uma operao condicional ocorre quando relacionamos dois elementos.
O relacionamento de dois elementos feito atravs de operadores relacionais
e sempre resulta em um valor lgico: VERDADEIRO ou FALSO. Na tabela 5
esto listados os operadores relacionais que podem ser usados em uma
operao condicional.

44

Tcnico em Informtica

Competncia 03
OPERADOR
=
<>
>
<
>=
<=

OBJETIVO
Igual
Diferente
Maior que
Menor que
Maior ou igual
Menor ou igual

Tabela 5 - Operadores relacionais


Fonte: O autor (2013)

A partir dos operadores da tabela 5, podemos elaborar operaes


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

RESULTADO

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

45

Lgica de Programao

Competncia 03
OPERAO
COMENTRIO
RESULTADO

OPERAO
COMENTRIO
RESULTADO
OPERAO
COMENTRIO

RESULTADO

OBSERVAO

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

46

Tcnico em Informtica

Competncia 03
OPERAO
COMENTRIO

RESULTADO

OPERAO
COMENTRIO

RESULTADO

OBSERVAO

1 = 1
O primeiro elemento da comparao o nmero 1 e o
segundo elemento o literal 1 (observe que est entre
aspas, o que caracteriza ser um literal).
O resultado da comparao FALSO, pois esto sendo
comparados elementos de tipos diferentes. Veja a
observao do exemplo anterior.
A < a
Como A e a esto entre aspas, no se tratam de
variveis, mas de constantes literais (texto). Est sendo
comparado se a letra A maiscula menor que a letra a
minscula.
O resultado da comparao VERDADEIRO.
Aqui voc pode ter achado essa comparao estranha, pode
ter pensado: -mas como eu posso afirmar que uma letra
menor ou maior que a outra?. A explicao pra isso segue
logo abaixo, no deixem de ler o texto do link.

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


cdigo que est relacionado em 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

47

Lgica de Programao

Competncia 03
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 as duas condies (a primeira
condio E a segunda condio). Surge ento a necessidade de conectarmos
duas condies. Nesse caso, a sintaxe da linguagem algortmica exige que
cada condio esteja entre parnteses.
A tabela 6 apresenta dois operadores lgicos de conexo que permitem a
elaborao de expresses lgicas mais complexas:
CONECTOR
E
OU
Tabela 6 - Operadores Lgicos
Fonte: O autor (2013)

Como cada condio resulta em um valor lgico (VERDADEIRO ou FALSO),


aplicam-se as tabelas 7 e 8, denominadas Tabela Verdade, para definir o
resultado final da expresso.
E
RESULTADO DA 1
CONDIO

RESULTADO DA 2
CONDIO

RESULTADO DA
EXPRESSO

V
V
F
F

V
F
V
F

V
F
F
F

Tabela 7 - Tabela Verdade E


Fonte: O autor (2013)

48

Tcnico em Informtica

Competncia 03
OU
RESULTADO DA 1
CONDIO

RESULTADO DA 2
CONDIO

RESULTADO DA
EXPRESSO

V
V
F
F

V
F
V
F

V
V
V
F

Tabela 08 - Tabela Verdade OU


Fonte: O autor (2013)

Exemplos de operaes condicionais:


Exemplo 1: Para verificar se uma pessoa obrigada a votar, podemos ter a
seguinte expresso:
(idade > 17) E (idade < 66)
Se a primeira condio (idade > 17) for VERDADEIRA E a segunda condio
(idade < 66) tambm for VERDADEIRA, pela tabela verdade do E, o resultado
final da expresso VERDADEIRO. Ainda pela tabela verdade do E, se alguma
das condies resultarem em FALSO, o resultado final da expresso FALSO.
Exemplo 2: Para verificar se uma pessoa no obrigada a votar, podemos ter
a seguinte expresso:
(idade <18) OU (idade >65)
Se alguma das condies (idade < 18) OU (idade > 65) for VERDADEIRA, pela
tabela verdade do OU, o resultado final da expresso VERDADEIRO. Ainda
pela tabela verdade do OU, o resultado final da expresso s ser FALSO se as
duas condies resultarem em FALSO.
Alm dos operadores E e OU, para conectar condies, h tambm o
operador de negao NAO, que inverte o resultado de uma expresso lgica.
Este operador escrito sem o acento ~ na letra A.

49

Lgica de Programao

Competncia 03
Para exemplificarmos seu uso vamos considerar uma situao onde teremos
como entrada o tipo de ligao telefnica, que pode ser: L (local fixo), C
(celular local), E (estadual) ou I (internacional). Sempre que a ligao for do
tipo C, E ou I dever ser solicitado 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 tem
prioridade de execuo em uma expresso lgica. A tabela 9 apresenta as
prioridades dos operadores lgicos.
PRIORIDADE
1
2
3

OPERADOR
NAO
E
OU

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:

50

Tcnico em Informtica

Competncia 03
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:
falso OU
falso

verdadeiro E

(verdadeiro OU

falso) E

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:

51

Lgica de Programao

Competncia 03
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 podem ser escritas:
Expresso 1: idade>15 E idade<=17 OU idade>65
Expresso 2: idade>65 OU idade>15 E idade<=17
Voc deve lembrar-se de que pela tabela 7 de prioridade dos operadores

52

Tcnico em Informtica

Competncia 03
lgicos, independente da ordem em que os operadores lgicos esto
colocados na expresso, primeiro deve ser resolvido o operador E (verificando
se a idade est na faixa de 16 a 17 anos) para s depois verificar o operador
OU.
Se o valor armazenado na varivel idade for 7 anos, teremos pela primeira
expresso:
(7>15) E (7<=17) OU (7>65)
Resolvendo as condies teremos:
falso E verdadeiro OU falso
Resolvendo o operador E (pela tabela 7 - tabela verdade E), falso E verdadeiro
resulta em falso, ficando assim a expresso:
falso OU falso
Por fim, resolvendo o operador OU (pela tabela 8 tabela verdade OU), falso
OU falso resulta em falso, ou seja, falso para uma pessoa de 7 anos que o
voto opcional.
Agora faa o teste acima com as idades 16, 30 e 70 anos e verifique como o
resultado corresponde realidade em relao ao que a lei eleitoral estabelece
quanto idade para o voto opcional.
Tambm resolva a expresso 2 abaixo, com as idades 7, 16, 30 e 70 e
comprove que o resultado o mesmo da expresso 1.
Expresso 2: (idade>65) OU (idade>15) E (idade<=17)
Exemplo 2: Agora consideremos a situao onde para ser aprovado o aluno

53

Lgica de Programao

Competncia 03
tem que:
Caso 1: Ter frequentado pelo menos a 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:

54

Tcnico em Informtica

Competncia 03
falso E verdadeiro OU falso
Resolvendo o operador E (pela tabela 7 - tabela verdade E), falso E verdadeiro
resulta em falso, ficando assim a expresso:
falso OU falso
Por fim, resolvendo o operador OU (pela tabela 8 tabela verdade OU), falso
OU falso resulta em falso, ou seja, falso para uma pessoa com 60% de
frequncia e conceito A que esteja aprovado.
Tambm resolva a expresso 2 com os mesmos valores e comprove que o
resultado o mesmo da expresso 1.
Expresso 2: (conc=A) OU (conc=B) E (perc_freq>=75)
Bem, a voc pergunta: No vi erro nenhum, cad o erro lgico de que voc
falou?. Realmente, para os dados colocados o erro no aparece. Mas ai que
est o segredo do que estamos estudando a lgica de programao
utilizando algoritmos. Para que um algoritmo esteja correto, ele tem que
atender corretamente a situao de todos os alunos que possamos imaginar.
Vamos colocar agora um aluno tambm com 60% de frequncia e com o
conceito B, ficando assim, pela 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:

55

Lgica de Programao

Competncia 03
falso OU verdadeiro
Resolvendo o operador OU (pela tabela 8 tabela verdade OU), falso OU
verdadeiro resulta em verdadeiro, ou seja, verdadeiro para uma pessoa
com 60% de frequncia e conceito B que esteja aprovado, o que no faz o
menor sentido, porque ele tem apenas 60% de frequncia. Mesmo se
utilizarmos a expresso 2, o resultado tambm estaria errado.
Esse tipo de erro o que chamamos de erro lgico, uma vez que a sintaxe da
expresso est correta, mas a lgica em relao ao problema que desejamos
resolver no est.
Vamos pensar mais sobre o problema?
Para ser aprovado um aluno deve atender aos dois casos seguintes:
Caso 1: perc_freq>=75
Caso 2: (conc=A) OU (conc=B)
Como temos dois casos, mas trs condies, o computador no sabe se so
trs casos ou dois casos, combinando a 1 condio com a 2 condio ou
combinando a 2 condio com a 3 condio. Nessa situao, ele obedece
regra de prioridade dos conectores lgicos. Analisando novamente as duas
condies vistas anteriormente, o computador estar resolvendo primeiro o
conector lgico E, que tem mais prioridade que o conector lgico OU,
conforme destacado nas expresses abaixo:
Expresso 1: (perc_freq>=75) E (conc=A) OU (conc=B)
Expresso 2: (conc=A) OU (conc=B) E (perc_freq>=75)
Para fazer o Caso 2 ser resolvido prioritariamente e s depois ser conectado
ao Caso 1, voc deve recorrer ao uso dos parnteses, pois ele faz com que a
expresso que est dentro dos parnteses seja resolvida primeiro, conforme

56

Tcnico em Informtica

Competncia 03
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)
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

57

Lgica de Programao

Competncia 03
que envolvem a tomada de deciso por parte do computador, via linguagem
de programao algortmica. Agora chegou a hora de conhecermos o que ir
suportar a tomada de deciso e alterar o fluxo do programa. Denominamos
de estrutura, porque no uma simples instruo de uma linha, mas no
mnimo duas linhas que formaro um bloco de instrues.
3.4.1 Estrutura de Deciso Simples
Esta estrutura utilizada em situaes onde uma mudana da sequncia
normal de execuo das instrues deve ocorrer apenas se a condio
avaliada resultar em um valor lgico VERDADEIRO.
Se o resultado da condio avaliada for um valor lgico FALSO, no haver
mudana da sequncia e a execuo segue seu fluxo normal.
A representao grfica da figura 23faz 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)

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


SE <expresso_condicional> ENTAO
<bloco_de_instrues>

58

Tcnico em Informtica

Competncia 03
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 estes dois comandos podemos colocar diversas
instrues, tantas quanto forem necessrias para resolver o problema. A
expresso condicional deve atender aos conceitos estudados nos itens
anteriores deste captulo.
Consideremos uma situao onde dever ser concedido um desconto quando
a venda de um produto for maior que quatro unidades. Desenvolvemos o
seguinte algoritmo para resolver este problema.
algoritmo "Estrutura de Deciso Simples"
var
preco_unit: real
quantidade: inteiro
perc_desconto: real
valor_desconto: real
preco_total: real
inicio
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

59

Lgica de Programao

Competncia 03
// retirando o desconto do preco total
preco_total := preco_total - valor_desconto
fimse
escreva("Preo Total: ", preco_total)
fimalgoritmo
As instrues colocadas entre os comandos se e fimse s sero executadas se
a expresso lgica do comando se resultar em verdadeiro. Nesse caso, ser
solicitado o percentual do desconto, calculado o valor do desconto e
recalculado o preo total. Note que o preo total, sem desconto, j foi
calculado antes da estrutura se. Dentro da estrutura se o preo total apenas
est sendo recalculado, abatendo-se o valor do desconto.
3.4.2 Estrutura de Deciso Composta
Esta estrutura utilizada em situaes onde duas mudanas de sequncia so
previstas. Uma mudana de sequncia executada se o resultado da condio
avaliada for um valor lgico VERDADEIRO e a outra mudana de sequncia
ser executada se o resultado da condio avaliada for um valor lgico FALSO.
Caro aluno, vamos comparar novamente com uma avenida? Observe na figura
24, 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)

60

Tcnico em Informtica

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

61

Lgica de Programao

Competncia 03
escreval ("Aluno Aprovado")
fimse
fimalgoritmo
Entendeu? Aps calcular e mostrar a mdia preciso informar uma das
alternativas: aprovado ou reprovado. Como so duas alternativas colocamos
uma estrutura de deciso composta testando se a mdia inferior a 6. Se
resultar em verdadeiro, ser mostrado Aluno Reprovado, se no resultar em
verdadeiro s pode resultar em falso, neste caso ser mostrado Aluno
Aprovado. No legal? assim que o computador toma decises.
Agora, vamos desenvolver um algoritmo para informar se um nmero inteiro
par ou mpar. Voc j pode imaginar que uma estrutura de deciso
composta deve ser utilizada porque dois caminhos so possveis: um caminho
se o nmero for par e outro caminho se o nmero no for par, ou seja, for
mpar. E como saber se um nmero par? Bem, todo nmero par quando
dividido por 2, resta 0. Opa! Lembrou-se do operador MOD, estudado na
competncia anterior, que mostra o resto de uma diviso inteira? Ento,
vamos combinar uma estrutura condicional e uma expresso utilizando o
operador MOD para resolver o problema.
algoritmo "Par ou Impar"
var
numero: inteiro
inicio
escreva ("Digite um nmero inteiro: ")
leia (numero)
se numero MOD 2 = 0 entao
escreva (O nmero par)
senao
escreva (O nmero impar)
fimse
fimalgoritmo

62

Tcnico em Informtica

Competncia 03
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, ao qual 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
escreva ("Digite a 1 nota: ")
leia (nota1)

63

Lgica de Programao

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

Para uma reviso


geral sobre os
assuntos desta
competncia,
assista ao vdeo
postado no link
http://youtu.be/Q1
D-HxPD7wg

As atividades a seguir so para que voc possa praticar e aprofundar sua


aprendizagem.
1. Escreva um algoritmo para ler dois preos diferentes de um produto. Os
valores dos preos podero ser informados em qualquer ordem: primeiro o
menor e depois o maior ou vice-versa. O algoritmo dever executar um
processamento para que o menor preo fique armazenado na 1 varivel e o
maior preo fique armazenado na 2 varivel. O algoritmo dever mostrar os
preos em ordem do maior para o menor.
2. O valor do ingresso para um evento acadmico custa R$ 70,00. Escreva um
algoritmo para ler o tipo de participante que ir participar do evento, sendo E
para estudante e P para professor. Dever ser exibido o valor que deve pagar
pelo ingresso.

64

Tcnico em Informtica

Competncia 03
Obs.: Estudante paga 50% do valor normal do ingresso.
3. Escreva um algoritmo para ler o preo do ingresso de um show, a
quantidade de ingressos vendidos do tipo inteiro e a quantidade de ingressos
vendidos do tipo meia-entrada. Calcule e mostre o valor total arrecadado,
considerando que o ingresso do tipo meia-entrada custa metade do ingresso
do tipo inteiro.
4. Escreva um algoritmo para ler dois nmeros e mostrar o maior dos
nmeros ou, se os nmeros forem iguais, mostrar o texto Nmeros iguais.
5. Escreva um algoritmo para ler o valor de 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 um dos
participantes deve pagar, considerando que mulheres e crianas pagam a
metade do valor que os homens devem pagar.

65

Lgica de Programao

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
sequencias de instrues em um algoritmo, existem vrias estruturas que
permitem a repetio de uma sequencia 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

66

Tcnico em Informtica

Competncia 04
for FALSO ocorrer nova repetio do bloco de instruo. A cada final de
repetio a expresso condicional avaliada. Quando acontecer do resultado
da expresso condicional ser VERDADEIRO, a repetio para e a execuo do
algoritmo continua sequencialmente.
Para compreender melhor o conceito desta repetio, observe o seguinte
pseudocdigo:
Instruo_1
Instruo_2
Instruo_3
REPITA
Instruo_4
Instruo_5
ATE condio
Instruo_6
Instruo_7
As instrues 1, 2 e 3 sero executadas sequencialmente no incio da
execuo do algoritmo.
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

67

Lgica de Programao

Competncia 04
deve ficar da seguinte forma:
algoritmo "Calcula Media"
var
nota1, nota2, media: real
inicio
repita
escreva ("Digite a 1 nota: ")
leia (nota1)
ate (nota1<=10)
repita
escreva ("Digite a 2 nota: ")
leia (nota2)
ate (nota2<=10)
media := (nota1 + nota2) / 2
escreva ("A mdia : ", media)
fimalgoritmo

Assista ao vdeo
postado no link
http://youtu.be/9x
CtVeIJWXk
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 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>

68

Tcnico em Informtica

Competncia 04
Vamos desenvolver um algoritmo para receber o sexo de vrias pessoas.
Dever ser digitado M para masculino e F para feminino. Para finalizar o
algoritmo dever ser digitado o sexo X. Ao final da execuo o algoritmo
dever exibir a quantidade de pessoas do sexo masculino e a quantidade de
pessoas do sexo feminino.
algoritmo "Contador"
var
sexo: literal
masculino, feminino: inteiro
inicio
// Iniciando o valor dos contadores com zero
masculino := 0
feminino := 0
repita
escreva ("Digite o sexo (M/F): ")
leia (sexo)
se sexo=M entao
masculino := masculino + 1
senao
se sexo=F entao
feminino := feminino + 1
fimse
fimse
ate (sexo=X)
escreval ("Masculino(s): ", masculino)
escreval ("Feminino(s): ", feminino)
fimalgoritmo
Como a contagem realizada a partir de um valor inicial, inicializamos as
variveis contadoras masculino e feminino com o valor zero no incio da
seo de comandos.
Nesse algoritmo, toda vez que digitado a letra M para uma leitura de um

69

Lgica de Programao

Competncia 04
sexo, adicionado o valor da constante numrica 1 a varivel contadora
masculino. E toda vez que digitado 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>
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

70

Tcnico em Informtica

Competncia 04
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 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.

71

Lgica de Programao

Competncia 04
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 ir
repetir as instrues 4 e 5 mais uma vez ou encerrar a repetio e executar os
comandos 5 e 6.
Vamos elaborar um algoritmo para solicitar a quantidade de filhos de um
casal. Para cada filho dever ser solicitada a idade. No final do algoritmo
dever ser mostrada a mdia de idades dos filhos do casal.
algoritmo "Repetio"
var
quant_filhos, idade: inteiro
contador, acumulador: inteiro
media: real
inicio
escreva(Digite a quantidade de filhos: )
leia (quant_filhos)
// Iniciando contador e acumulador com zero
contador := 0

72

Tcnico em Informtica

Competncia 04
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.b
e/SE7Tu1UE3vQ
a execuo
comentada deste
algoritmo.

4.5 Estrutura com Repetio Definida


Em situaes onde a quantidade de repetio j conhecida, podemos utilizar
a estrutura de repetio PARA, que tem a seguinte sintaxe:
PARA <contador> DE <valor_inicial> ATE <valor_final> FACA
<bloco_de_instrues>
FIMPARA
Onde:
Contador: uma varivel contadora.
Valor_inicial: o valor que inicializar o contador automaticamente.
Valor_final: o valor que, quando atingido pelo contador, encerrar a
repetio.
A cada repetio realizada o valor da varivel controladora incrementado
automaticamente em 1.
Vamos desenvolver um algoritmo para informar a temperatura mdia de cada

73

Lgica de Programao

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

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 aprovada e a
quantidade de alunos reprovada.
Considere que a mdia para aprovao 6.
2.Escreva um algoritmo para ler o sexo de 10 participantes de um congresso.
O algoritmo deve criticar para que seja aceito apenas as letras M, m ,F e

74

Tcnico em Informtica

Competncia 04
f como entrada para a leitura do sexo. No final o algoritmo deve mostrar se
houve mais participantes do sexo masculino, mais participantes do sexo
feminino ou se a quantidade de participantes do sexo masculino e do sexo
feminino foram 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

Lgica de Programao

CONCLUSO
Prezado aluno, finalmente conclumos as quatro competncias previstas para
esta disciplina, onde tivemos a oportunidade de aprender como programar
um computador.
Iniciamos pelos princpios da lgica de programao algortmica, conhecendo
sobre dados e informaes, linguagem de programao, 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? 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

Tcnico em Informtica

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.

77

Lgica de Programao