Livro Logica Programacao b

May 7, 2019 | Author: jcunha88 | Category: Logic, Algorithms, Computer Programming, Programming Language, Data
Share Embed Donate


Short Description

Logica de Programação....

Description

Lógica de ~ Programacao ,

Faculdade Educacional da Lapa (org.)

Curitiba 2016

Livro _logica_programacao.indb 1

05/04/2016 08:59:29

Ficha Catalográfica elaborada pela Fael. Biliotecária Biliotecári a – Cassiana Souza CRB9/1501

 Direitos dea edição reservados à Fael. É proibida a reprodução total ou parcial dea obra sem autorização expressa da Fael.

FAEL  Direção de Produção Coordenação Editorial  Revisão Projeto Gráfco

Capa

FabriCO

Sandro Niemicz  Katia Cristina Santos Mendes

Imagem capa

Shuerstock 

 Diagramação

Katia Cristina Santos Mendes

Revisão

Livro _logica_programacao.indb 2

Fernando Santos de Moraes Sarmento Raquel Andrade Lorenz 

Patricia Rucker De Bassi

05/04/2016 08:59:31

Sumário

1.

F���������� �� Lógica para Programação Programação |  7 

2.

F����� �� representação de um algoritmo |  21 

3.

T���� �� dados: variáveis e constantes | 3 5

4.

O��������� � expressões | 4 5

5.

E�������� �� seleção simples e composta |  55

6.

E�������� �� seleção encadeada | 69

7.

E�������� �� repetição com teste no início | 87 

8.

E�������� �� repetição com teste no final |  99

9.

E�������� �� repetição com variável de controle | 111 

10.

E��������� �� Dados | 129

11.

M������������ | 137 

R���������� | 147 

Livro _logica_programacao.indb 3

05/04/2016 08:59:32

Livro _logica_programacao.indb 4

05/04/2016 08:59:32

Apresentação

P������ �����,  A arte e ciência de programar computadores é algo fascinante. Podemos definir esta atividade como emprestar um pouco de nossa inteligência ao computador. Quando o computador trabalha é como se nossa inteligência emprestada a ele estivesse trabalhando. E para isto precisamos aprender como se comunicar com ele. O conhecimento lógico é essencial para qualquer pessoa que deseja iniciar a carreira na área de desenvolvimento de sistemas, independente do paradigma da linguagem ou do sistema que iremos desenvolver. E este conceito é bastante necessário na lógica de programação para obtermos retorno útil destas máquinas maravilhosas que são os computadores.

Livro _logica_programacao.indb 5

05/04/2016 08:59:33

 ,

 A lógica de programação aborda como se escreve um programa de computador, isto é, como se escreve um algoritmo. Um algoritmo nada mais é do que um manual de instrução, uma receita, uma sequencia lógica de ações que devem ser realizadas para se atingir um objetivo. Quando o algoritmo é aplicado na área da computação ele faz parte da lógica de programação. Nesta disciplina iremos aprender como se escreve um algoritmo, isto é, como organizar nosso pensamento para dizer ao computador o que fazer. Durante esta disciplina iremos também aprimorar a forma de escrever os algoritmos, utilizando a lógica de programação para entender o melhor jeito de escrevê-los. Nosso objetivo final é que o computador interprete corretamente nosso algoritmo e retorne a resposta correta do problema a ser resolvido. Por isso as atividades práticas são imprescindíveis para aprimorarmos a lógica de programação. Para isto veremos os conceitos básicos de logica de programação e as formas mais utilizadas para a representação de algoritmos. Abordaremos os operadores lógico-matemáticos e relacionais necessários para a construção de expressões. Iniciaremos a construção de algoritmos sequenciais, aprendendo os comandos básicos de entrada e saída de dados. Os comandos de seleção serão apresentados a seguir, abordando os desvios condicionais simples, composto e encadeado. Conheceremos também os diferentes comandos de repetição e suas aplicabilidades. Iremos entender como criar e manipular estruturas de dados simples como vetores e registros. E por fim vamos aprender a criar funções e como melhor utilizá-las. Em suma, vamos aprender um método para nos comunicar com a máquina da melhor forma buscando tê-la cada vez mais como aliada na solução de problemas que auxiliem o ser humano tanto social como economicamente. Bons estudos! Patricia Rucker de Bassi Coordenadora dos Cursos de Tecnologia em Análise e Desenvolvimento de Sistemas e Tecnologia em Gestão de TI

– 6 –

Livro _logica_programacao.indb 6

05/04/2016 08:59:33

1 Fundamentos da Lógica para Programação

Introdução S�� ������, � computador é uma das maiores invenções do homem e tem se mostrado uma ferramenta versátil, rápida e segura para a manipulação de informações. P��� ������ ���� invenção é responsável pela intensificação da mecanização e descobertas científicas na vida moderna. Esta afirmação dá um caráter autônomo ao computador, como se o mesmo fizesse tudo sozinho. Entretanto cabe esclarecer que o computador é uma grande ferramenta de trabalho, servindo de auxílio para as mais diversas atividades. Porém esta máquina não é criativa e nem inteligente, na verdade, apenas reproduz o que lhe é ordenado por meio de seus programas de computador. Os programas de computador são construídos para resolver algum problema específico e a solução adotada é sempre uma solução

Livro _logica_programacao.indb 7

05/04/2016 08:59:34

Lógica de programação

