mod1-algoritmia

Preview:

Citation preview

Programação e Sistemas de Informação Módulo 1

Escola Secundária Filipa de Vilhena 2012/2013

Algoritmia

Mas, o que é um algoritmo?

Mas, o que é um algoritmo?

Pode-se ver a definição de algoritmo segundo 2 vertentes, a:

• Matemática

– Descreve o processo de cálculo, ou de resolução de um grupo de

problemas semelhantes, em que se estipulam, com generalidade e

sem restrições, regras formais para a obtenção do resultado, ou da

solução do problema.

• Computacional

– Descreve o conjunto predeterminado e bem definido de regras e

processos destinados à solução de um problema, com um número

finito de etapas.

Programação Algoritmia (dois conceitos interligados)

Mas, o que é um algoritmo?

Pode-se considerar, de forma algo abusiva, um algoritmo com uma

receita de culinária. Porquê???

• Uma receita consiste num conjunto ( sequência de passos /

instruções / regras, que devem ser seguidas. Caso contrário, a

receita pode não dar o resultado desejado.

Segundo a receita…

Senão…

Mas, o que é um algoritmo?

Com um algoritmo pode-se

• Repetir passos, aquilo a que em programação se chama de iterações.

• Ou até tomar decisões com base em comparações ou lógica.

Mas um algoritmo não é, nem representa um programa de computador…

…representa sim os passos necessários para a realização de uma tarefa.

Introdução à Lógica de Programação

ENTRADA DE DADOS SAÍDA DE

INFORMAÇÃO

PROCESSAMENTO

UTILIZADOR

Aplicações Informáticas

O que preciso???

Como chegar ao que quero??? O que quero???

• Narrativa descritiva

Listagem ordenada de instruções em forma de frases curtas e directas, em

linguagem natural / humana (neste caso, português).

Representação de Algoritmos

Vantagens: Desvantagens:

Português é linguagem conhecida e corrente, fácil de ler e entender por todos.

Imprecisão (termos ambíguos) Implica pouca confiabilidade (desconfiança)

Extensão (tendência de se escrever muito para dizer pouco)

• Pseudocódigo

Código de escrita em que se utilizam termos convencionados para indicar as

instruções do programa. Os termos utilizados são, normalmente, uma mistura da

linguagem corrente com notações e palavras inerentes às linguagens de

programação (aproxima-se assim das linguagens de alto nível).

Representação de Algoritmos

Vantagens: Desvantagens:

Uso do Português como base;

Passagem quase imediata do algoritmo para a linguagem de programação;

Pode-se definir quais os dados e de que forma estão estruturados.

Exige que se defina uma linguagem não real para o trabalho;

Não se trata de uma linguagem padronizada.

• Fluxogramas (Diagramas de Fluxo)

São diagramas representativos do fluxo das acções de um programa, através de

símbolos, que representam os diferentes tipos das acções e o seu encadeamento

na sequência do programa.

Representação de Algoritmos

Vantagens: Desvantagens:

Ferramenta muito conhecida e utilizada;

Uma imagem vale mais que mil palavras;

É um standard (padrão) mundial.

Dá pouca atenção aos dados, em que não oferece recursos para os representar e / ou descrever;

Complexidade aumenta com o tamanho do algoritmo.

Um Diálogo…. Preencha o seguinte diálogo entre o Lima e o João Moutinho.

Lima, quero que somes dois números…

São o 7 e o 3.

7 + 3 = 10

Quais são os números?

Um Diálogo….

O resultado é 10.

Parabéns Lima… És um grande Matemático.

E um INFORMÁTICO, também

Algoritmo que calcula a soma de dois valores (inputs) e retorna o valor

dessa soma (output).

Representação de Algoritmos – Exemplo 1

Narrativa Descritiva Fluxograma Pseudocódigo

1. Ler os dois números

2. Somar os dois números

3. Visualizar a soma

Início num1 ,num2 soma=num1+num2

soma Fim

num1, num2, soma: int

inicio

escreva(“Digite valores a somar”)

leia(num1,num2)

soma num1 + num2

escreva(soma)

fim

Algoritmo que calcula a média aritmética da nota de dois testes .

Representação de Algoritmos – Exemplo 2

Narrativa Descritiva Fluxograma Pseudocódigo

1. Ler nota dos dois testes;

2. Somar as duas notas e dividir por dois;

3. Apresentar o resultado

m1,m2,media: real

inicio

escreva(“Digite as duas notas:”)

leia(m1,m2)

media (m1 + m2) / 2

escreva (media)

fim

Início

Media <- (m1+m2)/2

Fim

media

m1, m2

Metodologia

Identificar e ordenar as operações de processamento

Analisar o problema e identificar os objectivos principais

Se necessário dividir o problema em partes

Especificar as acções de entrada de dados

Identificar constantes, variáveis e tipos de dados a usar

Especificar as acções de saída de dados

Nomes de Constantes e Variáveis

Identifique as variáveis e as

constantes presentes neste

algoritmo, no caso de

existirem…

Fluxograma • Símbolos principais

START/END

Entrada/

Saída de

dados

Decisão

Processamento

interno

Entrada

de dados

Selecção

múltipla

Conector

Saída de

dados

Subalgoritmo

São diagramas representativos do fluxo das acções de um programa (de forma

gráfica), através de símbolos

Fluxogramas

Mas, como se faz um fluxograma conjugando os símbolos anteriores?

Relembremos então o algoritmo para fazer a soma de dois números inteiros

introduzidos pelo utilizador…

O que é que o programa precisa?

Que o utilizador introduza dois números inteiros …

Para quê?

Para poder somá-los (operadores aritméticos) …

Qual o resultado a apresentar no final?

A soma do valor 1 com o valor 2 (introduzidos previamente pelo utilizador).

Fluxogramas

Como seria a narrativa descritiva do programa anterior?

1. Ler os dois números (num1 e num2, por exemplo)

Entrada de dados

2. Somar os dois números (soma = num1 + num2)

Processamento

3. Apresentar o valor da soma

Saída de dados

num1, num2

soma = num1+ num2

soma

Fluxogramas

O que se traduz no seguinte fluxograma:

Como representar fluxogramas?

No papel;

Utilizando programas:

Visio (pago, pesado, complexo, …);

Dia (gratuito, leve, simples, …)

num1, num2

soma = num1 + num2

soma

Início

Fim

Fluxogramas – Utilizando o Dia

Para saber mais sobre o dia e fazer download:

http://projects.gnome.org/dia/

Pode exportar (Menu

Ficheiro -> Exportar…) Para

vários formatos, entre eles,

formatos de imagem: jpg,

bmp, png, …

Área de Desenho

Ad

icio

nar

Fo

rmas

(Se

tas)

Pseudocódigo

Ainda se lembra o que é o pseudocódigo de um algoritmo?

Como recordar é viver, aqui vai novamente a definição:

“Código de escrita em que se utilizam termos convencionados para indicar

as instruções do programa.

Os termos utilizados são, normalmente, uma mistura da linguagem corrente

com notações e palavras inerentes às linguagens de programação (aproxima-

se assim das linguagens de alto nível).”

Pseudocódigo – Visualg

Para poder elaborar algoritmos em pseudocódigo, e executá-los, vai ser

utilizado o programa Visualg, semelhante a outros IDEs (Integrated

Development Environment) para programação.

Porquê a sua utilização???

O objectivo do VisualG é permitir aos iniciados em programação, o exercício dos seus conhecimentos num ambiente próximo da realidade de uma linguagem de programação;

Submeter um iniciado aos rigores de uma linguagem de programação.

Pseudocódigo - Visualg

Pseudocódigo - Visualg

Pseudocódigo - Visualg

Pseudocódigo – Entrada / Input de Valores O comando de escrita é usado para se transmitir informações (mensagens, resultado de processamento) do computador para o meio externo; A forma geral de utilização desse comando é: escreva (“Lista de itens a imprimir”) escreval (“Lista de itens a imprimir”) // muda de linha Não se esqueça de colocar as aspas.

Pseudocódigo – Um Exemplo

Actividade

• Elabore um algoritmo que leia as notas dos 8 módulos de

Programação de Sistemas de Informação e calcule a média

obtida na disciplina.

Deve recorrer a:

– Narrativa Descritiva (Abordagem Top-Down)

– Algoritmo em Pseudocódigo

– Fluxograma

Algoritmo que calcula a média dos oito módulos à disciplina de PSI.

Representação de Algoritmos – Atividade

Narrativa Descritiva Fluxograma Pseudocódigo

1. Ler nota dos oito módulos;

2. Somar as notas e dividir por oito;

3. Apresentar o resultado

m1,m2,m3,m4,m5,m6,m7,m8:inteiro

media: real

inicio

escreva(“Digite as oito notas:”)

leia(m1,m2,m3,m4,m5,m6,m7,m8)

media (m1+m2+m3+m4+m5+m6+m7+m8)/8

escreva (media)

fimalgoritmo

Início

Media <- (m1+m2+m3+m4+m5+m6+m7+m8)/8

Fim

media

m1, m2, m3,m4, m5, m6, m7, m8