Caderno Informática (Lógica de Programação) RDDI

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