Você está na página 1de 75

Tcnico em Informtica

Lgica de Programao

Aldo de Moura Lima

2013

Presidenta da Repblica Dilma Vana Rousseff

Governador do Estado de Pernambuco Eduardo Henrique Accioly Campos

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

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

Sumrio
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

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

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.

Lgica de Programao

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

Tcnico em Informtica

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

Lgica de Programao

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

Tcnico em Informtica

Competncia 01
Betnia Cssio Celso Ccero Marta 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. 1.2.1 Elementos de um sistema computacional Um sistema computacional composto pelos elementos representados na figura 1. Rute Vnia Vernica Zlia Celso Ccero Paulo Pedro Renato

Lgica de Programao

Competncia 01

Este mdulo trata essencialmente sobre o desenvolvimento de software.

Figura 1 Elementos de um sistema computacional Fonte: O AUTOR (2013)

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

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.

Tcnico em Informtica

Competncia 01
O processo de software mais tradicional conhecido como Modelo Cascata, representado na figura 2.
Processo de Software: Conjunto de atividades relacionadas que levam produo de um produto de software.

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

Lgica de Programao

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

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

10

Tcnico em Informtica

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

Lgica de Programao

11

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

12

Tcnico em Informtica

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

Lgica de Programao

13

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

14

Tcnico em Informtica

Competncia 01
Terminador Utilizado para iniciar e finalizar um fluxograma

Entrada Manual

Representar uma entrada manual

Processo

Representa um processamento a ser realizado

Exibio

Representa uma apresentao de resultado

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

Nmero 1

Nmero 2

Soma = Nmero 1 + Nmero 2

Soma

Fim
Figura 5 Exemplo de um fluxograma Fonte: O Autor (2013)

Lgica de Programao

15

Competncia 01
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.
NICIO Usado para iniciar um algoritmo FIM LEIA ESCREVA := Usado para finalizar um algoritmo Usado para entrada de dados Usado para exigir um resultado Usado para atribuir um valor (processamento)

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). inicio leia (numero1) leia (numero2) soma := numero1 + numero2 escreva (soma) fim
Figura 7 Exemplo de um algoritmo Fonte: O AUTOR (2013)

16

Tcnico em Informtica

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

Lgica de Programao

17

Competncia 01
inicio leia (numero1) leia (numero2) Variveis soma := numero1 + numero2 escreva (soma) fim
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, 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 apenas VERDADEIRO ou FALSO.

18

Tcnico em Informtica

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

Lgica de Programao

19

Competncia 01
As variveis do mesmo tipo podem ser agrupadas em uma linha, separando-as por vrgula, com apenas uma especificao do tipo, conforme o seguinte exemplo: var numero1, numero2: real nome: literal Veja como fica o algoritmo da figura 7 com o comando de declarao das variveis na figura 9 a seguir: var numero1: inteiro numero2: inteiro soma: inteiro inicio leia (numero1) leia (numero2) soma := numero1 + numero2 escreva (soma) fim
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.

20

Tcnico em Informtica

Competncia 01
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. var numero1: inteiro numero2: inteiro soma: inteiro inicio leia (numero1) leia (numero2) soma := numero1 + numero2 escreva (soma) fim
Figura 11 Exemplo de um algoritmo Fonte: O AUTOR (2013)

A endentao ser exigida em nossos exerccios.

Lgica de Programao

21

Competncia 01
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. var Constante nota1, nota2: inteiro media: real inicio leia (nota1) leia (nota2) media := (nota1 + nota2) / 2 escreva (media) fim
Figura 12 Exemplo de algoritmo com constante Fonte: O AUTOR (2013) 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.

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

22

Tcnico em Informtica

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

Lgica de Programao

23

Competncia 01
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). 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
Figura 13 Exemplo de um algoritmo Fonte: O AUTOR (2013)

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

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

24

Tcnico em Informtica

Competncia 01
suprimidos os comentrios que descrevem as sees e foram acrescentados outros comentrios. 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
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 (<nome_varivel>) Onde nome_varivel o nome da varivel que armazenar o dado a ser recebido. Exemplos: leia (nome) leia (numero) Este comando pressupe que o dado vir de alguma fonte, que em nosso caso ser do teclado. Quando o programa for executado ocorrer uma pausa para

Lgica de Programao

25

Competncia 01
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 , ] <nome_varivel>)

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)

26

Tcnico em Informtica

Competncia 01
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:
<nome_varivel> := <expresso>

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

Lgica de Programao

27

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

28

Tcnico em Informtica

Competncia 01

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)

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

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)

Lgica de Programao

29

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

30

Tcnico em Informtica

