Aula 05 – Lógica de Programação: Variáveis e Estruturas...

Post on 20-Jan-2019

216 views 0 download

Transcript of Aula 05 – Lógica de Programação: Variáveis e Estruturas...

1

Aula 05 – Lógica de Programação: Variáveis e Estruturas sequenciais

BC-0005 Bases Computacionais da Ciência

Prof. Rodrigo Hausen(baseado nos slides do Prof. Jesús P. Mena-Chalco)

2

Introdução

Programa é uma sequência de ordens (comandos, instruções) dadas a um computador que, a partir de dados inseridos, obtêm um resultado que será disponibilizado por algum dispositivo de saída

Entrada de Dados

Processamento dos comandos de

um programa

Saída de Dados

2×5 10

3

Introdução

Uma instrução é a informação que indica a um computador uma ação elementar.

Para a construção de um programa é necessário um conjunto de instruções colocadas em ordem sequencial lógica: Algoritmo

4

Introdução

Algoritmo = “Receita”

Sequência lógica de passos executados até atingir um objetivo ou solução de um problema

Toda “receita” deve ter:ingredientes (dados de entrada)passos da execuçãoresultado esperado (dados de saída)

Exemplos de situações onde uma sequência lógica e ordenada de passos é necessária:

Fazer um boloConstruir um robô para explorar um local desconhecidoTrocar uma lâmpada

5

Al-Khorezmi: Um Matemático pouco conhecido

Matemático, astrônomo, astrólogo, geógrafo e autor Persa(Bagdad, c.850)

Descreveu o sistema numérico atual a um nível entendível.

al-Khwarizmi, Al-Khawarizmi, Al-Khawaritzmi ou al-Khowarizmi

O primeiro pensador algoritmico.

Selo postal (Rusia, 1983)Comemorando o aniversário 1200

6

Objetivos da aula

Objetivo da aula:

Como fornecer instruções a um computador, de maneira que ele possa nos auxiliar a resolver problemas:

Para isto precisamos de dois ingredientes:

LinguagemLógica

7

O conceito da instrução

As instruções diferem de acordo com a funcionalidadeda máquina:

8

Prática com Scilab

9

(1) Primeiro problema

Cálculo da área, perímetro e diagonal de um quadrado de lado x.

Entrada: tamanho do lado x, onde x > 0

Saída: área, perímetro e diagonal de um quadrado de lado x

x

x

10

(1) Primeiro problema

-->x = 2; -->area = x^2 area = 4. -->perimetro = 4*x perimetro = 8. -->diagonal = sqrt(2)*x diagonal = 2.8284271

11

(2) Ordem de operações

Na matemática, os parênteses destacam a prioridade de cálculo: as contas dentro de parênteses são resolvidas primeiro.

Podem ser usados vários tipos de parênteses, como- Parênteses ( )- Colchetes [ ], ou - Chaves { },mas estes servem apenas para uma melhor visualização dos pares e não têm influência na ordem.

12

(2) Ordem de operações

-->4+2 - 6+10 ans = 10.

-->(4+2) - (6+10) ans = - 10.

13

(2) Ordem de operações

-->2+3*4-5

Qual seria a resposta?Apenas pense na resposta, não use o scilab!

14

(2) Ordem de operações

-->2+3*4-5 ans = 9.

15

(2) Ordem de operações

-->2+3*4-5 ans = 9.

-->2+(3*4)-5 ans = 9.

16

(2) Ordem de operações

-->2+3*4-5 ans = 9.

-->2+(3*4)-5 ans = 9.

-->2+3*(4-5)-->(2+3)*4-5

← -1

← 15

17

(2) Ordem de operações

-->1+2-3*4/2

Qual seria a resposta?Apenas pense na resposta, não use o scilab!

18

(2) Ordem de operações

-->1+2-3*4/2 ans = - 3.

-->(1+2)-3*(4/2) ans = - 3.

19

(2) Ordem de operações

-->1*(2*(3+4)) ans = 14.

-->1*2*3+4 ans = 10.

20

(2) Ordem de operações

--> 2*3+12/3 ans = 10.

21

(2) Ordem de operações

22

(2) Ordem de operações

--> x = 2*(3+12)/5-5 x = 1.

23

(2) Ordem de operações

-->factorial(3)+4 ans = 10.

24

(3) Série de Fibonacci

25

(3) Série de Fibonacci

https://www.youtube.com/watch?v=SjSHVDfXHQ4

26

(3) Série de Fibonacci

Os números de Fibonacci estão relacionados com um número bem conhecido chamado razão áurea

i-ésimo número de Fibonacci pode ser aproximado pela seguinte equação:

27

(3) Série de Fibonacci

-->i=0; -->termo1 = (1+sqrt(5))/2 termo1 = 1.618034 -->termo2 = (1-sqrt(5))/2 termo2 = - 0.6180340 -->(termo1^i - termo2^i)/sqrt(5) ans = 0. -->floor( (termo1^i - termo2^i)/sqrt(5) ) ans = 0.

28

(3) Série de Fibonacci

Converge para a razão áurea

29

(3) Série de Fibonacci

30

(3) Série de Fibonacci

31

(3) Série de Fibonacci

-->i=1;-->floor( (termo1^i - termo2^i)/sqrt(5) )ans = 1.

