aula 05 – lógica de programação: variáveis e estruturas...
TRANSCRIPT
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é a semana que vem. - Arquivo a ser enviado: cparaf.sci
50
AVISO IMPORTANTE
Relembrando:
JAMAIS MOSTRE O SEU TRABALHO A INTEGRANTES DE OUTROS GRUPOS!
JAMAIS MOSTRE O SEU TRABALHO A INTEGRANTES DE OUTROS GRUPOS!
JAMAIS MOSTRE O SEU TRABALHO A INTEGRANTES DE OUTROS GRUPOS!
SE VOCÊ MOSTRAR SEU TRABALHO A OUTRASPESSOAS, A PROBABILIDADE DE PLÁGIO
(MESMO NÃO INTENCIONAL) AUMENTA MUITO!!!
51
AVISO IMPORTANTE
PLÁGIO = FEsta regra já foi aplicada em quadrimestres passados.
Será aplicada novamente em caso de plágio,mesmo que seja “não intencional.”
Quem mostra o trabalho e quem copia levam conceito F.
Tem dúvidas sobre um trabalho? Procure um monitor ou o professor.
52
Para casa
● Ler capítulos 5 (aula de hoje) e 6 (próxima aula)
● 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é o dia 3 de novembro às 17h. → 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.