Competncia 01
depois da ltima vez que ele foi salvo) e informao para acessar os comandos predefinidos do visualg (figura 20).
Para dominar melhor as funcionalidades do Visualg recomendamos que voc leia a apostila encontrada no endereo: http://www.slidesha re.net/regispires/ap ostila-sobre-ovisualg-presentation.

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

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.

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

Lgica de Programao

31

Competncia 01
Na barra de ferramenta clique no cone executar, em destaque na figura 21.

Figura 21 Destaque do cone executar - Visualg Fonte: O AUTOR (2013)

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

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)

, na barra de ferramenta.

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
Assista no vdeo postado no link http://youtu.be/dG8 vhXiwsjE a execuo de um algoritmo em cada um dos modos de execuo disponvel do Visualg.

32

Tcnico em Informtica

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

Lgica de Programao

33

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

34

Tcnico em Informtica

Competncia 02
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.
Operadores + * / Operao Adio Subtrao Multiplicao 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.

Lgica de Programao

35

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

36

Tcnico em Informtica

Competncia 02
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 2 3 4 5 6 7 8 9 10 11 12 13 algoritmo "Calcula Media" var nota1: real nota2: real media: real inicio escreva ("Digite a 1 nota: ") leia (nota1) escreva ("Digite a 2 nota: ") leia (nota2) media := (nota1 + nota2) / 2 escreva ("A mdia : ", media) fimalgoritmo

Lgica de Programao

37

Competncia 02
Primeiro ponto a ser observado que as variveis foram declaradas do tipo real, pois tanto as notas quanto a mdia podem ter valores decimais. Observe que a expresso aritmtica que calcula a mdia na linha 11 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.
Operadores DIV MOD Operao Quociente de uma diviso inteira Resto de uma diviso inteira
Assista no vdeo postado no link http://youtu.be/FdE NDhbUoWg um resumo sobre os assuntos estudados neste item.

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.

38

Tcnico em Informtica

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

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

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 (<lista de argumento>): tipo
Assista no vdeo postado no link http://youtu.be/LRT 7Udjn00Q o exemplo anterior sendo executado e comentado.

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.

Lgica de Programao

39

Competncia 02
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 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:
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
Assista no vdeo postado no link http://youtu.be/nBn alT6oG-8 temos um exemplo de um algoritmo sendo desenvolvido, onde nele utilizada a funo INT. No deixe de assisti-lo.

A varivel que ir armazenar o resultado de uma exponenciao dever ser declarada do tipo real.

Tabela 3 - Algumas funes aritmticas Fonte: O AUTOR (2013)

40

Tcnico em Informtica

Competncia 02
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 1 2 3 4 Operador / Funo () Funes * / DIV MOD + 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 3 elevado a terceira (n ) 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 2 crculo : x raio . Considere o valor de 3,14.

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.

Lgica de Programao

41

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

42

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.

Lgica de Programao

43

Competncia 03

Operao Comentrio Resultado Operao Comentrio Resultado

4>6 Est sendo comparado se a constante numrica 4 maior que outra constante numrica 6. O resultado da comparao VERDADEIRO. num1 <> 6 Est sendo comparado se o dado armazenado na varivel num1 diferente da constante numrica 6. 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. 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. 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. A < a 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. 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.

Operao Comentrio

Resultado Observao

Operao Comentrio

Resultado Observao

44

Tcnico em Informtica

Competncia 03

Operao Comentrio

Resultado

A <> B 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. O resultado da comparao VERDADEIRO.

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:

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

Conector E OU
Tabela 6 - Operadores Lgicos Fonte: O AUTOR (2013)

Lgica de Programao

45

Competncia 03
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 2 condio V F V F

Resultado da 1 condio V V F F
Tabela 7 - Tabela Verdade E Fonte: O AUTOR (2013)

Resultado da expresso V F F F

Resultado da 1 condio V V F F
Tabela 08 - Tabela Verdade OU Fonte: O AUTOR (2013)

OU Resultado da 2 condio V F V F

Resultado da expresso V V V F

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)

46

Tcnico em Informtica

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

Lgica de Programao

47

Competncia 03
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 condio, que resulta na seguinte expresso:
falso OU verdadeiro E verdadeiro OU falso E falso

Agora resolvemos primeiro os operadores E, conforme a tabela verdade, que resulta na seguinte expresso:
falso OU verdadeiro OU falso

Agora resolvemos o 1 operador OU, temos a expresso:


verdadeiro OU falso

Por fim 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 condio, que resulta na seguinte expresso:
falso OU verdadeiro E (verdadeiro OU falso) E falso

48

Tcnico em Informtica

Competncia 03
Agora vamos resolver primeiro a parte da expresso que est dentro de parnteses, conforme a tabela verdade, o que resulta na seguinte expresso:
falso OU 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 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:

