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

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

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

Page 1: Aula 05 – Lógica de Programação: Variáveis e Estruturas ...compscinet.org/hausen/courses/2016/q2/bcc/aulas/05variaveis/BCC... · Como fornecer instruções a um computador,

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)

Page 2: Aula 05 – Lógica de Programação: Variáveis e Estruturas ...compscinet.org/hausen/courses/2016/q2/bcc/aulas/05variaveis/BCC... · Como fornecer instruções a um computador,

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

Page 3: Aula 05 – Lógica de Programação: Variáveis e Estruturas ...compscinet.org/hausen/courses/2016/q2/bcc/aulas/05variaveis/BCC... · Como fornecer instruções a um computador,

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

Page 4: Aula 05 – Lógica de Programação: Variáveis e Estruturas ...compscinet.org/hausen/courses/2016/q2/bcc/aulas/05variaveis/BCC... · Como fornecer instruções a um computador,

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

Page 5: Aula 05 – Lógica de Programação: Variáveis e Estruturas ...compscinet.org/hausen/courses/2016/q2/bcc/aulas/05variaveis/BCC... · Como fornecer instruções a um computador,

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

Page 6: Aula 05 – Lógica de Programação: Variáveis e Estruturas ...compscinet.org/hausen/courses/2016/q2/bcc/aulas/05variaveis/BCC... · Como fornecer instruções a um computador,

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

Page 7: Aula 05 – Lógica de Programação: Variáveis e Estruturas ...compscinet.org/hausen/courses/2016/q2/bcc/aulas/05variaveis/BCC... · Como fornecer instruções a um computador,

7

O conceito da instrução

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

Page 8: Aula 05 – Lógica de Programação: Variáveis e Estruturas ...compscinet.org/hausen/courses/2016/q2/bcc/aulas/05variaveis/BCC... · Como fornecer instruções a um computador,

8

Prática com Scilab

Page 9: Aula 05 – Lógica de Programação: Variáveis e Estruturas ...compscinet.org/hausen/courses/2016/q2/bcc/aulas/05variaveis/BCC... · Como fornecer instruções a um computador,

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

Page 10: Aula 05 – Lógica de Programação: Variáveis e Estruturas ...compscinet.org/hausen/courses/2016/q2/bcc/aulas/05variaveis/BCC... · Como fornecer instruções a um computador,

10

(1) Primeiro problema

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

Page 11: Aula 05 – Lógica de Programação: Variáveis e Estruturas ...compscinet.org/hausen/courses/2016/q2/bcc/aulas/05variaveis/BCC... · Como fornecer instruções a um computador,

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.

Page 12: Aula 05 – Lógica de Programação: Variáveis e Estruturas ...compscinet.org/hausen/courses/2016/q2/bcc/aulas/05variaveis/BCC... · Como fornecer instruções a um computador,

12

(2) Ordem de operações

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

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

Page 13: Aula 05 – Lógica de Programação: Variáveis e Estruturas ...compscinet.org/hausen/courses/2016/q2/bcc/aulas/05variaveis/BCC... · Como fornecer instruções a um computador,

13

(2) Ordem de operações

-->2+3*4-5

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

Page 14: Aula 05 – Lógica de Programação: Variáveis e Estruturas ...compscinet.org/hausen/courses/2016/q2/bcc/aulas/05variaveis/BCC... · Como fornecer instruções a um computador,

14

(2) Ordem de operações

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

Page 15: Aula 05 – Lógica de Programação: Variáveis e Estruturas ...compscinet.org/hausen/courses/2016/q2/bcc/aulas/05variaveis/BCC... · Como fornecer instruções a um computador,

15

(2) Ordem de operações

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

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

Page 16: Aula 05 – Lógica de Programação: Variáveis e Estruturas ...compscinet.org/hausen/courses/2016/q2/bcc/aulas/05variaveis/BCC... · Como fornecer instruções a um computador,

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

Page 17: Aula 05 – Lógica de Programação: Variáveis e Estruturas ...compscinet.org/hausen/courses/2016/q2/bcc/aulas/05variaveis/BCC... · Como fornecer instruções a um computador,