lógica. E essa solução é formalizada em um algoritmo, que podemos entender como uma receita de bolo a ser adotada para a solução do problema. A Lógica para Programação é então o passo inicial para a construção de um programa de computador. Por tratar de questões relacionadas ao raciocínio natural do ser humano, esta aula não apresenta pré-requisitos formais, entretanto cabe ressaltar que será pré-requisito para as demais aulas deste caderno. Para você alcançar o objetivo proposto, será necessário apenas disciplinar o seu modo de pensar, evitando extrapolar os limites de abstração, ou seja, focar apenas o problema a ser resolvido, uma vez que esse material dará a você embasamento teórico para compreender como o pensamento lógico pode ser representado e reproduzido em um algoritmo computacional. Esperamos que, ao final desta aula, você seja capaz de: 2

2

entender como a lógica formal e matemática é aplicada na Programação de Computadores; compreender a importância da construção de algoritmos computacionais.

Por isso, nesta aula, temos três questões a serem respondidas: o que é a Lógica? Como a Lógica é aplicada à Programação de Computadores? O que é um Algoritmo? Vamos começar explicando os princípios básicos do pensamento lógico.

1.1 O que é Lógica? Não há consenso quanto à definição da Lógica. Alguns autores a definem como o estudo dos processos válidos e gerais pelos quais atingimos a verdade, outros como a ciência das leis do pensamento, ou somente como o estudo dos princípios da inferência válida. Esta pluralidade de definições nos dá conta da diversidade de estudos que são abrangidos pela Lógica. Não seria cabível discutir sobre lógica sem lançar mão da Filosofia. Mesmo não querendo aprofundar no mérito filosófico, é necessário revisar as bases filosóficas da lógica a fim de compreender a sua origem e função. – 8 –

Livro _logica_programacao.indb 8

05/04/2016 08:59:34

Fundamentos da Lógica para Programação

 A Lógica foi criada por Aristóteles, no século IV a.C., como uma ciência autônoma que se dedica ao estudo dos atos do pensamento – conceito,  juízo, raciocínio, demonstração – do ponto de vista da sua estrutura ou forma Lógica, sem ter em conta qualquer conteúdo material. É por esta razão que essa Lógica Aristotélica é também conhecida por Lógica Formal. Em contraposição a esse conceito de Lógica Formal, surgiu um outro – o de Lógica Material – para designar o estudo do raciocínio no que ele depende quanto ao seu conteúdo ou matéria. Essa distinção entre Lógica Formal e Lógica Material nos permite perceber porque: tendo em conta a sua forma, o raciocínio é correto ou incorreto (válido ou inválido). Mas se atendermos à sua matéria, a conclusão pode ser verdadeira ou falsa. Para exemplificar, tomemos como exemplo as seguintes sentenças de raciocínio lógico: I. nenhum homem sabe dançar; II. este dançarino é homem; III. logo, este dançarino não sabe dançar. Este raciocínio é formalmente correto, uma vez que a conclusão está corretamente deduzida. Mas a conclusão é falsa, uma vez que é falsa a primeira proposição (“Nenhum homem sabe dançar”). Estamos perante um raciocínio que tem validade formal, mas não tem validade material. Logo temos que concluir que é falso. Desde a sua criação o estudo da Lógica tem registrado enormes aperfeiçoamentos, sobretudo a partir de meados do século XIX. É costume dividir-se a sua história em três períodos: Período Clássico, Período Moderno e Período Contemporâneo.  A Lógica Matemática (desenvolvida no Período Moderno) exerceu uma influência decisiva em muitos domínios, principalmente na Eletrônica, Cibernética, Informática e Inteligência Artificial. Mesmo com essa multiplicidade de conceitos, a Lógica pode ser vista como uma ciência que procura encontrar as leis em relação às quais o nosso pensamento deve obedecer para que possa ser considerado válido. – 9 –

Livro _logica_programacao.indb 9

05/04/2016 08:59:34

Lógica de programação

No contexto da informática, a Lógica de Programação é a técnica de encadear pensamentos para atingir determinado objetivo previamente definido. Ou seja, é a técnica que nos permite expressar  o que deve ser feito e em que ordem para que a solução seja alcançada.

1.2 A Lógica no dia-a-dia  Sempre que pensamos estamos exercitando a nossa lógica ou ilógica (não-lógica). Toda vez que falamos também estamos fazendo uso da lógica uma vez que a fala é apenas uma representação do que pensamos. Quantas e quantas vezes, em um quotidiano e rotineiro diálogo, produzimos afirmações do gênero: “Isso é lógico!”, “...não tem lógica alguma.” ou “Não vejo lógica nisso!”. Saber o que é lógico, ou saber identificar uma estrutura lógica, em um contexto lingüístico, é algo que nos é transmitido por meio da nossa educação.  Além dessa lógica lingüística, aplicamos outros tipos de raciocínio lógico em nosso dia-a-dia. Um bom exemplo seria pensar o porquê não colocamos nossa mão em uma superfície quente. Parece lógico, não?! Nosso cérebro rapidamente processa sentenças lógicas como: I.

a pele humana não suporta altas temperaturas (ou algo mais simples como “queimei minha pele no último contato com uma superfície quente”);

II. a minha mão é coberta de pele; III. logo, a minha mão não suporta altas temperaturas. Esse tipo de pensamento lógico se repete várias e várias vezes ao dia. E graças à Lógica nos mantemos longe de problemas. Isso deixa claro que nós pensamos de forma lógica o tempo todo. No entanto, temos uma grande dificuldade em formalizar este raciocínio lógico. Um exemplo disso são aquelas situações nas quais temos de explicar a alguém algo a ser feito. Muitas vezes, já fizemos essa mesma tarefa inúmeras vezes e, para nós, ela é extremamente lógica. Porém encontramos dificuldades em organizar e relatar o conjunto de passos que deverão – 10 –

