19
Instituto Superior Técnico, Dep. de Engenharia Mecânica - ACCAII Programação em MATLAB Estruturas de Repetição Ciclo FOR Ciclos FOR encadeados Pré-alocação de variáveis Combinar ciclos FOR com a instrução IF

Programação em MATLAB - Autenticação · Instituto Superior Técnico, Dep. de Engenharia Mecânica - ACCAII Programação em MATLAB •Estruturas de Repetição •Ciclo FOR •Ciclos

  • Upload
    vudang

  • View
    214

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Programação em MATLAB - Autenticação · Instituto Superior Técnico, Dep. de Engenharia Mecânica - ACCAII Programação em MATLAB •Estruturas de Repetição •Ciclo FOR •Ciclos

Instituto Superior Técnico,

Dep. de Engenharia Mecânica - ACCAII

Programação em MATLAB

• Estruturas de Repetição

• Ciclo FOR

• Ciclos FOR encadeados

• Pré-alocação de variáveis

• Combinar ciclos FOR com a instrução IF

Page 2: Programação em MATLAB - Autenticação · Instituto Superior Técnico, Dep. de Engenharia Mecânica - ACCAII Programação em MATLAB •Estruturas de Repetição •Ciclo FOR •Ciclos

Miguel Pedro Silva – José Borges Computação e Programação 2009 / 2010

Estruturas de repetição no MATLAB

2

• Estruturas de repetição disponíveis no MATLAB:

• Estruturas de repetição:

• instrução for

• O ciclo FOR permite que uma sequência de instruções seja executada mais do que uma vez.

• O ciclo FOR repete um bloco de instruções um determinado número de vezes. Esse número de vezes é especificado antes do ciclo ser executado.

• instrução while

• O ciclo WHILE repete o bloco de instruções enquanto a condição associada for verdadeira.

Page 3: Programação em MATLAB - Autenticação · Instituto Superior Técnico, Dep. de Engenharia Mecânica - ACCAII Programação em MATLAB •Estruturas de Repetição •Ciclo FOR •Ciclos

Miguel Pedro Silva – José Borges Computação e Programação 2009 / 2010

Instrução for

3

Descrição: Repete um bloco de instruções um número específico de vezes.

Sintaxe: for variable = expression

statement_1

.

.

statement_n

end

Page 4: Programação em MATLAB - Autenticação · Instituto Superior Técnico, Dep. de Engenharia Mecânica - ACCAII Programação em MATLAB •Estruturas de Repetição •Ciclo FOR •Ciclos

Miguel Pedro Silva – José Borges Computação e Programação 2009 / 2010

Instrução for exemplo1

4

>> exemplo1

1 ao quadrado = 1

2 ao quadrado = 4

3 ao quadrado = 9

4 ao quadrado = 16

5 ao quadrado = 25

6 ao quadrado = 36

7 ao quadrado = 49

8 ao quadrado = 64

9 ao quadrado = 81

10 ao quadrado = 100

>>

Page 5: Programação em MATLAB - Autenticação · Instituto Superior Técnico, Dep. de Engenharia Mecânica - ACCAII Programação em MATLAB •Estruturas de Repetição •Ciclo FOR •Ciclos

Miguel Pedro Silva – José Borges Computação e Programação 2009 / 2010

Instrução for

5

FLUXOGRAMA:

Page 6: Programação em MATLAB - Autenticação · Instituto Superior Técnico, Dep. de Engenharia Mecânica - ACCAII Programação em MATLAB •Estruturas de Repetição •Ciclo FOR •Ciclos

Miguel Pedro Silva – José Borges Computação e Programação 2009 / 2010

Instrução for exemplo2

6

Problema: Escreva uma função que retorne o valor do somatório de i = 1 até i = n

Page 7: Programação em MATLAB - Autenticação · Instituto Superior Técnico, Dep. de Engenharia Mecânica - ACCAII Programação em MATLAB •Estruturas de Repetição •Ciclo FOR •Ciclos

Miguel Pedro Silva – José Borges Computação e Programação 2009 / 2010

Instrução for exemplo2

7

Problema: Escreva uma função que retorne o valor do somatório de i = 1 até i = n

>> somatorio(5)

ans =

15

Page 8: Programação em MATLAB - Autenticação · Instituto Superior Técnico, Dep. de Engenharia Mecânica - ACCAII Programação em MATLAB •Estruturas de Repetição •Ciclo FOR •Ciclos

Miguel Pedro Silva – José Borges Computação e Programação 2009 / 2010

Instrução for exemplo3

8

Problema: Escreva uma função que retorne o factorial de n (ou seja: n!) >> fact(0)

ans =

1

>> fact(1)

ans =

1

>> fact(2)

ans =

2

>> fact(4)

ans =

24

Page 9: Programação em MATLAB - Autenticação · Instituto Superior Técnico, Dep. de Engenharia Mecânica - ACCAII Programação em MATLAB •Estruturas de Repetição •Ciclo FOR •Ciclos

Miguel Pedro Silva – José Borges Computação e Programação 2009 / 2010

As funções sum e factorial