17

(2) Ordem de operações

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

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

Page 18: Aula 05 – Lógica de Programação: Variáveis e Estruturas ...compscinet.org/hausen/courses/2016/q2/bcc/aulas/05variaveis/BCC... · Como fornecer instruções a um computador,

18

(2) Ordem de operações

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

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

Page 19: Aula 05 – Lógica de Programação: Variáveis e Estruturas ...compscinet.org/hausen/courses/2016/q2/bcc/aulas/05variaveis/BCC... · Como fornecer instruções a um computador,

19

(2) Ordem de operações

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

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

Page 20: Aula 05 – Lógica de Programação: Variáveis e Estruturas ...compscinet.org/hausen/courses/2016/q2/bcc/aulas/05variaveis/BCC... · Como fornecer instruções a um computador,

20

(2) Ordem de operações

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

Page 21: Aula 05 – Lógica de Programação: Variáveis e Estruturas ...compscinet.org/hausen/courses/2016/q2/bcc/aulas/05variaveis/BCC... · Como fornecer instruções a um computador,

21

(2) Ordem de operações

Page 22: Aula 05 – Lógica de Programação: Variáveis e Estruturas ...compscinet.org/hausen/courses/2016/q2/bcc/aulas/05variaveis/BCC... · Como fornecer instruções a um computador,

22

(2) Ordem de operações

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

Page 23: Aula 05 – Lógica de Programação: Variáveis e Estruturas ...compscinet.org/hausen/courses/2016/q2/bcc/aulas/05variaveis/BCC... · Como fornecer instruções a um computador,

23

(2) Ordem de operações

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

Page 24: Aula 05 – Lógica de Programação: Variáveis e Estruturas ...compscinet.org/hausen/courses/2016/q2/bcc/aulas/05variaveis/BCC... · Como fornecer instruções a um computador,

24

(3) Série de Fibonacci

Page 25: Aula 05 – Lógica de Programação: Variáveis e Estruturas ...compscinet.org/hausen/courses/2016/q2/bcc/aulas/05variaveis/BCC... · Como fornecer instruções a um computador,

25

(3) Série de Fibonacci

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

Page 26: Aula 05 – Lógica de Programação: Variáveis e Estruturas ...compscinet.org/hausen/courses/2016/q2/bcc/aulas/05variaveis/BCC... · Como fornecer instruções a um computador,

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:

Page 27: Aula 05 – Lógica de Programação: Variáveis e Estruturas ...compscinet.org/hausen/courses/2016/q2/bcc/aulas/05variaveis/BCC... · Como fornecer instruções a um computador,

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.

Page 28: Aula 05 – Lógica de Programação: Variáveis e Estruturas ...compscinet.org/hausen/courses/2016/q2/bcc/aulas/05variaveis/BCC... · Como fornecer instruções a um computador,

28

(3) Série de Fibonacci

Converge para a razão áurea

Page 29: Aula 05 – Lógica de Programação: Variáveis e Estruturas ...compscinet.org/hausen/courses/2016/q2/bcc/aulas/05variaveis/BCC... · Como fornecer instruções a um computador,

29

(3) Série de Fibonacci

Page 30: Aula 05 – Lógica de Programação: Variáveis e Estruturas ...compscinet.org/hausen/courses/2016/q2/bcc/aulas/05variaveis/BCC... · Como fornecer instruções a um computador,

30

(3) Série de Fibonacci

Page 31: Aula 05 – Lógica de Programação: Variáveis e Estruturas ...compscinet.org/hausen/courses/2016/q2/bcc/aulas/05variaveis/BCC... · Como fornecer instruções a um computador,

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.

Page 32: Aula 05 – Lógica de Programação: Variáveis e Estruturas ...compscinet.org/hausen/courses/2016/q2/bcc/aulas/05variaveis/BCC... · Como fornecer instruções a um computador,

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.

Page 33: Aula 05 – Lógica de Programação: Variáveis e Estruturas ...compscinet.org/hausen/courses/2016/q2/bcc/aulas/05variaveis/BCC... · Como fornecer instruções a um computador,

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.