Livro _logica_programacao.indb 10

05/04/2016 08:59:34

Fundamentos da Lógica para Programação

ser realizados. Isso acontece porque não somos acostumados a formalizar nosso pensamento. Para o computador, a descrição de cada passo e seu correto encadeamento é fundamental para que o programa funcione corretamente e que a solução seja alcançada. Por isso costuma-se dizer que o computador nunca erra, são as pessoas que erram. Nesse caso, são as pessoas que formalizaram a sua Lógica de Programação de maneira incorreta. Nesse momento de nossos estudos, você já deve ter percebido que a Lógica para Programação não é algo difícil ou impossível, uma vez que é apenas uma técnica para dizer ao computador o que deve ser feito para atingir a solução de um determinado problema.

1.3 Algoritmos  A construção de algoritmos é o primeiro passo para a Programação de Computadores. É uma das tarefas mais complexas da programação de computadores, mas também uma das mais desafiadoras e empolgantes. Um algoritmo pode ser definido como uma seqüência de passos que visa a atingir um objetivo definido. Assim podemos dizer que um algoritmo é a organização do pensamento para a solução de um problema, portanto é uma representação da lógica. Um algoritmo, na Linguagem da Programação de computadores, representa uma seqüência de instruções que o computador deve seguir a fim de atingir um objetivo definido. Cada instrução é, na verdade, uma informação que indica ao computador o que deve ser feito. Já o programa consiste na codificação precisa do algoritmo em uma linguagem de programação específica. É importante lembrar que a ordem na qual as instruções serão executadas é de fundamental importância para a efetividade da solução algorítmica. Para entendermos melhor, imaginemos como problema a ser resolvido o preparo de uma carne assada. É óbvio que a sua solução envolve, entre outras tarefas menores, limpar a carne, temperá-la e levá-la ao forno. Mas também é obvio que se a ordem dessas instruções for alterada certamente não iremos atingir a solução para o problema. Imagine se levássemos a carne ao forno e a temperássemos somente depois! – 11 –

Livro _logica_programacao.indb 11

05/04/2016 08:59:34

Lógica de programação

O algoritmo não é a solução do problema, mas uma forma de solucioná-lo. Assim, para um mesmo problema, podemos criar diferentes algoritmos usando diferentes abordagens. Em outras palavras, podemos usar diferentes seqüências de instruções para resolver o mesmo problema. Em alguns casos, até mesmo diferentes instruções. Quase sempre existe mais do que uma maneira de resolver um problema, e essa escolha é nossa. Qual será então a melhor das escolhas? Dados dois ou mais algoritmos para resolver o mesmo problema, é sensato escolher aquele que obtém uma solução no menor tempo possível e que utiliza o menor espaço para a representação dos dados do problema.  Apesar de sua nomenclatura pouco usual, usamos algoritmos em várias situações cotidianas. Um exemplo comum são as receitas culinárias. Em uma receita culinária descrevemos todos os ingredientes que farão parte do prato, suas quantidades, a ordem em que serão usadas, suas transformações (modo de preparo) até o preparo completo do prato. Dessa forma é possível garantir que a aplicação correta do algoritmo resulte no prato desejado. É importante esclarecer desde já que um algoritmo independe da linguagem de programação que será utilizada. Na verdade, uma vez que o algoritmo seja desenvolvido de forma correta, poderá ser implementado em diferentes linguagens de programação sem maiores alterações.  A construção de um algoritmo deve observar todos os passos necessários à execução da atividade e evitar que passos desnecessários sejam executados ou que passos interdependentes sejam executados fora de ordem. Durante sua construção, um algoritmo é constantemente revisto a fim de identificar novas situações ou exceções 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 situação atual e verificar qual(is) a(s) forma(s) de resolver o problema;

c.

terminada a fase de estudo, descrever o algoritmo que deverá, a princípio, resolver o problema; – 12 –

Livro _logica_programacao.indb 12

05/04/2016 08:59:34

Fundamentos da Lógica para Programação

d.

analisar junto aos usuários se o problema será resolvido. Se a solução não foi encontrada, ou surgirem exceções a serem tratadas, deverá ser retornado para a fase de estudo para descobrir onde está a falha.

 A fim de entender como um algoritmo é construído, vamos analisar a construção de um algoritmo para o seguinte problema clássico, discutido por vários autores, inclusive em Forbellone e Eberspächer (2005, p. 4), por ser um problema cotidiano e que não exige conhecimentos específicos: “trocar uma lâmpada queimada”. A partir desse exemplo, será possível evidenciar o processo de encadeamento de idéias até a solução final do problema. Inicialmente, poderíamos construir o seguinte algoritmo básico para solucionar o problema proposto: I.

pegue uma escada;

II. posicione-a embaixo da lâmpada; III. busque uma lâmpada nova; IV. suba na escada; V. retire a lâmpada velha; VI. coloque a lâmpada nova. Se examinarmos esse algoritmo, veremos que ele permite solucionar o problema da  troca de uma lâmpada queimada . Entretanto, se considerarmos as situações nas quais o algoritmo poderá ser aplicado, perceberemos que o mesmo não irá tratar a situação em que a lâmpada não esteja queimada. Na verdade, mesmo que a lâmpada esteja funcionando, esse algoritmo irá trocá-la por uma nova. Para solucionar esse problema, é necessário alterar o algoritmo de modo que a lâmpada seja testada antes de efetuar a troca. Para isso, basta ligar o interruptor e verificar se a lâmpada está funcionando ou não. Intuitivamente, faríamos a seguinte alteração no algoritmo: I.

