Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas


Lógica de Programação, Notas de estudo de Informática

Muitos anos se passaram desde os primórdios da história da computação, mas apesar de já termos vivido vários paradigmas de programação, existe uma base de conhecimento que não mudou e não mudará nunca ? a Lógica de Programação.

Tipologia: Notas de estudo

Antes de 2010

Compartilhado em 24/09/2008

anderson-zanichelli-8
anderson-zanichelli-8 🇧🇷

1 documento

1 / 58

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
APOSTILA DE
LÓGICA DE
PROGRAMAÇÃO
Autor:
Elias Andrade Pereira
Apartir deste arquivo o Upload foi realizado por Furions®
Copyright© Furions® | Upload by. Furions® | 2008 |
Mantenha os Créditos afinal de contas esse é salário.
Edited by Foxit Reader
Copyright(C) by Foxit Software Company,2005-2007
For Evaluation Only.
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36
pf37
pf38
pf39
pf3a

Pré-visualização parcial do texto

Baixe Lógica de Programação e outras Notas de estudo em PDF para Informática, somente na Docsity!

APOSTILA DE

LÓGICA DE

PROGRAMAÇÃO

Autor:

Elias Andrade Pereira

AAPPOOSSTTIILLAA DDEE

L LÓÓGGIICCAA DDEE

P PRROOGGRRAAMMAAÇÇÃÃOO

P PAARRTTEE II

L LÓÓGGIICCAA (^) DDEE PPRROOGGRRAAMMAAÇÇÃÃOO

11 .. IINNTTRROODDUUÇÇÃÃOO

Muitos anos se passaram desde os primórdios da história da computação, mas apesar de já termos vivido vários paradigmas de programação, existe uma base de conhecimento que não mudou e não mudará nunca – a Lógica de Programação.

Faço uma associação direta da Lógica de Programação com o Raciocínio Matemático, onde o importante é a interpretação de um problema e a utilização correta de uma fórmula, e não a sintaxe pré-definida da mesma. O saber da Lógica está no “praticar”.

Não existem “fórmulas” em Informática, o que existe é o aperfeiçoamento de nossa forma de pensar e raciocinar sobre um problema, podendo extrair do mesmo uma solução eficiente e eficaz, sob um determinado ângulo de visão. Assim, verificamos que é preciso aprender a pensar sobre os problemas, extraindo deles o máximo de informações.

A solução que criamos para um determinado problema necessita ser exteriorizada e expressa numa linguagem publicamente conhecida. Assim, utilizamos a lógica de programação para desenvolver nossas soluções e os algoritmos para apresentar essas soluções ao mundo.

Venho acompanhando nos últimos anos vários livros de Algoritmos e Estruturas de Dados. Todos ensinam como representamos estruturas de controle e atribuições, ou como declaramos variáveis, mas nenhum deles – que eu tenha lido até o momento –, orientou o aluno na forma de pensar. Precisamos mais do que “fórmulas”, precisamos aprender a pensar.

Os princípios da programação estruturada surgidos no final da década de 60 – introduzidos por Dijkstra – levaram a necessidade de se ter uma linguagem que implementasse essas idéias, já que as linguagens de época (FORTRAN, COBOL e BASIC) não permitiam aplicar claramente as técnicas ensinadas. Assim, o professor Niklaus Wirth e

DESENVOLVIMENTO TOP-DOWN

Na Programação Estruturada, ao desenvolvermos um algoritmo, temos como objeto um produto final – o programa. Todavia, para termos esta transição, passamos por várias fases, no sentido “cima para baixo”, onde cada fase é documentada e principalmente obtida por “refinamento” da fase anterior, até chegarmos a um nível de detalhamento que permita implementar o algoritmo diretamente na linguagem de programação.

MODULARIZAÇÃO

A solução final de um problema é obtida através de soluções de subproblemas, o que permite dividir o programa em módulos com subfunções claramente delimitadas, que podem, inclusive, ser implementados separadamente, por diversos programadores de uma equipe.

ESTRUTURAS DE CONTROLE

São representadas pela seqüência simples, o comando condicional e o comando repetitivo, e fornecem ao programador um aumento da legibilidade e compreensão de cada módulo de programa. Assim, temos como uma das principais normas da Programação Estruturada : não usar comandos de desvio (GOTO).

