Post on 01-Aug-2020
Informática para Ciências e Engenharias (B)
2016/17
Teórica 3
Na aula de hoje
22 Março 2017 Vetores; ciclos FOR 2
l Vetores.
l Ciclos FOR. • Percursos em vetores.
l Exemplos
Problema dos Contaminantes
l Para avaliar a qualidade da água de um rio foi medida a concentração de Pb em 50 amostras.
c1, c2, c3, ... , c50
l Problema: Desenvolver um programa para calcular a concentração média de Pb nas amostras.
22 Março 2017 Vetores; ciclos FOR 3
Resolução – Problema [1]
1. Compreender totalmente o problema descrito no enunciado.
2. Caracterizar o problema.
• Problema: Cálculo de uma média.
• Entrada: reais c1, ..., c50. • Saída: a média de c1, ..., c50.
22 Março 2017 Vetores; ciclos FOR 4
µ =150
cii=1
50
∑
Resolução – Problema [2]
3. Generalizar o problema (sempre que possível)
• Problema: Cálculo de uma média de n valores.
• Entrada: reais c1, ..., cn (n ≥ 1) • Saída: a média de c1, ..., cn.
22 Março 2017 Vetores; ciclos FOR 5
µ =1n
cii=1
n
∑
Resolução – Algoritmo [1]
4. Desenhar o algoritmo para resolver o problema.
a. Conceber o algoritmo, decompondo o problema em sub-problemas (se necessário). • Como calcular a média de c1, ..., cn?
• Somando os “valores” c1, ..., cn e dividindo pelo seu número.
b. Identificar, caracterizar e generalizar cada sub-problema. • Não há sub-problemas.
22 Março 2017 Vetores; ciclos FOR 6
Resolução – Algoritmo [2]
c. Conceber o algoritmo, assumindo que os sub-problemas estão resolvidos.
Média (c1, ..., cn) :
• Ideia base: implementa-se uma soma de n parcelas
como uma sequência de n somas de duas parcelas, usando-se sempre o resultado anterior.
22 Março 2017 Vetores; ciclos FOR 7
µ =1n
cii=1
n
∑
Resolução – Algoritmo [3]
l Cálculo do somatório • Exemplo para n = 5:
• soma = 0 • soma = soma + c1 % soma tem c1
• soma = soma + c2 % soma tem (c1) + c2
• soma = soma + c3 % soma tem (c1+c2) + c3 • soma = soma + c4 % soma tem (c1+c2+c3) + c4 • soma = soma + c5 % soma tem (c1+c2+c3+c2) + c5
22 Março 2017 Vetores; ciclos FOR 8
µ =1n
cii=1
n
∑
Resolução – Programa
5. Para cada sub-problema, desenhar o algoritmo para o resolver.
• Não há sub-problemas.
6. Para cada sub-problema (começando pelos mais simples), implementar o respetivo algoritmo e testar o “sub-programa”.
• Não há sub-problemas.
7. Implementar o algoritmo que resolve o problema e testar o programa pedido.
• Média (c1, ..., cn)
22 Março 2017 Vetores; ciclos FOR 9
Implementação – Que questões?
l Como é que se guarda um número (finito mas) arbitrário de valores (do mesmo tipo)? • No problema: os reais c1, ..., cn, para qualquer n
l Como é que se pode executar uma instrução um número
arbitrário (mas finito) de vezes? • No problema: a atribuição no cálculo de um somatório,
para qualquer n.
22 Março 2017 Vetores; ciclos FOR 10
Na aula de hoje
l Vetores.
l Ciclos FOR. • Percursos em vetores.
l Exemplos
22 Março 2017 Vetores; ciclos FOR 11
Implementação – Que questões?
l Como é que se guarda um número (finito mas) arbitrário de valores (do mesmo tipo)? • No problema: os reais c1, ..., cn, para qualquer n
l Resposta: Num vetor : [ c1 c2 . . . cn ]
l Mais geral: como usar vetores em Matlab?
22 Março 2017 Vetores; ciclos FOR 12
Vetores em Informática
l Um vetor é uma estrutura de dados que guarda um número pré-definido de dados do mesmo tipo.
l Um vetor corresponde a uma sequência de posições de memória. A sequência tem um comprimento fixo.
l Acede-se a uma posição do vetor através de um índice, que é um inteiro positivo (1, 2, ..., “comprimento”).
22 Março 2017 Vetores; ciclos FOR 13
V: -5 18 8 -3.5 -5 0 9 1 2 3 4 5 6 7
Vetores – Criação
l Sintaxe: [ lista de valores ]
• Os valores na lista podem ser separados por vírgulas [-5, 18, 8, -3.5, -5, 0, 9] • ... ou por espaços
[-5 18 8 -3.5 -5 0 9] l Normalmente, o vetor é atribuído a uma variável quando é
criado (o nome da variável é o “nome” do vetor) V = [-5 18 8 -3.5 -5 0 9]
22 Março 2017 Vetores; ciclos FOR 14
V: -5 18 8 -3.5 -5 0 9 1 2 3 4 5 6 7
Vetores – Acesso a uma posição
l Os elementos do vetor podem ser acedidos individualmente • Sintaxe: nomeVetor( expressão ) • O valor da expressão deve ser um inteiro positivo, inferior
ou igual ao comprimento do vetor. • A função length permite obter o comprimento de um vetor
Exemplos:
22 Março 2017 Vetores; ciclos FOR 15
>> V = [-5, 18, 8, -3.5, -5, 0, 9]; >> V(3) ans = 8 >> length(V) ans = 7 >>
Vetores – Acesso a uma posição
l Os acessos podem ser feitos não só para para leitura dos elementos de um vetor, mas também para atribuição de novos valores a esses elementos
Exemplos:
22 Março 2017 Vetores; ciclos FOR 16
>> V = [-5, 18, 8, -3.5, -5, 0, 9] -5 18 8 -3.5 -5 0 9 >> V(6) = 2 -5 18 8 -3.5 -5 2 9 >> p = 1; >> V(p+2) = V( length(V) ) % A posição 3 fica com 9. -5 18 9 -3.5 -5 2 9 >> V(p) = V(p+4)^2; % A posição 1 fica com 25. >> V(1) ans = 25 >>
Vetores – Erros Típico de Acesso
l Quando o índice indicado não é um inteiro positivo, inferior ou igual ao comprimento do vetor, o interpretador reporta um erro.
Exemplos:
22 Março 2017 Vetores; ciclos FOR 17
>> V(20) % indice maior que o comprimento ??? error: A(I): index out of bounds; value 20 out of bound 7 >> V(-4) % indice negativo ??? error: subscript indices must be either positive integers
less than 2^31 or logicals >> V(sqrt(2)) % indice não inteiro ??? error: subscript indices must be either positive integers
less than 2^31 or logicals
Vetores – Erros Típico de Acesso
l Quando o índice indicado não é um inteiro positivo, inferior ou igual ao comprimento do vetor, o interpretador reporta um erro.
Exemplos:
l Em Matlab, apesar de • não ser possível ler um elemento de uma posição de um
vetor que não esteja definida, • é possível fazer “crescer” um vetor e escrever um elemento
numa posição ainda não definida.
l Em Matlab, são assim válidas as atribuições da forma: V(pos) = valor, com pos > length(V).
22 Março 2017 Vetores; ciclos FOR 18
Matlab – Escrita numa posição
l Dada uma atribuição V(pos) = valor (pos > length(V)) o Matlab 1. Cria um novo vetor com comprimento pos.
2. Copia os elementos de V para esse novo vetor, preservando as suas posições.
3. Escreve o valor na posição pos.
4. Escreve zero nas posições {length(V)+1, ..., pos−1} do novo vetor.
5. O vetor V é destruído.
6. O novo vetor passa a chamar-se V.
20 Março 2017 ICE-c Aula 3: Vetores; ciclos FOR 19
REGRA DE PROGRAMAÇÃO
l O código deve ser eficiente.
• Os vetores devem ser criados com o comprimento máximo necessário, para que não se escreva numa posição inexistente (o que obriga a refazer o vetor)
• Todas as exceções à regra anterior têm de ser muito bem justificadas.
l Para esse efeito podem ser usadas funções predefinidas para a criação de vetores com o comprimento desejado.
20 Março 2017 ICE-c Aula 3: Vetores; ciclos FOR 20
Vetores – Funções de criação
l V = zeros(1, nºPosições) • V é um vetor com comprimento nºPosições, com zero em
todas as posições.
l V = ones(1, nºPosições)
• V é um vetor com comprimento nºPosições, com um em todas as posições.
20 Março 2017 ICE-c Aula 3: Vetores; ciclos FOR 21
Sequências de números [1]
l Sequências de inteiros podem ser representadas de forma mais compacta:
• Exemplo: 2, 3, 4, 5 pode ser representada por: 2:5
l Em Matlab, uma sequência é um vetor, e pode ser definida compactamente com a seguinte
• Sintaxe: primeiroElemento : últimoElemPossível; ou
primeiroElemento : passo : últimoElemPossível
• O vetor é constituído por todos os valores da série aritmética, com razão igual ao passo começada pelo primeiroElemento e cujo último elemento não “ultrapasse” o últimoElemPossível.
20 Março 2017 ICE-c Aula 3: Vetores; ciclos FOR 22
Sequências de números [1]
l Exemplos:
20 Março 2017 ICE-c Aula 3: Vetores; ciclos FOR 23
>> 1:5 % caso mais comum com passo = 1 ans = 1 2 3 4 5 >> 1:2:9 % passo maior que 1 ans = 1 3 5 7 9 >> 1:1.5:7 % passo não inteiro (elementos não inteiros) ans = 1.0 2.5 4.0 5.5 7.0 >> 1:2:6 % ultimo elemento não atinge o limite ans = 1 3 5 >> 12:-2:6 % passo negativo ans = 12 10 8 6 >> 12:-2:-3 % igual mas ultimo elemento não atinge o limite ans = 12 10 8 6 4 2 0 -2 >>
Vetores – Acesso & criação
l Em Matlab, um sub-vetor pode ser obtido de outro através de um terceiro vetor usado para indexar o anterior.
l Em particular, é muito comum usarem-se sequências para indexação de vetores • Nota: O identificador end representa “até ao fim” no respectivo contexto
20 Março 2017 ICE-c Aula 3: Vetores; ciclos FOR 24
>> V = 11:2:24 % criacao de vetor V = 11 13 15 17 19 21 23 >> V(3:5) % indexacao por vetor/sequencia ans = 15 17 19 >> V(5:end) % indexacao por vetor/sequencia ans = 19 21 23 >> I = [1,4,6]; X = V(I) % vetor de indices >> X = 11 17 21 >>
Questão 1
l Como é que se guarda um número (finito mas) arbitrário de valores (do mesmo tipo)? • No problema: os reais c1, ..., cn, para qualquer n
l Resposta: Num vetor : [ c1 c2 . . . cn ]
l A solução do problema será implementada pela função
function res = media( valores ) !l em que o parâmetro valores receberá um vetor como argumento
20 Março 2017 ICE-c Aula 3: Vetores; ciclos FOR 25
Na aula de hoje
20 Março 2017 ICE-c Aula 3: Vetores; ciclos FOR 26
l Vetores.
l Ciclos FOR. • Percursos em vetores.
l Exemplos
Implementação – Que questões?
l Como é que se pode executar uma instrução um número arbitrário (mas finito) de vezes? • No problema: a atribuição no cálculo de um somatório,
para qualquer n.
l Ideia base: implementa-se uma soma de n parcelas como uma sequência de n somas de duas parcelas, usando-se sempre o resultado anterior.
€
vii=1
n
∑ = v1 + v2 + ...+ vn
20 Março 2017 ICE-c Aula 3: Vetores; ciclos FOR 27
Implementação – Que questões?
• soma = 0
• soma = soma + v1 % soma tem v1
• soma = soma + v2 % soma tem (v1) + v2
• soma = soma + v3 % soma tem (v1+v2) + v3
• etc…
€
vii=1
n
∑ = v1 + v2 + ...+ vn
20 Março 2017 ICE-c Aula 3: Vetores; ciclos FOR 28
Ciclo FOR
l Sintaxe: for variável = sequência ... instruções end
l Operacionalmente: • Se a variável não existe, é criada. • Para cada elemento E da sequência (pela ordem por que
os elementos ocorrem): 1. variável = E; 2. executam-se as instruções.
20 Março 2017 ICE-c Aula 3: Vetores; ciclos FOR 29
Ciclo FOR – Exemplo [1]
l Exemplos:
20 Março 2017 ICE-c Aula 3: Vetores; ciclos FOR 30
>> V = [4 9 8, 2, 5] >> for i = 1:4 i end % mostra os indices i = 1 i = 2 i = 3 i = 4 >> for i = [1,4,2] V(i) end % mostra os valores de V ans = 4 ans = 2 ans = 9 >>
Ciclo FOR – Exemplo [2]
l Exemplos: Cálculo de somas (e produtos) de vetores
20 Março 2017 ICE-c Aula 3: Vetores; ciclos FOR 31
>> V = [4 9 8, 2, 5] >> soma = 0, for i = 1:3 soma = soma + V(i) end soma = 0 soma = 4 soma = 13 soma = 21 >>
soma = 0 soma = soma + v1 % soma tem v1 soma = soma + v2 % soma tem (v1) + v2 soma = soma + v3 % soma tem (v1+v2) + v3
l Exemplos: Cálculo de somas (e produtos) de vetores
Ciclo FOR – Exemplo [2]
20 Março 2017 ICE-c Aula 3: Vetores; ciclos FOR 32
>> V = [4 9 8, 2, 5] >> prod = 1, for i = 1:length(V) prod = prod * V(i) end prod = 1 prod = 4 prod = 36 prod = 288 prod = 576 prod = 2880 >> soma = 0; for i = 1:length(V) soma = soma + V(i); end >> soma soma = 28
prod = 1 prod = prod * v1 % prod tem v1 prod = prod * v2 % prod tem (v1) * v2 prod = prod * v3 % prod tem (v1*v2) * v3 etc…
l Exemplo: Definição da função média
function res = media( valores )!% res = media(valores)!% Calcula a media dos elementos do vetor valores.! soma = 0;! n = length(valores)! for i = 1 : n! soma = soma + valores(i);! end! res = soma / n;!end!
Função Média
€
1n
vii=1
n
∑
20 Março 2017 ICE-c Aula 3: Vetores; ciclos FOR 33
l Exemplo: Definição da função média geométrica
function res = media_geometrica( valores )!% res = media(valores)!% Calcula a media geometrica dos elementos !% do vetor valores.! prod = 1;! n = length(valores)! for i = 1 : n! prod = prod * valores(i);! end! res = prod ^ (1/n);!end!
Função Média Geométrica
V (i)i=1
n
∏⎛
⎝⎜
⎞
⎠⎟
1n
20 Março 2017 ICE-c Aula 3: Vetores; ciclos FOR 34
Função Média
% res = media(valores) % Calcula a media dos elementos do vetor valores. function res = media( valores ) soma = 0; for i = 1 : length(valores) soma = soma + valores(i); end res = soma / length(valores); end
€
1n
vii=1
n
∑
i valores(i) soma (antes)
soma (depois)
1 5 0
2 3
3 7
… …
n 6
20 Março 2017 ICE-c Aula 3: Vetores; ciclos FOR 35
% res = media(valores) % Calcula a media dos elementos do vetor valores. function res = media( valores ) soma = 0; for i = 1 : length(valores) soma = soma + valores(i); end res = soma / length(valores); end
Função Média
i valores(i) soma (antes)
soma (depois)
1 5 0 5
3
7
… …
n 6
20 Março 2017 ICE-c Aula 3: Vetores; ciclos FOR 36
€
1n
vii=1
n
∑
% res = media(valores) % Calcula a media dos elementos do vetor valores. function res = media( valores ) soma = 0; for i = 1 : length(valores) soma = soma + valores(i); end res = soma / length(valores); end
Função Média
i valores(i) soma (antes)
soma (depois)
1 5 0 5
2 3 5
7
… …
n 6
20 Março 2017 ICE-c Aula 3: Vetores; ciclos FOR 37
€
1n
vii=1
n
∑
% res = media(valores) % Calcula a media dos elementos do vetor valores. function res = media( valores ) soma = 0; for i = 1 : length(valores) soma = soma + valores(i); end res = soma / length(valores); end
Função Média
i valores(i) soma (antes)
soma (depois)
1 5 0 5
2 3 5 8
7
… …
n 6
20 Março 2017 ICE-c Aula 3: Vetores; ciclos FOR 38
€
1n
vii=1
n
∑
% res = media(valores) % Calcula a media dos elementos do vetor valores. function res = media( valores ) soma = 0; for i = 1 : length(valores) soma = soma + valores(i); end res = soma / length(valores); end
Função Média
i valores(i) soma (antes)
soma (depois)
1 5 0 5
2 3 5 8
3 7 8 15
… … …
n 6 999 1005
20 Março 2017 ICE-c Aula 3: Vetores; ciclos FOR 39
€
1n
vii=1
n
∑
Média – Exemplos de execução
20 Março 2017 ICE-c Aula 3: Vetores; ciclos FOR 40
>> V = [4 9 8, 2, 5] >> m = media(V) m = 5.6 >> X = [4] X = 4 >> m = media(X) m = 4 >> Z = [] >> m = media(Z) warning: division by zero m = NaN
l Alguns exemplos de execução da função media • O que acontece quando o vetor é vazio???
Problema dos Contaminantes (2)
l Em geral a média de um conjunto de valores não nos fornece toda a informação útil para descrever esse conjunto.
l Nomeadamente não nos dá ideia da variabilidade dos valores do conjunto • A média de 0 e 10 é a mesma de 5 e 5, mas a última é
equilibrada.
l Para medir a variação é vulgar utilizar-se o desvio padrão, e portanto pode reformular-se o problema anterior para:
l ...Faça um programa para calcular a média e o desvio padrão daqueles valores.
20 Março 2017 ICE-c Aula 3: Vetores; ciclos FOR 41
Problema dos Contaminantes (2)
l Este problema mais complexo é naturalmente decomposto em dois subproblemas:
• Cálculo da média – já feito
• Cálculo do desvio padrão – a implementar tendo em conta a sua definição
l Nota-se imediatamente que para este cálculo é conveniente
dispor da média do vetor V, µ.
20 Março 2017 ICE-c Aula 3: Vetores; ciclos FOR 42
σ =2(V(i)−µ)
i=1
n
∑n
Problema dos Contaminantes (2)
l Vamos pois resolver este problema com 3 funções com assinaturas function res = estatistica(V) function res = media (V)!
function res = desvioPadrao(V, med)!
sendo a primeira função implementada a partir das duas últimas.
l A função média já foi definida, pelo que podemos passar para a implementação do função desvioPadrao, que é muito semelhante
20 Março 2017 ICE-c Aula 3: Vetores; ciclos FOR 43
l Exemplo: Definição da função desvio padrão
function res = desvioPadrao(V, med)!% res = desviopadrao(V, med)!% Calcula o desvio padrao de um vetor!% dada a sua media, med.! num = 0;! n = length(V)! for i = 1 : n! num = num +(V(i)-med)^2;! end! res = sqrt(num / n);!end!
Função Desvio Padrão
20 Março 2017 ICE-c Aula 3: Vetores; ciclos FOR 44
σ =2(V(i)−µ)
i=1
n
∑n
Problema da Cerâmica (2) – FIM
l Uma vez implementadas as funções mais simples, a função estatística é implementada através da combinação das outras.
l De notar que o resultado desta função é um vetor, já que a função
retorna dois valores (a média e o desvio padrão).
20 Março 2017 ICE-c Aula 3: Vetores; ciclos FOR 45
function res = estatistica(V)!% [med,dvp] = estatistica(V, med)!% Calcula a media e o desvio padrao do vetor V! med = media(V);! dvp = desvioPadrao(V,med)! res = [med,dvp] !end!
Na aula de hoje
20 Março 2017 ICE-c Aula 3: Vetores; ciclos FOR 46
l Vetores.
l Ciclos FOR. • Percursos em vetores.
l Exemplos
Função Quadrado de um Vetor
l A função que calcula o quadrado de um vetor pode ser implementada percorrendo os seus elementos num ciclo FOR
l Nota: Para evitar a criação de n vetores U, o vetor deve ser inicializado com a função zeros (ou ones)
20 Março 2017 ICE-c Aula 3: Vetores; ciclos FOR 47
function U = quadrado(V)!% U = quadrado(V)!% U é o vetor como o quadrado dos elementos de V! n = length(V);!
!U = zeros(1,n);! for i = 1:length(V)! U(i) = V(i)^2;! end!end!
l De notar que as variáveis n e U são locais e desaparecem após a execução da função.
Média – Exemplos de execução
20 Março 2017 ICE-c Aula 3: Vetores; ciclos FOR 48
>> V = [4 9 8] >> quadrado(V) ans = 16 81 64 >> U error: 'U' undefined near line 1 column 1 >> Q = quadrado(V) Q = 16 81 64 >> V V = 4 9 8 >> V = quadrado(V) V = 16 81 64
function U = quadrado(V)! n = length(V);!
!U = zeros(1,n);! for i = 1:length(V)! U(i) = V(i)^2;! end!end!
l Os elementos da série de Fibonacci 0, 1, 1, 2, 3, 5, 8, ... são definidos como a soma dos 2 anteriores.
l Desta forma a construção de um vetor de Fibonacci com n elementos (n ≥ 2) pode ser construido a partir da função
Vetor Fibonacci
20 Março 2017 ICE-c Aula 3: Vetores; ciclos FOR 49
function F = fibonacciVetor(n)!% F = fibonacciVetor(n)!% O vetor F contem os primeiros n elementos da !% série de Fibonacci! F = zeros(1,n);! F(2) = 1;! for i = 3:n! F(i) = F(i-2) + F(i-1);! end!end!
Fibonacci – Exemplos de execução
20 Março 2017 ICE-c Aula 3: Vetores; ciclos FOR 50
>> Fn = fibonnaciVetor(5) F = 0 0 0 0 0 F = 0 1 0 0 0 F = 0 1 1 0 0 F = 0 1 1 2 0 F = 0 1 1 2 3 Fn = 0 1 1 2 3 >> Fn Fn = 0 1 1 2 3 >> F error: ’F' undefined near line 1 column 1 >>
F = zeros(1,n)! F(2) = 1! for i = 3:n! F(i) = F(i-2) + F(i-1)! end!
l De notar que uma função semelhante calcular o n-ésimo elemento de Fibonacci sem necessitar do vetor. • Mas neste caso, terão de ser usadas variáveis auxiliares que se vão
actualizando ao longo do ciclo FOR (como as usadas nas práticas)
Vetor Fibonacci
20 Março 2017 ICE-c Aula 3: Vetores; ciclos FOR 51
function fn = fibonacciElem(n)!% F = fibonacciElem(n)!% fn é o n-esimo elementos da série de Fibonacci! fAntAnt = 0! fAnt = 1! for i = 3:n! fn = fAnt+fAntAnt! fAntAnt = fAnt! fAnt = fn! end!end!
Fibonacci – Exemplos de execução
20 Março 2017 ICE-c Aula 3: Vetores; ciclos FOR 52
>> f5 = fibonnaciElem(5) fAntAnt = 0!fAnt = 1!fn = 1 fAntAnt = 1!fAnt = 1!fn = 2 fAntAnt = 1!fAnt = 2!fn = 3 fAntAnt = 2!fAnt = 3!f5 = 3!>> fn!error: ’fn' undefined near line 1 column 1 >> !!
fAntAnt = 0! fAnt = 1! for i = 3:n! fn = fAnt+fAntAnt! fAntAnt = Fant! fAnt = fn! end!
l Em Matlab, uma string é implementada através de um vetor de carateres, em que cada caracter é representado pelo seu código (ASCII ou UTF).
l Apesar de haver várias funções pré-definidas para strings que serão abordadas mais à frente, podemos usar a matéria de ciclos FOR e vetores para inverter uma string (escrevê-la “de trás para a frente”).
l Para esse efeito poderemos escrever como anteriormente uma função com assinatura
function inv = inverter(str)!
Inversão de uma String
20 Março 2017 ICE-c Aula 3: Vetores; ciclos FOR 53
l A sua implementação com um ciclo for é semelhante à anterior • Notar que a string invertida é inicializada com a função blanks,
semelhante às funções zeros e ones, mas que cria um vetor de caracteres “espaço”.
Inversão de uma String
20 Março 2017 ICE-c Aula 3: Vetores; ciclos FOR 54
function inv = inverte(str)!% inv = inverte(str)!% A string inv é a inversão da string str! n = length(str);! inv = blanks(n)! for i = 1:n! inv(i) = str(n-i+1) % indice complementar! end % 1<- n; 2<- n-1 ; ... ; n<- 1!end!
l Tal como anteriormente poderemos testar esta função (de uma forma não exaustiva)
Inversão de uma String
20 Março 2017 ICE-c Aula 3: Vetores; ciclos FOR 55
>> inverte(‘abcd’) inv = !inv = d!inv = dc inv = dcb!inv = dcba!ans = dcba >> inv error: ’inv' undefined near line 1 column 1 >> s = ‘abcd’ >> s = inverte(s) s = dcba >> !!
inv = blanks(n)! for i = 1:n! inv(i) = str(n-i+1)! end !
l De notar que a utilização de indexação apropriada num vetor, neste caso numa string, permite inverter uma string numa só instrução, eleiminando-se a necessidade de usar uma função.
Inversão de uma String
20 Março 2017 ICE-c Aula 3: Vetores; ciclos FOR 56
>> str = ‘abcd’ str = abcd >> n = length(str) n = 4 >> inv = str(n:-1:1)!inv = dcba >> !!
! ? ! ?
l Recomendado • Physical Modeling in MATLAB • Capítulos 3 e 4
l Opcional
• Manual do Octave • Capítulo 4.1 – Matrizes
• Vetores são matrizes (matéria das próximas aulas) • Capítulo 4.2 e 10.5
Para Estudar a Aula de Hoje
20 Março 2017 ICE-c Aula 3: Vetores; ciclos FOR 57