pegue uma escada;

II. posicione-a embaixo da lâmpada; III. busque uma lâmpada nova; IV. ligue o interruptor; – 13 –

Livro _logica_programacao.indb 13

05/04/2016 08:59:34

Lógica de programação

V. se a lâmpada não acender, então: f.

suba na escada;

g.

retire a lâmpada velha;

h.

coloque a lâmpada nova.

 À primeira vista, o algoritmo agora está correto. Ao introduzirmos um teste seletivo, uma condição, no passo  V , impomos que os passos a , b e c só deverão ser executados se o resultado do teste for verdadeiro. Nesse caso, se a lâmpada não acender. Os testes seletivos nos permitem tratar as exceções e garantir que determinados passos não sejam executados em vão, otimizando o algoritmo. Esse mesmo algoritmo, apesar de funcional, ainda pode ser otimizado. Se o reexaminarmos, perceberemos que, no caso de a lâmpada não estar queimada, teremos executado os passos I, II e III em vão. Para tratar essa situação, bastaria reposicionar os passos  I , II e III para que ocorram somente após o teste seletivo, uma vez que só serão úteis caso a lâmpada tenha de ser realmente trocada, ou seja, que ela esteja queimada. Desse modo, o algoritmo seria novamente alterado, ficando: ligue o interruptor; se a lâmpada não acender, então: a) pegue uma escada; b) posicione-a embaixo da lâmpada; c) busque uma lâmpada nova; d) suba na escada; e) retire a lâmpada velha; f) coloque a lâmpada nova.  Apesar de parecer completo, ou seja, permitindo solucionar o problema da troca da lâmpada queimada , este algoritmo não leva em consideração a possibilidade de a nova lâmpada não funcionar. Pois, nesse caso, seria necessário repetir os passos e e f. Daí surge a seguinte questão: pode ser que a outra – 14 –

Livro _logica_programacao.indb 14

05/04/2016 08:59:34

Fundamentos da Lógica para Programação

lâmpada também não funcione, sendo necessário repetir mais uma vez esta seqüência de passos. Então, quando deveremos parar de repetir? Para toda repetição em um algoritmo devemos estabelecer uma condição de parada, ou seja, um limite para a quantidade de vezes em que os passos deverão ser repetidos. Caso não seja estabelecido esta condição de parada ocorre o que chamamos de laço infinito – mais conhecido por sua designação em inglês loop infinito – no qual os passos se repetem indefinidamente. No caso do nosso algoritmo, uma condição de parada adequada seria repetir enquanto a lâmpada não acender. Assim o algoritmo ficaria da seguinte forma: VIII. ligue o interruptor; IX. se a lâmpada não acender, então: a.

pegue uma escada;

b.

posicione-a embaixo da lâmpada;

c.

busque uma lâmpada nova;

d.

suba na escada;

e.

retire a lâmpada velha;

f.

coloque a lâmpada nova;

g.

enquanto a lâmpada não acender: 1.

retire a lâmpada;

2.

coloque outra lâmpada.

O passo g   apresenta o que chamamos de fluxo repetitivo no qual um conjunto de passos pode se repetir  n vezes. Reflita

Não se aprende algoritmos copiando ou estudando outros algoritmos já feitos. Para aprender algoritmos, é necessário construí-los e testá-los.

– 15 –

Livro _logica_programacao.indb 15

05/04/2016 08:59:34

Lógica de programação

1.4 Construindo algoritmos  Antes de construir um algoritmo, é necessário entender o modelo de processamento geral de um programa de computador. Este modelo é representado na figura 1. Figura 1. Modelo geral de processamento de um programa de computador

ENTRADAS PROCESSAMENTO SAÍDA  Resultados do Dados iniciais Regras do para a resolução processamento ou problema  do problema  solução para o problema  Exemplo: Multiplicação de dois números inteiros  A = 25 RESULTADO = A*B 75 B=3

Todo programa fundamentalmente opera sobre um conjunto de entrada que representa os dados iniciais necessários à resolução do problema. Essas entradas são então processadas a partir de um conjunto de regras já definidas e, ao final, o programa gera um conjunto de saídas que representa o resultado do processamento.  Assim, antes de iniciar a construção de um algoritmo, é recomendado seguir os seguintes passos: 1.

identificação do problema : determinar o que se quer resolver ou

qual objetivo a ser atingido. Esse passo é fundamental para a resolução do problema, pois não há como dizer  ao computador o que fazer para resolver o problema se nem sequer sabemos defini-lo; 2.

identificação dos dados de entrada : determinar as informações

necessárias para os cálculos que se seguirão; 3.

identificação dos dados de saída: nesse passo são definidas as informações que deverão ser geradas como resultado do processa– 16 –

Livro _logica_programacao.indb 16

05/04/2016 08:59:35

Fundamentos da Lógica para Programação

mento. É neste passo que devemos definir inclusive o formato da saída como, por exemplo, se será em tela ou na forma de relatório impresso; 4.

identificação das regras e limitações do problema ou das limitações do agente executante: nesse passo devemos identificar clara-

mente quais serão as regras a serem aplicadas na solução. É também nesse passo que devemos definir as limitações para o problema, uma vez que o algoritmo pode ter de cobrir apenas parte de um problema mais geral. Ainda é possível que seja necessário definir as limitações do agente executante, como, por exemplo, definir as limitações em função de pouca memória RAM do computador em que o programa irá rodar; 5.

definição dos processamentos a serem executados a fim de transformar as “entradas” em “saídas”: nesse ponto deve ser

