20
- 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.

memória - Apostilas LP1 - Programas - Visao... · Veja a seguir a estrutura clássica de funcionamento de um computador. ... sequência de instruções coerentes que dirigem

Embed Size (px)

Citation preview

Page 1: memória - Apostilas LP1 - Programas - Visao... · Veja a seguir a estrutura clássica de funcionamento de um computador. ... sequência de instruções coerentes que dirigem

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

Page 2: memória - Apostilas LP1 - Programas - Visao... · Veja a seguir a estrutura clássica de funcionamento de um computador. ... sequência de instruções coerentes que dirigem

- 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. ( )

Page 3: memória - Apostilas LP1 - Programas - Visao... · Veja a seguir a estrutura clássica de funcionamento de um computador. ... sequência de instruções coerentes que dirigem

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

Page 4: memória - Apostilas LP1 - Programas - Visao... · Veja a seguir a estrutura clássica de funcionamento de um computador. ... sequência de instruções coerentes que dirigem

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

Page 5: memória - Apostilas LP1 - Programas - Visao... · Veja a seguir a estrutura clássica de funcionamento de um computador. ... sequência de instruções coerentes que dirigem

- 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

Page 6: memória - Apostilas LP1 - Programas - Visao... · Veja a seguir a estrutura clássica de funcionamento de um computador. ... sequência de instruções coerentes que dirigem

- 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):

Page 7: memória - Apostilas LP1 - Programas - Visao... · Veja a seguir a estrutura clássica de funcionamento de um computador. ... sequência de instruções coerentes que dirigem

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

Page 8: memória - Apostilas LP1 - Programas - Visao... · Veja a seguir a estrutura clássica de funcionamento de um computador. ... sequência de instruções coerentes que dirigem

- 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

Page 9: memória - Apostilas LP1 - Programas - Visao... · Veja a seguir a estrutura clássica de funcionamento de um computador. ... sequência de instruções coerentes que dirigem

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

Page 10: memória - Apostilas LP1 - Programas - Visao... · Veja a seguir a estrutura clássica de funcionamento de um computador. ... sequência de instruções coerentes que dirigem

- 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

Page 11: memória - Apostilas LP1 - Programas - Visao... · Veja a seguir a estrutura clássica de funcionamento de um computador. ... sequência de instruções coerentes que dirigem

- 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

Page 12: memória - Apostilas LP1 - Programas - Visao... · Veja a seguir a estrutura clássica de funcionamento de um computador. ... sequência de instruções coerentes que dirigem

- 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

Page 13: memória - Apostilas LP1 - Programas - Visao... · Veja a seguir a estrutura clássica de funcionamento de um computador. ... sequência de instruções coerentes que dirigem

- 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

Page 14: memória - Apostilas LP1 - Programas - Visao... · Veja a seguir a estrutura clássica de funcionamento de um computador. ... sequência de instruções coerentes que dirigem

- 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

Page 15: memória - Apostilas LP1 - Programas - Visao... · Veja a seguir a estrutura clássica de funcionamento de um computador. ... sequência de instruções coerentes que dirigem

- 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).

Page 16: memória - Apostilas LP1 - Programas - Visao... · Veja a seguir a estrutura clássica de funcionamento de um computador. ... sequência de instruções coerentes que dirigem

- 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

Page 17: memória - Apostilas LP1 - Programas - Visao... · Veja a seguir a estrutura clássica de funcionamento de um computador. ... sequência de instruções coerentes que dirigem

- 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 ( )

Page 18: memória - Apostilas LP1 - Programas - Visao... · Veja a seguir a estrutura clássica de funcionamento de um computador. ... sequência de instruções coerentes que dirigem

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

Page 19: memória - Apostilas LP1 - Programas - Visao... · Veja a seguir a estrutura clássica de funcionamento de um computador. ... sequência de instruções coerentes que dirigem

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

Page 20: memória - Apostilas LP1 - Programas - Visao... · Veja a seguir a estrutura clássica de funcionamento de um computador. ... sequência de instruções coerentes que dirigem

- 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!