Livro Logica Programacao b

download Livro Logica Programacao b

of 148

Transcript of Livro Logica Programacao b

  • 7/25/2019 Livro Logica Programacao b

    1/148

    Curitiba

    2016

    Lgica deProgramacao

    Faculdade Educacional da Lapa (org.)

    ~,

    Livro _logica_programacao.indb 1 05/04/2016 08:59:29

  • 7/25/2019 Livro Logica Programacao b

    2/148

    Ficha Catalogrfica elaborada pela Fael. Biliotecria Cassiana Souza CRB9/1501

    Direitos dea edio reservados Fael. proibida a reproduo total ou parcial dea obra sem autorizao expressa da Fael.

    FAEL

    Direo de Produo Fernando Santos de Moraes Sarmento

    Coordenao Editorial Raquel Andrade Lorenz

    Reviso FabriCO

    Projeto Grfco Sandro Niemicz

    Capa Katia Cristina Santos Mendes

    Imagem capa Shuerstock

    Diagramao Katia Cristina Santos Mendes

    Reviso Patricia Rucker De Bassi

    Livro _logica_programacao.indb 2 05/04/2016 08:59:31

  • 7/25/2019 Livro Logica Programacao b

    3/148

    Sumrio

    1. F Lgica para Programao | 7

    2. F representao de um algoritmo | 21

    3. T dados: variveis e constantes | 35

    4. O expresses | 45

    5. E seleo simples e composta | 55

    6. E seleo encadeada | 69

    7. E repetio com teste no incio | 87

    8. E repetio com teste no final | 99

    9. E repetio com varivel de controle | 111

    10. E Dados | 129

    11. M | 137

    R | 147

    Livro _logica_programacao.indb 3 05/04/2016 08:59:32

  • 7/25/2019 Livro Logica Programacao b

    4/148

    Livro _logica_programacao.indb 4 05/04/2016 08:59:32

  • 7/25/2019 Livro Logica Programacao b

    5/148

    Apresentao

    P ,

    A arte e cincia de programar computadores algo fascinante.Podemos definir esta atividade como emprestar um pouco de nossainteligncia ao computador. Quando o computador trabalha como se nossa inteligncia emprestada a ele estivesse trabalhando. E

    para isto precisamos aprender como se comunicar com ele.O conhecimento lgico essencial para qualquer pessoa que

    deseja iniciar a carreira na rea de desenvolvimento de sistemas,independente do paradigma da linguagem ou do sistema que ire-mos desenvolver. E este conceito bastante necessrio na lgica deprogramao para obtermos retorno til destas mquinas maravi-lhosas que so os computadores.

    Livro _logica_programacao.indb 5 05/04/2016 08:59:33

  • 7/25/2019 Livro Logica Programacao b

    6/148

    6

    ,

    A lgica de programao aborda como se escreve um programa de com-

    putador, isto , como se escreve um algoritmo. Um algoritmo nada mais do que um manual de instruo, uma receita, uma sequencia lgica de aesque devem ser realizadas para se atingir um objetivo. Quando o algoritmo aplicado na rea da computao ele faz parte da lgica de programao.

    Nesta disciplina iremos aprender como se escreve um algoritmo, isto , comoorganizar nosso pensamento para dizer ao computador o que fazer. Durante estadisciplina iremos tambm aprimorar a forma de escrever os algoritmos, utilizandoa lgica de programao para entender o melhor jeito de escrev-los. Nosso obje-tivo final que o computador interprete corretamente nosso algoritmo e retorne

    a resposta correta do problema a ser resolvido. Por isso as atividades prticas soimprescindveis para aprimorarmos a lgica de programao.

    Para isto veremos os conceitos bsicos de logica de programao e asformas mais utilizadas para a representao de algoritmos. Abordaremos osoperadores lgico-matemticos e relacionais necessrios para a construo deexpresses. Iniciaremos a construo de algoritmos sequenciais, aprendendoos comandos bsicos de entrada e sada de dados.

    Os comandos de seleo sero apresentados a seguir, abordando os des-

    vios condicionais simples, composto e encadeado. Conheceremos tambm osdiferentes comandos de repetio e suas aplicabilidades.

    Iremos entender como criar e manipular estruturas de dados simplescomo vetores e registros. E por fim vamos aprender a criar funes e comomelhor utiliz-las.

    Em suma, vamos aprender um mtodo para nos comunicar com amquina da melhor forma buscando t-la cada vez mais como aliada na soluode problemas que auxiliem o ser humano tanto social como economicamente.

    Bons estudos!

    Patricia Rucker de Bassi

    Coordenadora dos Cursos de Tecnologia em Anlise e Desenvolvimento deSistemas e Tecnologia em Gesto de TI

    Livro _logica_programacao.indb 6 05/04/2016 08:59:33

  • 7/25/2019 Livro Logica Programacao b

    7/148

    1

    Fundamentos daLgica para Programao

    Introduo

    S , computador uma das maiores invenes dohomem e tem se mostrado uma ferramenta verstil, rpida e segurapara a manipulao de informaes.

    P inveno responsvel pela intensificaoda mecanizao e descobertas cientficas na vida moderna. Esta afir-mao d um carter autnomo ao computador, como se o mesmo

    fizesse tudo sozinho. Entretanto cabe esclarecer que o computador uma grande ferramenta de trabalho, servindo de auxlio para asmais diversas atividades. Porm esta mquina no criativa e neminteligente, na verdade, apenas reproduz o que lhe ordenado pormeio de seus programas de computador.

    Os programas de computador so construdos para resolveralgum problema especfico e a soluo adotada sempre uma soluo

    Livro _logica_programacao.indb 7 05/04/2016 08:59:34

  • 7/25/2019 Livro Logica Programacao b

    8/148

    8

    Lgica de programao

    lgica. E essa soluo formalizada em um algoritmo, que podemos entender

    como uma receita de bolo a ser adotada para a soluo do problema. A Lgicapara Programao ento o passo inicial para a construo de um programade computador.

    Por tratar de questes relacionadas ao raciocnio natural do ser humano,esta aula no apresenta pr-requisitos formais, entretanto cabe ressaltar queser pr-requisito para as demais aulas deste caderno. Para voc alcanar oobjetivo proposto, ser necessrio apenas disciplinar o seu modo de pensar,evitando extrapolar os limites de abstrao, ou seja, focar apenas o problemaa ser resolvido, uma vez que esse material dar a voc embasamento terico

    para compreender como o pensamento lgico pode ser representado e repro-duzido em um algoritmo computacional.

    Esperamos que, ao final desta aula, voc seja capaz de:

    2 entender como a lgica formal e matemtica aplicada na Programa-o de Computadores;

    2 compreender a importncia da construo de algoritmos computacio-nais.

    Por isso, nesta aula, temos trs questes a serem respondidas: o que aLgica? Como a Lgica aplicada Programao de Computadores? O que um Algoritmo? Vamos comear explicando os princpios bsicos do pensa-mento lgico.

    1.1 O que Lgica?

    No h consenso quanto definio da Lgica. Alguns autores a defi-nem como o estudo dos processos vlidos e gerais pelos quais atingimos averdade, outros como a cincia das leis do pensamento, ou somente como oestudo dos princpios da inferncia vlida. Esta pluralidade de definies nosd conta da diversidade de estudos que so abrangidos pela Lgica.

    No seria cabvel discutir sobre lgica sem lanar mo da Filosofia.Mesmo no querendo aprofundar no mrito filosfico, necessrio revisar asbases filosficas da lgica a fim de compreender a sua origem e funo.

    Livro _logica_programacao.indb 8 05/04/2016 08:59:34

  • 7/25/2019 Livro Logica Programacao b

    9/148

    9

    Fundamentos da Lgica para Programao

    A Lgica foi criada por Aristteles, no sculo IV a.C., como uma cin-

    cia autnoma que se dedica ao estudo dos atos do pensamento conceito,juzo, raciocnio, demonstrao do ponto de vista da sua estrutura ou formaLgica, sem ter em conta qualquer contedo material. por esta razo queessa Lgica Aristotlica tambm conhecida por Lgica Formal.

    Em contraposio a esse conceito de Lgica Formal, surgiu um outro ode Lgica Material para designar o estudo do raciocnio no que ele dependequanto ao seu contedo ou matria.

    Essa distino entre Lgica Formal e Lgica Material nos permite perce-ber porque: tendo em conta a sua forma, o raciocnio correto ou incorreto(vlido ou invlido). Mas se atendermos sua matria, a concluso pode serverdadeira ou falsa.

    Para exemplificar, tomemos como exemplo as seguintes sentenas deraciocnio lgico:

    I. nenhum homem sabe danar;

    II. este danarino homem;

    III. logo, este danarino no sabe danar.

    Este raciocnio formalmente correto, uma vez que a concluso est cor-retamente deduzida. Mas a concluso falsa, uma vez que falsa a primeiraproposio (Nenhum homem sabe danar). Estamos perante um raciocnioque tem validade formal, mas no tem validade material. Logo temos queconcluir que falso.

    Desde a sua criao o estudo da Lgica tem registrado enormes aperfei-oamentos, sobretudo a partir de meados do sculo XIX. costume dividir--se a sua histria em trs perodos: Perodo Clssico, Perodo Moderno e Per-odo Contemporneo.

    A Lgica Matemtica (desenvolvida no Perodo Moderno) exerceuuma influncia decisiva em muitos domnios, principalmente na Eletrnica,Ciberntica, Informtica e Inteligncia Artificial.

    Mesmo com essa multiplicidade de conceitos, a Lgica pode ser vistacomo uma cincia que procura encontrar as leis em relao s quais o nossopensamento deve obedecer para que possa ser considerado vlido.

    Livro _logica_programacao.indb 9 05/04/2016 08:59:34

  • 7/25/2019 Livro Logica Programacao b

    10/148

    10

    Lgica de programao

    No contexto da informtica, a Lgica de Programao a tcnica de

    encadear pensamentos para atingir determinado objetivo previamente defi-nido. Ou seja, a tcnica que nos permite expressaro quedeve ser feito e emque ordempara que a soluo seja alcanada.

    1.2 A Lgica no dia-a-dia

    Sempre que pensamos estamos exercitando a nossa lgica ou ilgica(no-lgica). Toda vez que falamos tambm estamos fazendo uso da lgicauma vez que a fala apenas uma representao do que pensamos.

    Quantas e quantas vezes, em um quotidiano e rotineiro dilogo, produ-zimos afirmaes do gnero: Isso lgico!, ...no tem lgica alguma. ouNo vejo lgica nisso!.

    Saber o que lgico, ou saber identificar uma estrutura lgica, em umcontexto lingstico, algo que nos transmitido por meio da nossa educao.

    Alm dessa lgica lingstica, aplicamos outros tipos de raciocnio lgicoem nosso dia-a-dia. Um bom exemplo seria pensar o porqu no colocamosnossa mo em uma superfcie quente. Parece lgico, no?! Nosso crebro rapi-

    damente processa sentenas lgicas como:I. a pele humana no suporta altas temperaturas (ou algo mais sim-

    ples como queimei minha pele no ltimo contato com uma super-fcie quente);

    II. a minha mo coberta de pele;

    III. logo, a minha mo no suporta altas temperaturas.

    Esse tipo de pensamento lgico se repete vrias e vrias vezes ao dia. Egraas Lgica nos mantemos longe de problemas.

    Isso deixa claro que ns pensamos de forma lgica o tempo todo.No entanto, temos uma grande dificuldade em formalizar este raciocniolgico. Um exemplo disso so aquelas situaes nas quais temos de expli-car a algum algo a ser feito. Muitas vezes, j fizemos essa mesma tarefainmeras vezes e, para ns, ela extremamente lgica. Porm encontra-mos dificuldades em organizar e relatar o conjunto de passos que devero

    Livro _logica_programacao.indb 10 05/04/2016 08:59:34

  • 7/25/2019 Livro Logica Programacao b

    11/148

    11

    Fundamentos da Lgica para Programao

    ser realizados. Isso acontece porque no somos acostumados a formalizar

    nosso pensamento.Para o computador, a descrio de cada passo e seu correto encadea-

    mento fundamental para que o programa funcione corretamente e que asoluo seja alcanada. Por isso costuma-se dizer que o computador nuncaerra, so as pessoas que erram. Nesse caso, so as pessoas que formalizaram asua Lgica de Programao de maneira incorreta.

    Nesse momento de nossos estudos, voc j deve ter percebido que aLgica para Programao no algo difcil ou impossvel, uma vez que ape-nas uma tcnica para dizer ao computador o que deve ser feito para atingir asoluo de um determinado problema.

    1.3 Algoritmos

    A construo de algoritmos o primeiro passo para a Programao deComputadores. uma das tarefas mais complexas da programao de com-putadores, mas tambm uma das mais desafiadoras e empolgantes.

    Um algoritmo pode ser definido como uma seqncia de passos que visa

    a atingir um objetivo definido. Assim podemos dizer que um algoritmo aorganizao do pensamento para a soluo de um problema, portanto umarepresentao da lgica.

    Um algoritmo, na Linguagem da Programao de computadores, repre-senta uma seqncia de instrues que o computador deve seguir a fim deatingir um objetivo definido. Cada instruo , na verdade, uma informaoque indica ao computador o que deve ser feito. J o programa consiste na codi-ficao precisa do algoritmo em uma linguagem de programao especfica.

    importante lembrar que a ordem na qual as instrues sero executa-

    das de fundamental importncia para a efetividade da soluo algortmica.Para entendermos melhor, imaginemos como problema a ser resolvido o pre-paro de uma carne assada. bvio que a sua soluo envolve, entre outrastarefas menores, limpar a carne, temper-la e lev-la ao forno. Mas tambm obvio que se a ordem dessas instrues for alterada certamente no iremosatingir a soluo para o problema. Imagine se levssemos a carne ao forno e atemperssemos somente depois!

    Livro _logica_programacao.indb 11 05/04/2016 08:59:34

  • 7/25/2019 Livro Logica Programacao b

    12/148

    12

    Lgica de programao

    O algoritmo no a soluo do problema, mas uma forma de solucion-

    -lo. Assim, para um mesmo problema, podemos criar diferentes algoritmosusando diferentes abordagens. Em outras palavras, podemos usar diferentesseqncias de instrues para resolver o mesmo problema. Em alguns casos,at mesmo diferentes instrues. Quase sempre existe mais do que umamaneira de resolver um problema, e essa escolha nossa. Qual ser ento amelhor das escolhas?

    Dados dois ou mais algoritmos para resolver o mesmo problema, sen-sato escolher aquele que obtm uma soluo no menor tempo possvel e queutiliza o menor espao para a representao dos dados do problema.

    Apesar de sua nomenclatura pouco usual, usamos algoritmos em vriassituaes cotidianas. Um exemplo comum so as receitas culinrias. Em umareceita culinria descrevemos todos os ingredientes que faro parte do prato,suas quantidades, a ordem em que sero usadas, suas transformaes (modode preparo) at o preparo completo do prato. Dessa forma possvel garantirque a aplicao correta do algoritmo resulte no prato desejado.

    importante esclarecer desde j que um algoritmo independe da lingua-gem de programao que ser utilizada. Na verdade, uma vez que o algoritmo

    seja desenvolvido de forma correta, poder ser implementado em diferenteslinguagens de programao sem maiores alteraes.

    A construo de um algoritmo deve observar todos os passos necessrios execuo da atividade e evitar que passos desnecessrios sejam executadosou que passos interdependentes sejam executados fora de ordem.

    Durante sua construo, um algoritmo constantemente revisto a fimde identificar novas situaes ou excees a serem tratadas.

    Quando temos um problema e precisamos construir um algoritmo para

    resolv-lo, devemos passar pelas seguintes etapas:a. definir o problema;

    b. realizar um estudo da situao atual e verificar qual(is) a(s) forma(s)de resolver o problema;

    c. terminada a fase de estudo, descrever o algoritmo que dever, aprincpio, resolver o problema;

    Livro _logica_programacao.indb 12 05/04/2016 08:59:34

  • 7/25/2019 Livro Logica Programacao b

    13/148

    13

    Fundamentos da Lgica para Programao

    d. analisar junto aos usurios se o problema ser resolvido. Se a soluo

    no foi encontrada, ou surgirem excees a serem tratadas, deverser retornado para a fase de estudo para descobrir onde est a falha.

    A fim de entender como um algoritmo construdo, vamos analisar aconstruo de um algoritmo para o seguinte problema clssico, discutido porvrios autores, inclusive em Forbellone e Eberspcher (2005, p. 4), por serum problema cotidiano e que no exige conhecimentos especficos: trocaruma lmpada queimada. A partir desse exemplo, ser possvel evidenciar oprocesso de encadeamento de idias at a soluo final do problema.

    Inicialmente, poderamos construir o seguinte algoritmo bsico parasolucionar o problema proposto:

    I. pegue uma escada;

    II. posicione-a embaixo da lmpada;

    III. busque uma lmpada nova;

    IV. suba na escada;

    V. retire a lmpada velha;

    VI. coloque a lmpada nova.Se examinarmos esse algoritmo, veremos que ele permite solucionar o pro-

    blema datroca de uma lmpada queimada. Entretanto, se considerarmos as situa-es nas quais o algoritmo poder ser aplicado, perceberemos que o mesmo no irtratar a situao em que a lmpada no esteja queimada. Na verdade, mesmo que almpada esteja funcionando, esse algoritmo ir troc-la por uma nova.

    Para solucionar esse problema, necessrio alterar o algoritmo de modoque a lmpada seja testada antes de efetuar a troca. Para isso, basta ligar ointerruptor e verificar se a lmpada est funcionando ou no. Intuitivamente,

    faramos a seguinte alterao no algoritmo:I. pegue uma escada;

    II. posicione-a embaixo da lmpada;

    III. busque uma lmpada nova;

    IV. ligue o interruptor;

    Livro _logica_programacao.indb 13 05/04/2016 08:59:34

  • 7/25/2019 Livro Logica Programacao b

    14/148

    14

    Lgica de programao

    V. se a lmpada no acender, ento:

    f. suba na escada;

    g. retire a lmpada velha;

    h. coloque a lmpada nova.

    primeira vista, o algoritmo agora est correto. Ao introduzirmos umteste seletivo, uma condio, no passoV, impomos que os passos a, be csdevero ser executados se o resultado do teste for verdadeiro. Nesse caso, sea lmpada no acender. Os testes seletivos nos permitem tratar as excees egarantir que determinados passos no sejam executados em vo, otimizandoo algoritmo.

    Esse mesmo algoritmo, apesar de funcional, ainda pode ser otimizado.Se o reexaminarmos, perceberemos que, no caso de a lmpada no estar quei-mada, teremos executado os passos I, IIe IIIem vo.

    Para tratar essa situao, bastaria reposicionar os passosI, II e IIIparaque ocorram somente aps o teste seletivo, uma vez que s sero teis casoa lmpada tenha de ser realmente trocada, ou seja, que ela esteja queimada.Desse modo, o algoritmo seria novamente alterado, ficando:

    ligue o interruptor;

    se a lmpada no acender, ento:

    a) pegue uma escada;

    b) posicione-a embaixo da lmpada;

    c) busque uma lmpada nova;

    d) suba na escada;

    e) retire a lmpada velha;

    f ) coloque a lmpada nova.

    Apesar de parecer completo, ou seja, permitindo solucionar o problemada troca da lmpada queimada, este algoritmo no leva em considerao apossibilidade de a nova lmpada no funcionar. Pois, nesse caso, seria neces-

    srio repetir os passos eef.Da surge a seguinte questo: pode ser que a outra

    Livro _logica_programacao.indb 14 05/04/2016 08:59:34

  • 7/25/2019 Livro Logica Programacao b

    15/148

    15

    Fundamentos da Lgica para Programao

    lmpada tambm no funcione, sendo necessrio repetir mais uma vez esta

    seqncia de passos. Ento, quando deveremos parar de repetir?

    Para toda repetio em um algoritmo devemos estabelecer uma condi-o de parada, ou seja, um limite para a quantidade de vezes em que os passosdevero ser repetidos. Caso no seja estabelecido esta condio de paradaocorre o que chamamos de lao infinito mais conhecido por sua designaoem ingls loopinfinito no qual os passos se repetem indefinidamente.

    No caso do nosso algoritmo, uma condio de parada adequada seria repetirenquanto a lmpada no acender. Assim o algoritmo ficaria da seguinte forma:

    VIII. ligue o interruptor;IX. se a lmpada no acender, ento:

    a. pegue uma escada;

    b. posicione-a embaixo da lmpada;

    c. busque uma lmpada nova;

    d. suba na escada;

    e. retire a lmpada velha;

    f. coloque a lmpada nova;

    g. enquanto a lmpada no acender:

    1. retire a lmpada;

    2. coloque outra lmpada.

    O passo gapresenta o que chamamos de fluxo repetitivo no qual um

    conjunto de passos pode se repetirnvezes.

    Reflita

    No se aprende algoritmos copiando ou estudando outrosalgoritmos j feitos. Para aprender algoritmos, necessrio con-stru-los e test-los.

    Livro _logica_programacao.indb 15 05/04/2016 08:59:34

  • 7/25/2019 Livro Logica Programacao b

    16/148

    16

    Lgica de programao

    1.4 Construindo algoritmos

    Antes de construir um algoritmo, necessrio entender o modelo deprocessamento geral de um programa de computador. Este modelo repre-sentado na figura 1.

    Figura1. Modelo geral de processamento de um programa de computador

    ENTRADAS PROCESSAMENTO SADADados iniciais

    para a resoluo

    do problema

    Regras do

    problema

    Resultados do

    processamento ou

    soluo para o problemaExemplo: Multiplicao de dois nmeros inteiros

    A = 25

    B = 3RESULTADO = A*B 75

    Todo programa fundamentalmente opera sobre um conjunto de entradaque representa os dados iniciais necessrios resoluo do problema. Essasentradas so ento processadas a partir de um conjunto de regras j definidase, ao final, o programa gera um conjunto de sadas que representa o resultadodo processamento.

    Assim, antes de iniciar a construo de um algoritmo, recomendadoseguir os seguintes passos:

    1. identificao do problema: determinar o que se quer resolver ouqual objetivo a ser atingido. Esse passo fundamental para a reso-

    luo do problema, pois no h como dizerao computador o quefazer para resolver o problema se nem sequer sabemos defini-lo;

    2. identificao dos dados de entrada: determinar as informaesnecessrias para os clculos que se seguiro;

    3. identificao dos dados de sada: nesse passo so definidas asinformaes que devero ser geradas como resultado do processa-

    Livro _logica_programacao.indb 16 05/04/2016 08:59:35

  • 7/25/2019 Livro Logica Programacao b

    17/148

    17

    Fundamentos da Lgica para Programao

    mento. neste passo que devemos definir inclusive o formato da

    sada como, por exemplo, se ser em tela ou na forma de relatrioimpresso;

    4. identificao das regras e limitaes do problema ou das limita-es do agente executante: nesse passo devemos identificar clara-mente quais sero as regras a serem aplicadas na soluo. tambmnesse passo que devemos definir as limitaes para o problema,uma vez que o algoritmo pode ter de cobrir apenas parte de umproblema mais geral. Ainda possvel que seja necessrio definiras limitaes do agente executante, como, por exemplo, definir as

    limitaes em funo de pouca memria RAM do computador emque o programa ir rodar;

    5. definio dos processamentos a serem executados a fim detransformar as entradas em sadas: nesse ponto deve serdeterminada a seqncia de aes ou instrues que leve soluodo problema, respeitando-se as regras j definidas;

    6. construo do algoritmo: utilizando uma das formas de represen-tao de algoritmos que iremos estudar nas prximas aulas;

    7. teste da soluo: execuo de todas as aes do algoritmo, seguindoo fluxo estabelecido para verificar se ele est realmente gerando osresultados esperados ou detectar possveis erros em sua descrio.

    Ao seguir esses passos, garantiremos que o algoritmo desenvolvido serexecutado corretamente pelo computador.

    Resumindo

    Nesta aula, foram discutidos os princpios da programao para compu-tadores. Foi apresentado o conceito de Lgica para Programao que , emessncia, uma extenso da lgica matemtica.

    Um dos conceitos mais importantes discutidos o conceito de algo-ritmo. por meio do algoritmo que informamos ao computador o que deverser feito. Vale lembrar que o encadeamento das instrues que compem oalgoritmo de fundamental importncia para seu correto funcionamento.

    Livro _logica_programacao.indb 17 05/04/2016 08:59:35

  • 7/25/2019 Livro Logica Programacao b

    18/148

    18

    Lgica de programao

    Atividades

    1. Leve em considerao os estudos que realizamos nesta aula e marquecom V (Verdadeiro) ou F (Falso) as alternativas a seguir.

    () A lgica para programao torna o computador capaz de realizartarefas de forma autnoma e criativa, sem a necessidade da interfe-rncia humana.

    () Um algoritmo representa uma seqncia lgica de instrues.

    () Cada instruo em um algoritmo faz com que o computador exe-cute uma ou um conjunto de tarefas especficas.

    () Para todo problema somente possvel criar um nico algoritmocorreto.

    () Uma vez que um algoritmo criado, no deve mais ser modificado.

    () Antes de iniciar a construo de um algoritmo, preciso definir alinguagem de programao a ser usada.

    2. Comente a importncia dos dados de entrada, do processamento e dosdados de sada para a construo de algoritmos.

    Comentrio das atividades

    Naatividade 1, caso voc tenha lido com ateno o material desta aula,percebeu que a primeira alternativa obviamente falsa, uma vez que a lgica paraprogramao permite apenas determinar a seqncia de passos a ser seguida paraa soluo de um problema. Alm disso, como foi discutido, o computador apenassegue essas instrues sem alteraes, no demonstrando comportamento criativoou autnomo. A segunda opo verdadeira, visto que o algoritmo descreve uma

    seqncia ordenada ou lgica das tarefas que o computador deve desempenhar. Aterceira opo tambm verdadeira, pois uma instruo representa uma ou umconjunto de tarefas especficas que o computador dever desempenhar. A quartaopo falsa, uma vez que um problema pode apresentar diferentes solues quedaro origem a diferentes algoritmos. A quinta opo falsa, pois um algoritmodeve sempre ser reexaminado a fim de identificar erros ou situaes inesperadas e,uma vez identificado algum desses casos, o algoritmo dever ser modificado a fim

    Livro _logica_programacao.indb 18 05/04/2016 08:59:35

  • 7/25/2019 Livro Logica Programacao b

    19/148

    19

    Fundamentos da Lgica para Programao

    de tratar a situao levantada. A sexta e ltima opo falsa, pois um algoritmo

    independe da linguagem de programao que ser mais tarde utilizada.Para realizar a atividade 2, com base no que foi discutido nesta aula,

    voc deve saber que de fundamental importncia identificar corretamenteos dados de entrada, o processamento e os dados de sada de um algoritmo.Sem conhecer os dados de entrada, corremos o risco de no possuir dados sufi-cientes para uma soluo do problema. Alm disso correremos o risco de des-considerar algum detalhe importante sobre o problema que pode ser reveladopor algum dado de entrada ignorado. J os processamentos a serem realizadossobre os dados de entrada so igualmente importantes. Eles nos diro o que

    fazer ao longo do algoritmo. Alm disso, com os resultados dos processamen-tos, j poderemos predizer alguns dos dados de sada do algoritmo. Os dadosde sada so importantes, pois representam o resultado final do algoritmo eesto diretamente associados medida de eficcia do algoritmo. Se conhecer-mos os dados de sadas, saberemos o que se quer do algoritmo.

    Ao realizar as atividades com sucesso, voc teve oportunidade de alcan-ar os objetivos propostos para esta aula de entender como a Lgica Formal eMatemtica aplicada na Programao de Computadores e de compreendera importncia da construo de algoritmos computacionais.

    Na prxima aula

    Dando continuidade ao estudo da Lgica para Programao, estuda-remos como a lgica de programao, em sua forma algortmica, pode serrepresentada. Estudaremos os mtodos mais utilizados na prtica: DescrioNarrativa, Fluxograma e Pseudocdigo.

    Livro _logica_programacao.indb 19 05/04/2016 08:59:35

  • 7/25/2019 Livro Logica Programacao b

    20/148

    20

    Lgica de programao

    Livro _logica_programacao.indb 20 05/04/2016 08:59:35

  • 7/25/2019 Livro Logica Programacao b

    21/148

    2

    Formas derepresentao

    de um algoritmo

    Introduo

    C do tempo e de estudos dos algoritmos, foramdesenvolvidas inmeras formas de se representar um algoritmo demodo a facilitar o seu entendimento e, mais tarde, a sua traduopara uma linguagem de programao especfica. Entre as formas

    de representao de algoritmos mais conhecidas, podemos citar aDescrio Narrativa, o Fluxograma Convencional e o Pseudocdigo- tambm conhecido como Linguagem Estruturada ou Portugol.Essas trs formas sero objeto de estudo desta aula.

    Uma representao clara e fcil de ser seguida facilita o desen-volvimento, depurao (correo de erros) e subseqente transfor-mao do algoritmo em um programa de computador.

    Livro _logica_programacao.indb 21 05/04/2016 08:59:36

  • 7/25/2019 Livro Logica Programacao b

    22/148

    22

    Lgica de programao

    Uma vez que esta aula trata da representao de um algoritmo neces-

    srio que voc tenha entendido o conceito de algoritmo apresentado na aulaanterior. Caso haja dvidas, recorra ao material e entre em contato com aweb-tutoria.

    Esperamos que, ao final desta aula, voc seja capaz de:

    2 representar um algoritmo usando Descrio Narrativa;

    2 representar um algoritmo usando Fluxograma;

    2 representar um algoritmo usando Pseudocdigo.

    2.1 Formas de representao

    O domnio das formas de representao de algoritmos de fundamen-tal importncia tanto para Analistas de Sistemas que so responsveis pormapear as necessidades dos clientes para a forma algortmica, quanto paraProgramadores, que iro transformar os algoritmos em programas.

    Na Linguagem Narrativa, os algoritmos so expressos diretamente emlinguagem natural no portugus, por exemplo. J o Fluxograma (ou Dia-

    grama de Fluxo) uma representao grfica que emprega formas geomtri-cas padronizadas para indicar as diversas aes e decises que devem ser exe-cutadas para resolver o problema. O Pseudocdigo emprega uma linguagemintermediria entre a linguagem natural e uma linguagem de programaopara descrever os algoritmos.

    No existe consenso entre os especialistas sobre qual a melhor maneirade representar um algoritmo. Atualmente a maneira mais comum de repre-sentar algoritmos por meio de pseudocdigo. Essa forma de representaotem a vantagem de que o algoritmo pode ser escrito de uma forma que est

    prxima de uma linguagem de programao de computadores, facilitandoa criao do programa.

    Existem outras formas de representao conhecidas, porm pouco utili-zadas, como o Diagrama de Chapin ou Nassi-Shneiderman (N-S), que apre-senta a soluo do problema por meio de um diagrama de quadros com umaviso hierrquica e estruturada. Essa forma no muito utilizada devido suadificuldade em representar a recursividade.

    Livro _logica_programacao.indb 22 05/04/2016 08:59:36

  • 7/25/2019 Livro Logica Programacao b

    23/148

    23

    Formas de representao de um algoritmo

    2.2 Descrio Narrativa

    Nessa forma de representao, os algoritmos so expressos diretamenteem linguagem natural.

    Esta forma de representao a mesma utilizada em algoritmos no--computacionais, como receitas culinrias. Dessa forma as instrues so des-critas livremente, entretanto devemos tomar alguns cuidados para manter aclareza do algoritmo.

    Para escrever um algoritmo, precisamos descrever a seqncia de ins-trues, de maneira simples e objetiva. Para isso devemos obedecer algumas

    regras bsicas:2 usar somente um verbo por frase;

    2 imaginar que voc est desenvolvendo um algoritmo para pessoasque no trabalham com informtica;

    2 usar frases curtas e simples;

    2 ser objetivo;

    2 procurar usar palavras que no tenham sentido dbio.

    Um exemplo de representao de um algoritmo usando Descrio Nar-rativa para o problema de clculo da mdia de um aluno ficaria:

    1. obter as notas da primeira, segunda e terceira provas;

    2. calcular a mdia aritmtica entre as trs notas;

    3. se a mdia for maior ou igual que 7,00, o aluno foi aprovado,seno, foi reprovado.

    No entanto, na prtica, essa representao pouco usada porque o usoda linguagem natural d muitas vezes oportunidade a ms interpretaes,ambigidades e imprecises. Por esse motivo, no daremos maior ateno aeste tipo de representao.

    2.3 Fluxograma

    Essa a forma grfica de representar um algoritmo mais conhecida eutilizada. O fluxograma nos permite mostrar graficamente a lgica de umalgoritmo, enfatizando passos individuais e o fluxo de execuo.

    Livro _logica_programacao.indb 23 05/04/2016 08:59:36

  • 7/25/2019 Livro Logica Programacao b

    24/148

    24

    Lgica de programao

    intermediria descrio narrativa e ao pseudocdigo, pois menos

    imprecisa que a primeira e, no entanto, no se preocupa com detalhes de imple-mentao do programa como a segunda, como, por exemplo, o tipo de vari-veis utilizadas.

    Para muitos autores, o fluxograma a forma universal de representao,pois se utiliza de figuras geomtricas padronizadas para ilustrar os passos aserem seguidos para a resoluo de problemas. E o ideal que um algoritmoseja entendido da mesma forma por diferentes pessoas que o utilizarem.

    Para que um fluxograma seja interpretado corretamente, necess-rio entender sua sintaxee sua semntica. Sobre sintaxe de um fluxograma,devemos entender como a correta utilizao dos seus smbolos grficos e dasexpresses que podem ser escritas no seu interior. J a semntica diz respeitoao significado de cada smbolo, ou seja, como interpret-lo corretamente.Com isso possvel entender e simular o algoritmo representado.

    A interpretao de um fluxograma, via de regra, se d de cima para baixoe da esquerda para a direita. importante seguir essa regra, pois garante queo fluxo de instrues seja entendido corretamente.

    Por se tratar de uma representao grfica, o fluxograma no se mostra

    adequado para a representao de algoritmos maiores e/ou mais complexos.Nesses casos, comum o uso do pseudocdigo como forma de representao.

    2.3.1 Simbologia bsica de um fluxograma

    Estes so alguns dos smbolos mais conhecidos e utilizados ao longo dosanos pelos profissionais da rea de informtica para a descrio de algoritmosusando fluxograma e so descritos na norma internacional ISO 5807/1985.

    Inicio

    Terminador

    Smbolo utilizado como ponto para indicar o incio e/ou

    fim do fluxo de um programa. importante salientar que um programadeve possuir apenas um terminador de INCIO e outro de FIM.

    Varivel

    Entrada Manual

    Utilizado para ler os dados necessrios ao programa. Usado para

    representar dados, independente do tipo de mdia, que sejam

    fornecidos manualmente, em tempo de processamento. Per-

    mite representar a entrada de dados via teclado, mouse, leitor de

    cdigo de barras ou qualquer outro dispositivo de entrada.

    Livro _logica_programacao.indb 24 05/04/2016 08:59:36

  • 7/25/2019 Livro Logica Programacao b

    25/148

    25

    Formas de representao de um algoritmo

    Dados

    Dados

    Utilizado para representar dados tanto de entrada quanto de sadaj definidos no prprio programa, como valores de constantes.

    Condio

    SIM NO

    Deciso

    Indica a deciso que deve ser tomada, indicando a possibilidade

    de desvios para diversos outros pontos do fluxo, dependendo do

    resultado de comparao de uma condio estabelecida. Essa estru-

    tura permite controlar o fluxo de instrues em um fluxograma.

    Doc

    Documento

    Utilizado para representar a utilizao de algum documentoespecfico contendo dados necessrios ao algoritmo.

    Dados

    Dados Arma-

    zenados

    Usado para indicar dados que esto ou deve-

    ro ser armazenados pelo algoritmo.

    Varivel oumensagem

    Exibio

    utilizado quando se deseja que os dados sejam impressos. Repre-

    senta um dispositivo de sada como o monitor ou a impressora.

    Operaes

    Preparao

    Refere-se a um determinado grupo de opera-

    es no includas da diagramao.

    Refernciade Pgina

    Utilizado quando preciso particionar o diagrama. Quando ocor-

    rer mais de uma partio, colocada uma letra ou nmero dentro

    do smbolo de conexo para identificar os pares de ligao.

    Referncia fora

    da Pgina

    Especfico para indicar conexo do fluxo em outra pgina.

    Livro _logica_programacao.indb 25 05/04/2016 08:59:36

  • 7/25/2019 Livro Logica Programacao b

    26/148

    26

    Lgica de programao

    Seta de orienta-

    o de fluxo

    Permite indicar o sentido do fluxo de dados. Serve exclusiva-

    mente para conectar os smbolos ou blocos existentes.

    Processo

    Processamento

    Smbolo ou bloco que se utiliza para indicar clculos (algorit-

    mos) a efetuar, atribuies de valores ou qualquer manipulao

    de dados que tenha um bloco especfico para sua descrio.

    2.3.2 Construindo um fluxograma

    Para entendermos como um fluxograma criado para representar umalgoritmo, vamos discutir passo-a-passo a criao de um fluxograma pararepresentar um algoritmo que permita calcular a mdia final de um alunoconsiderando que todo aluno realiza trs provas no semestre. O aluno considerado aprovado se a sua mdia for igual ou superior a 7,00, seno considerado reprovado.

    Antes de iniciarmos a construo do fluxograma, devemos formalizar oalgoritmo para solucionar o problema, de acordo com o que estudamos na

    primeira aula. evidente que este um problema de pouca complexidade e que envolve

    poucas regras. Para resolver esse problema, fica claro que precisaremos conhe-cer as trs notas do aluno, que devero ser informadas pelo usurio e, emseguida, calcular a mdia por meio do clculo de mdia aritmtica simplespara a qual devemos aplicar a frmula mdia = (nota1+nota2+nota3)/3. Apso clculo da mdia, necessrio testar se o seu valor igual ou superior aovalor 7,00 e, nesse caso, dever ser listada a mensagem Aprovado. Em casocontrrio, dever ser listada a mensagem Reprovado. Agora que conhece-mos o algoritmo, possvel represent-lo como um fluxograma.

    Inicialmente a forma mnima de um fluxograma dada pela juno deseus terminadores de incio e fim. Na verdade, essa construo mnima exe-cuta absolutamente nada. Os smbolos de INICIO e FIM, na verdade, norepresentam instrues de fato, mas so marcadores essenciais que permitema correta interpretao do fluxograma.

    Livro _logica_programacao.indb 26 05/04/2016 08:59:37

  • 7/25/2019 Livro Logica Programacao b

    27/148

    27

    Formas de representao de um algoritmo

    Entretanto, para nosso algoritmo, ser necessrio ler os dados de entrada,

    nesse caso, as trs notas do aluno. Com isso, necessrio expandir o nosso flu-xograma. Por motivos didticos, para cada varivel foi utilizado um smbolode entrada manual. Na prtica, entretanto, comum a utilizao de apenasum smbolo contendo todas as variveis a serem lidas.

    De posse do valor de cada uma das trs notas, possvel processar amdia do aluno. Vamos representar esse processamento utilizando o smbolode processo, como mostra a figura 1. Em um fluxograma, devemos semprerepresentar a atribuio de valor a uma varivel por meio do smbolo ,na formavarivelvalor. Em um fluxograma, a expressovarivel = valor

    representa o teste se o valor da varivel igual ao valor informado do ladodireito da expresso e no uma atribuio.

    Figura1. Exemplo de algoritmo representado nas trs formas mais comuns

    Clculo da Mdia de dois nmeros inteiros positivos mdia = ( a + b)/2

    Incio de ProgramaLeia os valores a e bSe a e b forem maior do que zero Calcula o valor da mdia a

    partir da frmula [mdia =(a + b)/2]

    Imprime o valor da mdiaSeno Imprime Os valores devem

    ser positivosFim do programa

    Incio de Programa

    Leia a,b

    Se a > 0 e b > 0 ento

    Calcula o valor da mdia apartir da mdia = (a + b)/2

    Imprime o valor da mdia

    Seno

    Imprime Os valores devemser positivos

    Fim se

    Fim do programa

    Fluxograma

    mdia

    Inicio

    Fim

    Mdia = (a+b)/2

    Leia a

    Leia b

    a>0 e b>0

    SIM NO

    Os valoresdevem serpositivos

    Linguagem

    NarrativaPseudocdigo

    2.4 Pseudocdigo

    Esse nome uma aluso posterior implementao em uma Linguagemde Programao, ou seja, quando formos programar em uma linguagem deprogramao especfica.

    Livro _logica_programacao.indb 27 05/04/2016 08:59:37

  • 7/25/2019 Livro Logica Programacao b

    28/148

    28

    Lgica de programao

    O pseudocdigo um cdigo de escrita em que se utilizam termosconvencionais para indicar as instrues do programa. Esses termos sogeralmente uma mistura de palavras da nossa linguagem natural com pala-vras e notaes tpicas das linguagens de programao.

    A utilizao de pseudocdigo permite ao programador expressaras suas idias sem ter de se preocupar com a sintaxe da linguagem deprogramao. Para isso, so utilizadas primitivas (comandos genricos)que podem ser facilmente traduzidos para uma linguagem de progra-mao especfica.

    Uma grande vantagem da utilizao de pseudocdigo o fato de per-mitir ao programador expressar as suas idias sem ter de se preocupar coma sintaxe da Linguagem de Programao. Por outro lado, esse tipo de repre-sentao o que mais se aproxima da codificao final em uma Linguagemde Programao e, por isso, a mais utilizada na prtica.

    Sntese da aula

    Nesta aula, foram discutidos conceitos sobre as formas mais comuns derepresentao de um algoritmo computacional.

    Esperamos que, a partir do que foi estudado nesta aula, voc sejacapaz de concluir que h diversas formas de representao de algoritmosque diferem entre si pela quantidade de detalhes de implementao quefornecem ou, inversamente, pelo grau de abstrao que possibilitam emrelao implementao do algoritmo em termos de uma linguagem deprogramao especfica.

    Das principais formas de representao de algoritmos, destacam-se: a

    descrio narrativa, o fluxograma convencional e o pseudocdigo. Dessastrs, a mais utilizada na prtica o pseudocdigo, principalmente por suaproximidade com o produto final o programa codificado em uma Lingua-gem de Programao o que diminui o tempo de desenvolvimento e reduzcustos. Alm disso, o pseudocdigo permite adicionar detalhes especficosda linguagem a ser utilizada.

    Livro _logica_programacao.indb 28 05/04/2016 08:59:37

  • 7/25/2019 Livro Logica Programacao b

    29/148

    29

    Formas de representao de um algoritmo

    Atividades

    Para as atividades 1, 2 e 3, considere a seguinte questo: elabore umalgoritmo para um programa que permita ler vrios nmeros inteiros a partirdo teclado e, aps a leitura de cada nmero individual, dever ser apresentadauma mensagem indicando se o nmero informado positivo, negativo ounulo. O programa dever encerrar quando o valor nulo for informado.

    1. Represente o algoritmo na forma de Descrio Narrativa.

    2. Represente o algoritmo na forma de um Fluxograma.

    3. Represente o algoritmo na forma de Pseudocdigo.

    4. Sobre a Descrio Narrativa, incorretoafirmar que:

    a. utiliza a linguagem natural para descrever o algoritmo;

    b. pouco utilizada na prtica;

    c. em funo de usar a linguagem natural, pode dar margem aambigidades, tornando o algoritmo pouco claro;

    d. possui regras fixas que garantem que um mesmo algoritmo sem-pre ser representado da mesma forma, mesmo que por pessoas

    diferentes;

    e. devemos utilizar frases curtas e simples na descrio dos passosde um algoritmo.

    5. Sobre a forma de representao de algoritmos usando Fluxograma, incorretoafirmar que:

    a) uma representao grfica dos passos a serem seguidos;

    b) os smbolos utilizados em um fluxograma so internacionalmente

    definidos para garantir que um mesmo fluxograma seja correta-mente interpretado, no importa onde tenha sido criado;

    c) a interpretao de um fluxograma, via de regra, se d de baixo paracima e da direita para a esquerda;

    d) um programa deve possuir apenas um terminador de INCIO eoutro de FIM;

    Livro _logica_programacao.indb 29 05/04/2016 08:59:37

  • 7/25/2019 Livro Logica Programacao b

    30/148

    30

    Lgica de programao

    e) por se tratar de uma representao grfica, o fluxograma no se

    mostra adequado para a representao de algoritmos maiores e/ou mais complexos.

    6. Sobre o algoritmo em pseudocdigo apresentado a seguir, corretoafirmar que:

    ALGORITIMO A6;

    VAR X: Inteiro;

    INICIO

    REPITA

    LEIA (X);

    SE (X < 0) ENTAO

    IMPRIMA (O valor informado deve ser positivo)

    SENAO

    IMPRIMA (X*X);

    FIM SE

    ATE (X

  • 7/25/2019 Livro Logica Programacao b

    31/148

    31

    Formas de representao de um algoritmo

    Comentrio das atividades

    Para resolver a atividade 1, com base no que foi estudado, existem vriasformas, visto que a Descrio Narrativa no obedece a nenhuma regra, apenassendo uma adaptao da linguagem natural. Uma possvel resposta para essaquesto :

    Repetir at que seja lido um nmero nulo

    Ler nmero

    Se o nmero for maior do que zero

    imprimir Positivo Seno se o nmero for menor do que zero

    imprimir Negativo

    Seno se o nmero for igual a zero

    imprimir Nulo

    Encerrar o programa

    Podemos ainda melhorar essa primeira soluo, suprimindo o teste se

    o nmero for igual a zero, afinal, se o valor j no for maior e nem menordo que zero s poder ser o prprio zero. Com isso diminuiremos a quanti-dade de tarefas que o computador ter de executar. Dessa forma, teramos oseguinte algoritmo:

    Repetir at que seja lido um nmero nulo

    Ler nmero

    Se o nmero for maior do que zero

    imprimir Positivo

    Seno se o nmero for menor do que zero

    imprimir Negativo

    Seno

    imprimir Nulo

    Encerrar o programa

    Livro _logica_programacao.indb 31 05/04/2016 08:59:37

  • 7/25/2019 Livro Logica Programacao b

    32/148

    32

    Lgica de programao

    Para resolver a atividade 2, tivemos de representar uma estrutura de

    repetio que permita ler N valores at que um valor nulo seja informado.E para cada valor devemos realizar testes condicionais para determinar qualmensagem deve ser escrita e para onde deve ser desviado o fluxo de instrues.Uma resposta possvel para essa questo o seguinte fluxograma:

    Inicio

    FIM

    N

    N > 0

    N < 0

    N = 0

    SIM

    SIM

    SIM

    NO NO

    NO

    Positivo

    Positivo Nulo

    J na atividade 3, em pseudocdigo, uma soluo possvel para esseproblema :

    ALGORITIMO A3;

    VAR N: Inteiro;

    INICIO

    Livro _logica_programacao.indb 32 05/04/2016 08:59:37

  • 7/25/2019 Livro Logica Programacao b

    33/148

    33

    Formas de representao de um algoritmo

    REPITA

    LEIA (N);

    SE (N > 0) ENTAO

    IMPRIMA (Positivo)

    SENAO

    SE (N < 0) ENTAO

    IMPRIMA (Negativo)

    SENAO

    IMPRIMA (Nulo)

    FIM SE

    FIM SE

    ATE (N = 0)

    FIM

    Na atividade 4, de acordo com o que foi estudado sobre Descrio Nar-rativa, voc deve ter reconhecido como opo incorreta a opo (d), pois

    nesse tipo de representao no existem regras fixas e, por usar a linguagemnatural, duas pessoas distintas podero usar termos diferentes para descre-ver um mesmo passo do algoritmo. A opo (a) correta, pois a DescrioNarrativa utiliza a linguagem natural para descrever o conjunto de passosdo algoritmo. A opo (b), por sua vez, tambm correta, pois esse tipo derepresentao pouco usado na prtica. A opo (c) correta e levanta umdos principais problemas com esse tipo de representao, que a possibili-dade de ambigidade, pois caso um passo seja ambguo, pode dar margem aentendimentos distintos do algoritmo. Por ltimo, a opo (e) tambm estcorreta, pois devemos utilizar frases curtas e simples a fim de manter a clareza

    e facilitar a interpretao do algoritmo.

    Considerando o que foi estudado nesta aula sobre fluxograma, voc deveter reconhecido como opo incorreta para a atividade 5 a opo (c), pois ainterpretao de um fluxograma deve ser sempre realizada de cima para baixoe da esquerda para a direita. Voc deveria ter reconhecido ainda a opo (a)como correta, pois o fluxograma exatamente uma representao grfica dos

    Livro _logica_programacao.indb 33 05/04/2016 08:59:37

  • 7/25/2019 Livro Logica Programacao b

    34/148

    34

    Lgica de programao

    passos de um algoritmo. A opo (b) tambm est correta, pois a norma inter-

    nacional ISO 5807/1985 define a simbologia a ser adotada na construo deum fluxograma e, com isso, um mesmo fluxograma ser corretamente inter-pretado, no importa onde tenha sido criado. A opo (d) correta, uma vezque o algoritmo representado s pode ter um incio e um fim no fluxograma.E, por fim, a opo (e) tambm deveria ser considerada correta, pois o maiorproblema com o uso de fluxograma ou de qualquer ferramenta de representa-o grfica que no so adequadas para situaes mais complexas que geremalgoritmos com uma elevada quantidade de passos.

    De acordo com o que voc estudou sobre Pseudocdigo, deve ter ficado

    claro que a opo correta para a atividade 6 a opo (e), pois, seguindo ofluxo do pseudocdigo, percebemos que a leitura e teste da varivel X encon-tram-se no bloco de instrues do comando REPITA. Assim esses passosdevero ser executados at que a condio (X

  • 7/25/2019 Livro Logica Programacao b

    35/148

    3

    Tipos de dados:variveis e constantes

    Introduo

    P de qualquer tipo de programa, o computa-dor necessita armazenar dados de natureza diversa. Esses dados soarmazenados na memria do computador.

    T existentes no computador esto ouna memria primria (memria RAM), ou na memria secundria

    (discos, fitas, CD-ROM, etc). Ns iremos trabalhar, neste caderno,somente com a memria primria, especificamente com as informa-es armazenadas na RAM (memria de acesso aleatrio).

    Para atingir os objetivos desta aula, desejvel que voc possuaconhecimento, ainda que bsico, sobre arquitetura de computadores principalmente no que diz respeito memria RAM. Pesquise sobreo assunto!

    Livro _logica_programacao.indb 35 05/04/2016 08:59:38

  • 7/25/2019 Livro Logica Programacao b

    36/148

    36

    Lgica de programao

    Esperamos que, ao final desta aula, voc seja capaz de:

    2 entender os conceitos de varivel e de constante e suas utilizaes;

    2 utilizar adequadamente cada tipo de dado disponvel.

    3.1 Manipulao das informaes

    Na verdade, toda operao realizada por um computador baseada namanipulao das informaes contidas em sua memria. De uma maneirageral, essas informaes podem ser classificadas em dois tipos:

    2 as instrues, usadas para determinar o funcionamento da mquinae a maneira como os dados devem ser tratados. As instrues soespecficas para cada arquitetura de computador, pois esto dire-tamente relacionadas s caractersticas do hardware particular como, por exemplo, o conjunto de instrues de cada processador;

    2 os dados propriamente ditos, que correspondem s informaesque devero ser processadas pelo computador.

    2 A memria do computador pode ser entendida como uma seqncia

    finita de gavetas que, em dado momento, guarda algum tipo de infor-mao, como um nmero, uma letra, uma palavra, uma frase, etc.

    O computador, para poder trabalhar com alguma dessas informaes, sejapara ler seu contedo ou alter-lo, precisa saber exatamente onde, na memria,o dado est localizado. Fisicamente, cada gaveta, ou cada posio de memria esse o termo tcnico correto possui um endereo, ou seja, um nmero,que indica o seu endereo na memria, em outras palavras, onde cada infor-mao est localizada. Esse nmero normalmente representado usando nota-o hexadecimal, tendo o tamanho de quatro, ou mais bytes dependendo da

    arquitetura do computador. So exemplos de endereos fsicos:End. Fsico Contedo

    7000:A210 Paulo Srgio

    3000:12BC 345

    4100:0006 99.834

    Livro _logica_programacao.indb 36 05/04/2016 08:59:38

  • 7/25/2019 Livro Logica Programacao b

    37/148

    37

    Tipos de dados: variveis e constantes

    O endereamento das posies de memria por meio de nmeros hexa-

    decimais perfeitamente compreendido pela mquina, mas para ns huma-nos torna-se uma tarefa complicada.

    Para resolver esse problema, as linguagens de computador facilitamo manuseio, por parte dos programadores, das posies de memria damquina, permitindo que, ao invs de trabalhar diretamente com os nme-ros hexadecimais, seja possvel atribuir nomes diferentes a cada posio dememria. Alm disso, tais nomes so de livre escolha do programador. Comesse recurso, os usurios ficaram livres dos endereos em hexadecimal e pas-sam a trabalhar com endereos lgicos. Como o contedo de cada gaveta

    (endereo lgico) pode variar, ou seja, mudar de valor ao longo da execuodo programa, convencionou-se chamar devarivela referncia a cada gaveta.

    Assim, para o exemplo de endereos fsicos mostrados anteriormente,poderamos rotular a posio de memria7000:A210como nomee, comisso, sempre que precisssemos do valor dessa posio de memria, bastariareferenciar a varivel nome. Assim ficaria o exemplo anterior:

    End. Fsico End. Lgico (varivel) Contedo

    7000:A210 nome Paulo Srgio

    3000:12BC valor 345

    4100:0006 total 99.834

    Basicamente, uma varivel possui trs atributos: um nome (ou rtulo),um tipo de dado associado mesma e um valor que representa a informaopor ela apontada. Uma vez definidos, o nome e o tipo de uma varivel nopodem ser alterados no decorrer de um programa.

    Cada Linguagem de Programao define as suas regras para a criao deidentificadores de variveis. Todavia a maioria delas concorda que um identifi-

    cador de varivel deve ser formado por uma letra ou ento por uma letra seguidade uma ou mais letras ou dgitos. Como regra, as Linguagens de Programaono permitem o uso de espaos em branco ou de qualquer outro caractere queno seja letra ou dgito, na formao de um identificador de varivel.

    Devemos sempre definir um nome significativo para as variveis em umprograma. Com isso muitas vezes possvel ter uma idia do contedo e

    Livro _logica_programacao.indb 37 05/04/2016 08:59:38

  • 7/25/2019 Livro Logica Programacao b

    38/148

    38

    Lgica de programao

    propsito de uma varivel mesmo sem inspecion-la. Um erro comum de

    programadores iniciantes a utilizao de nomes de variveis como simplesletras, como a, b, c, x, y.Isso torna o programa difcil de ler e compreender.Em alguns casos, nem mesmo o seu autor entende!

    Algumas linguagens permitem o uso do caractere _ (underline) paraseparar as palavras em um identificador. Assim possvel criar uma varivelcom o rtulo Nome_do_Cliente.

    Existem alguns dados que no sofrem alterao em seu valor do in-cio ao fim do programa. A esse tipo de informao convencionou-se cha-mar de constante. Conforme o seu tipo, a constante classificada comosendo numrica, lgica e literal.

    As constantes so muito utilizadas na programao principalmente emsituaes nas quais temos de referenciar um mesmo valor vrias vezes aolongo do programa. Para esses casos, podemos definir um nome de constantee atribuir-lhe um valor. A partir da basta referenciar o nome da constante eimplicitamente estaremos nos referenciando ao seu valor. A principal vanta-gem dessa abordagem a possibilidade de alterar o valor da constante apenasem sua definio e essa alterao ser automaticamente refletida em qualquer

    outro local do programa em que a sua referncia usada. Em casos comoesse, sem o uso de constantes, ser necessrio alterar o valor em cada linha doprograma onde ele foi usado.

    Um conceito importante sobre variveis diz respeito sua localidade ouescopo. Uma varivel declarada no programa principal passa a ser visvel emtodo o programa e, por isso, so chamadas de variveis globais. J uma variveldeclarada dentro de uma funo ou procedimento, dita como local, indi-cando que s ser visvel e conhecida dentro desse procedimento ou funo.

    Outro atributo caracterstico de uma varivel o tipo de dado que ela pode

    armazenar. Esse atributo define a natureza das informaes contidas na varivel.

    3.2 Tipos de dados

    Os dados so classificados de acordo com o tipo de informao nelescontida. Essa classificao no se aplica a nenhuma linguagem de programa-

    Livro _logica_programacao.indb 38 05/04/2016 08:59:38

  • 7/25/2019 Livro Logica Programacao b

    39/148

    39

    Tipos de dados: variveis e constantes

    o especfica; pelo contrrio, ela sintetiza os padres utilizados na maioria

    das linguagens. Na verdade, essa classificao necessria para determinar aporo de memria que ser necessria para armazenar o dado. Alm dissoessa classificao garante que a interpretao do contedo da posio dememria seja feita de forma adequada.

    3.2.1 Dados Numricos

    Nessa classificao, esto todos os dados que faam referncia a valo-res. Para o computador, existem diferentes formas de representar um valor,dependendo das suas caractersticas. Por exemplo, para armazenar um valorreal que possui casas decimais aps a vrgula necessrio um espao bemmaior de memria. J um valor inteiro ocupa bem menos espao.

    Os dados numricos possuem uma subclassificao que os define deacordo com a sua grandeza de representao. Entre as principais subclas-ses temos:

    2 inteiro os nmeros inteiros so aqueles que no possuem casasdecimais nem so nmeros fracionrios, e podem ser positivos,negativos ou zero. Exemplos de nmeros inteiros so 55 (inteiro

    positivo), 0 (zero inteiro) e -98 (inteiro negativo);2 real os dados do tipo real so aqueles que possuem parte decimal

    ou so nmeros fracionrios, e podem ser positivos, negativos ouzero. Exemplos de dados do tipo real so 3.2 (real positivo), 0.00(zero real) e -19.76 (real negativo).

    Na implementao particular de cada linguagem, esses tipos de dadosnumricos so expandidos, dando origem a novos tipos de dados. Normal-mente, esses novos tipos permitem representar valores maiores ou menores afim de permitir um melhor uso do espao de memria disponvel para execu-

    o do programa. A Linguagem de Programao C, por exemplo, apresentapara os nmeros inteiros os tipos integer (inteiro tradicional) usado pararepresentar nmeros entre 32768 at +32767 e ocupa dois bytesna memria;char(caractere que, na verdade, um inteiro pequeno) usado para repre-sentar nmeros entre 0 e 255; word usado para representar nmeros inteirospositivos entre 0 e 65535 e ocupa dois bytesna memria; ShortInt usadopara representar valores inteiros entre -128 e +128 e ocupa um bytena mem-

    Livro _logica_programacao.indb 39 05/04/2016 08:59:38

  • 7/25/2019 Livro Logica Programacao b

    40/148

    40

    Lgica de programao

    ria; e LongInt usado para representar nmeros inteiros entre 2.147.483.648

    at 2.147.483.648 e ocupa quatro bytesna memria. Existem diferentes tipospara os valores reais tambm.

    3.2.2 Dados literais (string)

    Uma informao do tipo literal representa um conjunto de caracteresque pode ser formado por letras, dgitos ou smbolos especiais.

    O computador representa cada letra, dgito e smbolo especial comoum valor inteiro que varia de 0 a 255. Assim cada caractere tratado

    internamente por esse valor. A correspondncia de valores para os carac-teres fornecida por uma padronizao internacional conhecida comoTabela ASCII.

    A Tabela ASCII ISO 8859-1, tambm chamada Latim I, uma dasTabelas ASCII estendidas, orientada especificamente para alguns idiomaseuropeus ocidentais.

    A correta visualizao dos caracteres dessa tabela depende de vrios fato-res tcnicos, inclusive da fonte utilizada. Em computadores atualizados, pro-

    vavelmente, ser possvel uma visualizao adequada sem problemas.Observe que nem todos os nmeros da tabela correspondem a grafemas.

    Cabe ressaltar que os valores de 0 a 31, 127 e 255 so reservados para funesespeciais de processamento e no representam caracteres imprimveis.

    Figura1 Tabela ASCII.

    0 32 ? 64 @ 96 ` 128 160 192 224 1 33 ! 65 A 97 a 129 161 193 225 2 34 " 66 B 98 b 130 162 194 226 3 35 # 67 C 99 c 131 163 195 227

    4 36 $ 68 D 100 d 132 164 196 228 5 37 % 69 E 101 e 133 165 197 229 6 38 & 70 F 102 f 134 166 198 230 7 39 ' 71 G 103 g 135 167 199 231 8 40 ( 72 H 104 h 136 168 200 232 9 41 ) 73 I 105 i 137 169 201 233 10 42 * 74 J 106 j 138 170 202 234 11 43 + 75 K 107 k 139 171 203 235

    Livro _logica_programacao.indb 40 05/04/2016 08:59:38

  • 7/25/2019 Livro Logica Programacao b

    41/148

    41

    Tipos de dados: variveis e constantes

    12 44 , 76 L 108 l 140 172 204 236

    13 45 - 77 M 109 m 141 173 205 237 14 46 . 78 N 110 n 142 174 206 238 15 47 / 79 O 111 o 143 175 207 239 16 48 0 80 P 112 p 144 176 208 24017 49 1 81 Q 113 q 145 177 209 241 18 50 2 82 R 114 r 146 178 210 242 19 51 3 83 S 115 s 147 179 211 243 20 52 4 84 T 116 t 148 180 212 244 21 53 5 85 U 117 u 149 181 213 245 22 54 6 86 V 118 v 150 182 214 246 23 55 7 87 W 119 w 151 183 215 247

    24 56 8 88 X 120 x 152 184 216 248 25 57 9 89 Y 121 y 153 185 217 249 26 58 : 90 Z 122 z 154 186 218 250 27 59 ; 91 [ 123 { 155 187 219 251 28 60 < 92 \ 124 | 156 188 220 252 29 61 = 93 ] 125 } 157 189 221 253

    30 62 > 94 ^ 126 ~ 158 190 222 254+

    31 63 ? 95 _ 127 159 191 223 255

    Fonte:.

    Essa conveno foi padronizada para possibilitar a migrao de progra-mas entre mquinas diferentes.

    Cabe salientar que o comprimento de um dado do tipo literal dadopelo nmero de caracteres nele contido. Logo, para armazenarmos um tipode dado literal precisamos reservar um espao contguo de memria igual aocomprimento do mesmo, destinando um bytepara cada caractere de informa-o. O literal Programao, por exemplo, possui comprimento igual a 11,ou seja, possui 11 caracteres.

    3.2.3 Dados lgicosUm dado do tipo lgico s possui dois valores possveis: verdadeiro ou

    falso. Dessa forma poderamos pensar em armazenar uma informao dessetipo em apenas um nico bit. Todavia a menor poro de memria que sepode acessar o byte(oito bits). Assim uma informao do tipo lgico arma-zenada em um bytede memria.

    Livro _logica_programacao.indb 41 05/04/2016 08:59:38

  • 7/25/2019 Livro Logica Programacao b

    42/148

    42

    Lgica de programao

    De certa forma, se por um lado isso pode parecer como um desperd-

    cio de memria, por outro simplifica bastante a arquitetura de memria doscomputadores. Alm disso isso no to relevante, uma vez que, na prtica,o nmero de ocorrncias de dados do tipo lgico bastante inferior ao deocorrncias de dados do tipo literal ou numrico.

    Sntese da aula

    Nesta aula, discutimos como o computador armazena e manipula asinformaes na memria do computador.

    A memria dos computadores composta por posies numeradas eordenadamente organizadas em bytes. Cada tipo de dado requer uma quan-tidade diferente de bytes para armazenar a sua informao na memria. Essaquantidade pode tambm variar em funo do tipo de computador ou Lin-guagem de Programao considerada.

    Uma varivel uma entidade dotada de um nomepara diferenci-la dasdemais e permitir encontrar a sua posio da memria, e um tipo de dado,que define o tipo de informao que ela capaz de guardar.

    Uma vez definidos, o nome e o tipo de uma varivel no podem ser

    alterados no decorrer de um programa. Por outro lado, a informao til davarivel passvel de modificao durante o decorrer do programa, de acordocom o fluxo de execuo do mesmo.

    J um dado constante no sofre alterao no seu valor durante a execu-o do programa.

    Atividades

    1. Com base no que foi estudado nesta aula, escolha a alternativa que apre-

    senta, respectivamente, os tipos de dados mais adequados para vari-veis que devero armazenar os seguintes contedos: idade, temperatura,nome da cidade, nmero da carteira de identidade, notas de um aluno.

    a) Inteiro, real, caractere, caractere, vetor de real.

    b) Inteiro, inteiro, caractere, caractere, vetor de inteiro.

    Livro _logica_programacao.indb 42 05/04/2016 08:59:38

  • 7/25/2019 Livro Logica Programacao b

    43/148

    43

    Tipos de dados: variveis e constantes

    c) Inteiro, real, inteiro, caractere, vetor de real.

    d) Inteiro, real, real, caractere, vetor de inteiro.

    e) Inteiro, real, caractere, real, vetor de real.

    Comentrio das atividades

    Na atividade 1, aps analisar os contedos a serem armazenados vocdeve ter concludo que a opo correta a opo (a), pois ela apresenta parao contedo idade o tipo inteiro (afinal costumamos utilizar valores inteirospositivos para a contar a passagem dos anos no usamos 3,4 anos deidade); para o contedo temperatura devemos usar casas decimais, logo otipo mais indicado o real; para o nome da cidade precisamos de um literalou caractere; para o nmero da carteira de identidade, na verdade, pode-ramos usar um tipo caractere (isso permitiria armazenar os caracteres deformatao, como ponto e hfen) ou como inteiro (sem formatao); j paraas notas de um aluno, uma nota normalmente expressa como um valorreal e como ser mais de uma nota (notas). Tomando como base essas jus-tificativas, voc deveria considerar as demais opes como incorretas, pelosseguintes motivos: a opo (b)apresenta inadequao para o contedo tem-

    peratura e para as notas do aluno; a opo (c)apresenta inadequao para onome da cidade; a opo (d) apresenta inadequaes para o nome da cidadee as notas do aluno; e a opo(e)apresenta inadequaes para o nmero dacarteira de identidade.

    Ao realizar a atividade proposta com sucesso, voc alcanou os objetivosdesta aula de entender os conceitos de varivel e de constante e suas utiliza-es e de utilizar adequadamente cada tipo de dado disponvel.

    Na prxima aulaEstudaremos os principais operadores e como podem ser usados na

    composio de expresses. Sero estudados os operadores mais gerais e queso implementados na maioria das Linguagens de Programao, nomeada-mente: aritmticos, lgicos, de atribuio e de concatenao.

    Livro _logica_programacao.indb 43 05/04/2016 08:59:38

  • 7/25/2019 Livro Logica Programacao b

    44/148

    44

    Lgica de programao

    Livro _logica_programacao.indb 44 05/04/2016 08:59:38

  • 7/25/2019 Livro Logica Programacao b

    45/148

    4

    Operadores eexpresses

    IntroduoO funcionais que atuam sobre ter-

    mos e produzem um determinado resultado.

    O , na prtica, instrues especiais pelasquais incrementamos, decrementamos, comparamos e avaliamosdados dentro de um programa de computador. Podemos classificaros operadores em trs classes:

    2 operadores aritmticos;

    2 operadores relacionais;

    2 operadores lgicos.

    Com o uso de operadores possvel construir expresses, assimcomo na matemtica. A complexidade de uma expresso deter-minada pela quantidade de operadores e termos (variveis ou valo-res constantes).

    Livro _logica_programacao.indb 45 05/04/2016 08:59:39

  • 7/25/2019 Livro Logica Programacao b

    46/148

    46

    Lgica de programao

    De acordo com o nmero de termos sobre os quais os operadores atuam,

    podemos classific-los em:2 binrios: quando atuam sobre dois termos. Os operadores aritmti-

    cos bsicos (adio, subtrao, diviso e multiplicao), por exemplo;

    2 unrios: quando atuam sobre um nico termo. O sinal de negativo(-) na frente de um nmero, cuja funo inverter seu sinal, porexemplo.

    No h pr-requisitos formais para esta aula, uma vez que trata de opera-es bsicas, pois pressupomos que voc possua conhecimentos sobre Teoria

    de Conjuntos e Matemtica Fundamental.Esperamos que, ao final desta aula, voc seja capaz de:

    2 reconhecer os principais operadores da Lgica para Programao,utilizando-os;

    2 construir corretamente expresses aritmticas e lgicas, avaliando-as.

    4.1 Operadores aritmticos

    Os operadores aritmticos so os utilizados para obter resultados num-ricos. Alm da adio, subtrao, multiplicao e diviso, grande parte daslinguagens de programao tambm disponibilizam o operador para a ope-rao de exponenciao. Os smbolos para os operadores aritmticos so oslistados a seguir.

    OPERAO SMBOLO

    Adio +

    Subtrao -

    Multiplicao *

    Diviso /

    Exponenciao ^ (depende da linguagem utilizada)

    Resto da diviso inteira MOD ou % (depende da linguagem utilizada)

    Quociente da diviso inteira DIV

    Livro _logica_programacao.indb 46 05/04/2016 08:59:39

  • 7/25/2019 Livro Logica Programacao b

    47/148

    47

    Operadores e expresses

    Esses operadores so comumente utilizados para a formao de expres-

    ses aritmticas. A avaliao da expresso o que resulta no clculo do seuresultado depende da ordem na qual os operadores so processados. Paragarantir que sempre seja obedecida uma mesma ordem, definida uma hie-rarquia para a avaliao dos operadores. Essa hierarquia herdada da prpriamatemtica. Segundo esta hierarquia:

    1. em primeiro lugar, devem ser processadas as expresses entre parn-teses;

    2. em seguida, a operao de exponenciao;

    3. ento devem ser processadas as operaes de Multiplicao e Divi-so (o que aparecer primeiro);

    4. por ltimo, devem ser processadas as operaes de Adio e Subtra-o (o que aparecer primeiro).

    Essa hierarquia garante a correta interpretao de uma expresso aritmtica.

    importante salientar que, na maioria das Linguagens de Progra-mao, o tipo de dado resultante depende dos tipos de dados dos termos.

    A seguir apresentada uma listagem com os tipos de dados resultantes

    de cada operador.OPERADOR Tipo de Dado de A Tipo de Dado de B Tipo Resultante

    A + B

    Inteiro Inteiro Inteiro

    Real Real Real

    Inteiro Real Real

    Real Inteiro Real

    A B

    Inteiro Inteiro Inteiro

    Real Real Real

    Inteiro Real RealReal Inteiro Real

    A * B

    Inteiro Inteiro Inteiro

    Real Real Real

    Inteiro Real Real

    Real Inteiro Real

    Livro _logica_programacao.indb 47 05/04/2016 08:59:39

  • 7/25/2019 Livro Logica Programacao b

    48/148

    48

    Lgica de programao

    OPERADOR Tipo de Dado de A Tipo de Dado de B Tipo Resultante

    A/B

    Inteiro Inteiro Real

    Real Real Real

    Inteiro Real Real

    Real Inteiro Real

    A DIV BInteiro Inteiro Inteiro

    Inteiro Inteiro Inteiro

    A MOD BInteiro Inteiro Inteiro

    Inteiro Inteiro Inteiro

    4.2 Operadores relacionais

    Os operadores relacionais so utilizados para comparar dados em umprograma. Os valores a serem comparados podem estar armazenados emconstantes, variveis, valores numricos ou literais.

    Os operadores relacionais so:

    OPERAO SMBOLO

    Igual a =

    Diferente de ou != ou =/= (depende da linguagem)

    Maior que >

    Menor que =

    Menor ou igual a

  • 7/25/2019 Livro Logica Programacao b

    49/148

    49

    Operadores e expresses

    Vale ressaltar que no eficaz comparar valores do tipo real com os ope-

    radores de igualdade em virtude de a representao em ponto flutuante serinexata em alguns casos.

    Apesar de algebricamente correta, a expresso (1.0 / 3.0) + (1.0 / 3.0) +(1.0 / 3.0) = 1 avaliada como falsa devido ao fato de 1.0 / 3.0 ter como resul-tado um valor que contm nmero infinito de casas decimais (3.3333333...).O computador apenas capaz de utilizar um nmero finito de casas decimaise, portanto, feito um arredondamento do valor de 1/3 em cada ocorrncia.

    Para evitar os erros causados pela representao inexata de valores reais,deve-se evitar utilizar as comparaes de igualdade com nmeros reais.

    4.3 Operadores lgicos

    Os operadores lgicos servem para combinar resultados de expresses,retornando se o resultado final verdadeiro ou falso.

    Esse tipo de operador amplamente usado na composio de expres-ses lgicas que so muito utilizadas nas estruturas de deciso e repetioem um programa.

    Os operadores lgicos so:E (do inglsAND) uma expresso desse tipo verdadeira se todas as

    condies forem verdadeiras;

    OU (do inglsOR) uma expresso desse tipo verdadeira se uma outodas as condies forem verdadeiras;

    NO (do ingls NOT) uma expresso desse tipo inverte o valor daexpresso ou condio, se verdadeira inverte para falsa e vice-versa.

    Os operadores lgicos e relacionais so elementos de fundamentalimportncia na elaborao de um programa. Em todos os programas soutilizadas expresses relacionais e lgicas para a tomada de decises e conse-qente desvio do fluxo do programa.

    O resultado de uma operao lgica vai depender dos valores dos ter-mos submetidos. A seguir apresentada uma listagem com os tipos de dadosresultantes de cada operador.

    Livro _logica_programacao.indb 49 05/04/2016 08:59:40

  • 7/25/2019 Livro Logica Programacao b

    50/148

    50

    Lgica de programao

    OPERADORTipo de

    Dado de A

    Tipo de

    Dado de B Tipo Resultante

    A e B verdadeiro verdadeiro verdadeiro

    A e B verdadeiro falso falso

    A e B falso verdadeiro falso

    A e B falso falso falso

    A ou B verdadeiro verdadeiro verdadeiro

    A ou B verdadeiro falso verdadeiro

    A ou B falso verdadeiro verdadeiro

    A ou B falso falso falso

    no A verdadeiro ----- falso

    no A falso ----- verdadeiro

    4.4 Operador de concatenao

    Esse operador usado para concatenar, em outras palavras, juntar doisvalores ou variveis do tipo texto (literal). Normalmente utilizamos esse tipode operador para compor mensagens ao longo do programa.

    Na maioria das Linguagens de Programao, o smbolo usado para a con-catenao o mesmo da adio. Assim a expresso Programar+ fcil teriacomo resultado o literal Programar fcil. comum utilizar a concatenaoem expresses envolvendo variveis. Caso a varivel seja do tipo literal, esseoperador pode ser usado diretamente; caso contrrio, ser necessrio algum tipode converso a fim de torn-lo um literal. Na verdade, a maioria das linguagensde programao traz funes para esse propsito.

    4.5 Operador de atribuio

    O operador de atribuio usado para definir o valor de uma varivel.Na prtica, para executar essa operao, o computador preenche a posio de

    Livro _logica_programacao.indb 50 05/04/2016 08:59:40

  • 7/25/2019 Livro Logica Programacao b

    51/148

    51

    Operadores e expresses

    memria apontada pela varivel com o valor posicionado do lado direito do

    operador de atribuio.A expresso custo

  • 7/25/2019 Livro Logica Programacao b

    52/148

    52

    Lgica de programao

    Atividades

    1. Das alternativas apresentadas a seguir, indique aquela que representa umoperador unrio.

    a) Maior do que [ >]

    b) Resto da diviso inteira [ % ]

    c) Negao [NOT ]

    d) Multiplicao [ * ]

    e) OU lgico [ OU ]2. Das alternativas apresentadas abaixo, indique aquela que nodevolve um

    valor lgico. Considere os seguintes valores para as variveis Media7,PaisBrasil, Nota7.25, Valorverdadeiro e Opcao=a.

    a) ((Nota >= Media) E (Opcao=b))

    b) (((Nota + 1) > Media) OU (NAO Valor))

    c) (((Media*2)-1) % 2)

    d) (((Media DIV 7) = 1) OU (Nota >= Media))e) (((Nota - Media) > 3) = Valor)

    3. Considere a seguinte expresso ((((A % 5) > 5) OU (B/C >= 1)) E((NAO ((A

  • 7/25/2019 Livro Logica Programacao b

    53/148

    53

    Operadores e expresses

    inteira tambm um operador binrio. A opo (d) incorreta, pois apre-

    senta a operao aritmtica de multiplicao que tambm binria. E, porfim, a opo (e) tambm apresenta um operador binrio, pois o operadorlgico OU opera sobre dois termos lgicos.

    Para voc responder a atividade 2, deve ter considerado a hierarquiadas operaes e os valores das variveis. Da bastou usar de substituiopara avaliar o resultado de cada expresso. Seguindo essa abordagem, vocdeve ter chegado concluso de que a nica alternativa que no devolveum valor lgico a opo (c), pois, se substituirmos os valores das vari-veis e executarmos as operaes, teremos: (((Media*2)-1) MOD 2)

    (((7*2)-1) MOD 2) ((14 1) MOD 2) (13 MOD 2) 1. Ouseja, o resultado um valor inteiro. Se analisarmos as outras expressesda mesma maneira, veremos que todas resultam em um valor lgico: aopo (a) retorna ((Nota >= Media) E (Opcao=b)) ((7.25 >= 7) E(a=b)) (verdadeiro E falso) falso; a opo (b)retorna (((Nota+ 1) > Media) OU (NAO Valor)) (((7.25 + 1) > 7) OU (NAO verda-deiro)) ((8.25 > 7) OU falso) verdadeiro OU falso verdadeiro;a opo (d) retorna (((Media DIV 7) = 1) OU (Nota >= Media)) (((7DIV 7) = 1) OU (7.25 >= 7)) ((1 = 1) OU (verdadeiro)) (ver-dadeiro OU verdadeiro verdadeiro; e a opo (e) retorna (((Nota -Media) > 3) = Valor) (((7.25 - 7) > 3) = verdadeiro) ((0.25 > 3) =verdadeiro) falso = verdadeiro falso.

    Na atividade 3, se voc utilizou a tcnica de substituio dos valores dasvariveis e a resoluo de cada operao respeitando a hierarquia entre elas,voc concluiu que ((((A MOD 5) > 5) OU (B/C >= 1)) E ((NAO ((A 5) OU (5/5 >= 1)) E ((NAO((23 5) OU (1 >= 1)) E ((NAO (ver-dadeiro E falso)) OU verdadeiro)) ((falso OU verdadeiro) E ((NAO falso)OU verdadeiro)) (verdadeiro E (verdadeiro OU verdadeiro)) (verda-deiro E verdadeiro) verdadeiro. Logo o valor para essa expresso lgica verdadeiro.

    Ao realizar as atividades propostas, checando-as com os comentrios eobtendo sucesso, voc est apto a reconhecer os principais Operadores daLgica para Programao, utilizando-os, e construir corretamente expressesaritmticas e lgicas, avaliando-as. Parabns!

    Livro _logica_programacao.indb 53 05/04/2016 08:59:40

  • 7/25/2019 Livro Logica Programacao b

    54/148

    54

    Lgica de programao

    Na prxima aula

    Estudaremos, na prxima aula, a Estrutura de Arquivo. Na prtica, essetipo de estrutura muito utilizado para o armazenamento e manipulao degrandes conjuntos de dados.

    Livro _logica_programacao.indb 54 05/04/2016 08:59:40

  • 7/25/2019 Livro Logica Programacao b

    55/148

    5Estrutura de seleo

    simplese composta

    Introduo

    A algoritmos seqenciais, ou seja,pseudocdigos nos quais todas as instrues so executadas seqen-cialmente, sem interrupes, desvios ou retornos.

    C , possvel resolver alguns tipos de problemas(poucos) com a estrutura puramente seqencial. Mas apenas comcomandos de leitura, escrita e atribuio ficamos bastante limita-dos para resolver problemas de maior complexidade. Isso porque,no mundo real, deparamo-nos seguidamente com situaes em quedevemos tomar decises e, com base nessas decises, optar por dife-

    rentes caminhos para soluo de um problema.P da disciplina, o contedo

    para o aprendizado de cada novo contedo cumulativo. Ou seja,para a perfeita compreenso de cada nova aula, voc deve ter absor-vido adequadamente o contedo visto nas aulas anteriores. Assim,para compreenso de desvio condicional simples e composto, deveestar bem assimilado o contedo das aulas anteriores.

    Livro _logica_programacao.indb 55 05/04/2016 08:59:41

  • 7/25/2019 Livro Logica Programacao b

    56/148

    56

    Lgica de programao

    Esperamos que, ao final desta aula, voc seja capaz de:

    2 compreender o uso do desvio condicional simples;

    2 entender a aplicabilidade do desvio condicional composto.

    Nesta aula, voc aprender a fazer desvios dentro do algoritmo,de forma a poder decidir o rumo que o pseudocdigo seguir durantesua execuo.

    5.1 Desvio condicional simples

    O desvio condicional simples (ou estrutura de seleo simples, ouapenas se simples) uma estrutura de seleo que, com base em um testelgico, permite optar pela execuo ou no de um determinado trecho docdigo.

    Analise a sintaxe e a representao por meio de fluxograma dessa estru-tura na figura seguinte.

    Quadro 1 Sintaxe e fluxograma do desvio condicional simples.

    SINTAXE EM PSEUDOCDIGO FLUXOGRAMA

    Por exemplo, imagine o problema de clculo da mdia de notas deum aluno, apresentado na aula anterior. Se voc desejasse que o algoritmoexibisse uma mensagem parabenizando pela aprovao (apenas em caso deaprovao), isso no seria possvel apenas com os comandos l utilizados.

    Contudo, utilizando o desvio condicional simples, essa uma tarefaextremamente fcil. Vejamos como ficaria o pseudocdigo no Portugol pararesolver esse problema com a incluso dessa nova estrutura de seleo.

    Livro _logica_programacao.indb 56 05/04/2016 08:59:46

  • 7/25/2019 Livro Logica Programacao b

    57/148

    57

    Estrutura de seleo simples e composta

    Figura 1 Exemplo de desvio condicional simples.

    O \n inserido dentro do literalserve para inserir uma quebra de

    linha. Assim, o texto logo apseste comando ser escrito na

    linha seguinte

    Executando esse algoritmo, poderemos verificar que a mensagemPara-bns! Voc foi aprovado!!, s ser exibida se a mdia calculada atender a con-dio proposta no desvio condicional, ou seja, se a mdia obtida for maior ouigual a seis. Caso a mdia seja inferior a seis, a seqncia de instrues contidano desvio condicional no ser executada, prosseguindo a execuo do algo-ritmo aps o fimse.

    Vejamos mais um exemplo. Suponhamos que voc precise desenvolverum algoritmo que solicite a digitao do nome e idade de uma pessoa e, apsisso, caso a idade seja maior ou igual 18 anos, exiba uma mensagem infor-

    mando que a pessoa (citar o nome) j atingiu a maioridade.Como resolveramos esse problema? Muito simples. Necessitaremos de

    uma varivel do tipo textopara armazenar o nome, e uma do tipo inteiropara armazenar a idade informada. O algoritmo deve ento solicitar essesdados ao usurio e, aps armazenados nas respectivas variveis, deve realizarum desvio condicional testando se a idade maior ou igual a 18. Se for, deveescrever o nome contido na varivel do tipo texto, acompanhado de um texto

    Livro _logica_programacao.indb 57 05/04/2016 08:59:46

  • 7/25/2019 Livro Logica Programacao b

    58/148

    58

    Lgica de programao

    adicional (literal), informando que atingiu a maioridade. Caso contrrio, o

    algoritmo deve finalizar.Segue um exemplo da implementao. Veja na figura.

    Figura 2 Exemplo de desvio condicional simples.

    5.2 Desvio condicional composto

    Como voc pde observar, no desvio condicional simples avaliada umacondio e, caso ela seja verdadeira, executada a lista de comando inter-nos dessa estrutura. Caso o resultado da avaliao seja falso, ignorada aseqncia de comandos e o algoritmo prossegue normalmente a execuo dasinstrues existentes aps esse desvio condicional (aps o fimse). Ou seja, aexecuo dos comandos internos estrutura condicional simples podem ou

    no ser executados.

    No desvio condicional composto (ou estrutura condicional composta,ou se composto), temos a possibilidade de dar duas opes de execuo: umase a condio for verdadeira e outra se a condio for falsa. Logo sempre serobrigatoriamente executado um dos conjuntos de instrues da estrutura.

    Analise a sintaxe a seguir e voc poder entender melhor esse conceito.

    Livro _logica_programacao.indb 58 05/04/2016 08:59:49

  • 7/25/2019 Livro Logica Programacao b

    59/148

    59

    Estrutura de seleo simples e composta

    Quadro 2 Sintaxe e fluxograma do desvio condicional composto.

    SINTAXE EM

    PSEUDOCDIGOFLUXOGRAMA

    Dessa forma, no desvio condicional composto, se a condio for verda-deira, ento ser executado somente o primeiro bloco de comandos da estrutura.Seno, ser executado apenas o segundo bloco de comandos. Aps a execuode um dos blocos de comandos, o algoritmo prosseguir sua execuo normal apartir da primeira linha de instrues logo aps o fimse. Simples, no ?

    Vamos incrementar um pouco mais o nosso algoritmo para clculo da

    mdia, convertendo o desvio condicional simples em composto, de forma queo algoritmo informe a aprovao ou o no atingimento de mdia por parte doaluno. Vejamos como ficaria o pseudocdigo na figura seguinte.

    Figura 3 Exemplo de desvio condicional composto.

    Se o contedo da varivel mediafor maior ou igual a 6,ser

    executada esta linha de comando.

    Resultado daexecuo doalgoritmo.

    Se o contedo davarivel media

    for menor do que 6,

    ser executada estalinha de comando.

    Livro _logica_programacao.indb 59 05/04/2016 08:59:50

  • 7/25/2019 Livro Logica Programacao b

    60/148

    60

    Lgica de programao

    Agora j possvel desenvolver algoritmos para solucionar problemas

    um pouco mais complexos, que exijam diferentes aes, conforme avaliaesrealizadas sobre os dados no decorrer do programa.

    Vamos exercitar mais um pouco, acompanhando o raciocnio para resol-ver os problemas a seguir.

    Problema um: implementar um algoritmo que solicite a digitao deum valor inteiro, e informe se esse valor par ou mpar.

    Figura 4 Exemplo de desvio condicional composto.

    Declarao de uma varivel paraarmazenamento do valor informado

    Mensagem deorientao ao usurio

    Armazenamento donmero digitado na

    varivel valor

    O desvio condicional testase o contedo da varivel valor

    divisvel por 2. Se for,

    informa que ele par, seno,informa que ele mpar

    Resultado de execuodo algoritmo, inserindo

    como exemplo onmero 128

    Problema dois: implementar um algoritmo que solicite a digitaode dois nmeros e, aps isso, se so iguais ou se um deles maior do queo outro.

    Figura 5Exemplo de desvio condicional simples.

    Livro _logica_programacao.indb 60 05/04/2016 08:59:50

  • 7/25/2019 Livro Logica Programacao b

    61/148

    61

    Estrutura de seleo simples e composta

    Problema trs: implementar um algoritmo que permita jogar Par oumpar contra o computador, seguindo as seguintes regras:

    2 o computador solicita a entrada de um nmero inteiro pelo usurioe, aps isso, informa um nmero aleatrio de 0 a 5;

    2 o computador vencer sempre que a soma dos nmeros informadospor ele e pelo usurio resultarem em um nmero par;

    2 o jogador humano vencer sempre que a soma dos nmeros infor-mados por ele e pelo computador resultarem em um nmero mpar;

    2

    aps o lanamento dos dois nmeros, o algoritmo deve realizar osclculos e informar o vencedor.

    Figura 6 Exemplo de desvio condicional composto.

    Livro _logica_programacao.indb 61 05/04/2016 08:59:50

  • 7/25/2019 Livro Logica Programacao b

    62/148

    62

    Lgica de programao

    Claro como a gua? No? Ento vamos explicar cada linha do blocoprincipal para que no fique nenhuma dvida.

    Iniciamos com a declarao de trs variveis. Uma para armazenar ovalor informado pelo jogador humano, outra para o nmero do computador,e uma terceira para armazenar a soma dos dois primeiros.

    inteirohumano , computador , total

    As duas linhas seguintes apresentam uma mensagem na tela solicitandoque o jogador humano informe um nmero inteiro, armazenando-o na vari-vel humano.

    escrever Digite um nmero inteiro:

    ler humano

    Aps isso, a vez de o computador escolher seu lanamento, que rea-lizado de forma aleatria. Para isso, vamos utilizar duas funes predefinidasno portugol:

    2 aleatorio() funo utilizada para gerar um nmero aleatrio do tipoReal, compreendido entre 0.0 e 1.0 (inclusive). Como uma funo

    sem argumento, nada deve ser informado entre os parnteses que acompe. Como a funo gerar nmeros Reais compreendidos nointervalo de 0.0 a 1.0 (ex.: 0.0, 0.01, 0.2, 0.5, 0.9, 1.0) e necessitamosde valores de 0 a 5, multiplicaremos o resultado da chamada da funoaleatorio() por 5, uma vez que o menor nmero possvel 0.0, quemultiplicado por 5 continuaria sendo 0.0, e o maior nmero possvel 1.0, o qual multiplicado por 5 resulta em 5.0. Dessa forma, o conjuntoexemplificado anteriormente teria sua representao multiplicada por5 (ex.: 0.0, 0.05, 1.0, 2.5, 4.5, 5.0);

    2 int() funo utilizada para retornar parte inteira de um