determinada a seqüência de ações ou instruções que leve à solução do problema, respeitando-se as regras já definidas; 6.

construção do algoritmo: utilizando uma das formas de represen-

tação de algoritmos que iremos estudar nas próximas aulas; 7.

teste da solução: execução de todas as ações do algoritmo, seguindo

o fluxo estabelecido para verificar se ele está realmente gerando os resultados esperados ou detectar possíveis erros em sua descrição.  Ao seguir esses passos, garantiremos que o algoritmo desenvolvido será executado corretamente pelo computador.

Resumindo Nesta aula, foram discutidos os princípios da programação para computadores. Foi apresentado o conceito de Lógica para Programação que é, em essência, uma extensão da lógica matemática. Um dos conceitos mais importantes discutidos é o conceito de algoritmo. É por meio do algoritmo que informamos ao computador o que deverá ser feito. Vale lembrar que o encadeamento das instruções que compõem o algoritmo é de fundamental importância para seu correto funcionamento. – 17 –

Livro _logica_programacao.indb 17

05/04/2016 08:59:35

Lógica de programação

Atividades 1. Leve em consideração os estudos que realizamos nesta aula e marque com V (Verdadeiro) ou F (Falso) as alternativas a seguir. (—) A lógica para programação torna o computador capaz de realizar tarefas de forma autônoma e criativa, sem a necessidade da interferência humana. (—) Um algoritmo representa uma seqüência lógica de instruções. (—) Cada instrução em um algoritmo faz com que o computador execute uma ou um conjunto de tarefas específicas. (—) Para todo problema somente é possível criar um único algoritmo correto. (—) Uma vez que um algoritmo é criado, não deve mais ser modificado. (—) Antes de iniciar a construção de um algoritmo, é preciso definir a linguagem de programação a ser usada. 2. Comente a importância dos dados de entrada, do processamento e dos dados de saída para a construção de algoritmos.

Comentário das atividades Na   atividade 1, caso você tenha lido com atenção o material desta aula, percebeu que a primeira alternativa é obviamente falsa, uma vez que a lógica para programação permite apenas determinar a seqüência de passos a ser seguida para a solução de um problema. Além disso, como foi discutido, o computador apenas segue essas instruções sem alterações, não demonstrando comportamento criativo ou autônomo. A segunda opção é verdadeira, visto que o algoritmo descreve uma seqüência ordenada ou lógica das tarefas que o computador deve desempenhar. A terceira opção também é verdadeira, pois uma instrução representa uma ou um conjunto de tarefas específicas que o computador deverá desempenhar. A quarta opção é falsa, uma vez que um problema pode apresentar diferentes soluções que darão origem a diferentes algoritmos. A quinta opção é falsa, pois um algoritmo deve sempre ser reexaminado a fim de identificar erros ou situações inesperadas e, uma vez identificado algum desses casos, o algoritmo deverá ser modificado a fim – 18 –

Livro _logica_programacao.indb 18

05/04/2016 08:59:35

Fundamentos da Lógica para Programação

de tratar a situação levantada. A sexta e última opção é falsa, pois um algoritmo independe da linguagem de programação que será mais tarde utilizada. Para realizar a   atividade 2, com base no que foi discutido nesta aula, você deve saber que é de fundamental importância identificar corretamente os dados de entrada, o processamento e os dados de saída de um algoritmo. Sem conhecer os dados de entrada, corremos o risco de não possuir dados suficientes para uma solução do problema. Além disso correremos o risco de desconsiderar algum detalhe importante sobre o problema que pode ser revelado por algum dado de entrada ignorado. Já os processamentos a serem realizados sobre os dados de entrada são igualmente importantes. Eles nos dirão o que fazer ao longo do algoritmo. Além disso, com os resultados dos processamentos, já poderemos predizer alguns dos dados de saída do algoritmo. Os dados de saída são importantes, pois representam o resultado final do algoritmo e estão diretamente associados à medida de eficácia do algoritmo. Se conhecermos os dados de saídas, 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 Lógica Formal e Matemática é aplicada na Programação de Computadores e de compreender a importância da construção de algoritmos computacionais.

Na próxima aula  Dando continuidade ao estudo da Lógica para Programação, estudaremos como a lógica de programação, em sua forma algorítmica, pode ser representada. Estudaremos os métodos mais utilizados na prática: Descrição Narrativa, Fluxograma e Pseudocódigo.

– 19 –

Livro _logica_programacao.indb 19

05/04/2016 08:59:35

Lógica de programação

– 20 –

Livro _logica_programacao.indb 20

05/04/2016 08:59:35

2 Formas de representação de um algoritmo

Introdução C�� � ������ do tempo e de estudos dos algoritmos, foram desenvolvidas inúmeras formas de se representar um algoritmo de modo a facilitar o seu entendimento e, mais tarde, a sua tradução para uma linguagem de programação específica. Entre as formas de representação de algoritmos mais conhecidas, podemos citar a Descrição Narrativa, o Fluxograma Convencional e o Pseudocódigo - também conhecido como Linguagem Estruturada ou “Portugol”. Essas três formas serão objeto de estudo desta aula. Uma representação clara e fácil de ser seguida facilita o desenvolvimento, depuração (correção de erros) e subseqüente transformação do algoritmo em um programa de computador.

Livro _logica_programacao.indb 21

05/04/2016 08:59:36

Lógica de programação

Uma vez que esta aula trata da representação de um algoritmo é necessário que você tenha entendido o conceito de algoritmo apresentado na aula anterior. Caso haja dúvidas, recorra ao material e entre em contato com a web-tutoria. Esperamos que, ao final desta aula, você seja capaz de: 2