CONFIABILIDADE

Medimos a confiabilidade de um sistema através de sua resposta ao uso constante, no tocante a:

  • não apresentar erros; e,
  • corresponder às especificações.

Atualmente, a sociedade está totalmente dependente dos sistemas de computação. Assim, aumenta exponencialmente a importância do nosso trabalho. Nos fins dos anos 60, constatou-se que as sistemáticas usadas pelos programadores eram os grandes responsáveis pela baixa confiabilidade dos programas. Como solução destes problemas, surgiu a Programação Estruturada (PE).

MANUTENIBILIDADE

As revisões sofridas por um programa (releases) tanto para correção de erros quanto para mudanças de especificação, são consideradas como manutenção de software. Os programas devem passar por testes exaustivos de confiabilidade antes de serem colocados em produção. Falhas nesta fase levam a altos níveis de manutenção, que conseqüentemente, levam a altos custos.

PSEUDOLINGUAGEM - PORTUGOL

Sabemos que ao desenvolver programas necessitamos de nossa criatividade, para que tenhamos soluções eficazes e eficientes. Todavia, não podemos representar nossas soluções em algoritmos totalmente escritos em português. Em programação, todas as vezes que executarmos um algoritmo a partir de um estado inicial x , devemos sempre obter o mesmo estado final y. Desta forma, é fácil perceber que a linguagem natural, não formalizada, geraria ambigüidades. Assim, temos o PORTUGOL, que é uma pseudolinguagem de programação (simbiose do Português com o ALGOL e PASCAL), que permite pensarmos no problema e não na máquina que vai executar o algoritmo. Além disso, não perdemos a flexibilidade e continuamos a ter a proximidade com a linguagem humana, facilitando, portanto, a interpretação.

33 .. RRAACCIIOOCCÍÍNNIIOO MMAATTEEMMÁÁTTIICCOO

As crianças aprendem facilmente como adicionar e subtrair valores. Suas dificuldades começam no momento em que elas se deparam com problemas e necessitam identificar quais operações trarão soluções para os mesmos.

Vejamos alguns exercícios de Raciocínio Matemático, que ajudarão a “exercitar” nosso cérebro. No final desta apostila, vocês encontrarão o gabarito, mas não olhem antes de tentar resolvê-los. Todos serão corrigidos em sala de aula.

  1. Qual o número que completa a seqüência: 1, 1, 2, 3, 5, ...

(a) 5 (b) 6 (c) 7 (d) 8 (e) 9

  1. Num concurso de saltos, Maria foi, simultaneamente, a 13ª melhor e 13ª pior. Quantas pessoas estavam em competição?

(a) 13 (b) 25 (c) 26 (d) 27 (e) 28

  1. Bruno é mais alto que Joaquim. Renato é mais baixo que o Bruno. Então, Joaquim é o mais alto dos três.

( ) Verdadeiro ( ) Falso

  1. O preço de um produto foi reduzido em 20% numa liquidação. Qual deverá ser a percentagem de aumento do preço do mesmo produto para que ele volte a ter o preço original?

(a) 15% (b) 20% (c) 25% (d) 30% (e) 40%

Use a descrição abaixo para resolver os exercícios 8 e 9. Chapeuzinho Vermelho ao entrar na floresta, perdeu a noção dos dias da semana. A Raposa e o Lobo Mau eram duas estranhas criaturas que freqüentavam a floresta. A Raposa mentia às segundas, terças e quartas-feiras, e falava a verdade nos outros dias da

semana. O Lobo Mau mentia às quintas, sextas e sábados, mas falava a verdade nos outros dias da semana.

  1. Um dia Chapeuzinho Vermelho encontrou a Raposa e o Lobo Mau descansando à sombra de uma árvore. Eles disseram: Raposa: “Ontem foi um dos meus dias de mentir” Lobo Mau: “Ontem foi um dos meus dias de mentir”

