Apostila

Fazer download em pdf ou txt
Fazer download em pdf ou txt
Você está na página 1de 10

Lógica de Programação e Algoritmos - LPA

Conceito de Problema

Problema (Dicionário):
• Questão matemática proposta para ser resolvida.
• Questão difícil, delicada, suscetível de diversas soluções.
• Qualquer coisa de difícil explicação; mistério, enigma.
• Dúvida, questão.

Problemas fazem parte do nosso cotidiano.

Exemplo de problemas cotidianos: Trocar a resistência de um chuveiro.

Sempre que nos deparamos com um problema buscamos um procedimento para


solucionar o mesmo.

Por exemplo, para trocar a resistência de um chuveiro devemos:


• Adquirir uma resistência nova;
• Localizar o chuveiro a ser manipulado;
• Abrir o chuveiro;
• Retirar a resistência defeituosa;
• Colocar a resistência nova;
• Fechar o chuveiro;
• Descartar a resistência defeituosa.

O que orientou a obtenção dos procedimentos para as soluções vislumbradas?


A lógica!
O que é lógica?

“A lógica é o ramo da Filosofia e da Matemática que estuda


os métodos e princípios que permitem fazer distinção entre
raciocínios válidos e não válidos, determinando o processo
que leva ao conhecimento verdadeiro.”

O uso da lógica é primordial na solução de problemas. Com ela é possível alcançar


objetivos com eficiência e eficácia.

Ninguém ensina outra pessoa a pensar, mas a


desenvolver e aperfeiçoar esta técnica, com
persistência e constância.

Por que Aprenderemos Lógica de Programação?

1
Lógica de Programação e Algoritmos - LPA

A finalidade em aprendermos “lógica de programação” é justamente fazer com que o


pensamento lógico seja desenvolvido em nossos cérebros. Para muitos, o pensamento
lógico é uma arte, ou seja, a “arte de pensar”.

Diariamente nos deparamos com problemas que dependem de raciocínio para serem
solucionados. Isso acontece em casa, no trabalho, na escola, ..., por exemplo, no
momento que acordamos realizamos uma porção de tarefas em uma sequência lógica.

Não pensamos para realizar tais tarefas, pois já são automáticas em nossas rotinas.
Todos os dias nós acordamos, levantamos da cama, vamos até o banheiro, escovamos
os dentes, tomamos banho, trocamos de roupa, tomamos café da manhã e saímos de
casa para a escola, trabalho etc. Claro que nem todos executam todos esses passos e
nem mesmo nesta mesma ordem. Porém, como isso já é automático no dia-a-dia, nós
sequer pensamos em como realizar essas tarefas.

Muitas outras tarefas podem ser observadas no dia-a-dia:

• Tomar um banho;
• Trocar de roupa;
• Ir para o trabalho;
• A forma de cálculo de nossa conta de luz, água, telefone etc.

Na programação acontece a mesma coisa. O computador precisa receber as instruções


de forma lógica e coerente para realizar suas tarefas. E aplicando com bastante
frequência o pensamento lógico para a resolução de nossos problemas, isso acaba se
tornando uma coisa natural. Assim como hoje em dia é natural a tarefa de acordar ou
tomar café da manhã.

Essa sequência lógica de execução de tarefas leva o nome de “algoritmo”, conforme


explicado na aula anterior (arquivo Aula 01 – Introdução a Algoritmos).

Para reforçar o conhecimento da aula anterior, temos vários conceitos para algoritmos.
Vamos citar alguns:

“Um conjunto finito de regras que provê uma sequência de operações para resolver um
tipo de problema especifico”. (KNUTH)

2
Lógica de Programação e Algoritmos - LPA

“Sequência ordenada e não ambígua de passos que levam a solução de um problema”.


(TREMBLAY)

“Processo de cálculo ou resolução de um grupo de problemas semelhantes, em que se


estipulam, com generalidade e sem restrições, as regras formais para a obtenção do
resultado ou da solução de um problema”. (AURÉLIO)

"Algoritmo é uma sequência de passos que visa atingir um objetivo bem definido."
(FORBELLONE, 1999).