representar um algoritmo usando Descrição Narrativa;

2

representar um algoritmo usando Fluxograma;

2

representar um algoritmo usando Pseudocódigo.

2.1 Formas de representação O domínio das formas de representação de algoritmos é de fundamental importância tanto para Analistas de Sistemas que são responsáveis por mapear as necessidades dos clientes para a forma algorítmica, quanto para Programadores, que irão transformar os algoritmos em programas. Na Linguagem Narrativa, os algoritmos são expressos diretamente em linguagem natural – no português, por exemplo. Já o Fluxograma (ou Diagrama de Fluxo) é uma representação gráfica que emprega formas geométricas padronizadas para indicar as diversas ações e decisões que devem ser executadas para resolver o problema. O Pseudocódigo emprega uma linguagem intermediária entre a linguagem natural e uma linguagem de programação para descrever os algoritmos. Não existe consenso entre os especialistas sobre qual é a melhor maneira de representar um algoritmo. Atualmente a maneira mais comum de representar algoritmos é por meio de pseudocódigo. Essa forma de representação tem a vantagem de que o algoritmo pode ser escrito de uma forma que está próxima de uma linguagem de programação de computadores, facilitando a criação do programa. Existem outras formas de representação conhecidas, porém pouco utilizadas, como o Diagrama de Chapin ou Nassi-Shneiderman (N-S), que apresenta a solução do problema por meio de um diagrama de quadros com uma visão hierárquica e estruturada. Essa forma não é muito utilizada devido à sua dificuldade em representar a recursividade. – 22 –

Livro _logica_programacao.indb 22

05/04/2016 08:59:36

Formas de representação de um algoritmo

2.2 Descrição Narrativa  Nessa forma de representação, os algoritmos são expressos diretamente em linguagem natural. Esta forma de representação é a mesma utilizada em algoritmos não-computacionais, como receitas culinárias. Dessa forma as instruções são descritas livremente, entretanto devemos tomar alguns cuidados para manter a clareza do algoritmo. Para escrever um algoritmo, precisamos descrever a seqüência de instruções, de maneira simples e objetiva. Para isso devemos obedecer algumas regras básicas: usar somente um verbo por frase; 2 imaginar que você está desenvolvendo um algoritmo para pessoas 2 que não trabalham com informática; usar frases curtas e simples; 2 ser objetivo; 2 procurar usar palavras que não tenham sentido dúbio. 2 Um exemplo de representação de um algoritmo usando Descrição Narrativa para o problema de cálculo da média de um aluno ficaria: 1. obter as notas da primeira, segunda e terceira provas; 2. calcular a média aritmética entre as três notas; 3. se a média for for maior ou igual igual que 7,00, o aluno foi foi aprovado, aprovado, senão, foi reprovado. reprovado. No entanto, na prática, essa representação é pouco usada porque o uso da linguagem natural dá muitas vezes oportunidade a más interpretações, ambigüidades e imprecisões. Por esse motivo, não daremos maior atenção a este tipo de representação.

2.3 Fluxograma  Essa é a forma gráfica de representar um algoritmo mais conhecida e utilizada. O fluxograma nos permite mostrar graficamente a lógica de um algoritmo, enfatizando passos individuais e o fluxo de execução. – 23 –

Livro _logica_programacao.indb 23

05/04/2016 08:59:36

Lógica de programação

É intermediária à descrição narrativa e ao pseudocódigo, pois é menos imprecisa que a primeira e, no entanto, não se preocupa com detalhes de implementação do programa como a segunda, como, por exemplo, o tipo de variáveis utilizadas. Para muitos autores, o fluxograma é a forma universal de representação, pois se utiliza de figuras geométricas padronizadas para ilustrar os passos a serem seguidos para a resolução de problemas. E o ideal é que um algoritmo seja entendido da mesma forma por diferentes pessoas que o utilizarem. Para que um fluxograma seja interpretado corretamente, é necessário entender sua sintaxe e sua semântica . Sobre sintaxe de um fluxograma, devemos entender como a correta utilização dos seus símbolos gráficos e das expressões que podem ser escritas no seu interior. Já a semântica diz respeito ao significado de cada símbolo, ou seja, como interpretá-lo corretamente. Com isso é possível entender e simular o algoritmo representado.  A interpretação interpretação de um fluxograma, via de regra, se dá de cima para baixo e da esquerda para a direita. É importante seguir essa regra, pois garante que o fluxo de instruções seja entendido corretamente. Por se tratar de uma representação gráfica, o fluxograma não se mostra adequado para a representação de algoritmos maiores e/ou mais complexos. Nesses casos, é comum o uso do pseudocódigo como forma de representação. 2.3.1 Simbologia básica de um fluxograma Estes são alguns dos símbolos mais conhecidos e utilizados ao longo dos anos pelos profissionais da área de informática para a descrição de algoritmos usando fluxograma e são descritos na norma internacional ISO 5807/1985. Inicio

Terminador   Variável  Variável

Entrada Manual

Símbolo utilizado como ponto para indicar o início e/ou fim do fluxo de um programa. É importante salientar que um programa deve possuir apenas um terminador de INÍCIO e outro de FIM. Utilizado para ler os dados necessários ao programa. Usado para representar representar dados, independente do tipo de mídia, que sejam fornecidos manualmente, manualmente, em tempo de processamento. Permite representar a entrada de dados via teclado, mouse, leitor de código de barras ou qualquer outro dispositivo de entrada.

– 24 –

Livro _logica_programacao.indb 24