>> sum([1 2 3 4 5])

ans =

15

As funções sum e factorial estão pré-definidas no MATLAB:

>> factorial(4)

ans =

24

Page 10: Programação em MATLAB - Autenticação · Instituto Superior Técnico, Dep. de Engenharia Mecânica - ACCAII Programação em MATLAB •Estruturas de Repetição •Ciclo FOR •Ciclos

Miguel Pedro Silva – José Borges Computação e Programação 2009 / 2010

A pré-alocação de um array

A pré-alocação de espaço em memória para um array

permite uma maior eficiência na execução!

PORQUÊ ?

Concatenação:

Page 11: Programação em MATLAB - Autenticação · Instituto Superior Técnico, Dep. de Engenharia Mecânica - ACCAII Programação em MATLAB •Estruturas de Repetição •Ciclo FOR •Ciclos

Miguel Pedro Silva – José Borges Computação e Programação 2009 / 2010

A pré-alocação de um array

Pré-alocação:

Page 12: Programação em MATLAB - Autenticação · Instituto Superior Técnico, Dep. de Engenharia Mecânica - ACCAII Programação em MATLAB •Estruturas de Repetição •Ciclo FOR •Ciclos

Miguel Pedro Silva – José Borges Computação e Programação 2009 / 2010

A pré-alocação de um array

>> somaAcumulada([1 2 3 4])

ans =

1 3 6 10

Exemplo de execução:

>> somaAcumulada2([1 2 3 4])

ans =

1 3 6 10

Mais eficiente em termos de tempo de

cálculo

Page 13: Programação em MATLAB - Autenticação · Instituto Superior Técnico, Dep. de Engenharia Mecânica - ACCAII Programação em MATLAB •Estruturas de Repetição •Ciclo FOR •Ciclos

Miguel Pedro Silva – José Borges Computação e Programação 2009 / 2010

Combinando ciclos com decisões

Problema: Escreva uma função que recebe um vector e que devolve o seu valor mínimo.

Page 14: Programação em MATLAB - Autenticação · Instituto Superior Técnico, Dep. de Engenharia Mecânica - ACCAII Programação em MATLAB •Estruturas de Repetição •Ciclo FOR •Ciclos

Miguel Pedro Silva – José Borges Computação e Programação 2009 / 2010

Combinando ciclos com decisões

>> minimo([53 45 3 45 2 44])

ans =

2

Exemplo de execução:

Page 15: Programação em MATLAB - Autenticação · Instituto Superior Técnico, Dep. de Engenharia Mecânica - ACCAII Programação em MATLAB •Estruturas de Repetição •Ciclo FOR •Ciclos

Miguel Pedro Silva – José Borges Computação e Programação 2009 / 2010

Ciclos FOR encadeados

• O corpo de instruções de um ciclo FOR pode conter outro ciclo FOR;

• Quando tal acontece, diz-se que se possui ciclos FOR encadeados;

• Os ciclos FOR encadeados são geralmente utilizados para aceder a estruturas de dados com mais de que uma dimensão. Por exemplo, uma matriz.

Page 16: Programação em MATLAB - Autenticação · Instituto Superior Técnico, Dep. de Engenharia Mecânica - ACCAII Programação em MATLAB •Estruturas de Repetição •Ciclo FOR •Ciclos

Miguel Pedro Silva – José Borges Computação e Programação 2009 / 2010

Ciclos FOR encadeados

Problema:

Escreva uma função que receba uma matriz com valores

aleatórios entre zero e um, que devolva uma matriz constituída

por zeros e uns.

A função deve converter os valores entre [0 ,0.5[ em zero, e os valores entre [0.5,1] em um.

Page 17: Programação em MATLAB - Autenticação · Instituto Superior Técnico, Dep. de Engenharia Mecânica - ACCAII Programação em MATLAB •Estruturas de Repetição •Ciclo FOR •Ciclos

Miguel Pedro Silva – José Borges Computação e Programação 2009 / 2010

Ciclos FOR encadeados

Page 18: Programação em MATLAB - Autenticação · Instituto Superior Técnico, Dep. de Engenharia Mecânica - ACCAII Programação em MATLAB •Estruturas de Repetição •Ciclo FOR •Ciclos

Miguel Pedro Silva – José Borges Computação e Programação 2009 / 2010

Ciclos FOR encadeados

>> >> A=rand(3,4)

A =

0.9572 0.1419 0.7922 0.0357

0.4854 0.4218 0.9595 0.8491

0.8003 0.9157 0.6557 0.9340

>> B=binariza(A)

B =

1 0 1 0

0 0 1 1

1 1 1 1

Exemplo de execução:

Page 19: Programação em MATLAB - Autenticação · Instituto Superior Técnico, Dep. de Engenharia Mecânica - ACCAII Programação em MATLAB •Estruturas de Repetição •Ciclo FOR •Ciclos

Miguel Pedro Silva – José Borges Computação e Programação 2009 / 2010

Referências

19

• Capítulo 4 de Stormy Attaway (2009), “Matlab: A Practical Introduction to Programming and Problem Solving”, Elsevier.