"Algoritmo é a descrição de uma sequência de passos que deve ser seguida para a
realização de uma tarefa." (ASCENCIO, 1999).

"Algoritmo é uma sequência finita de instruções ou operações cuja execução, em tempo


finito, resolve um problema computaciona1, qualquer que seja sua instância." (SALVETTI,
1999).

"Algoritmo são regras formais para a obtenção de um resultado ou da solução de um


problema, englobando fórmulas de expressões aritméticas." (MANZANO, 1997).

"Ação é um acontecimento que, a partir de um estado inicial, após um período de tempo


finito, produz um estado final previsível e bem definido. Portanto, um algoritmo é a
descrição de um conjunto de comandos que, obedecidos, resultam numa sucessão finita
de ações." (FARRER, 1999).

Ao utilizarmos a lógica para listar passos ordenados que resultem na solução de um


determinado problema estamos construindo um algoritmo.

Podemos definir um algoritmo como:


• uma sequência de passos que visa atingir um objetivo bem definido;
• uma sequência de passos bem definida que deve ser seguida para a realização de
uma tarefa ou solução de um problema.

Um exemplo de ambiguidade presente em uma sentença na linguagem natural é:

O policial escutou o barulho da porta.

Esta frase pode ter pelo menos três interpretações:


1 - O policial escutou o barulho produzido pela porta.
2 - O policial estava junto à porta e escutou o barulho.
3 - O policial escutou o barulho que veio através da porta.

Do ponto de vista computacional um algoritmo será implementado em uma linguagem de


computação gerando um programa, o qual visa instruir um computador (uma máquina) a
executar determinada tarefa.

Devemos ter consciência que um computador não é dotado da capacidade de tomar


decisões com base em premissas.

3
Lógica de Programação e Algoritmos - LPA

Portanto, não podemos instruir um computador com sentenças dúbias.

Todo algoritmo deve apresentar algumas características básicas:

• ter fim;
• não dar margem à dupla interpretação (não ambíguo);
• capacidade de receber dado(s) de entrada do mundo exterior;
• poder gerar informações de saída para o mundo externo ao do ambiente do
algoritmo;
• ser efetivo (todas as etapas especificadas no algoritmo devem ser alcançáveis em
um tempo finito).

Sendo assim, consideraremos que um algoritmo é uma sequência, que não permite
ambiguidade, de passos finitos, passível de ser executada com um esforço finito em
tempo finito e que acaba para qualquer entrada (inclusive erro).

O algoritmo tem como papel fundamental ser o elo de ligação entre dois mundos (real e
computacional). A atividade de programação tem início com a construção do algoritmo.

Para executar um programa dentro de um computador temos que ter em mente três
passos essenciais:

Vale lembrar que o computador não toma decisão alguma sozinho, portanto nunca
podemos dizer que computadores cometem erros. Sempre que encontramos um erro,
com certeza esse erro foi de origem humana.

Podemos ter vários algoritmos para a resolução de um mesmo problema. Costumamos


dizer que a possibilidade de um algoritmo ser igual a outro é quase remota (portanto meus
queridos alunos, colar em uma prova de lógica de programação ou desenvolvimento nem
pensar !).

Método para a construção de Algoritmos

Para a construção de qualquer tipo de algoritmo, é necessário seguir estes passos:


1. Compreender completamente o problema a ser resolvido, destacando os pontos
mais importantes e os objetos que o compõem.
2. Definir os dados de entrada, ou seja, quais dados serão fornecidos e quais
objetos fazem parte desse cenário-problema.
3. Definir o processamento, ou seja, quais cálculos serão efetuados e quais as
restrições para esses cálculos. O processamento é responsável pela
transformação dos dados de entrada em dados de saída. Além disso, deve-se
verificar quais objetos são responsáveis pelas atividades.

4
Lógica de Programação e Algoritmos - LPA

4. Definir os dados de saída, ou seja, quais dados serão gerados depois do


processamento.
5. Construir o algoritmo utilizando um dos tipos descritos na próxima seção.
6. Testar o algoritmo realizando simulações.

Antes de nos aprofundarmos nos métodos de construção de algoritmos, devemos ter de


forma clara a compreensão de alguns conceitos como:

• Constante;
• Variável;
• Identificador;
• Palavra-reservada;
• Entrada;
• Saída.

Para uma melhor compreensão dos conceitos citados, analisaremos o problema de


preparar uma omelete.

Partiremos da lista de ingredientes:


• 5 ovos
• 1/3 de uma xícara de chá de leite
• 2 colheres de sopa de cebolinha verde picada
• 3 pitadas de sal
• 1 colher de sopa de manteiga

O procedimento de preparo, em linguagem natural, é o seguinte:


Colocar em uma tigela os ovos, o leite, a cebolinha e o sal. Com a ajuda de uma
colher de pau bater bem os ingredientes contidos na tigela. Colocar a manteiga em
uma frigideira e a derreter. Colocar o conteúdo da tigela na frigideira e fritar em fogo
baixo até a omelete dourar suavemente. Quando estiver quase seca, dobrar a
omelete ao meio, colocar a omelete em um prato. A omelete está pronta para servir.

Ao analisarmos o procedimento de preparo percebemos que são necessários três


recipientes: uma tigela, uma frigideira e um prato, além de uma colher de pau.

Podemos visualizar os recipientes como variáveis, pois estes são regiões do espaço
onde pode-se armazenar inúmeras substâncias.

A colher de pau como uma constante devido a esta representar um objeto que participa
do processo de preparo da omelete e que ao final se mantém inalterado.

Percebemos também que são executadas algumas operações: colocar, bater, derreter,
fritar, dobrar e servir.

Os nomes dos recipientes e os verbos correspondentes às ações podem ser visualizados


como identificadores, uma vez que estes especificam o que será manipulado ou como
será manipulado.

5
Lógica de Programação e Algoritmos - LPA

Uma observação a ser feita é o fato de não podermos nomear um recipiente com um
verbo correspondente a uma ação utilizada no processo, logo os verbos podem ser
considerados como palavras-reservadas.

Os ingredientes constituirão as entradas para o processo e a omelete será a saída.

Representações Lógicas

Existem várias formas para representar a resolução de um problema, vamos estudar as


seguintes: descrição narrativa, pseudocódigo (ou português estruturado ou portugol) e
Fluxograma (ou Diagrama de Bloco).

Descrição Narrativa

Consiste em analisar o enunciado do problema e escrever, utilizando uma linguagem


natural (por exemplo, a língua portuguesa), os passos a serem seguidos para sua
resolução.
• Vantagem: não é necessário aprender nenhum conceito novo, pois uma
língua natural, neste ponto, já é bem conhecida.
• Desvantagem: a língua natural abre espaço para várias interpretações, o
que posteriormente dificultará a transcrição desse algoritmo para programa.

Algoritmo 1 Somar Três Números


Passo 1 Receber os três números
Passo 2 Somar os três números
Passo 3 Mostrar o resultado obtido

Algoritmo 2 Sacar dinheiro no banco 24 horas


Passo 1 Ir até um banco 24 horas
Passo 2 Colocar o cartão
Passo 3 Digitar a senha
Passo 4 Solicitar a quantia desejada
Passo 5 Se o saldo for maior ou igual à quantia desejada, sacar; caso
contrário, mostrar mensagem de impossibilidade de saque
Passo 6 Retirar o cartão
Passo 7 Sair do banco 24 horas

Pseudocódigo ou Português Estruturado ou Portugol

Consiste em analisar o enunciado do problema e escrever, por meio de regras


predefinidas, os passos a serem seguidos para sua resolução.
• Vantagem: a passagem do algoritmo para qualquer linguagem de
programação é quase imediata, bastando conhecer as palavras reservadas
dessa linguagem que serão utilizadas.
• Desvantagem: é necessário aprender as regras do pseudocódigo.

6
Lógica de Programação e Algoritmos - LPA

O pseudocódigo é o código intermediário entre o português e a linguagem de


programação. Utilizamos algumas instruções básicas para formar o pseudocódigo. A
partir dele fica muito mais fácil implementar o programa.

programa inicio
var
A, B, C :inteiro
início
leia (A, B, C)
X ← A + B + C
escreva (X)
fim