A partir dessas afirmações, Chapeuzinho Vermelho descobriu qual era o dia da semana. Qual era?

  1. Em qual dia da semana é possível a Raposa fazer as seguintes afirmações? Eu menti ontem. Eu mentirei amanhã.
  2. (ESAF) José quer ir ao cinema assistir ao filme “Fogo Contra Fogo”, mas não tem certeza se o mesmo está sendo exibido. Seus amigos, Maria, Luis e Julio têm opiniões discordantes sobre se o filme está ou não em cartaz. Se Maria estiver certa, então Julio está enganado. Se Julio estiver enganado, então Luís está enganado. Se Luis estiver enganado, então o filme não está sendo exibido. Ora, ou o filme “Fogo conta Fogo” está sendo exibido, ou José não irá ao cinema. Verificou-se que Maria está certa. Logo,.

(a) O filme “Fogo contra Fogo” está sendo exibido (b) Luis e Julio não estão enganados (c) Julio está enganado, mas Luis não. (d) Luis está enganado, mas Julio não. (e) José não irá ao cinema.

44 .. AALLGGOORRIITTMMOOSS

Segundo Wirth, “programas são formulações concretas de algoritmos abstratos, baseados em representações e estruturas específicas de dados”.

Por outro lado, devemos perceber que o algoritmo descrito revela uma situação perfeita, sem condicionais, sem exceções. Assim como na nossa rotina é improvável termos situações perfeitas, essas exceções também ocorrem nos programas de computador.

Vamos refazer este algoritmo de forma a introduzir algumas condições.

Solução 2 Algoritmo Trajeto_Casa_Trabalho_V

início

  1. Andar até o ponto de ônibus
  2. Aguardar o ônibus
  3. Quando avistar o ônibus correto, fazer sinal se o ônibus não parar, então Em pensamento, xingar o motorista Reclamar para si que vai chegar atrasado se estiver muito atrasado então Pegar uma Van senão Voltar para o Passo 2 fim-se senão se Pessoa >= 65 anos então Entrar pela porta dianteira senão Entrar pela porta traseira Pagar passagem se houver troco então Aguardar troco fim-se fim-se

se houver lugar disponível então Sentar senão

Escolher o melhor lugar em pé e ali permanecer fim-se

Quando chegar próximo do local a saltar, dar o sinal para descida No ponto, descer do ônibus, pela porta dianteira Andar até o trabalho fim-se fim

Com certeza, a brincadeira que fiz da condição “Se o ônibus não parar” deve ter levado vocês a pensarem em inúmeras novas condições, como por exemplo: qual seria a sua reação, se num dia de chuva, o ônibus passasse por sobre uma poça e lhe sujasse toda a roupa?

Veja quão complexo pode se tornar um “simples” algoritmo. Devemos lembrar que detalhes são essenciais na confecção de um algoritmo, todavia, eles devem estar de acordo com o contexto. Além disso, é importante que venhamos a relatar apenas os detalhes relevantes.

Por exemplo, a solução 2 está apropriada para ensinarmos uma pessoa que não está acostumada a andar de ônibus. Todavia, este algoritmo causaria problemas se estivéssemos programando um robô. Considerando esta situação, deveríamos ser mais precisos no passo “Quando chegar próximo do local a saltar, dar o sinal de descida”. Nesse caso, deveríamos dizer “A x metros do local a saltar, dar o sinal de descida” ou “Na altura x da Rua y ...”.

Assim, lembrem-se de usar o BOM SENSO!

entender um algoritmo, lidamos fisicamente com um texto, mas mentalmente temos processos.

CRIANDO ALGORITMOS

Toda linguagem é composta de sintaxe e semântica, onde a sintaxe corresponde à forma e a semântica corresponde ao conteúdo. Vocês devem aprender a sintaxe dos comandos, mas a principal preocupação deve ser de “como usar esses comandos”.