Lgica de Programao

49

Competncia 03
Expresso 1: idade>15 Expresso 2: idade>65
E idade<=17 OU idade>65 OU idade>15 E idade<=17

Voc deve saber que, pela tabela 7 de prioridade dos operadores lgicos, independente da ordem em que os operadores lgicos esto colocados na expresso, primeiro deve ser resolvido o operador E (verificando se a idade est na faixa de 16 a 17 anos) para s depois verificar o operador OU. Se o valor armazenado na varivel idade for 7 anos, teremos pela primeira expresso:
7>15 E 7<=17 OU 7>65

Resolvendo as condies teremos: falso E verdadeiro OU falso Resolvendo o operador E (pela tabela 7 - tabela verdade E), falso E verdadeiro resulta em falso, ficando assim a expresso: falso OU falso Por fim, resolvendo o operador OU (pela tabela 8 tabela verdade OU), falso OU falso resulta em falso, ou seja, falso para uma pessoa de 7 anos que o voto opcional. Agora faa o teste acima com as idades 16, 30 e 70 anos e verifique como o resultado corresponde 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.

50

Tcnico em Informtica

Competncia 03
Expresso 2: idade>65
OU idade>15 E idade<=17

Exemplo 2: Agora consideremos a situao onde para ser aprovado o aluno tem que: Caso 1: Ter frequentado pelo menos 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 como conector E, que pode resulta em uma das expresses: Expresso 1: perc_freq>=75 Expresso 2: conc=A
E conc=A OU conc=B

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

Lgica de Programao

51

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

52

Tcnico em Informtica

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 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 Expresso 2: conc=A
E conc=A OU conc=B

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

Lgica de Programao

53

Competncia 03
expresso que est dentro dos parnteses seja resolvida primeiro, conforme as expresses a seguir: Expresso 1: perc_freq>=75 Expresso 2: (conc=A
E (conc=A OU conc=B)

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.

54

Tcnico em Informtica

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

Lgica de Programao

55

Competncia 03
SE <expresso_condicional> ENTAO <bloco_de_instrues> FIMSE Denominamos de estrutura, porque no uma simples instruo de uma linha, mas uma estrutura iniciada com o comando SE e finalizado como o comando FIMSE. Entre 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

56

Tcnico em Informtica

Competncia 03
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 devese 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 <expresso_condicional> ENTAO <bloco_de_instrues_1> SENAO <bloco_de_instrues_2> FIMSE

Lgica de Programao

57

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

58

Tcnico em Informtica

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

Lgica de Programao

59

Competncia 03
Para exemplificar esta estrutura, consideremos uma situao onde o aluno pode est aprovado, em recuperao ou reprovado, conforme as condies a seguir:
(continuao)

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

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.

60

Tcnico em Informtica

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 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 <bloco_de_instrues> ATE <expresso_condicional> 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.

Lgica de Programao

61

Competncia 04
Para compreender melhor o conceito desta repetio, observe o seguinte pseudocdigo: Instruo_1 Instruo_2 Instruo_3 REPITA Instruo_4 Instruo_5 ATE condio Instruo_6 Instruo_7 As instrues 1, 2 e 3 sero executadas sequencialmente no incio da execuo do algoritmo. As instrues 4 e 5, que fazem parte de um bloco repetio, sero executadas uma vez. Como a repetio definida pelo comando REPITA, cuja condio de repetio codificada no final do bloco, no comando ATE, a possibilidade de repetio depende da avaliao desta condio. Se o resultado for FALSO, as instrues 4 e 5 sero executadas novamente, ou seja, ocorrer nova repetio destes comandos. Quando o resultado da condio for VERDADEIRO, a repetio termina e sero executados os comandos 6 e 7. Vamos considerar o algoritmo que calcula a mdia aritmtica entre duas notas. O valor mximo de cada nota s pode ser 10. Caso o usurio digite um valor maior que 10, o valor no deve ser aceito e a instruo de entrada deve se repetir at que um valor menor ou igual a 10 seja digitado. Nosso algoritmo deve ficar da seguinte forma: algoritmo "Calcula Media" var nota1, nota2, media: real inicio repita escreva ("Digite a 1 nota: ") leia (nota1) ate (nota1<=10) repita

62

Tcnico em Informtica

Competncia 04
escreva ("Digite a 2 nota: ") leia (nota2) ate (nota2<=10) media := (nota1 + nota2) / 2 escreva ("A mdia : ", media) fimalgoritmo 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> 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 ter mostrado 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

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

Lgica de Programao

63

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

64

Tcnico em Informtica

Competncia 04
Vamos desenvolver um algoritmo para receber o preo de vrios produtos. Para finalizar o algoritmo dever ser digitado o preo 0 (zero). No final dever ter mostrado o valor total dos produtos. algoritmo "Acumulador" var preco, total: real inicio // Iniciando o valor do acumulador com zero total := 0 repita escreva ("Digite o preo: ") leia (preco) total := total + preco ate (preco=0) escreval ("Valor total: ", total) fimalgoritmo Neste algoritmo, a varivel acumuladora total adicionada do preo digitado a cada repetio, 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, mesmo 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 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
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.

Lgica de Programao

65

Competncia 04
condio novamente. Se o resultado da condio for FALSO, o algoritmo pula o bloco de comando e segue executando os comandos aps o comando FIMENQUANTO. Vamos utilizar o mesmo pseudocdigo utilizado na estrutura de repetio anterior para compreender melhor o conceito desta repetio. Instruo_1 Instruo_2 Instruo_3 ENQUANTO condio FACA Instruo_4 Instruo_5 FIMENQUANTO Instruo_6 Instruo_7 As instrues 1, 2 e 3 sero executadas sequencialmente no incio da execuo do algoritmo. Ao atingir o comando ENQUANTO a condio avaliada. Se o resultado for FALSO, a execuo continua nas instrues 6 e 7. Se o resultado for VERDADEIRO, as instrues 4 e 5 so executadas, o fluxo de execuo retorna ao comando ENQUANTO para avaliar a condio novamente e julgar se ir repetir as instrues 4 e 5 novamente 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)

