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
Instituto Superior Técnico,
Dep. de Engenharia Mecânica - ACCAII
Estruturas de repetição no MATLAB
• 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.
Miguel Pedro Silva – José Borges
Computação e Programação 2009 / 2010
2
Instrução for
Descrição: Repete um bloco de instruções um número específico
de vezes.
Sintaxe:
for variable = expression
statement_1
.
.
statement_n
end
Miguel Pedro Silva – José Borges
Computação e Programação 2009 / 2010
3
Instrução for
exemplo1
>> 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
>>
Miguel Pedro Silva – José Borges
Computação e Programação 2009 / 2010
4
Instrução for
FLUXOGRAMA:
Miguel Pedro Silva – José Borges
Computação e Programação 2009 / 2010
5
Instrução for
exemplo2
Problema: Escreva uma função que retorne o valor do somatório
de i = 1 até i = n
Miguel Pedro Silva – José Borges
Computação e Programação 2009 / 2010
6
Instrução for
exemplo2
Problema: Escreva uma função que retorne o valor do somatório
de i = 1 até i = n
>> somatorio(5)
ans =
15
Miguel Pedro Silva – José Borges
Computação e Programação 2009 / 2010
7
Instrução for
exemplo3
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
Miguel Pedro Silva – José Borges
Computação e Programação 2009 / 2010
8
As funções sum e factorial
As funções sum e factorial estão pré-definidas no MATLAB:
>> sum([1 2 3 4 5])
ans =
15
>> factorial(4)
ans =
24
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!
Concatenação:
Miguel Pedro Silva – José Borges
Computação e Programação 2009 / 2010
PORQUÊ ?
A pré-alocação de um array
Pré-alocação:
Miguel Pedro Silva – José Borges
Computação e Programação 2009 / 2010
A pré-alocação de um array
Exemplo de execução:
>> somaAcumulada([1 2 3 4])
ans =
1
3
6
10
>> somaAcumulada2([1 2 3 4])
Mais eficiente em
termos de tempo de
cálculo
ans =
1
3
Miguel Pedro Silva – José Borges
6
10
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.
Miguel Pedro Silva – José Borges
Computação e Programação 2009 / 2010
Combinando ciclos com decisões
Exemplo de execução:
>> minimo([53 45 3 45 2 44])
ans =
2
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.
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.
Miguel Pedro Silva – José Borges
Computação e Programação 2009 / 2010
Ciclos FOR encadeados
Miguel Pedro Silva – José Borges
Computação e Programação 2009 / 2010
Ciclos FOR encadeados
Exemplo de execução:
>> >> A=rand(3,4)
A =
0.9572
0.1419
0.4854
0.4218
0.8003
0.9157
>> B=binariza(A)
B =
1
0
1
0
0
1
1
1
1
Miguel Pedro Silva – José Borges
0.7922
0.9595
0.6557
0.0357
0.8491
0.9340
0
1
1
Computação e Programação 2009 / 2010
Referências
• Capítulo 4 de Stormy Attaway (2009), “Matlab: A Practical
Introduction to Programming and Problem Solving”, Elsevier.
Miguel Pedro Silva – José Borges
Computação e Programação 2009 / 2010
19
Download

Acetatos - 7ª aula ()