Upload
sgs-fotolitos-fotolitos
View
32
Download
0
Embed Size (px)
Citation preview
Tcnico em Informtica
Aldo de Moura Lima
2013
Lgica de Programao
Presidenta da Repblica Dilma Vana Rousseff Vice-presidente da Repblica Michel Temer Ministro da Educao Aloizio Mercadante Oliva Secretrio de Educao Profissional e Tecnolgica Marco Antnio de Oliveira Diretor de Integrao das Redes Marcelo Machado Feres Coordenao Geral de Fortalecimento Carlos Artur de Carvalho Aras
Governador do Estado de Pernambuco Eduardo Henrique Accioly Campos
Vice-governador do Estado de Pernambuco
Joo Soares Lyra Neto
Secretrio de Educao Jos Ricardo Wanderley Dantas de Oliveira
Secretrio Executivo de Educao Profissional
Paulo Fernando de Vasconcelos Dutra
Gerente Geral de Educao Profissional Luciane Alves Santos Pula
Gestor de Educao a Distncia
George Bento Catunda
Coordenao do Curso
Joo Ferreira da Silva Jnior
Coordenao de Design Instrucional Diogo Galvo
Reviso de Lngua Portuguesa
Carlos Cunha
Diagramao Renata Otero
INTRODUO ................................................................................................... 3
1. COMPETNCIA 01 | CONHECER OS PRINCPIOS DE LGICA DE
PROGRAMAO ALGORTMICA ....................................................................... 5
1.1 Dado e informao .................................................................. 5
1.2 Sistema computacional ........................................................... 7
1.3 Desenvolvimento de software ................................................. 8
1.4 Codificao ............................................................................ 10
1.5 Lgica de programao ......................................................... 14
1.6 Lgica de programao algortmica ....................................... 17
1.7 Representao e armazenamento dos dados ........................ 17
1.8 Estrutura de um algoritmo .................................................... 23
1.9 Entrada de dados .................................................................. 25
1.10 Sada de dados .................................................................... 26
1.11 Atribuio de dados ............................................................ 27
1.12 Ferramenta para edio e teste de algoritmo ..................... 28
2. COMPETNCIA 02 | DESENVOLVER UM ALGORTMICO PARA A REALIZAO
DE OPERAES MATEMTICAS. .................................................................... 35
2.1 Operadores aritmticos bsicos ............................................ 35
2.2 Prioridade dos operadores .................................................... 36
2.3 Outros operadores aritmticos ............................................. 38
2.4 Funes aritmticas .............................................................. 39
2.4 Tabela de prioridades ............................................................ 41
3. COMPETNCIA 03 | DESENVOLVER UM ALGORTMICO PARA RESOLUO DE
UM PROBLEMA UTILIZANDO ESTRUTURA DE DECISO. ................................. 42
3.1 Operao condicional ............................................................ 42
3.2 Operadores lgicos ................................................................ 45
3.3 Prioridade dos operadores lgicos ........................................ 47
Sumrio
3.4 Estrutura de Deciso ............................................................. 55
4. COMPETNCIA 04 | DESENVOLVER UM ALGORITMO PARA RESOLUO DE
UM PROBLEMA UTILIZANDO ESTRUTURA DE REPETIO. ............................. 61
4.1 Estrutura de repetio indefinida, com uma repetio
obrigatria .................................................................................. 61
4.2 Contador ............................................................................... 63
4.3 Acumulador ........................................................................... 64
4.4 Estrutura de repetio indefinida, com repetio opcional ... 65
4.5 Estrutura com repetio definida .......................................... 67
REFERNCIAS ................................................................................................. 69
CURRCULO DO PROFESSOR-PESQUISADOR ................................................... 70
3
Lgica de Programao
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 envolve a
programao do computador.
A programao permite a instruo de um computador para que ele realize as
tarefas que desejamos, como por exemplo: controlar o estoque de uma
empresa, simular os cenrios de um jogo ou disponibilizar imagens em uma
tela. Todo computador precisa de programas para fazer com que seus
componentes eletrnicos processem os dados que vo resultar nos resultados
que desejamos.
A programao de computador atende a uma forma diferente da forma que
um ser humano utiliza para instruir outro ser humano. Esta forma envolve a
lgica de programao e poder ser expressa de vrias formas. Utilizaremos a
forma algortmica.
Nesta disciplina voc aprender os princpios e as principais estruturas que
regem a programao e, realizando os exerccios adequadamente, o seu
raciocnio estar capacitado a criar qualquer tipo de programa, quando em
disciplina posterior aprender uma linguagem de programao especifica para
computao.
Iniciaremos esta disciplina conhecendo os princpios da lgica de programao
e como descrev-la na forma algortmica. Nesta forma as instrues que o
computador deve executar so codificadas em forma de texto, com comandos
escritos na linguagem portuguesa. Compreenderemos como os dados so
representados e tratados na programao e conheceremos um ambiente que
nos permitir escrever e executar algoritmos.
4
Tcnico em Informtica
Posteriormente iremos conhecer os operadores aritmticos para que
possamos desenvolver algoritmos para a realizao de operaes
matemticas, o que nos permitir resolver qualquer problema desta natureza.
Em continuidade, iremos aprender como o computador toma deciso e como
so escritas estruturas de deciso.
Finalizaremos nossos estudos aprendendo outro tipo de estrutura que
permitir repetir um grupo de instrues quantas vezes forem necessrias,
dependendo de cada situao.
uma disciplina de fundamental importncia, pois servir de base para as
demais disciplinas deste mdulo, onde o raciocnio lgico estar sendo
desenvolvido, capacidade que se espera de um tcnico em informtica,
independente da rea em que atue. Dai a importncia desta disciplina em
todo o curso.
Como programao uma rea muito abrangente, voc precisar
complementar seus estudos atravs de outros materiais de estudos que
estaremos propondo deste caderno e em outros que voc, sem dvida, ir
pesquisar.
Tenho certeza que voc no vai querer ficar fora desta oportunidade.
Forte abrao,
Aldo Moura
5
Lgica de Programao
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
que envolvem esta rea da informtica.
1.1 Dado e informao
Primeiramente precisamos compreender dois conceitos elementares da
informtica que so: dado e informao.
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, [email protected], 2, F#, casa
Imagens: Composto por figuras ou fotos.
udio: Composto por sons ou rudos.
Vdeo: composto por imagens ou figuras em movimento.
Competncia 01
6
Tcnico em Informtica
1.1.2 Informao
Quando atravs de processamento 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 3 listas que possivelmente sofreram
processamento resultando em:
1 lista: Relao dos nomes de pessoas em ordem alfabtica.
2 lista: Relao dos nomes de pessoas do sexo feminino em ordem
alfabtica.
3 lista: Relao dos nomes de pessoas do sexo masculino em ordem
alfabtica.
Afonso
Alusio
Antonio
Beatriz
Beatriz
Betnia
Marta
Mrcia
Afonso
Alusio
Antonio
Cssio
Competncia 01 Competncia 01
7
Lgica de Programao
Betnia
Cssio
Celso
Ccero
Marta
Mrcia
Paulo
Pedro
Renato
Rute
Vnia
Vernica
Zlia
Rute
Vnia
Vernica
Zlia
Celso
Ccero
Paulo
Pedro
Renato
1.2 Sistema computacional
Um sistema baseado em computador um composto de infraestrutura
tecnolgica cujos elementos so organizados para coletar, manipular e
processar dados em informaes.
1.2.1 Elementos de um sistema computacional
Um sistema computacional composto pelos elementos representados na
figura 1.
Competncia 01
8
Tcnico em Informtica
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 e editores de texto, controle de
estoque.
1.3 Desenvolvimento de software
A cincia que trata do desenvolvimento de software conhecida como
Engenharia de Software. Ela prever que para se desenvolver um software
deve haver um processo de software definido.
Este mdulo trata
essencialmente sobre o
desenvolvimento de software.
Os outros elementos de um sistema computacional:
Pessoas: Todos que gerenciam, usam, programam e mantm o sistema.
Banco de dados: Coleo de fatos 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.
Competncia 01
9
Lgica de Programao
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 do que o software deve fazer.
Anlise: Os dados necessrios e como eles se relacionam so definidos.
Projeto: Determina como as funcionalidades do sistema sero
implementadas.
Codificao: O programa construdo, traduzindo-se o projeto em cdigo.
Teste: Verifica se as funcionalidades implementadas atendem aos
requisitos especificados.
Implantao: O software instalado e colocado em uso.
Manuteno: O software sofre manuteno para correo, adaptao ou
acrscimo funcional.
Processo de
Software:
Conjunto de atividades
relacionadas que levam produo de um produto de
software.
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.
Competncia 01
10
Tcnico em Informtica
1.4 Codificao
Na etapa da codificao sero escritos os programas que permitiro o
computador realizar o processamento eletrnico de dados.
1.4.1 Processamento de dados
Consiste em um conjunto de atividades ordenadas com o objetivo de
manipular dados iniciais em informaes desejveis.
As etapas de um processamento de dados so:
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.
Exemplos de processamento de dados:
Exemplo 1: Ordenar uma lista de nomes
Entrada: Nomes desordenados
Processamento: Ordenao
Sada: Lista ordenada de nomes
Exemplo 2: Calcular uma mdia de notas
Entrada: Notas
Processamento: Clculo
Entrada Processamento Sada
Normalmente a
etapa de Codificao executada por
profissionais de nvel tcnico um
programador. Na execuo desta etapa, 2 fatores so
relevantes: 1. A codificao
realizada atravs da escrita de um programa, que um conjunto de instrues codificado em uma linguagem especfica chamada de linguagem de programao, como por exemplo: Java, C# e PHP.
2. Como o programa instrui um hardware, que possui limitaes em relao a um 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.
Competncia 01
11
Lgica de Programao
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 de hidrulico
Sistema de 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, computadores, temos o que denominamos de
processamento eletrnico de dados.
Dependendo da quantidade de dados que desejamos processar e do
processamento que desejamos realizar, a quantidade de instrues de cada
atividade pode variar de uma a centenas ou milhares de instrues.
Exemplo 1: Para encontramos o maior nmero entre dois nmeros iniciais,
precisamos basicamente de cinco instrues:
Competncia 01
12
Tcnico em Informtica
1. Obter o 1 nmero
2. Obter o 2 nmero
3. Comparar o 1 nmero com o 2 nmero
4. Armazenar o maior nmero comparado
5. Exibir o nmero memorizado
Exemplo 2: Para encontramos o maior nmero entre trs nmeros iniciais,
precisamos basicamente de oito instrues:
1. Obter o 1 nmero
2. Obter o 2 nmero
3. Obter o 3 nmero
4. Comparar o 1 nmero com o 2 nmero
5. Armazenar o maior nmero comparado
6. Comparar o 3 nmero com o maior nmero armazenado
7. Armazenar o maior nmero comparado
8. Exibir o nmero memorizado
Aumentou apenas um nmero na comparao, mas a quantidade de
instrues quase dobrou.
Competncia 01
13
Lgica de Programao
A medida que a quantidade de nmeros a serem comparados aumentam, ou
se consideramos que podem haver nmeros iguais, a quantidade de
instrues aumentam consideravelmente.
Imaginem a quantidade de instrues que devem ter um processamento para
processar um pedido, envolvendo calculo do valor total, calculo dos impostos,
calculo dos descontos, fazer baixa do estoque, calcular as parcelas quanto for
venda 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 escrito de forma que um computador seja capaz de
executar para processar dados.
Sendo uma mquina eletrnica, o computador est submetido as 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.
1.4.5 Programador
O profissional responsvel pela elaborao do programa.
Linguagem de programao:
Conjunto de comandos (texto e
smbolos) com sentido
predeterminado e regras de sintaxe
prpria que permite a construo de
instrues que um computador possa
executar.
Codificao:
Termo utilizado em substituio a
programao, j que o ato de programar
envolve escrever um programa nos
cdigos especfico de uma linguagem de
programao.
Competncia 01
14
Tcnico em Informtica
1.5 Lgica de programao
Como uma linguagem de programao tem regras prprias, as instrues de
um programa devero ser escritas em uma sequencia lgica, para que a tarefa
seja de fato executada. Esta sequencia lgica o que chamamos de lgica de
programao.
Antes de escrever o programa propriamente dito, comum primeiro fazermos
uma representao abstrata, sem muitos detalhes, da ideia (lgica) que temos
para resolver o problema para o qual o programa est sendo criado. Os
arquitetos ou engenheiros civis normalmente fazem algo parecido. Quando
um cliente solicita que eles elaborem um projeto para a construo de um
imvel, antes de desenhar a planta arquitetnica eles primeiro fazem um
rascunho (croqui) para entender melhor o desejo do cliente e verificar com
ele se a soluo desenhada no croqui resolve o desejo do cliente. 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 maneiras bsicas de representar a lgica de
programao da forma de fluxograma ou da forma algortmica.
1.5.1 Fluxograma
uma forma de representao grfica da lgica de programao, que utiliza
smbolos como comandos. 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.
Competncia 01
15
Lgica de Programao
Figura 4 Exemplos de smbolos usados em fluxograma Fonte: O AUTOR (2013)
A partir dos exemplos de smbolos da figura 4 j podemos representar a lgica
de programao por fluxograma para somar 2 nmeros (veja Figura 5).
Figura 5 Exemplo de um fluxograma Fonte: O Autor (2013)
Nmero 2
Incio
Soma = Nmero 1 + Nmero 2
Soma
Fim
Nmero 1
Utilizado para iniciar e finalizar um fluxograma
Representar uma entrada manual
Representa um processamento a ser realizado
Representa uma apresentao de resultado
Entrada Manual
Terminador
Processo
Exibio
Competncia 01
16
Tcnico em Informtica
NICIO Usado para iniciar um algoritmo
FIM Usado para finalizar um algoritmo
LEIA Usado para entrada de dados
ESCREVA Usado para exigir um resultado
:= Usado para atribuir um valor (processamento)
inicio
leia (numero1)
leia (numero2)
soma := numero1 + numero2
escreva (soma)
fim
1.5.2 Algoritmo
uma forma de representao textual da lgica de programao, que utiliza
palavras como comandos. 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 usadas em algoritmo Fonte: O AUTOR (2013)
A maioria das palavras reservadas so palavras tambm utilizadas na lngua
portuguesa (INICIO, FIM, LEIA, ESCREVA), porm pode haver palavra
(conjunto de caracteres) que no tem correspondente na lngua portuguesa
(:=).
A partir dos exemplos de palavras da figura 6 j podemos representar a lgica
de programao algortmica para somar 2 nmeros (veja Figura 7).
Figura 7 Exemplo de um algoritmo Fonte: O AUTOR (2013)
Competncia 01
17
Lgica de Programao
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. Certos detalhes aprenderemos como parte dos objetivos de nossa
disciplina.
1.6 Lgica de programao algortmica
Conforme j explicado no sub tpico 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.
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 representando, 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 de soma ser 30. Se em outra execuo forem fornecidos os
valores 5 e 7, o valor de soma ser 12. No fcil?
No existe apenas uma maneira de
resolver um problema. Cada
programador pode desenvolver ideias diferentes e ambas
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 utilizada em programao real de computadores. Por ser uma linguagem
apenas didtica, cada escola pode desenvolver suas prprias palavras reservadas e suas prprias regras de
sintaxe. Aps o algoritmo ser
testado e comprovado que a
lgica est correta, o programador precisa codificar o programa em uma linguagem de programao.
Competncia 01
18
Tcnico em Informtica
Figura 8 Exemplos de variveis em um algoritmo Fonte: O AUTOR (2013)
O programador deve ter o cuidado de declarar 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. A
declarao de varivel reserva espao na memria do computador para os
dados que a varivel representa.
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: Carlo, [email protected], 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 apenas VERDADEIRO
ou FALSO.
inicio
leia (numero1)
leia (numero2)
soma := numero1 + numero2
escreva (soma)
fim
Variveis
Competncia 01
19
Lgica de Programao
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 encarrega-se de
reservar o espao especfico.
Sintaxe para declarao de variveis:
var
:
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
e 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 devero ser declaradas todas as variveis do
algoritmo, como no exemplo a seguir:
var
numero1: real
numero2: real
nome: literal
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.
Competncia 01
20
Tcnico em Informtica
var
numero1: inteiro
numero2: inteiro
soma: inteiro
inicio
leia (numero1)
leia (numero2)
soma := numero1 + numero2
escreva (soma)
fim
As variveis do mesmo tipo podem ser agrupadas em uma linha, separando-as
por vrgula, com apenas uma especificao do tipo, conforme o seguinte
exemplo:
var
numero1, numero2: real
nome: literal
Veja como fica o algoritmo da figura 7 com o comando de declarao das
variveis na figura 9 a seguir:
Figura 9 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. Isto para permitir uma melhor organizao do
cdigo. Nada impede que todas as variveis estivessem na mesma margem
esquerda do comando var, ou mesmo que a primeira varivel estivesse na
mesma linha do comando var, como no exemplo da figura 10.
Competncia 01
21
Lgica de Programao
var numero1: inteiro
numero2: inteiro
soma: inteiro
inicio
leia (numero1)
leia (numero2)
soma := numero1 + numero2
escreva (soma)
fim
var
numero1: inteiro
numero2: inteiro
soma: inteiro
inicio
leia (numero1)
leia (numero2)
soma := numero1 + numero2
escreva (soma)
fim
Figura 10 Exemplo de um algoritmo Fonte: O AUTOR (2013)
O recurso de deslocar os parmetros subordinados a um comando ou, como
tambm, o de deslocar os comandos subordinados a outros comandos (como
os comandos que esto entre os comandos incio e fim) conhecido como
endentao. Normalmente desloca-se 3 posies em relao a 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.
Competncia 01
22
Tcnico em Informtica
var
nota1, nota2: inteiro
media: real
inicio
leia (nota1)
leia (nota2)
media := (nota1 + nota2) / 2
escreva (media)
fim
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 2 notas, teremos
que somar as 2 notas e dividir a soma por 2. Logo, o divisor sempre ser 2.
No precisa declarar uma varivel para que o valor seja fornecido na execuo
do programa. J durante a programao podemos definir o valor do dividendo
como 2. Em nossa linguagem algortmica no utilizaremos declarao de
constantes, pois bastar escrever a constante 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 no algoritmo,
particularmente na linha da expresso que calcula a mdia aritmtica, o
nmero 2 sempre ter o mesmo valor. Logo um dado constante.
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.
Constante
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 a constante.
Competncia 01
23
Lgica de Programao
1.8 Estrutura de um algoritmo
At o momento voc aprendeu como fazer parte de um algoritmo. Ainda
esto faltando alguns detalhes para que o algoritmo esteja completo e possa
ser testado.
A linguagem de programao algortmica que estudamos utiliza a seguinte
estrutura para um algoritmo:
algoritmo "nome_algoritmo"
// Seo de Declaraes
var
inicio
// Seo de Comandos
fimalgoritmo
Um algoritmo inicia com o comando algoritmo e finalizar com o comando
fimalgoritmo.
A sintaxe do comando algoritmo :
algoritmo
Onde:
nome_algoritmo = um nome, entre aspas, que obrigatoriamente deve ser
dado ao algoritmo.
Exemplos:
algoritmo soma
algoritmo media
algoritmo Calcular mdia de 2 notas
algoritmo ## calcular rea ##
Competncia 01
24
Tcnico em Informtica
algoritmo "Somar 2 nmeros"
// Seo de Declaraes
var
numero1, numero2, soma: inteiro
// seo de comandos
inicio
leia (numero1)
leia (numero2)
soma := numero1 + numero2
escreva (soma)
fimalgoritmo
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 incio e onde as
instrues que orienta o computador so codificadas.
Com base nesta estrutura vamos codificar totalmente um algoritmo que soma
dois nmeros (veja a figura 13).
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
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).
Competncia 01
25
Lgica de Programao
algoritmo "Somar 2 nmeros"
var
numero1, numero2, soma: inteiro
inicio
// entrada de dados
leia (numero1)
leia (numero2)
// processamento
soma := numero1 + numero2
// sada
escreva (soma)
fimalgoritmo
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
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 ()
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
Competncia 01
26
Tcnico em Informtica
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 dados
Aps o processamento normalmente dados so exibidos. Dizemos que esta
exibio a sada do processamento. A sada de dado 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.
Este comando pressupe que o dado ser exibido na tela.
A sintaxe do comando escreva :
escreva ([texto , ] )
Onde:
texto = texto opcional, pois encontra-se entre colchete. Pode ser um texto
para descrever o dado que ser exibido. Caso tenha optado em colocar esse
texto, deve-se colocar uma vrgula para separar do nome da varivel.
nome_varivel = varivel que contem o dado que deseja-se exibir.
Exemplos:
escreva (numero)
escreva (Nome do aluno:, nome)
Competncia 01
27
Lgica de Programao
1.11 Atribuio de dados
Um dos processamentos mais bsico 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 guardado para ser posteriormente utilizado em
uma sada de dados, por exemplo.
A atribuio a ao de guardar um dado a uma varivel. J sabemos que o
comando LEIA recebe um dado e guarda em uma varivel, mas na atribuio o
dado no recebido da digitao de um usurio via teclado, mas conforme o
programador.
A atribuio ocorre atravs do comando := (dois ponto e igual sem espao
entre eles). Quando encontramos este comando l-se Recebe.
O comando := tem a seguinte sintaxe:
:=
Onde:
nome_varivel = varivel que armazenar o dado resultante da expresso.
expresso = constante ou expresso cujo resultado ser armazenado na
varivel.
Exemplos:
numero := 124
nome := jose
reposta := numero1 + numero2
Competncia 01
28
Tcnico em Informtica
No primeiro exemplo o programador determinou que a varivel numero
receber por atribuio a constante inteira 124.
No segundo exemplo o programador determinou que a varivel nome
receber por atribuio a constante literal jose.
No terceiro exemplo o programador determinou que a varivel reposta
receber por atribuio o resultado da operao aritmtica de adio dos
valores armazenados nas variveis numero1 e nmero2.
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 voc escrever e
testar o algoritmo. Usaremos a ferramenta chamada Visualg. Voc ir precisar
desta ferramenta para realizar exerccios e testa-los. Voc dever baixa-lo no
endereo (http://ultradownloads.com.br/download/Visualg/) e fazer sua
instalao.
Iniciaremos mostrando a tela do Visualg e algumas de suas funcionalidades.
Posteriormente, nas prximas competncias, mostraremos outras
funcionalidades.
1.12.1 Tela principal
Sempre que executamos o Visualg a tela abaixo aparece. um ambiente que
segue os padres do sistema operacional Windows e outros programas da
Microsoft (Veja a figura 15).
Competncia 01
29
Lgica de Programao
Figura 15 Tela principal do Visualg Fonte: O AUTOR (2013)
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, so colocadas nesta barra para fornecer um acesso mais rpido.
Dependendo da forma como a sua tela esteja configurada, esta barra poder
ser exibida em uma ou em mais linhas.
Figura 17 Barra de ferramenta 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.
Competncia 01
30
Tcnico em Informtica
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 que exibe as variveis
com seus respectivos tipos e valores (figura 19).
Figura 19 Janela de variveis do Visualg Fonte: O AUTOR (2013)
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
Competncia 01
31
Lgica de Programao
depois da ltima vez 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)
1.12.2 Digitando o algoritmo
Vamos digitar nosso primeiro algoritmo com base na figura 13. Primeiro
vamos digitar o nome do algoritmo. Na primeira linha, substitua a 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 3 posies da margem).
Agora, na seo de comando, 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
// 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.
Para dominar melhor
as funcionalidades do Visualg
recomendamos que voc leia a apostila
encontrada no endereo:
http://www.slideshare.net/regispires/ap
ostila-sobre-o-visualg-presentation.
Assista ao vdeo postado no link
http://youtu.be/zQtTpt76IqI para que
voc possa compreender e
praticar o que est sendo ensinado no
item a seguir.
Competncia 01
32
Tcnico em Informtica
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 conforme 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.
Figura 22 Execuo inicial de um algoritmo no Visualg Fonte: O AUTOR (2013)
Observe que a janela de variveis exibe as 3 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 1 instruo da seo de
Existem 2 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.
Assista no vdeo postado no link
http://youtu.be/dG8vhXiwsjE a execuo de um algoritmo em cada um dos modos
de execuo disponvel do
Visualg.
Competncia 01
33
Lgica de Programao
comandos para 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. Voc j aprendeu a acompanhar a execuo do algoritmo. Esteja
atendo a estas duas janelas.
Automaticamente a 2 instruo foi executada. Como tambm uma
instruo para ler um dado de entrada, nova pausa ocorreu, aguardando que
o usurio digite novo dado de entrada. Digite um nmero, por exemplo: 5, e
tecle ENTER. Observe novamente os valores das variveis na janela de
variveis. Observando a janela de simulao voc verifica que a execuo do
algoritmo j chegou ao final, com o valor da varivel soma sendo exibida. No
houve pausa para executar os comandos de atribuio e de escrita, pois eles
no necessitam da interveno do usurio. Eles so executados
automaticamente pelo simulador.
Feche a janela de execuo do DOS para voltar ao Visualg.
Voc deve estar se perguntando: 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. Se o usurio fosse outra pessoa ela no saberia que
dado deveria digitar. Mas 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 esquea que o texto deve est entre aspas.
Que tal tambm acrescentar um texto ao resultado final da varivel soma.
No esquea a vrgula para separa o texto da varivel.
Competncia 01
34
Tcnico em Informtica
algoritmo "Somar 2 nmeros"
// Seo de Declaraes
var
numero1, numero2, soma: inteiro
// seo de comandos
inicio
escreva (Digite um nmero inteiro)
leia (numero1)
escreva (Digite outro nmero inteiro)
leia (numero2)
soma := numero1 + numero2
escreva (A soma dos nmeros :, soma)
fimalgoritmo
Execute novamente o algoritmo e veja como ficou mais profissional. A partir
de agora s voc exercer sua criatividade nos exerccios.
ATIVIDADE DE
APRENDIZAGEM As atividades a seguir so para que voc possa praticar a aprofundar sua aprendizagem. 1. Escreva um algoritmo para ler 3 nmeros inteiros e mostrar a soma deles. 2. Escreva um algoritmo para ler 3 nmeros reais e mostrar a soma deles. 3. Escreva um algoritmo para ler 4 nmeros e mostrar: a. a soma do primeiro nmero com o segundo; b. a soma do terceiro nmero com o quarto; c. a soma do resultado do item a com resultado do item b. 4. Escreva um algoritmo para ler 2 nmeros para as variveis numero1 e numero2, inverter os valores das variveis e mostr-los na tela. Exemplo: Se o valor digitado para a varivel numero1 for 40 e o valor digitado para a varivel numero2 for 350, o processamento do algoritmo dever fazer com que a varivel numero1 fique com o valor 350 e a varivel numero2 fique com 40.
Competncia 01
35
Lgica de Programao
2. COMPETNCIA 02 | DESENVOLVER UM ALGORTMICO 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.
Tabela 1 - Operadores aritmticos bsicos Fonte: OAUTOR (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.
Operadores Operao
+ Adio
- Subtrao
* Multiplicao
/ Diviso
Competncia 02
36
Tcnico em Informtica
algoritmo "Operaes Matemticas"
var
numero1: inteiro
numero2: inteiro
somar: inteiro
subtrair: inteiro
multiplicar: inteiro
dividir: real
// como uma diviso pode ocasionar um
// valor real, 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
2.2 Prioridade dos operadores
Seguindo a regra da matemtica, as expresses matemtica so resolvidas
dando prioridades aos operadores de multiplicao e diviso. Relembre desta
regra a partir dos exemplos que se seguem:
Exemplo 1: 10+20/2
Resulta em 20, pois primeiro resolvida a diviso e depois a adio.
Sempre que houver
um operador de diviso, pode ocorrer
um resultado com nmeros decimais, portanto, a varivel que 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.
O exemplo anterior apresenta 4 sadas (4 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 diferente.
Competncia 02
37
Lgica de Programao
Exemplo 2: 4*2+10/2
Resulta em 13, pois primeiro so resolvidos a multiplicao e a diviso e
depois a adio.
Para alterar as prioridades podem-se 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. Observem nos prximos exemplos como os parnteses mudam o
resultado da expresso:
Exemplo 1: (10+20)/2
Resulta em 15, pois os parnteses obrigam a resolver primeiro o que estiver
dentro dos parnteses, neste caso a adio. S depois a diviso resolvida.
Exemplo 2: 4*(2+10)/2
Resulta em 24, pois primeiro resolvida a adio priorizada pelos parnteses
e depois a multiplicao e diviso.
Para fixar esta regra de forma prtica, vamos analisar um algoritmo para
calcular a mdia aritmtica de duas notas.
1 algoritmo "Calcula Media" 2 var 3 nota1: real 4 nota2: real 5 media: real 6 inicio 7 escreva ("Digite a 1 nota: ") 8 leia (nota1) 9 escreva ("Digite a 2 nota: ") 10 leia (nota2) 11 media := (nota1 + nota2) / 2 12 escreva ("A mdia : ", media) 13 fimalgoritmo
Competncia 02
38
Tcnico em Informtica
Primeiro ponto a ser observado que as variveis foram declaradas do tipo
real, pois tanto as notas quanto a mdia podem ter valores decimais.
Observe que a expresso aritmtica que calcula a mdia na linha 11 h uma
prioridade a adio das notas, como realmente deve ser, aps a adio da
nota, ocorre a diviso por 2.
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 2 operadores utilizados em operaes matemtica,
que esto representados na figura 23.
Tabela 2 - Operadores para diviso entre nmeros inteiros Fonte: OAUTOR (2013)
Figura 23 Quociente e resto (entre nmeros inteiros) Fonte: O AUTOR (2013)
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.
Operadores Operao
DIV Quociente de uma diviso inteira
MOD Resto de uma diviso inteira
Assista no vdeo postado no link
http://youtu.be/FdENDhbUoWg um resumo sobre os
assuntos estudados neste item.
Competncia 02
39
Lgica de Programao
algoritmo "Operadores Aritmticos"
var
numero1, numero2, resto, quociente: inteiro
inicio
escreva ("Digite o 1 nmero: ")
leia (numero1)
escreva ("Digite o 2 nmero: ")
leia (numero2)
quociente := (numero1 MOD numero2)
resto := (numero1 DIV numero2)
escreval ("Resto da diviso: ", resto)
escreval ("Quociente da diviso: ", quociente)
fimalgoritmo
2.4 Funes aritmticas
Para que operaes matemticas mais complexas possam ser realizadas,
algumas rotinas pr-definidas, denominadas funes, foram estabelecidas. Os
nomes destas funes compem o conjunto de palavras reservadas da
linguagem de programao algortmica.
Em linhas gerais, a sintaxe de uma funo :
Nome_funo (): 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 com parte de uma
expresso matemtica, armazenado ou exibido. O tipo no escrito no
algoritmo, ele apenas representa o tipo do resultado esperado.
As variveis que armazenaro os valores de uma
operao DIV ou MOD devero ser do
tipo inteiro.
Assista no vdeo postado no link
http://youtu.be/LRT7Udjn00Q
o exemplo anterior sendo executado e
comentado.
Competncia 02
40
Tcnico em Informtica
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 (,): 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 com
// parte de uma expresso matemtica
escreva(Resultado: , EXP(numero1, numero2))
// resultado da exponenciao sendo exibida
// diretamente
Na tabela 3 informamos 3 funes aritmticas que podemos utilizar em
nossos exerccios:
Tabela 3 - Algumas funes aritmticas Fonte: O AUTOR (2013)
Funo Operao Sintaxe
INT Converte um valor real em valor inteiro
INT(valor:real): inteiro
RAIZQ Raiz quadrada RAIZQ(valor:real): real
QUAD Quadrado QUAD(valor:real): real
A varivel que ir armazenar o
resultado de uma exponenciao
dever ser declarada do tipo real.
Assista no vdeo postado no link
http://youtu.be/nBnalT6oG-8 temos um
exemplo de um algoritmo sendo
desenvolvido, onde nele utilizada a funo INT. No
deixe de assisti-lo.
Competncia 02
41
Lgica de Programao
2.4 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 Operador / Funo
1 ( )
2 Funes
3 * / DIV MOD
4 + - Tabela 4: Tabela geral de prioridades Fonte: O AUTOR (2013)
Os parnteses so resolvidos primeiros, depois as funes, seguidas dos
operadores de multiplicao, diviso, quociente e resto, e por fim os
operadores de adio e subtrao.
ATIVIDADE DE
APRENDIZAGEM 1. Escreva um algoritmo para ler o preo de um produto e a quantidade desejada do produto. Calcule e mostre o valor total da compra. 2. Escreva um algoritmo para ler preo de um produto e o percentual de desconto. Calcular e mostrar o valor do desconto e o preo do produto com desconto. O valor do desconto dado pela formula: Preo do produto vezes o percentual do desconto dividido por 100. 3. Escreva um algoritmo para ler 3 notas. Calcular e mostrar a mdia aritmtica entre elas. 4. Escreva um algoritmo para ler 1 nmero e mostrar: a. A raiz quadrada deste nmero b. O nmero recebido elevado a terceira (n
3)
c. O nmero vezes o quociente do nmero dividido por 2. 5. Escreva um algoritmo para ler o valor do raio de um crculo, calcular e mostrar o valor da sua rea. Obs.: Formula para calcular a rea de um crculo : x raio
2 .
Considere o valor de 3,14.
Competncia 02
42
Tcnico em Informtica
3. COMPETNCIA 03 | DESENVOLVER UM ALGORTMICO PARA
RESOLUO DE UM PROBLEMA UTILIZANDO ESTRUTURA DE
DECISO.
Nos algoritmos desenvolvidos nos captulos anteriores, todas as instrues
so executadas sequencialmente, ou seja, todas so 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. 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 trata 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 dar-se quando relacionamos dois elementos e tem
como resultado um valor lgico que pode ser VERDADEIRO e FALSO.
Na tabela 5 esto listados os operadores relacionais que podem ser usados
em uma operao condicional.
Competncia 03
43
Lgica de Programao
Operador Objetivo
= Igual
Diferente
> Maior que
< Menor que
>= Maior ou igual
44
Tcnico em Informtica
Operao 4 > 6
Comentrio Est sendo comparado se a constante numrica 4 maior que outra constante numrica 6.
Resultado O resultado da comparao VERDADEIRO.
Operao num1 6
Comentrio Est sendo comparado se o dado armazenado na varivel num1 diferente da constante numrica 6.
Resultado Depende do valor armazenado em num1. Se a varivel num1 armazena, por exemplo, o valor 6, o resultado da comparao FALSO. Se a varivel num1 armazena qualquer outro valor, o resultado da comparao VERDADEIRO.
Operao 1 = 1
Comentrio 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).
Resultado O resultado da comparao FALSO, pois esto sendo comparados elementos de tipos diferentes.
Observao Este exemplo apenas ilustrativo, pois a maioria das linguagens de programao entende como erro comparao entre tipos diferentes, como neste caso onde est sendo comparado nmero com literal. O prprio Visualg, ferramenta que estamos utilizando para testar nossos algoritmos, no estar preparado para este tipo de comparao, e resulta sempre em VERDADEIRO.
Operao A < a
Comentrio Como A e a esto entre aspas, no se trata de variveis, mas de constantes literais (texto). Est sendo comparado se a letra A maiscula menor que a letra a minscula.
Resultado O resultado da comparao VERDADEIRO.
Observao 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.
Competncia 03
45
Lgica de Programao
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 e escrevendo estas condies na
sintaxe de uma operao condicional temos:
Condio 1: idade > 17 Condio 2: idade < 66
Escrevendo-as em linha temos (idade > 17) E (idade < 66). Note que para uma
pessoa votar deve atender as duas condies (a primeira condio E a
segunda condio). Surge ento a necessidade de conectarmos duas
condies. Neste caso, a sintaxe da linguagem algortmica exige de cada
condio esteja entre parnteses.
A tabela 6 apresenta dois operadores lgicos de conexo que permite a
elaborao de expresses lgicas mais complexas:
Tabela 6 - Operadores Lgicos Fonte: O AUTOR (2013)
Operao A B
Comentrio Como A e B esto entre aspas, no se trata de variveis, mas de constantes literais (texto). Est sendo comparado se a letra A maiscula diferente da letra B maiscula.
Resultado O resultado da comparao VERDADEIRO.
Conector
E
OU
Cada caractere (letra, nmero ou
smbolo) do computador
corresponde a um cdigo relacionado em uma tabela do
computador denominada Tabela
ASCII, que voc poder consultar no
link http://pt.wikipedia.o
rg/wiki/ASCII, acessado em
11/03/2013. No tpico Caracteres
imprimveis da pgina deste link, as tabelas apresentam
na 2 coluna os cdigos em nmeros
decimais e na 4 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).
Competncia 03
46
Tcnico em Informtica
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 V
V F F
F V F
F F F Tabela 7 - Tabela Verdade E Fonte: O AUTOR (2013)
OU
Resultado da 1 condio Resultado da 2 condio Resultado da expresso
V V V
V F V
F V V
F F F Tabela 08 - Tabela Verdade OU Fonte: O AUTOR (2013)
Exemplos de operaes condicionais:
Exemplo 1: Para verificar se uma pessoa obrigada a votar, podemos ter a
seguinte expresso:
(idade > 17) E (idade < 66)
Se a primeira condio (idade > 17) for VERDADEIRA E a segunda condio
(idade < 66) tambm for VERDADEIRA, pela tabela verdade do E, o resultado
final da expresso VERDADEIRO. Ainda pela tabela verdade do E, se alguma
das condies resultarem em FALSO, o resultado final da expresso FALSO.
Exemplo 2: Para verificar se uma pessoa no obrigada a votar, podemos ter
a seguinte expresso:
(idade 65)
Competncia 03
47
Lgica de Programao
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.
Considere o seguinte problema. Consideremos os seguintes tipos de
funcionrios: Diretor, Gerente, Coordenador, Supervisor, Operador e
Terceirizado. Cada funcionrio representado pela primeira letra do seu tipo
(D para diretor, G para gerente, etc.). Para cada funcionrio dos tipos Gerente,
Coordenador, Supervisor e Operador deseja-se saber o nome de seu chefe. A
expresso condicional para atender a estes critrios pode ser assim escrita:
(Tipo=G) OU (Tipo=C) OU (Tipo=S) OU (Tipo=O)
Podemos simplificar a expresso usando o operador NAO, da seguinte forma:
NAO(Tipo=D) OU NAO(Tipo=T)
A expresso lgica fica mais simples utilizando o operador de negao nos
tipos que no exige o nome do chefe, pois so menos tipos (apenas 2 tipos),
em relao aos tipos que exigem o nome do chefe (4 tipos).
Na verdade este operador inverte o resultado da expresso lgica.
3.3 Prioridade dos operadores lgicos
Assim como os operadores matemticos, os operadores lgicos tambm tem
prioridade em uma expresso lgica. A tabela 9 apresenta as prioridades dos
operadores lgicos.
Competncia 03
48
Tcnico em Informtica
Prioridade Operador
1 NAO
2 E
3 OU Tabela 9 Prioridade dos operadores lgicos Fonte: O AUTOR (2013)
Exemplo de uma expresso lgica composta:
(6=3) OU (5
49
Lgica de Programao
Agora vamos resolver primeiro a parte da expresso que est dentro de
parnteses, conforme a tabela verdade, o que resulta na seguinte expresso:
falso OU verdadeiro E verdadeiro E falso
Em seguida resolvemos o primeiro operador E, resultando na expresso:
falso OU verdadeiro E falso
Vamos resolver agora o segundo E, que resulta na expresso:
falso OU falso
E finalmente, resolvendo o operador OU que resta, chegamos ao resultado
final: falso
Para melhor fixao deste assunto, vamos observar alguns exemplos:
Exemplo 1: Considere a situao das pessoas que no so obrigadas a votar.
De acordo com a legislao eleitoral, existem 2 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 idade65
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:
Competncia 03
50
Tcnico em Informtica
Expresso 1: idade>15 E idade65
Expresso 2: idade>65 OU idade>15 E idade15 E 765
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 a realidade em relao ao que a lei eleitoral estabelece
quanto a idade para o voto opcional.
Tambm resolva a expresso 2 com as idades 7, 16, 30 e 70 e comprove que o
resultado o mesmo da expresso 1.
Competncia 03
51
Lgica de Programao
Expresso 2: idade>65 OU idade>15 E idade=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 como conector E, que pode resulta 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
Competncia 03
52
Tcnico em Informtica
Resolvendo as condies teremos:
falso E verdadeiro OU falso
Resolvendo o operador E (pela tabela 7 - tabela verdade E), falso E verdadeiro
resulta em falso, ficando assim a expresso:
falso OU falso
Por fim, resolvendo o operador OU (pela tabela 8 tabela verdade OU), falso
OU falso resulta em falso, ou seja, falso para uma pessoa com 60% de
frequncia e conceito A que esteja aprovado.
Tambm resolva a expresso 2 com os mesmos valores e comprove que o
resultado o mesmo da expresso 1.
Expresso 2: conc=A OU conc=B E perc_freq>=75
Bem, ai voc pergunta: No vi erro nenhum, cad o erro lgico 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:
Competncia 03
53
Lgica de Programao
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 2 casos, mas 3 condies, o computador no saber se so 3 casos
ou 2 casos, combinando a 1 condio com a 2 condio ou combinando a 2
condio com a 3 condio. Nesta situao ele obedece a 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
Competncia 03
54
Tcnico em Informtica
expresso que est dentro dos parnteses seja resolvida primeiro, conforme
as expresses a seguir:
Expresso 1: perc_freq>=75 E (conc=A OU conc=B)
Expresso 2: (conc=A OU conc=B) E perc_freq>=75
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.
Competncia 03
55
Lgica de Programao
3.4 Estrutura de Deciso
Durante todos os tpicos anteriores, estivemos fundamentando os conceitos
que envolvem a tomada de deciso por parte do computador, via linguagem
de programao algortmica. Agora chegou a hora de conhecemos o que ir
suporta 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 23, faz uma comparao com uma avenida.
Se em um trecho houver uma obstruo, voc pode tomar um desvio e
retomar a avenida em um ponto mais a frente, aps a obstruo.
Figura 23 Representao grfica de uma estrutura de desvio simples Fonte: O AUTOR (2008)
A sintaxe da estrutura condicional que permite este tipo de desvio :
Competncia 03
56
Tcnico em Informtica
SE ENTAO
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.
No item 3.1 apresentamos um problema: Conceder desconto quando a venda
de um produto for maior que 4 unidades. Agora vamos desenvolver um
algoritmo para resolver este problema.
algoritmo "Estrutura de Deciso Simples"
var
preco_unit: real
quantidade: inteiro
perc_desconto: real
valor_desconto: real
preco_total: real
inicio
escreva("Digite o preo unitrio: ")
leia(preco_unit)
escreva("Digite a quantidade vendida: ")
leia(quantidade)
// calculando o preo total (sem desconto)
preco_total := preco_unit * quantidade
// Tomando deciso sobre desconto
se (quantidade>4) entao
escreva("Digite o % de desconto: ")
leia(perc_desconto)
// Calculando o desconto
valor_desconto := preco_total*perc_desconto/100
// retirando o desconto do preco total
preco_total := preco_total - valor_desconto
fimse
escreva("Preo Total: ", preco_total)
fimalgoritmo
Competncia 03
57
Lgica de Programao
3.4.2 Estrutura de deciso composta
Esta estrutura utilizada em situaes onde duas mudanas de sequncia so
previstas. Uma mudana de sequncia e 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 deve-
se tomar uma deciso entre duas alternativas possveis.
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 ENTAO
SENAO
FIMSE
Competncia 03
58
Tcnico em Informtica
Esta estrutura permite a definio de dois blocos de comandos. O
bloco_de_instruo_1 para se executado se o teste da condio resultar em
VERDADEIRO. Seno for VERDADEIRO, isto , for FALSO, o
bloco_de_instruo_2 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
escreval ("Aluno Aprovado")
fimse
fimalgoritmo
Agora vamos desenvolver um algoritmo para informar se um nmero inteiro
par ou impar. 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 impar.
Agora, 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
Competncia 03
59
Lgica de Programao
vamos combinar uma estrutura condicional e uma expresso utilizando o
operador MOD para resolver este problema.
algoritmo "Par ou Impar"
var
numero: inteiro
inicio
escreva ("Digite um nmero inteiro: ")
leia (numero)
se numero MOD 2 = 0 entao
escreva (O nmero par)
senao
escreva (O nmero impar)
fimse
fimalgoritmo
Muito simples no foi? Digite este algoritmo no Visualg e faa o teste para
conferir.
3.4.3 Estrutura de deciso encadeada
Um bloco de comando de uma estrutura condicional pode conter qualquer
instruo, inclusive outras estruturas condicionais. Quando isto necessrio,
temos uma srie de estruturas condicionais, 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 uma reviso
geral sobre os assuntos desta
competncia, assista ao vdeo postado no
link http://youtu.be/Q1D
-HxPD7wg
ATIVIDADE DE
APRENDIZAGEM 1. Escreva um algoritmo para ler 2 nmeros. Considerado que os nmeros lidos tm valores diferentes e que podem ser digitados primeiro o maior e depois o menor ou vice-versa, o algoritmo dever ordenar para que o menor nmero fique armazenado na 1 varivel e o maior nmero fique armazenado na 2 varivel. O algoritmo deve mostrar os nmeros em ordem. 2. O valor do ingresso para um show de R$ 85,00. Escreva um algoritmo para ler o sexo do espectador (M para masculino e F para feminino) que ir assistir ao show e mostrar o valor que deve pagar pelo ingresso. Obs.: Pessoa do sexo feminino pagar 70% do ingresso normal.
Competncia 03
60
Tcnico em Informtica
Para exemplificar esta estrutura, consideremos uma situao onde o aluno
pode est aprovado, em recuperao ou reprovado, conforme as condies a
seguir:
Condio para aprovao: Mdia igual ou superior a 6.
Condio para recuperao: Mdia inferior a 6 at 3.
Condio para reprovao: Mdia menor que 3.
algoritmo "Calcula Media"
var
nota1, nota2, media: real
inicio
escreva ("Digite a 1 nota: ")
leia (nota1)
escreva ("Digite a 2 nota: ")
leia (nota2)
media := (nota1 + nota2) / 2
escreval ("A mdia : ", media)
se (media < 3) entao
escreval ("Reprovado")
senao
se (media < 6) entao
escreval ("Recuperao")
senao
escreval ("Aprovado")
fimse
fimse
fimalgoritmo
(continuao)
3. Escreva um algoritmo para ler o preo de um ingresso de um show, a quantidade de ingressos do tipo inteiro e a quantidade de ingressos do tipo meia-entrada. Calcule e mostre o valor total a ser pago, considerando que o ingresso do tipo meia-entrada paga a metade do ingresso do tipo inteiro. 4. Escreva um algoritmo para ler dois nmeros e mostrar o maior deles ou se os nmeros so 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.
Competncia 03
61
Lgica de Programao
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 diversas estruturas que permitem a repetio de uma sequencia de instrues. Este tipo de estrutura til em diversas situaes, como por exemplo: crtica de dados, onde uma instruo de entrada de dados repetida, at que um valor vlido seja digitado. Sero estudados 3 tipos de estruturas de repetio e quando utilizar cada uma delas.
4.1 Estrutura de repetio indefinida, com uma repetio obrigatria
Em situaes onde no sabemos quantas vezes uma sequencia de instrues deve ser repetida, voc deve utilizar uma estrutura de repetio indefinida. Existem duas estruturas de repetio indefinida. Uma que a repetio ocorre pelo menos uma vez e outra que a repetio pode no ocorrer nenhuma vez.
Para repetir pelo menos uma vez, podemos utilizar a estrutura REPITA, cuja sintaxe a seguinte:
REPITA ATE
Quando a execuo do algoritmo atinge o comando REPITA, ele entende que comeou um bloco de instrues. Esse bloco estende-se at o comando ATE. A execuo do bloco executada pela primeira vez, ou seja, ocorre a primeira repetio. Ao atingir o comando ATE, a expresso condicional contida neste comando avaliada. Se o resultado da expresso condicional for FALSO ocorrer nova repetio do bloco de instruo. A cada final de repetio a expresso condicional avaliada. Quando acontecer do resultado da expresso condicional ser VERDADEIRO, a repetio para e a execuo do algoritmo continua sequencialmente.
Competncia 04
62
Tcnico em Informtica
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 repetio, sero executadas uma vez. Como a repetio definida pelo comando REPITA, cuja condio de repetio codificada no final do bloco, no comando ATE, a possibilidade de repetio depende da avaliao desta condio. Se o resultado for FALSO, as instrues 4 e 5 sero executadas novamente, ou seja, ocorrer nova repetio destes comandos. Quando o resultado da condio for VERDADEIRO, a repetio termina e sero executados os comandos 6 e 7.
Vamos considerar o algoritmo que calcula a mdia aritmtica entre duas notas. O valor mximo de cada nota s pode ser 10. Caso o usurio digite um valor maior que 10, o valor no deve ser aceito e a instruo de entrada deve se repetir at que um valor menor ou igual a 10 seja digitado. Nosso algoritmo deve ficar da seguinte forma:
algoritmo "Calcula Media"
var
nota1, nota2, media: real
inicio
repita
escreva ("Digite a 1 nota: ")
leia (nota1)
ate (nota1
63
Lgica de Programao
escreva ("Digite a 2 nota: ")
leia (nota2)
ate (nota2
64
Tcnico em Informtica
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.
Neste algoritmo, toda vez que digitado a letra M para uma leitura de um 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 aumenta ou diminui um valor varivel a cada repetio, cuja sintaxe a seguinte:
:= + / -
Competncia 04
65
Lgica de Programao
Vamos desenvo