66

Tcnico em Informtica

Competncia 04
// Iniciando contador e acumulador com zero contador := 0 acumulador := 0 enquanto contador<quant_filhos faca contador := contador + 1 escreva (Idade do ,contador, filho: ) leia (idade) acumulador := acumulador + idade fimenquanto media:=0 se quant_filhos <> 0 entao media:= acumulador / quant_filhos fimse escreva (Mdia das idades: , media) fimalgoritmo 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 o contador atingir este valor, a repetio encerrar. A cada repetio realizada o valor da varivel controladora incrementado automaticamente em 1.

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

Lgica de Programao

67

Competncia 04
Vamos desenvolver um algoritmo para informar a temperatura mdia de cada dia da semana. No final do algoritmo dever ser mostrada a temperatura mdia da semana. algoritmo "Repetio" var dia: inteiro temp_dia, temp_semana, media: real inicio // inicializado o acumulador com zero temp_semana :=0 para dia de 1 ate 7 faca escreva (Temperatura do ,dia, dia: ) leia (temp_dia) temp_semana := temp_semana + temp_dia fimpara media:= temp_semana / 7 escreva (Temp. mdia da semana: , media) fimalgoritmo Prezado aluno, finalmente conclumos as 4 competncias previstas para esta disciplina. Espero que voc tenha aprendido todas, 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.
A execuo deste algoritmo comentada, voc pode assistir no link http://youtu.be/ YWdrW9xQ8Ec

ATIVIDADE DE APRENDIZAGEM 1. Escreva um algoritmo para ler as 2 notas de 10 alunos, calcular a mdia aritmtica de cada aluno e mostrar a quantidade de alunos aprovadas e a quantidade de alunos reprovadas. 2. Escreva um algoritmo para ler o sexo de 10 pessoas. O algoritmo deve criticar para que seja aceito apenas as letras M, m ,F e f como entrada para o leitura do sexo. No final do algoritmo deve mostrar se h mais pessoas do sexo masculino, mas pessoas do sexo feminino ou se a quantidade de pessoas do sexo masculino igual a pessoa do sexo feminino. (Continua...)

68

Tcnico em Informtica

REFERNCIAS
FARRER, Harry et al. Algoritmo Estruturado. 3.ed. LTC: 1999. MAZANO, J.; OLIVEIRA, J. Estudo Dirigido de Algoritmos. So Paulo: rica, 1997.

(Continuao) 3. Escreva um algoritmo para ler o nome, o sexo e a quantidade de dependentes de 4 funcionrios. Se houver dependentes, para cada dependente dever ser lida a idade e o tipo de dependente que pode ser: C para cnjuge (esposo/esposa) ou X para outro tipo de dependente O algoritmo dever calcular a mostrar o valor total do benefcio de cada funcionrio deve receber, considerando-se que: a) Para o funcionrio pago um valor de R$ 50,00. b) Apenas para a esposa pago um valor de R$ 30,00. c) Para outro tipo de dependente com idade de at 17 anos pago o valor de R$ 20,00.

Lgica de Programao

69

CURRCULO DO PROFESSOR-PESQUISADOR
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. Atualmente professor universitrio da Faculdade de Tecnologia Ibratec e da Faculdade Santa Maria. 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.

70

Tcnico em Informtica