-->i=2;-->floor( (termo1^i - termo2^i)/sqrt(5) )ans = 1.

-->i=3;-->floor( (termo1^i - termo2^i)/sqrt(5) )ans = 2.

32

(3) Série de Fibonacci

-->i=4;-->floor( (termo1^i - termo2^i)/sqrt(5) )ans = 3.

-->i=5;-->floor( (termo1^i - termo2^i)/sqrt(5) )ans = 5.

-->i=6;-->floor( (termo1^i - termo2^i)/sqrt(5) )ans = 8.

33

(3) Série de Fibonacci

-->i=7;-->floor( (termo1^i - termo2^i)/sqrt(5) )ans = 13.

-->i=8;-->floor( (termo1^i - termo2^i)/sqrt(5) )ans = 21.

-->i=6;-->floor( (termo1^i - termo2^i)/sqrt(5) )ans = 34.

34

(4) Função Fibonacci

Ou: Menu Aplicativos → SciNotes

35

(4) Função Fibonacci

36

(4) Função Fibonacci

i = 10

termo1 = (1+sqrt(5))/2termo2 = (1-sqrt(5))/2;

Fi = floor( (termo1^i - termo2^i)/sqrt(5) )

Em seguida, vá no menu Executar → … arquivo com eco

ou pressione Ctrl + L

37

(4) Função Fibonacci

38

(4) Função Fibonacci

function Fi = fibonacci(i)

termo1 = (1+sqrt(5))/2 termo2 = (1-sqrt(5))/2;

Fi = floor( (termo1^i - termo2^i)/sqrt(5) )

endfunction

Em seguida, vá no menu Executar →Salvar e executarou pressione F5.Grave com o nome de fibonacci.sce

Altere as instruções para:

39

(4) Função Fibonacci

function Fi = fibonacci(i)

termo1 = (1+sqrt(5))/2 termo2 = (1-sqrt(5))/2;

Fi = floor( (termo1^i - termo2^i)/sqrt(5) )

endfunction

entradasaída

passos

Importante! Se seu algoritmo deve ter algum resultado na saída, pelo menos um dos passos deve ser a atribuição de um valor à saída (retorno).

40

(4) Função Fibonacci

-->fibonacci(10) ans = 54. -->fibonacci(11) ans = 89. -->fibonacci(12) ans = 143. -->fibonacci(13) ans = 232.

41

(4) Função Fibonacci

-->fibonacci([0:11]) ans = 0. 1. 1. 2. 3. 5. 8. 13. 21. 34. 54. 89.

42

(4) Função Fibonacci

-->r1 = fibonacci(30:1:33) r1 = 832039. 1346268. 2178309. 3524577.

-->r2 = fibonacci(34:1:37) r2 = 5702886. 9227465. 14930351. 24157816.

43

Variáveis

-->r1 r1 = 832039. 1346268. 2178309. 3524577. -->r2 r2 = 5702886. 9227465. 14930351. 24157816.

-->whos -name r1Name Type Size Bytes r1 constant 1 by 4 48 -->whos -name r2Name Type Size Bytes r2 constant 1 by 4 48

44

Variáveis

-->c = r1+r2 c = 6534925. 10573733. 17108660. 27682393.

-->d = [r1 , r2] d = 832039. 1346268. 2178309. 3524577. 5702886. 9227465. 14930351. 24157816.

-->e = [r1 ; r2] e = 832039. 1346268. 2178309. 3524577. 5702886. 9227465. 14930351. 24157816.

45

(5) Função para desenhar função cosseno

function grafcosseno(a, b, passo) x = a:passo:b; fx = cos(x); clf(); plot(x, fx); xlabel('x'); ylabel('cos(x)');endfunction

Em seguida, vá no menu Executar →Salvar e executarou pressione F5.Grave com o nome de grafcosseno.sce

Crie um novo arquivo (Arquivo → Novo).

46

(5) Função para desenhar função cosseno

function grafcosseno(a, b, passo) x = a:passo:b; fx = cos(x); clf(); plot(x, fx); xlabel('x'); ylabel('cos(x)');endfunction

entrada

passos da execução

Esta função faz algo, mas não retorna nada!

47

(5) Função para desenhar função cosseno

-->grafcosseno(-30, 60, 0.5)

48

(5) Função para desenhar função cosseno

-->grafcosseno(-30, 60, 1)

49

Atividade 05: Tidia-ae

Função em Scilab

Crie uma função em Scilab cparaf, que faz a conversão de graus celsius para fahrenheit.

A função recebe apenas 1 parâmetro c (número real) que indica a temperatura em graus celsius.

Ela retorna a temperatura corresponden-te em graus Fahrenheit.

A atividade deve ser enviada pelo Tidia-ae até às 17h do dia 20/julho. - Arquivo a ser enviado: cparaf.sci

50

Para casa

● Ler capítulo 5

● Fazer a atividade 5 e entregar no Tidia

● Quem quiser apresentar projeto no final do curso, deve enviar via Tidia uma proposta (cenário) até as 17h do dia 20/jul (próxima quarta-feira) → Seu projeto pode ser um programa interessante no Scilab → Pode ser um programa interessante usando o Scratch (http://scratch.mit.edu) → Pode ser sobre seu projeto de BECN, caso você use alguma das ferramentas ensinadas neste curso, mas com foco no uso das ferramentas.