![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](https://reader031.vdocuments.site/reader031/viewer/2022022022/5ba708d409d3f2f5388c9fb5/html5/thumbnails/1.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022022022/5ba708d409d3f2f5388c9fb5/html5/thumbnails/2.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022022022/5ba708d409d3f2f5388c9fb5/html5/thumbnails/3.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022022022/5ba708d409d3f2f5388c9fb5/html5/thumbnails/4.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022022022/5ba708d409d3f2f5388c9fb5/html5/thumbnails/5.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022022022/5ba708d409d3f2f5388c9fb5/html5/thumbnails/6.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022022022/5ba708d409d3f2f5388c9fb5/html5/thumbnails/7.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022022022/5ba708d409d3f2f5388c9fb5/html5/thumbnails/8.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022022022/5ba708d409d3f2f5388c9fb5/html5/thumbnails/9.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022022022/5ba708d409d3f2f5388c9fb5/html5/thumbnails/10.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022022022/5ba708d409d3f2f5388c9fb5/html5/thumbnails/11.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022022022/5ba708d409d3f2f5388c9fb5/html5/thumbnails/12.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022022022/5ba708d409d3f2f5388c9fb5/html5/thumbnails/13.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022022022/5ba708d409d3f2f5388c9fb5/html5/thumbnails/14.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022022022/5ba708d409d3f2f5388c9fb5/html5/thumbnails/15.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022022022/5ba708d409d3f2f5388c9fb5/html5/thumbnails/16.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022022022/5ba708d409d3f2f5388c9fb5/html5/thumbnails/17.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022022022/5ba708d409d3f2f5388c9fb5/html5/thumbnails/18.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022022022/5ba708d409d3f2f5388c9fb5/html5/thumbnails/19.jpg)
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.