05/04/2016 08:59:36

Formas de representação de um algoritmo

Dados

Utilizado para representar dados tanto de entrada quanto de saída  já definidos no no próprio programa, programa, como valores valores de constantes. constantes.

Dados

Condição SIM

NÃO

Decisão Doc

Documento

Indica a decisão que deve ser tomada, indicando a possibilidade de desvios para diversos outros pontos do fluxo, dependendo do resultado de comparação de uma condição estabelecida. Essa estrutura permite controlar o fluxo de instruções em um fluxograma.

Utilizado para representar a utilização de algum documento específico contendo dados necessários ao algoritmo.

Dados

Dados Armazenados  Variável  Variável ou mensagem

Usado para indicar dados que estão ou deverão ser armazenados pelo algoritmo.

É utilizado quando se deseja que os dados sejam impressos. Representa um dispositivo de saída como o monitor ou a impressora.

Exibição Operações

Refere-se a um determinado grupo de operações não incluídas da diagramação. diagramação.

Preparação

Referência de Página

Utilizado quando é preciso particionar o diagrama. Quando ocorrer mais de uma partição, é colocada uma letra ou número dentro do símbolo de conexão para identificar os pares de ligação.

Específico para indicar conexão do fluxo em outra página.

Referência fora da Página

– 25 –

Livro _logica_programacao.indb 25

05/04/2016 08:59:36

Lógica de programação

Seta de orientaão de fluxo Processo

Processamento

Permite indicar o sentido do fluxo de dados. Serve exclusivamente para conectar os símbolos ou blocos existentes.

Símbolo ou bloco que se utiliza para indicar cálculos (algoritmos) a efetuar, atribuições de valores ou qualquer manipulação de dados que tenha um bloco específico para sua descrição.

2.3.2 Construindo um fluxograma

Para entendermos como um fluxograma é criado para representar um algoritmo, vamos discutir passo-a-passo a criação de um fluxograma para representar um algoritmo que permita calcular a média final de um aluno considerando que todo aluno realiza três provas no semestre. O aluno é considerado “aprovado” se a sua média for igual ou superior a 7,00, senão é considerado “reprovado”.  Antes de iniciarmos a construção do fluxograma, devemos formalizar o algoritmo 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 conhecer as três notas do aluno, que deverão ser informadas pelo usuário e, em seguida, calcular a média por meio do cálculo de média aritmética simples para a qual devemos aplicar a fórmula média = (nota1+nota2+nota3)/3. Após o cálculo da média, é necessário testar se o seu valor é igual ou superior ao valor 7,00 e, nesse caso, deverá ser listada a mensagem “Aprovado”. Em caso contrário, deverá ser listada a mensagem “Reprovado”. Agora que conhecemos o algoritmo, é possível representá-lo como um fluxograma. Inicialmente a forma mínima de um fluxograma é dada pela junção de seus terminadores de início e fim. Na verdade, essa construção mínima executa absolutamente nada. Os símbolos de INICIO e FIM, na verdade, não representam instruções de fato, mas são marcadores essenciais que permitem a correta interpretação do fluxograma. – 26 –

Livro _logica_programacao.indb 26

05/04/2016 08:59:37

Formas de representação de um algoritmo

Entretanto, para nosso algoritmo, será necessário ler os dados de entrada, nesse caso, as três notas do aluno. Com isso, é necessário expandir o nosso fluxograma. Por motivos didáticos, para cada variável foi utilizado um símbolo de entrada manual. Na prática, entretanto, é comum a utilização de apenas um símbolo contendo todas as variáveis a serem lidas. De posse do valor de cada uma das três notas, é possível processar a média do aluno. Vamos representar esse processamento utilizando o símbolo de processo, como mostra a figura 1. Em um fluxograma, devemos sempre representar a atribuição de valor a uma variável por meio do símbolo “ ”, na forma variável  valor. Em um fluxograma, a expressão variável = valor representa o teste se o valor da variável é igual ao valor informado do lado direito da expressão e não uma atribuição. ←



Figura 1. Exemplo de algoritmo representado nas três formas mais comuns

Cálculo da Média de dois números inteiros positivos média = ( a + b)/2 Linguagem Narrativa 

Início de Programa  Leia os valores a e b Se a e b forem maior do que zero Calcula o valor da média a partir da fórmula [média = (a + b)/2] Imprime o valor da média  Senão Imprime “Os valores devem ser positivos” Fim do programa 

Pseudocódigo

Fluxograma 

Inicio

Início de Programa 

Leia a 

Leia a,b Se a > 0 e b > 0 então

Leia b

Calcula o valor da média a partir da média = (a + b)/2

a>0 e b>0

Imprime o valor da média  Senão

SIM

NÃO

Média = (a+b)/2 “Os valores devem ser positivos”

média 

Imprime “Os valores devem ser positivos” Fim se Fim do programa 

Fim

2.4 Pseudocódigo Esse nome é uma alusão à posterior implementação em uma Linguagem de Programação, ou seja, quando formos programar em uma linguagem de programação específica. – 27 –

Livro _logica_programacao.indb 27

05/04/2016 08:59:37

Lógica de programação

O pseudocódigo é um código de escrita em que se utilizam termos convencionais para indicar as instruções do programa. Esses termos são geralmente uma mistura de palavras da nossa linguagem natural com palavras e notações típicas das linguagens de programação.  A utilização de pseudocódigo permite ao programador expressar as suas idéias sem ter de se preocupar com a sintaxe da linguagem de programação. Para isso, são utilizadas primitivas (comandos genéricos) que podem ser facilmente traduzidos para uma linguagem de programação específica. Uma grande vantagem da utilização de pseudocódigo é o fato de permitir ao programador expressar as suas idéias sem ter de se preocupar com a sintaxe da Linguagem de Programação. Por outro lado, esse tipo de representação é o que mais se aproxima da codificação final em uma Linguagem de Programação e, por isso, é a mais utilizada na prática.

