Aula 2 - Programação 1

19

Click here to load reader

description

Aulas da Disciplina de Programação I do Professor Rodrigo Paes, UFAL

Transcript of Aula 2 - Programação 1

Page 1: Aula 2 - Programação 1

O processador do

algoritmo

Page 2: Aula 2 - Programação 1

Instituto de Computação – UFAL

Processador do algoritmo

O agente que executa um algoritmo é chamado

processador

O processador precisa entender as instruções

contidas no algoritmo

Exemplo:

Elaborar um algoritmo para extrair o algarismo da

casa das unidades de um inteiro dado

Se o processador for um ser humano que saiba o que é

número inteiro, algarismo e casa das unidades, o algoritmo

teria uma única instrução:

“Forneca o algarismo das unidades do inteiro dado”

[email protected]

Page 3: Aula 2 - Programação 1

Instituto de Computação – UFAL

Processador do algoritmo

E se o processador e uma maquina e não sabe

o que é algarismo, casa das unidades, "mais a

direita“, etc.?

Quem esta elaborando o algoritmo deveria

conhecer que instruções o processador e capaz

de executar para poder escrever o seu algoritmo

[email protected]

Page 4: Aula 2 - Programação 1

Instituto de Computação – UFAL

Exemplo

O processador é capaz de

Determinar o resto de uma divisão inteira

Queremos

O algarismo da casa das unidades

Solução:

Chame de n o inteiro dado;

Calcule o resto da divisão de n por 10;

Forneça este resto como o algarismo pedido.

[email protected]

Page 5: Aula 2 - Programação 1

Instituto de Computação – UFAL

Exemplo, um pouco mais formal

inicio

var n, resto : inteiro

leia n

resto = n % 10

imprima resto

fim

[email protected]

Page 6: Aula 2 - Programação 1

Instituto de Computação – UFAL

Linguagem coloquial

Em muitos casos utilizamos uma linguagemcoloquial para expressar algoritmos

Nem sempre é adequado Ambiguidades

Crianças que bebem leite materno freqüentemente são mais sadias;

As crianças são mais sadias porque recebem leite freqüentemente ou são freqüentemente mais sadias porque recebem leite?

Gabriela deve pegar o estojo vazio da aliança de diamantes que estava sobre a cama

O que estava sobre a cama: o estojo vazio ou a aliança de diamantes?

[email protected]

Page 7: Aula 2 - Programação 1

Instituto de Computação – UFAL

Linguagem coloquial

Dificuldade em expressar certas instruções

Exemplo

Algoritmo para calcular raízes de uma equação do segundo

grau

“Subtraia do quadrado do segundo coeficiente o produto do

numero quatro pelo produto dos dois outros coeficientes.”

[email protected]

Page 8: Aula 2 - Programação 1

Instituto de Computação – UFAL

Equações :: uma linguagem um pouco mais

adequada

1. Chame de a, b e c os coeficientes da equação.

2. Calcule d = b2 - 4ac.

3. Se d < 0 forneça como resposta a mensagem:

A equação não possui raízes reais.

4. Se d ≥ 0

1. Calcule x1 = (-b + raiz(d))/2a e x2 = (-b - raiz(d))/2a.

2. Forneça x1 e x2 como raízes da equação.

[email protected]

Page 9: Aula 2 - Programação 1

Instituto de Computação – UFAL

Exemplos

Suposições O nosso processador de algoritmos é capaz de:

Somar

Subtrair

Dividir

Multiplicar

Comparar

Executar condicionalmente uma instrução

Repetir instruções

Número fixo

Condicionalmente

Representar por seqüências de caracteres (chamadas variáveis) valores numéricos (que passam a ser chamados valores da variável)

Atribuir um valor a uma variável

Substituir o valor de uma variável por um outro valor

Emitir mensagens

[email protected]

Page 10: Aula 2 - Programação 1

Instituto de Computação – UFAL

Exemplos de algoritmos matemáticos

Nosso processador não é capaz de calcular o

resto e nem o quociente de uma divisão inteira

Objetivo:

Algoritmo para a determinação do quociente e do

resto da divisão de dois inteiros positivos dados

Exemplo

30 / 7

Quociente: 4

Resto: 2

[email protected]

Page 11: Aula 2 - Programação 1

Instituto de Computação – UFAL

Como resolver?

Qual a entrada?

Qual a saída esperada?

Quais os passos para “dada a entrada” chegar

na “saída esperada” ?

Resolva primeiro na sua “cabeça”

Use papel e caneta para entender e desenvolver a

solução

Só depois faça o algoritmo

[email protected]

Page 12: Aula 2 - Programação 1

Instituto de Computação – UFAL

Algoritmo

inicio

// declaração de variáveis

var dividendo, divisor, i : inteiro

var quociente, resto : inteiro

// entrada de dados

leia dividendo, divisor

i = 1

repita enquanto ((i * divisor) <= dividendo )

i = i+1

fim_enquanto

quociente = i - 1

resto = dividendo - quociente*divisor

// saída

imprima "O resto é "+resto+" e o quociente é "+quociente

fim

[email protected]

Page 13: Aula 2 - Programação 1

Instituto de Computação – UFAL

Execução do algoritmo

[email protected]

Dividendo DivisorQuociente

* ii Quociente Resto

Page 14: Aula 2 - Programação 1

Instituto de Computação – UFAL

Exemplo 2

Determinar o menor divisor maior que 1 de um inteiro dado Exemplos:

10, resposta: 2

13, resposta: 13

15, resposta: 3

Considere que dessa vez o processador do algoritmo sabe executar o resto: 10 % 3 == 1

2 % 5 == 2

10 % 4 == 2

[email protected]

Page 15: Aula 2 - Programação 1

Instituto de Computação – UFAL

Algoritmo

inicio

numero, divisor : inteiro

leia numero

divisor = 2

repita enquanto ( (numero%divisor) !=0 )

divisor = divisor + 1

fim_enquanto

imprima "A resposta é "+divisor

fim

[email protected]

Note que agora

já sabemos

calcular o resto

Page 16: Aula 2 - Programação 1

Instituto de Computação – UFAL

Exemplo 3

Calcular o Máximo Divisor Comum (mdc) de

dois números dados

Exemplo:

mdc(15, 20) = 5

mdc(8,32) = 8

mdc(56, 64)=8

[email protected]

Page 17: Aula 2 - Programação 1

Instituto de Computação – UFAL

Solução

Algoritmo de Euclides

mdc (120, 84)

[email protected]

120 84

1

36

2

12

3

0

Page 18: Aula 2 - Programação 1

Instituto de Computação – UFAL

Desafio

Você já conseguiria escrever esse algoritmo?

Tente !

Lembre-se

Qual a entrada?

Qual a saída esperada?

Como fazer para:

[email protected]

Entrada SaídaAlgoritmo

Page 19: Aula 2 - Programação 1

Instituto de Computação – UFAL

Exercícios

1. Faça um algoritmo que leia 2 valores e mostre as

quatro operações matemáticas básicas entre estes

2 números.

2. Faça um algoritmo que calcule a área de um

triângulo. São dadas a base e a altura do triângulo.

3. Faça um algoritmo que através de quatro notas

calcule as médias aritmética, harmônica e

geométrica.

4. Faça um algoritmo que imprima como resposta o

sucessor e o antecessor de um número dado.

[email protected]