Page 34: Aula 05 – Lógica de Programação: Variáveis e Estruturas ...compscinet.org/hausen/courses/2016/q2/bcc/aulas/05variaveis/BCC... · Como fornecer instruções a um computador,

34

(4) Função Fibonacci

Ou: Menu Aplicativos → SciNotes

Page 35: Aula 05 – Lógica de Programação: Variáveis e Estruturas ...compscinet.org/hausen/courses/2016/q2/bcc/aulas/05variaveis/BCC... · Como fornecer instruções a um computador,

35

(4) Função Fibonacci

Page 36: Aula 05 – Lógica de Programação: Variáveis e Estruturas ...compscinet.org/hausen/courses/2016/q2/bcc/aulas/05variaveis/BCC... · Como fornecer instruções a um computador,

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

Page 37: Aula 05 – Lógica de Programação: Variáveis e Estruturas ...compscinet.org/hausen/courses/2016/q2/bcc/aulas/05variaveis/BCC... · Como fornecer instruções a um computador,

37

(4) Função Fibonacci

Page 38: Aula 05 – Lógica de Programação: Variáveis e Estruturas ...compscinet.org/hausen/courses/2016/q2/bcc/aulas/05variaveis/BCC... · Como fornecer instruções a um computador,

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:

Page 39: Aula 05 – Lógica de Programação: Variáveis e Estruturas ...compscinet.org/hausen/courses/2016/q2/bcc/aulas/05variaveis/BCC... · Como fornecer instruções a um computador,

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

Page 40: Aula 05 – Lógica de Programação: Variáveis e Estruturas ...compscinet.org/hausen/courses/2016/q2/bcc/aulas/05variaveis/BCC... · Como fornecer instruções a um computador,

40

(4) Função Fibonacci

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

Page 41: Aula 05 – Lógica de Programação: Variáveis e Estruturas ...compscinet.org/hausen/courses/2016/q2/bcc/aulas/05variaveis/BCC... · Como fornecer instruções a um computador,

41

(4) Função Fibonacci

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

Page 42: Aula 05 – Lógica de Programação: Variáveis e Estruturas ...compscinet.org/hausen/courses/2016/q2/bcc/aulas/05variaveis/BCC... · Como fornecer instruções a um computador,

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.

Page 43: Aula 05 – Lógica de Programação: Variáveis e Estruturas ...compscinet.org/hausen/courses/2016/q2/bcc/aulas/05variaveis/BCC... · Como fornecer instruções a um computador,

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

Page 44: Aula 05 – Lógica de Programação: Variáveis e Estruturas ...compscinet.org/hausen/courses/2016/q2/bcc/aulas/05variaveis/BCC... · Como fornecer instruções a um computador,

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.

Page 45: Aula 05 – Lógica de Programação: Variáveis e Estruturas ...compscinet.org/hausen/courses/2016/q2/bcc/aulas/05variaveis/BCC... · Como fornecer instruções a um computador,

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

Page 46: Aula 05 – Lógica de Programação: Variáveis e Estruturas ...compscinet.org/hausen/courses/2016/q2/bcc/aulas/05variaveis/BCC... · Como fornecer instruções a um computador,

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!

Page 47: Aula 05 – Lógica de Programação: Variáveis e Estruturas ...compscinet.org/hausen/courses/2016/q2/bcc/aulas/05variaveis/BCC... · Como fornecer instruções a um computador,

47

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

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

Page 48: Aula 05 – Lógica de Programação: Variáveis e Estruturas ...compscinet.org/hausen/courses/2016/q2/bcc/aulas/05variaveis/BCC... · Como fornecer instruções a um computador,

48

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

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

Page 49: Aula 05 – Lógica de Programação: Variáveis e Estruturas ...compscinet.org/hausen/courses/2016/q2/bcc/aulas/05variaveis/BCC... · Como fornecer instruções a um computador,

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

Page 50: Aula 05 – Lógica de Programação: Variáveis e Estruturas ...compscinet.org/hausen/courses/2016/q2/bcc/aulas/05variaveis/BCC... · Como fornecer instruções a um computador,

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.