Síntese da aula  Nesta aula, foram discutidos conceitos sobre as formas mais comuns de representação de um algoritmo computacional. Esperamos que, a partir do que foi estudado nesta aula, você seja capaz de concluir que há diversas formas de representação de algoritmos que diferem entre si pela quantidade de detalhes de implementação que fornecem ou, inversamente, pelo grau de abstração que possibilitam em relação à implementação do algoritmo em termos de uma linguagem de programação específica. Das principais formas de representação de algoritmos, destacam-se: a descrição narrativa, o fluxograma convencional e o pseudocódigo. Dessas três, a mais utilizada na prática é o pseudocódigo, principalmente por sua proximidade com o produto final – o programa codificado em uma Linguagem de Programação – o que diminui o tempo de desenvolvimento e reduz custos. Além disso, o pseudocódigo permite adicionar detalhes específicos da linguagem a ser utilizada. – 28 –

Livro _logica_programacao.indb 28

05/04/2016 08:59:37

Formas de representação de um algoritmo

Atividades Para as atividades 1, 2 e 3, considere a seguinte questão: elabore um algoritmo para um programa que permita ler vários números inteiros a partir do teclado e, após a leitura de cada número individual, deverá ser apresentada uma mensagem indicando se o número informado é positivo, negativo ou nulo. O programa deverá encerrar quando o valor nulo for informado. 1. Represente o algoritmo na forma de Descrição Narrativa. 2. Represente o algoritmo na forma de um Fluxograma. 3. Represente o algoritmo na forma de Pseudocódigo. 4. Sobre a Descrição Narrativa, é incorreto afirmar que: a.

utiliza a linguagem natural para descrever o algoritmo;

b.

pouco utilizada na prática;

c.

em função de usar a linguagem natural, pode dar margem a ambigüidades, tornando o algoritmo pouco claro;

d.

possui regras fixas que garantem que um mesmo algoritmo sempre será representado da mesma forma, mesmo que por pessoas diferentes;

e.

devemos utilizar frases curtas e simples na descrição dos passos de um algoritmo.

5. Sobre a forma de representação de algoritmos usando Fluxograma, é incorreto afirmar que: a)

é uma representação gráfica dos passos a serem seguidos;

b) os símbolos utilizados em um fluxograma são internacionalmente definidos para garantir que um mesmo fluxograma seja corretamente interpretado, não importa onde tenha sido criado; c)

a interpretação de um fluxograma, via de regra, se dá de baixo para cima e da direita para a esquerda;

d) um programa deve possuir apenas um terminador de INÍCIO e outro de FIM; – 29 –

Livro _logica_programacao.indb 29

05/04/2016 08:59:37

Lógica de programação

e)

por se tratar de uma representação gráfica, o fluxograma não se mostra adequado para a representação de algoritmos maiores e/ ou mais complexos.

6. Sobre o algoritmo em pseudocódigo apresentado a seguir, é correto afirmar 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 0 NÃO

NÃO

SIM

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 Descrição Narrativa, você deve ter reconhecido como opção incorreta a opção (d), pois nesse tipo de representação não existem regras fixas e, por usar a linguagem natural, duas pessoas distintas poderão usar termos diferentes para descrever um mesmo passo do algoritmo. A opção (a) é correta, pois a Descrição Narrativa utiliza a linguagem natural para descrever o conjunto de passos do algoritmo. A opção (b), por sua vez, é também correta, pois esse tipo de representação é pouco usado na prática. A opção (c) é correta e levanta um dos principais problemas com esse tipo de representação, que é a possibilidade de ambigüidade, pois caso um passo seja ambíguo, pode dar margem a entendimentos distintos do algoritmo. Por último, a opção (e) também está correta, pois devemos utilizar frases curtas e simples a fim de manter a clareza e facilitar a interpretação do algoritmo. Considerando o que foi estudado nesta aula sobre fluxograma, você deve ter reconhecido como opção incorreta para a atividade 5 a opção (c), pois a interpretação de um fluxograma deve ser sempre realizada de cima para baixo e da esquerda para a direita. Você deveria ter reconhecido ainda a opção (a) como correta, pois o fluxograma é exatamente uma representação gráfica dos – 33 –

Livro _logica_programacao.indb 33

05/04/2016 08:59:37

Lógica de programação

passos de um algoritmo. A opção (b) também está correta, pois a norma internacional ISO 5807/1985 define a simbologia a ser adotada na construção de um fluxograma e, com isso, um mesmo fluxograma será corretamente interpretado, não importa onde tenha sido criado. A opção (d) é correta, uma vez que o algoritmo representado só pode ter um início e um fim no fluxograma. E, por fim, a opção (e) também deveria ser considerada correta, pois o maior problema com o uso de fluxograma ou de qualquer ferramenta de representação gráfica é que não são adequadas para situações mais complexas que gerem algoritmos com uma elevada quantidade de passos. De acordo com o que você estudou sobre Pseudocódigo, deve ter ficado claro que a opção correta para a atividade 6 é a opção (e), pois, seguindo o fluxo do pseudocódigo, percebemos que a leitura e teste da variável X encontram-se no bloco de instruções do comando REPITA. Assim esses passos deverão ser executados até que a condição (X
View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF