Post on 03-Dec-2018
- 1 -
-memória-
LPI
Introdução
Podemos entender o funcionamento de um computador sem conhecer detalhes
de hardware (toda a parte física) ou eletrônica. Veja a seguir a estrutura clássica
de funcionamento de um computador.
Arquitetura Genérica de um Computador (Máquina de Von Neumann):
Diagrama conhecido como Máquina de Von Neumann (grande nome da informática).
A finalidade de um computador é receber, armazenar e manipular dados,
produzindo informação
O computador:
É trabalhador – Possui muita energia – Tem boa memória
mas
Não tem iniciativa – Não é independente – Não é criativo
Precisa receber instruções nos mínimos detalhes
Programa de Computador
Programa de Computador: sequência de instruções coerentes que dirigem
(comandam) a CPU na execução de alguma tarefa.
Um conjunto de programas de computador com alguma função específica,
tornando o computador útil para executar alguma(s) tarefa(s) é chamado de
Software.
- 2 -
Exemplo1: quando clicamos nos botões 1, +, 8 e = da calculadora do Windows
(programa Calculadora), após receber os números 1 e 8, o símbolo da operação
+ e o sinal =, o programa Calculadora terá como instrução (para a CPU – Unidade
Aritmética e Lógica) realizar a soma dos números 1 e 8. A seguir, terá uma instrução
para retornar o resultado, que é 6, para o vídeo.
Exemplo2: quando precisamos fazer uma carta, devemos usar um software para
“processamento de texto”. Este software, muito mais complexo que o anterior,
ensinará ao computador (através de uma série de instruções) como mudar a tipo
de letra (fonte) do texto, como alinhar parágrafos, como aumentar a distância
entre as linhas de texto, etc.
Lógica ≅ Coerência (Instruções Coerentes para o Computador/CPU)
O uso da palavra lógica está normalmente relacionado à coerência. Conforme
foi dito, a coerência deve estar presente na sequência de instruções presentes em
um programa de computador.
Devemos tomar cuidado! Nossa razão (raciocínio), a forma mais complexa do
pensamento, pode funcionar desordenadamente (sem coerência). Por isso, a
lógica estuda e ensina a colocar “ordem (correta) no pensamento”.
Utilizando a lógica a coerência a ordem correta:
A gaveta está fechada.
A caneta está dentro da gaveta.
Precisamos primeiro abrir a gaveta.
Uma das formas mais simples de argumentar consiste de duas frases, uma das
quais é conclusão da outra, chamada premissa.
João comprou um carro novo. (Premissa)
João está bem empregado. (Conclusão)
A água deve estar fervendo. (Conclusão)
A água está saindo da chaleira. (Premissa)
Exercício 1. Indique, para cada conjunto de frases a seguir, o que é premissa (P) e
o que é conclusão (C).
É muito difícil aprender a escrita japonesa. ( )
O alfabeto japonês tem mais de três mil símbolos. ( )
É possível que Lucas ganhe as eleições presidenciais. ( )
Lucas tem muitos eleitores no interior do país. ( )
- 3 -
Ele já namorou muitas morenas. ( )
Ele tem certa queda pelas morenas. ( )
A inflação preocupa o governo. ( )
O governo vai tentar novo plano contra a inflação. ( )
João é mau motorista. ( )
João bateu com o carro muitas vezes esse ano. ( )
A conclusão pode ser fruto de uma série de premissas.
Renato é mais velho que Fernando.
Fernando é mais velho que Mauro.
Portanto, Renato é mais velho que Mauro.
O exemplo anterior é um silogismo (argumentação composta de duas premissas e
uma conclusão). Ele ilustra outro objetivo da lógica, o estudo de técnicas de
formalização e dedução que verificam a validade (ou não) de uma
argumentação (de um argumento).
No silogismo, devemos recusar a conclusão tirada das premissas quando:
1) Houver termos ambíguos (duvidosos) ou não relacionados.
2) Houver premissa falsa.
3) A conclusão não for uma decorrência lógica da(s) premissa(s) ou as premissas
não forem suficientes para a conclusão
Exercício 2. Nos sete exemplos a seguir, quais são válidos e quais são inválidos?
Neste caso identifique o número correspondente ao motivo da recusa da
conclusão (1, 2 ou 3).
Todo mamífero é um animal.
Todo cavalo é um mamífero.
Portanto, todo cavalo é um animal.
Um apartamento barato é raro.
Tudo o que é raro é caro.
Um apartamento barato é caro.
Gatos têm sete vidas.
Maria é uma gata.
Maria tem sete vidas.
- 4 -
Todo pinheiro é verde.
Todo motorista é Pinheiro.
Portanto, todo motorista é verde.
Todos os peixes nadam.
Todos os peixes têm escamas.
Logo, todos os que têm escamas nadam.
Todos peixes nadam.
Todo atum é peixe.
Portanto, todo atum nada.
Todos os professores são distraídos.
Meu irmão é distraído.
Meu irmão é professor.
- 5 -
O que é Lógica de Programação
“É o suo da “ordem da razão” (lógica) na programação de computadores,
objetivando a produção de soluções logicamente válidas (coerentes) e de
qualidade para problemas (tarefas) que se deseja programar”.
Falar em Lógica de Programação significa apenas contextualizar a lógica na
programação de computadores, buscando a melhor sequência de ações para
solucionar determinado problema.
Algoritmizando a Lógica de Programação
Um algoritmo é a representação/descrição da sequência de passos ou ações
necessárias para atingir um objetivo/resolver um problema.
Um algoritmo tem por objetivo representar fielmente o raciocínio envolvido na
solução de um problema.
Exemplo:
Abrir a porta é uma ação.
Problema: Qual a sequência de ações (ALGORITMO) para se abrir uma porta?
SOLUÇÃO EM FORMA DE
PROBLEMA ALGORITMO PROBLEMA RESOLVIDO
Ação: Abrir
Estado Inicial Tempo: Segundos Estado Final
Andar até a porta
Pegar na maçaneta
Girar a maçaneta
Puxar a maçaneta
Todo algoritmo estabelece um padrão (sequência de ações) que deve ser
seguido para solucionar um problema específico.
Porta Fechada Porta Aberta
- 6 -
Todos os dias executamos muitos algoritmos:
A construção de algoritmos (mesmo que seja apenas mentalmente) é a etapa
mais importante em programação, pois se já sabemos a sequência de etapas a
serem feitas, a codificação destes comandos em um programa torna-se mais fácil.
O desafio é pensar na sequência de ações necessárias à resolução do
problema que se deseja programar.
O desafio não é programar (escrever os comandos utilizando uma
linguagem de programação) é saber o que programar.
Fases da programação (construção de um programa de computador):
- 7 -
Novas definições:
“Um programa é a codificação de um algoritmo em uma linguagem de
programação.” (ASCENCIO, 1999)
“Uma linguagem de programação é um vocabulário e um conjunto de regras
gramaticais (sintaxe) usadas para escrever programas de computador.”
Por que escrever/pensar no Algoritmo antes de escrever o Programa?
Porque a lógica da solução do problema fica representa em um algoritmo de
forma clara, o mais objetivamente possível (sem margem para dupla
interpretação) e sem se preocupar com detalhes computacionais e da linguagem
de programação que será utilizada (existem muitas) para traduzir a solução para
o computador.
- 8 -
Explicações:
O código fonte (*) – instruções escritas em determinada linguagem de
programação – é um texto que precisa ser convertido (traduzido) para a
linguagem do computador: linguagem de máquina (**).
Se o método utilizado converte todo o texto (código fonte), para só depois
executar\rodar o programa (agora um código objeto), dizemos que o programa
foi compilado. O mecanismo (também um programa) que faz a conversão é
chamado compilador.
+ difícil
- 9 -
Se o método roda o próprio texto (código fonte), traduzindo linha a linha, o
programa vai sendo utilizado na medida em que vai sendo traduzido, dizemos que
o programa foi interpretado. A cada execução, o programa precisa ser
novamente interpretado pelo mecanismo interpretador.
Atenção! Posteriormente apresentaremos informações novas e mais específicas
em relação ao ambiente de programação (Visual Studio) que será utilizado
durante o curso.
As Estruturas Utilizadas nos Algoritmos (Sequência, Decisão e Repetição)
Através da Lógica Estruturada, provou-se que três estruturas são suficientes para
explicar uma solução para qualquer problema: SEQÜÊNCIA, DECISÃO e REPETIÇÃO .
- 10 -
Todos nós sabemos construir algoritmos. Se isso não fosse verdade, não
conseguiríamos:
Tomar um banho;
Ir para o colégio ou para o trabalho;
Decidir qual o melhor caminho para chegar a um lugar;
Voltar para casa, etc.
Para que tudo isto seja feito é necessária uma série de entradas (informações
iniciais) do tipo:
A que hora acordar;
Que hora sair de casa;
Qual o melhor meio de transporte;
etc.
Algoritmos do dia a dia que exemplificam a SEQUÊNCIA, DECISÃO e REPETIÇÃO.
Conforme foi dito, estas três estruturas são capazes de explicar (especificar) uma
solução para qualquer problema e são fundamentais para a construção de
algoritmos e, consequentemente, para a programação de computadores.
Exemplo 1 – Estrutura Sequencial:
Abrir os olhos
Levantar da cama
Ir ao banheiro
Vestir-se
Exemplo 2 – Estrutura de Decisão (também chamada Seleção):
SE sol ENTÃO
praia
SENÃO
shopping
FimSE
Problema se
inverter alguma
atividade!
O bloco SE – SENÃO
verifica uma condição
e, em seguida,
faz uma coisa OU outra
- 11 -
Exemplo 3 – Estruturas Sequencial e Decisão usadas em conjunto:
SE tanque vazio ENTÃO
encher o tanque
FimSE
pegar a estrada
Exemplo 4 – Estrutura de Repetição:
ENQUANTO tiver comida no prato e fome FAÇA
comer
FimENQUANTO
Exemplo 5 – Estruturas Sequencial, Decisão e Repetição usadas em conjunto:
5.1. Algoritmo para troca de uma lâmpada no teto (SEQUENCIA):
• Pegar uma escada
• Posicionar a escada embaixo da lâmpada
• Buscar uma lâmpada nova
• Subir a escada
• Retirar a lâmpada velha
• Colocar a lâmpada nova
E se a lâmpada não estiver queimada?
5.2. Algoritmo para troca de uma lâmpada no teto com teste a fim de verificar se
a lâmpada está ou não queimada (SEQUENCIA e DECISÃO):
• Pegar uma escada
• Posicionar a escada embaixo da lâmpada
• Buscar uma lâmpada nova
• Acionar o interruptor
SE a lâmpada não acender ENTÃO
• Subir a escada
• Retirar a lâmpada velha
• Colocar a lâmpada nova
FimSE
Este bloco
repete uma
ação (comer)
ENQUANTO a
condição (ter
comida e fome)
não mudar
O bloco pode
conter apenas o
SE
- 12 -
O algoritmo anterior (5.2) pode ser melhorado, uma vez que estamos
buscando uma escada e uma lâmpada sem saber se serão necessárias.
5.3. Algoritmo para troca de uma lâmpada no teto com teste NO INICIO a fim de
verificar se a lâmpada está ou não queimada (SEQUENCIA e DECISÃO):
Para melhorar a solução, devemos fazer o teste no início da sequência de
ações.
• Acionar o interruptor
SE a lâmpada não acender ENTÃO
• Pegar uma escada
• Posicionar a escada embaixo da lâmpada
• Buscar uma lâmpada nova
• Subir a escada
• Retirar a lâmpada velha
• Colocar a lâmpada nova
FimSE
- 13 -
Até agora o algoritmo efetua a troca de uma única lâmpada.
O que faríamos se tivéssemos três lâmpadas (cada uma em um soquete
diferente) e cada soquete acionado por um interruptor diferente?
A solução mais óbvia é repetir o algoritmo de uma única lâmpada para os
três soquetes e interruptores diferentes.
• Acionar o interruptor do primeiro soquete
SE a lâmpada não acender ENTÃO
• Pegar uma escada
• Posicionar a escada embaixo da lâmpada
• Buscar uma lâmpada nova
• Subir a escada
• Retirar a lâmpada velha
• Colocar a lâmpada nova
FimSE
• Acionar o interruptor do segundo soquete
SE a lâmpada não acender ENTÃO
• Pegar uma escada
• Posicionar a escada embaixo da lâmpada
• Buscar uma lâmpada nova
• Subir a escada
• Retirar a lâmpada velha
• Colocar a lâmpada nova
FimSE
• Acionar o interruptor do terceiro soquete
SE a lâmpada não acender ENTÃO
• Pegar uma escada
• Posicionar a escada embaixo da lâmpada
• Buscar uma lâmpada nova
• Subir a escada
• Retirar a lâmpada velha
• Colocar a lâmpada nova
FimSE
- 14 -
Observe que a solução anterior é um conjunto de três repetições do bloco
de ações do algoritmo 5.3 da página 11.
E se a quantidade de lâmpadas no teto de uma fábrica for 1.000?
SOLUÇÃO: Como os blocos de ações que se repetem são exatamente os
mesmos, podemos usar a ESTRUTURA REPETIÇÃO para fazer com que,
automaticamente, se volte a executar o mesmo bloco 1.000 vezes.
5.4. Algoritmo para troca de 1.000 lâmpadas no teto usando as estruturas de
SEQUENCIA, DECISÃO e REPETIÇÃO em conjunto:
• Ir até o interruptor do primeiro soquete/lâmpada
ENQUANTO a quantidade de interruptores testados for MENOR QUE 1.000 FAÇA
• Acionar o interruptor
SE a lâmpada não acender ENTÃO
• Pegar uma escada
• Posicionar a escada embaixo da lâmpada
• Buscar uma lâmpada nova
• Subir a escada
• Retirar a lâmpada velha
• Colocar a lâmpada nova
FimSE
• Ir até o próximo interruptor
FimENQUANTO
No
stress
s
- 15 -
Exemplo 6 – Novo algoritmo com uso das estruturas Sequência, Decisão e
Repetição em conjunto:
Um escritório de previsão do tempo armazena diariamente a temperatura média
de uma determinada região. A tarefa é descobrir qual é a menor temperatura
jamais registrada nos arquivos do escritório.
Um possível algoritmo seria o seguinte:
• Pegue a primeira temperatura registrada.
• Anote esta temperatura como a menor de todas as temperaturas.
ENQUANTO ainda houver registros de temperaturas FAÇA
• Pegue a próxima temperatura.
SE esta temperatura for menor que àquela registrada no
momento como a menor ENTÃO
• Anote a nova temperatura como a menor de todas.
FimSE
FimENQUANTO
• Mostre a temperatura que estiver anotada (esta é a menor temperatura,
informação que estávamos procurando).
- 16 -
Maneiras Formais de Representar os Algoritmos
Os algoritmos podem ser representados de forma gráfica ou textual.
As três representações de algoritmo a seguir executam a mesma tarefa (resolvem
o mesmo problema) tente descobri-la interpretando-os, mesmo sem conhecer
todos os detalhes de cada representação.
Representação Gráfica (FLUXOGRAMA)
Representação Gráfica (DIAGRAMA DE CHAPIN)
Figuras que repres.
saída de dados/
Informação.
Figura que repres..
decisão (sim/não)
Figuras que representam
operações de entrada de dados
Figura que representa o início ou o
final do fluxograma
Figura que representa operação de
atribuição ( := ou = ) ou ação ou cálculo
- 17 -
Representação Textual. Chamada de Pseudocódigo ou Português Estruturado
ou Portugol.
- Esta será a representação adotada na disciplina LP1.
- Apresentaremos esta representação de forma detalhada no decorrer das
próximas aulas.
Exemplo 1:
ALGORITMO Media
DECLARE Nota1, Nota2, Media REAL
ESCREVA “Informe a primeira nota”
LEIA Nota1
ESCREVA “Informe a segunda nota”
LEIA Nota2
Media (Nota1 + Nota2) / 2
SE Media > 6,9 ENTÃO
ESCREVA "Aprovado"
SENÃO
ESCREVA “Reprovado”
FIMSE
FIM DO ALGORITMO
Exemplo 2:
ALGORITMO Media
DECLARE Nota1, Nota2, Media REAL
ESCREVA “Informe as duas notas”
LEIA Nota1, Nota2
Media (Nota1 + Nota2) / 2
SE Media > 6,9 ENTÃO
ESCREVA "Aprovado"
SENÃO
ESCREVA “Reprovado”
FIMSE
FIM DO ALGORITMO
Por que usar
Português Estruturado
e não usar,
simplesmente, o
português coloquial
(texto comum)?
Por enquanto, considere que Nota1, Nota2 e Media
são variáveis (locais para guardar informação).
Precisam ser DECLARADAS e é preciso informar o
seu tipo (INTEIRO, REAL/DECIMAL, TEXTO, etc.)
Mensagem na tela para
passar informações Receber uma
informação e guardá-la
na variável indicada
Cálculo cujo resultado será
guardado na variável
indicada pela seta ( )
- 18 -
Método básico para construção de algoritmos para programas de computador.
a. Compreender o problema.
b. Identificar os dados de entrada. São os dados explicitamente informados
pelo enunciado do problema como sendo de entrada ou aqueles que você
deduz serem necessários para que se produza a informação de saída que o
enunciado do problema pede.
c. Identificar a informação de saída que está sendo pedida pelo enunciado.
d. Definir o processamento (procedimentos para transformar os dados de
entrada na informação/dados de saída). Estes procedimentos envolver a
utilização das estruturas (SEQUENCIA, DECISÃO E REPETIÇÃO) e CÁLCULOS.
e. Construir o algoritmo seguindo as regras básicas que serão apresentadas nos
próximos tópicos.
f. Testar o algoritmo para ter certeza que ele está correto. O teste deve ser feito
através de simulações, usando supostos dados de entrada.
- 19 -
Exercício 1:
Escreva o algoritmo para FAZER CAFÉ correspondente a cada item.
a. Utilize apenas a estrutura SEQUENCIAL.
b. Utilize as estruturas SEQUENCIAL e DECISÃO (SELEÇÃO).
c. Utilize as estruturas SEQUENCIAL, DECISÃO (SELEÇÃO) e REPETIÇÃO.
Link para as três soluções
Exercício 2:
Descreva um algoritmo que defina como PREPARAR UM OVO FRITO.
Exercício 3:
Escreva um algoritmo para SACAR DINHEIRO EM UM CAIXA ELETRÔNICO
quando não se deseja que a conta fique com saldo negativo.
Exercício 4:
Descreva um algoritmo que defina como PEGAR UM ÔNIBUS.
Exercício 5:
Suponha que você tenha uma caixa cheia de bolas. Nessa caixa existem
bolas azuis e bolas vermelhas. Além disso, você tem também duas caixas
vazias. Vamos chamar a caixa que contém as bolas de “caixa 1” e as duas
caixas vazias de “caixa 2” e “caixa 3”. Neste contexto, escreva um
algoritmo que defina como tirar todas as bolas da “caixa 1”, colocando as
bolas azuis na “caixa 2” e as bolas vermelhas na “caixa 3”.
A seguir, exercícios (6 e 7), Algoritmos Formais:
Exercício 6: (Exercício de Aprendizagem. Fazer com o professor)
Escreva um algoritmo que cria 3 variáveis, recebe do usuário as notas
de 3 provas, calcula a média aritmética destas notas e apresenta uma
mensagem informando o valor da média.
- 20 -
Exercício 7: (Exercício de Aprendizagem. Fazer com o professor)
a. Escreva um algoritmo que recebe do usuário o
valor do salário de um operário e um percentual
de aumento. A seguir, o programa deve calcular
e mostrar o valor do aumento que o operário
receberá.
Dica: Para um salário X e um percentual de
aumento Y, o valor do aumento será calculado
por: X vezes Y dividido por 100
b. Altere o programa anterior (item a) para que ele apresente também o
novo salário do operário.
c. Altere o programa anterior (item b) para que ele apresente também
uma mensagem informando se o novo salário é maior que 6.000,00 reais
ou não.
Um algoritmo ou programa é uma
SOLUÇÃO GERAL!