Regras para criação de bons algoritmos

  1. Use comentários com freqüência. Isto torna o algoritmo mais legível e facilita o entendimento da lógica empregada. Seus algoritmos deverão ser lidos e entendidos por outras pessoas (e por você mesmo) de tal forma que possam ser corrigidos e receber manutenção. Obs: Não se esqueça de atualizar os comentários, em caso de manutenção. Pior do que um programa sem comentários, é um programa com comentários errados.
  2. Use comentários, também, no cabeçalho do algoritmo, incluindo, principalmente: - descrição do que faz o algoritmo - autor - data de criação
  3. Escolha nomes de variáveis significativos, todavia evite nomes muito longos. Ex: Prefira SalBruto ou SalarioBruto ao invés de SB ou VAR Prefira TotAlunosAprovDireta ao invés de TotalAlunosAprovacaoDireta
  4. Destaque as palavras-chave das estruturas de controle e comandos com sublinhado. Ex: se media >= 7 então ... senão ... fim-se
  5. Utilize espaços e linhas em branco para melhorar a legibilidade.
  1. Coloque apenas um comando por linha. Vários comandos em uma linha causa ilegibilidade e dificulta a depuração.
  2. Utilize parênteses para aumentar a legibilidade e prevenir-se de erros.
  3. Use identação nos comandos de acordo com o nível que estejam, ou seja, alinhe comandos de mesmo nível e desloque comandos de nível inferior. Ex.: início comando 1; se condicao1 então comando2; comando3; senão comando4; comando5; fim-se comando6; fim

Método para desenvolvimento de algoritmos

  1. Faça uma leitura de todo o problema até o final, a fim de formar a primeira impressão. A seguir, releia o problema e faça anotações sobre os pontos principais.
  2. Verifique se o problema foi bem entendido. Questione, se preciso, ao autor da especificação sobre suas dúvidas. Releia o problema quantas vezes for preciso para tentar entendê-lo.
  3. Extraia do problema todas as suas saídas.
  4. Extraia do problema todas as suas entradas.
  5. Identifique qual é o processamento principal.
  6. Verifique se será necessário algum valor intermediário que auxilie a transformação das entradas em saídas. Esta etapa pode parecer obscura no início, mas com certeza no desenrolar do algoritmo, estes valores aparecerão naturalmente.
  7. Teste cada passo do algoritmo, com todos os seus caminhos para verificar se o processamento está gerando os resultados esperados. Crie valores de teste para submeter ao algoritmo.
  8. Reveja o algoritmo, checando as boas normas de criação.

Conselho: Só tente conseguir o ótimo, depois de realizar o bom.

Assim, a variável é o local da memória onde guardamos os dados e o nome da variável é um identificador conforme definição anterior.

  • Exemplos de variáveis:

SalarioBruto NomeFuncionario

Toda variável necessita ser declarada, ou seja, reserva-se um local da memória informando que tipo de dados residirão ali. Assim, a sintaxe de declaração de uma variável é : variável : tipo de dados ; ou variável1, variável2, ..., variáveln : tipo de dados ;

Exemplo:

Se declararmos as variáveis A, B e C da seguinte forma: declare A : inteiro; B : caracter; C : lógico;

estamos criando áreas na memória identificadas por A, B e C, que só poderão receber, respectivamente, valores inteiros, alfanuméricos e lógicos (Verdadeiro ou Falso).

TIPOS BÁSICOS DE DADOS

Ao armazenarmos variáveis na memória do computador, precisamos dizer que tipo elas são, para que seja reservado o espaço adequado, além de ser dado o trabalho correto a elas. Além dos tipos básicos de dados citados abaixo, podemos criar nossos próprios tipos.

INTEIRO: qualquer número inteiro, negativo, nulo ou positivo Ex.: -15, 0, 101

REAL: qualquer número real, negativo, nulo ou positivo Ex.: -1, -0.5, 0, 5, 9.

CARACTER: qualquer conjunto de caracteres alfanuméricos Ex.: “AB”, “ 123”, “ A123” , “CASA”

LÓGICO: conjunto de valores ( FALSO ou VERDADEIRO )

COMENTÁRIOS

Comentários devem ser inseridos no algoritmo a fim de esclarecer o desenvolvimento do mesmo. Os comentários são inseridos entre { e }.

{ Texto de comentário delimitado por chaves }

COMANDO DE ATRIBUIÇÃO

Ao criarmos uma variável, partimos do princípio que em algum momento ou vários momentos dentro do nosso algoritmo, ela receberá valores, ou seja, armazenaremos dados na memória através de nossas variáveis. Para atribuirmos um valor ou uma expressão a uma variável, utilizamos o comando de atribuição ←. Assim, a sintaxe do comando é:

identificador ←←←← expressão ;

  • Exemplo:

Salario ← 1000 Nome ← ‘Ana’