Fluxograma ou Diagrama de Bloco

Consiste em analisar o enunciado do problema e escrever, utilizando símbolos gráficos


predefinidos, os passos a serem seguidos para sua resolução.
• Vantagem: o entendimento de elementos gráficos é mais simples que o
entendimento de textos.
• Desvantagem: é necessário aprender a simbologia dos fluxogramas e, além
disso, o algoritmo resultante não apresenta muitos detalhes, dificultando sua
transcrição para um programa.

Simbologia Básica utilizada no fluxograma

Abaixo seguem alguns dos símbolos mais conhecidos e utilizados ao longo dos anos,
para a elaboração de diagramas de bloco.

7
Lógica de Programação e Algoritmos - LPA

Terminal – Símbolo utilizado como ponto para indicar o início e/ou fim do
fluxo de um programa.

Seta de Fluxo de Dados – Permite indicar o sentido do fluxo de dados.


Serve exclusivamente para conectar os símbolos ou blocos existentes.

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

Entrada de Dados – Informações recebidas ou fornecidas para o


programa via teclado.

Saída de Dados em Vídeo – Exibe informações em dispositivos visuais,


vídeo ou monitor.

Saída de Dados em Impressora – É utilizado quando se deseja que os


dados sejam impressos.

Conector – Utilizado quando é preciso particionar o diagrama. Quando


ocorrer mais de uma partição, insere-se uma letra ou um número dentro do
símbolo de conexão para identificar os pares de ligação.

Conector – Específico pra indicar conexão do fluxo em outra página.

Desvio Condicional – Utilizado quando temos um desvio condicional


(instrução se) dentro de nosso programa. O desvio condicional sempre tem
duas saídas, uma verdadeira e outra falsa.

Laço de Repetição – Utilizado quando temos um laço de repetição em


nosso programa, ou seja, quando determinado trecho do código for
repetido diversas vezes.

Sub-Rotina – Utilizado quando fazemos uma chamada a uma sub-rotina


(procedimento ou função) dentro do nosso programa.

Gravação em Disco – Utilizado quando gravamos nossos dados em um


banco de dados.

Exemplos:

01) Desenvolva um algoritmo em descrição narrativa, pseudocódigo e diagrama de bloco


para ler um nome, endereço e telefone e imprimi-los na tela.

Descrição narrativa

Passo 1. Leia o nome, o endereço e o telefone


Passo 2. Imprima as informações na tela

8
Lógica de Programação e Algoritmos - LPA

Pseudocódigo

programa agenda
var
nome, endereco, telefone : caractere
início
escreva (“Entre com o nome:”)
leia (nome)
escreva (“Entre com o endereço:”)
leia (endereco)
escreva (“Entre com o telefone:”)
leia (telefone)
escreva (“Nome:”, nome)
escreva (“Endereço:”, endereco)
escreva (“Telefone:”, telefone)
fim

Diagrama de Bloco

02) Desenvolva um algoritmo em descrição narrativa, pseudocódigo e diagrama de bloco


para ler a base e a altura de um retângulo, calcular o seu perímetro e área, e exibir o
resultado na tela.

Descrição narrativa
Passo 1. Leia a base do retângulo
Passo 2. Leia a altura do retângulo
Passo 3. Calcule o perímetro
Passo 4. Calcule a área
Passo 5. Imprima o perímetro e a área na tela

Pseudocódigo
9
Lógica de Programação e Algoritmos - LPA

programa retangulo
var
base, altura, perimetro, area :real
início
escreva (“Entre com a base:”)
leia (base)
escreva (“Entre com a altura:”)
leia (altura)
perimetro ← 2 * (base + altura)
area ← base * altura
escreva (“O perímetro do retângulo é:”, perimetro)
escreva (“A área do retângulo é:”, area)
fim

Diagrama de Bloco

Imagem da página 1 retirada do livro:


Introdução Ilustrada à Computação Larry Gonick
Traduzido sob iniciativa da Itautec

Material Cedido Por:


Antônio Viana
Ecila Oliveira
Luciana Abiuzi
Sidinei Akira

10

Você também pode gostar