Você está na página 1de 60

Funções

Escopo de
variáveis
Chamada de
funções
Procedimentos
Algoritmos e estruturas de dados I Exercícios
Retornando mais
de uma variável
Exercicio -
laboratório
Exercício - xação
Funções - parte 2
Variáveis globais
Univ. Fed. de São João Del-Rei Vetores
Exercícios
Matrizes
14 de maio de 2015
Strings
Registros
Arquivo

1 / 54
Sumário
Funções
Escopo de variáveis Funções
Escopo de
Chamada de funções variáveis
Chamada de
funções
Procedimentos Procedimentos
Exercícios
Exercícios Retornando mais
de uma variável
Retornando mais de uma variável Exercicio -
laboratório
Exercicio - laboratório Exercício - xação
Funções - parte 2
Exercício - xação Variáveis globais
Vetores
Funções - parte 2
Exercícios
Variáveis globais Matrizes
Vetores Strings
Exercícios Registros

Matrizes Arquivo

Strings
Registros
Arquivo
2 / 54
Função - visão geral

Funções
Escopo de
variáveis
Visão geral de uma função em MATLAB: Chamada de
funções
Procedimentos
Exercícios
Retornando mais
de uma variável
Exercicio -
laboratório
1 function < variavel resultado > = ... Exercício - xação
Funções - parte 2
nome_funcao ( < entrada 1> , < entrada 2 > , ... ... Variáveis globais

< entrada N >) Vetores


Exercícios
2 % Comentarios nesta linhas sao mostrados ao ... Matrizes
usar o comando help Strings
3 < variavel resultado > = algum valor ; Registros

4 end Arquivo

3 / 54
Exemplo de função

Salve o código abaixo com o nome funcao_quinto_grau.m Funções


Escopo de
variáveis
Chamada de
funções
Procedimentos
1 function y = funcao_quinto_grau ( x ) Exercícios
Retornando mais
de uma variável
2 % Calcula o valor de f ( x ) = -x ^5 + 30 x ^3 +6 x ... Exercicio -
laboratório
+ 100 Exercício - xação
Funções - parte 2
3 y = -x ^5 + 30* x ^3 + 6* x + 100; Variáveis globais
Vetores
4 end Exercícios
Matrizes

Exemplo de execução: (Digite na linha de comando do MATLAB) Strings


Registros
Arquivo

1 >> y = funcao_quinto_grau (1)


2 y =
3 135 4 / 54
Função - Mais de um parâmetro de entrada

Funções
1 function t = alturamaxima ( v0 , theta0 ) Escopo de
variáveis
Chamada de
2 % Calcula o tempo necessario para um corpo com funções
Procedimentos
3 % vel. v0 e angulo theta0 atingir altura maxima Exercícios
Retornando mais
de uma variável
4 g = 9 .81 ; % gravidade Exercicio -
laboratório
5 th0 = deg2rad ( theta0 ) ; % converte para radianos Exercício - xação
Funções - parte 2
6 t = 0; Variáveis globais

7 dt = 0 .01 ; Vetores
Exercícios
8 while true Matrizes
9 y1 = v0 * sin ( th0 ) * t - g *t ^2/2; Strings

10 t = t + dt ; Registros

11 y2 = v0 * sin ( th0 ) * t - g *t ^2/2; Arquivo

12 if y2 < y1
13 break ;
14 end
15 end 5 / 54
Escopo de variáveis

Variáveis locais Funções


Escopo de
As variáveis locais são visíveis apenas dentro da função. variáveis
Chamada de
funções
O fprintf da linha 4 executa corretamente Procedimentos
Exercícios
O fprintf da linha 3 gera erro Retornando mais
de uma variável
Exercicio -
laboratório
1 function z = exemplo ( x ) Exercício - xação
Funções - parte 2
2 a = 2* x ; Variáveis globais
Vetores
3 z = a + 1; Exercícios
4 fprintf ( '% f \ n ' , a ) ; Matrizes

5 end Strings
Registros
Arquivo
1 >> x = 10;
2 >> z = exemplo ( x ) ;
3 >> fprintf ( '% f \ n ', a ) ;
6 / 54
Escopo de variáveis

Variáveis (parâmetros) de entrada Funções


Escopo de
variáveis
I As variáveis de entrada são cópias das variáveis originais e consideradas Chamada de
funções
Procedimentos
variáveis locais. Exercícios
Retornando mais
I O fprintf da linha 3 mostra 10 de uma variável
Exercicio -
laboratório
Exercício - xação
Funções - parte 2
Variáveis globais
1 function z = exemplo ( x ) Vetores
2 x = 2* x ; Exercícios

3 z = x; Matrizes

4 end Strings
Registros
Arquivo
1 >> x = 10;
2 >> z = exemplo ( x ) ;
3 >> fprintf ( '% f \ n ', x ) ;
7 / 54
Escopo de variáveis

Funções
Escopo de
variáveis
1 >> x = 10; Chamada de
funções
Procedimentos
2 >> z1 = funcao1 ( x ) ; Exercícios
Retornando mais
de uma variável
Exercicio -
Main funcao1 laboratório
1 % Arquivo funcao1.m : Exercício - xação

2 function z = funcao1 ( x ) linha x z1 x z Funções - parte 2


Variáveis globais

Main funcao1 Main


3 x = 2* x ; 1 Vetores
Exercícios
4 z = x; 2
Matrizes
5 end 2 Strings
3 Registros
4 Arquivo

8 / 54
1 % Arquivo funcao1.m :
2 function z = funcao1 ( x ) main local

funcao
x = 2* x ;

main
3
4 z = x; x z1 z2 z3 x z Funções
Escopo de
15 variáveis
5 end 16 Chamada de
funções
6 % Arquivo funcao2.m : 2 Procedimentos
Exercícios
7 function z = funcao2 ( x ) 3 Retornando mais
de uma variável
8 x = x ^2; 4 Exercicio -
laboratório
9 z = x; 16 Exercício - xação
Funções - parte 2
17 Variáveis globais
10 end 7 Vetores
11 % Arquivo funcao3.m : 8 Exercícios

12 function z = funcao3 ( x ) 9 Matrizes

17 Strings
13 z = x + 2;
18 Registros
14 end 12 Arquivo
15 >> x = 10; 13
16 >> z1 = funcao1 ( x ) ; 18
17 >> z2 = funcao2 ( z1 ) ;
18 >> z3 = funcao3 ( z2 ) ;
9 / 54
Chamada de funções

Funções
Escopo de
variáveis
1 % Arquivo funcao1.m : Chamada de
funções
2 function y = funcao1 ( x ) 1 >> x = 10; Procedimentos
Exercícios
3 y = 2* x ; 2 >> z = funcao3 ( x ) ; Retornando mais
de uma variável
Exercicio -
4 end laboratório
Exercício - xação
5 % Arquivo funcao2.m : linha x t z y Funções - parte 2
Variáveis globais
6 function z = funcao2 ( x ) 1 (main)
Vetores
7 z = funcao1 (x -2) ^2; 10 (funcao3) Exercícios
Matrizes
8 end 6 (funcao2)
Strings
9 % Arquivo funcao3.m : 2 (funcao1)
Registros
10 function t = funcao3 ( x ) 3 (funcao1)
Arquivo
11 t = funcao2 (x -1) +2; 7 (funcao2)

12 end 11 (funcao3)

10 / 54
Chamada de funções

Funções
Escopo de
1 % Arquivo funcao1.m : variáveis
Chamada de
2 function y = funcao1 ( x ) funções
1 >> x = 10; Procedimentos
Exercícios
3 y = 2* x ;
2 >> z = funcao3 ( x ) ; Retornando mais
de uma variável
4 end Exercicio -
laboratório
5 % Arquivo funcao2.m : linha x t z y
Exercício - xação
Funções - parte 2
6 function z = funcao2 ( x ) 1 (main)
Variáveis globais
Vetores
7 z = x ^2; 10 (funcao3) Exercícios
8 end 6 (funcao2)
Matrizes

9 % Arquivo funcao3.m : 2 (funcao1)


Strings

10 function t = funcao3 ( x ) 3 (funcao1)


Registros
Arquivo
11 t = funcao1 (x -2) - ... 7 (funcao2)
funcao2 (x -1) +2; 11 (funcao3)
12 end
11 / 54
Exercício de funções

Funções
Escopo de
variáveis
Chamada de
funções
Procedimentos
Soma intervalo Exercícios
Retornando mais
de uma variável
Exercicio -
I Crie uma função que some todos os inteiros presentes em um intervalo laboratório
Exercício - xação
Funções - parte 2
Variáveis globais

1 function total = soma_intervalo ( xmin , xmax ) Vetores


Exercícios
2 % Complete seu codigo aqui Matrizes
3 end Strings
Registros
Arquivo

12 / 54
Procedimento x funções

Funções
Procedimento Escopo de
variáveis
Chamada de
funções
I Alguns autores denem procedimentos como funções que não retornam Procedimentos
Exercícios
nenhum valor como resposta Retornando mais
de uma variável
I Dê exemplos de procedimentos nativos do MATLAB Exercicio -
laboratório
Exercício - xação
I Crie um procedimento que imprima a tabuada de um número N, onde N é Funções - parte 2
Variáveis globais
parâmetro de entrada Vetores
Exercícios
I Crie um procedimento que imprima as tabuadas de 1 até 10.
Matrizes
I Crie um procedimento que emita alertas sobre um processo.
Strings
I Ele recebe os valores de temperatura, pressão e velocidade Registros
I Se a temperatura for superior a 200º Celsius ou Arquivo
I A pressão for superior a 10MPa ou
I A velocidade for inferior a 1m/s, o procedimento deve emitir um alerta.

13 / 54
Exercício de funções

Exercício Funções
Escopo de
variáveis
I Complete a função abaixo para que ela retorne um número entre 0 e 100 Chamada de
funções
fornecido pelo usuário Procedimentos
Exercícios
Retornando mais
de uma variável
Exercicio -
1 % Complete o codigo abaixo laboratório
Exercício - xação
Funções - parte 2
2 function y = le_usuario () Variáveis globais
3 end Vetores
Exercícios
Matrizes
1 function m = media () Strings
2 soma = 0; Registros
3 for i = 1:10 Arquivo

4 x = le_usuario () ;
5 soma = soma + x ;
6 end
7 m = soma /10; 14 / 54
Exercício de funções

Funções
Escopo de
variáveis
Chamada de
funções
Procedimentos
Modique o código anterior para: Exercícios
Retornando mais
de uma variável
Exercicio -
I Ao invés do intervalo xo de 0 à 100, a função deve receber 2 argumentos laboratório
Exercício - xação
Funções - parte 2
que indicam os limites mínimo e máximo Variáveis globais
I Um terceiro parâmetro deve indicar a quantidade máxima de tentativas Vetores
Exercícios
permitida. Se o usuário ultrapassá-la, a função deve exibir uma mensagem Matrizes
de erro. Strings
Registros
Arquivo

15 / 54
Retornando múltiplas variáveis

Funções
Escopo de
variáveis
Chamada de
funções
Procedimentos
Função retornando múltiplos valores Exercícios
Retornando mais
de uma variável
Exercicio -
I Em MATLAB, é possível uma função retorna mais de uma variável como laboratório
Exercício - xação
resposta: Funções - parte 2
Variáveis globais
Vetores
Exercícios
Matrizes
1 function [ MIN , MAX ] = minmax ( n1 , n2 , n3 ) Strings
Registros
Arquivo

16 / 54
Retornando múltiplas variáveis

Funções
1 f u n c t i o n [MIN,MAX] = minmax(n1 , n2 , n3 ) Escopo de
variáveis
2 i f n1<n2 && n2<n3 Chamada de
funções
3 MIN = n1 ; Procedimentos
Exercícios
4 e l s e i f n2 < n3 Retornando mais
de uma variável
5 MIN = n2 ; Exercicio -
laboratório
6 else Exercício - xação
Funções - parte 2
7 MIN = n3 ; Variáveis globais

8 end Vetores

9 i f n1>n2 && n2>n3 Exercícios

MAX = n1 ;
Matrizes
10
11 e l s e i f n2 > n3 Strings

12 MAX = n2 ; Registros

13 else Arquivo

14 MAX = n3 ;
15 end
16 end
17 >> [ a , b ] = minmax (10 ,20 ,30) 17 / 54
Retornando múltiplas variáveis

Funções
Escopo de
Exercício variáveis
Chamada de
funções
Crie uma função que receba as coordenadas cartesianas x e y de um ponto no Procedimentos
Exercícios
plano e retorne as coordenadas polares ρ e θ, onde: Retornando mais
de uma variável
p Exercicio -
I ρ = x2 + y 2 laboratório
Exercício - xação
Funções - parte 2
I θ = atan2(y, x). Variáveis globais
Vetores
I A função atan2 recebe as coordenadas x e y e calcula o arco-tangente Exercícios

Assinatura da função: Matrizes


Strings
Registros
1 function [ rho , theta ] = cartesiano2polar (x , y ) Arquivo

18 / 54
Retornando múltiplas variáveis

Funções
Exercício Escopo de
variáveis
Chamada de
Crie uma função que leia um número positivo do usuário, usando no máximo n funções
Procedimentos
Exercícios
tentativas: Retornando mais
de uma variável
Exercicio -
laboratório
Exercício - xação
1 function [x , err ] = le_positivo ( n ) ; Funções - parte 2
Variáveis globais
Vetores
Onde: Exercícios
Matrizes
I n: Número máximo de tentativas
Strings
I x: Valor fornecido pelo usuário Registros
I err: Deve ser true se o usuário ultrapassou o limite de tentativas e false Arquivo

se o número estiver no intervalo desejado

19 / 54
Exercício de funções

Primo Funções
Escopo de
variáveis
I Crie uma função que determine se um número é primo ou não: Chamada de
funções
Procedimentos
Exercícios
Retornando mais
function res = primo ( n ) de uma variável
Exercicio -
laboratório
Exercício - xação
Funções - parte 2
I Crie uma função (procedimento) que imprima todos os primos de 1 até N, Variáveis globais
onde N é fornecido pelo usuário: Vetores
Exercícios
Matrizes

function imprime_primos () Strings


Registros
Arquivo
I Crie uma função que calcule o próximo número primo maior que N, onde N
é argumento de entrada:

function prox = proximo_primo (N ) 20 / 54


Exercício de funções

Funções
Escopo de
variáveis
Chamada de
funções
Crie a função Procedimentos
Exercícios
Retornando mais
de uma variável
Exercicio -
1 function y = funcao (t , v0 , theta0 ) laboratório
Exercício - xação
Funções - parte 2
Variáveis globais
que determina o valor da função abaixo: Vetores
Exercícios
gt2 Matrizes
f (t) = v0 sin(θ0 )t − Strings
2
Registros
Arquivo

21 / 54
Exercício de funções

Funções
Escopo de
Derivada variáveis
Chamada de
funções
gt2 Procedimentos
I Qual o valor de f 0 (t) para f (t) = v0 sin(θ0 )t − 2 Exercícios
Retornando mais
de uma variável
Exercicio -
laboratório
Exercício - xação
Funções - parte 2
Variáveis globais
Vetores
Exercícios
Matrizes
Strings
Registros
Arquivo

22 / 54
Exercício de funções

Funções
Escopo de
Derivada variáveis
Chamada de
funções
gt2 Procedimentos
I Qual o valor de f 0 (t) para f (t) = v0 sin(θ0 )t − 2 Exercícios
Retornando mais
I A derivada de uma função é denida como: de uma variável
Exercicio -
laboratório
Exercício - xação
f (t + h) − f (t) Funções - parte 2
f 0 (t) = lim Variáveis globais
h→0 h Vetores
Exercícios
Matrizes
Strings
Registros
Arquivo

22 / 54
Exercício de funções

Funções
Escopo de
Derivada variáveis
Chamada de
funções
gt2 Procedimentos
I Qual o valor de f 0 (t) para f (t) = v0 sin(θ0 )t − 2 Exercícios
Retornando mais
I A derivada de uma função é denida como: de uma variável
Exercicio -
laboratório
Exercício - xação
f (t + h) − f (t) Funções - parte 2
f 0 (t) = lim Variáveis globais
h→0 h Vetores
Exercícios
I Crie uma função que receba como parâmetro de entrada o valor de t e h e Matrizes
0
calcule uma aproximação para f (t) usando a equação acima Strings
Registros
Arquivo

22 / 54
Exercício de funções

Funções
Escopo de
Derivada variáveis
Chamada de
funções
gt2 Procedimentos
I Qual o valor de f 0 (t) para f (t) = v0 sin(θ0 )t − 2 Exercícios
Retornando mais
I A derivada de uma função é denida como: de uma variável
Exercicio -
laboratório
Exercício - xação
f (t + h) − f (t) Funções - parte 2
f 0 (t) = lim Variáveis globais
h→0 h Vetores
Exercícios
I Crie uma função que receba como parâmetro de entrada o valor de t e h e Matrizes
0
calcule uma aproximação para f (t) usando a equação acima Strings
Registros
I Compare o resultado obtido com o teórico
Arquivo

22 / 54
Exercício de funções

Funções
Escopo de
Derivada variáveis
Chamada de
funções
gt2 Procedimentos
I Qual o valor de f 0 (t) para f (t) = v0 sin(θ0 )t − 2 Exercícios
Retornando mais
I A derivada de uma função é denida como: de uma variável
Exercicio -
laboratório
Exercício - xação
f (t + h) − f (t) Funções - parte 2
f 0 (t) = lim Variáveis globais
h→0 h Vetores
Exercícios
I Crie uma função que receba como parâmetro de entrada o valor de t e h e Matrizes
0
calcule uma aproximação para f (t) usando a equação acima Strings
Registros
I Compare o resultado obtido com o teórico
Arquivo
I Plote os grácos de f (t) e f 0 (t)

22 / 54
Exercício de funções

Funções
Escopo de
variáveis
Chamada de
funções
Procedimentos
Derivada Exercícios
Retornando mais
de uma variável
Utilize a aproximação: Exercicio -
laboratório
Exercício - xação
Funções - parte 2
f (x + h) − f (x − h) Variáveis globais
f 0 (x) = lim Vetores
h→0 2h Exercícios
Matrizes
gt2
para a mesma função f (x) = v0 sin(θ0 )t − 2 Strings
Registros
Arquivo

23 / 54
Exercício de funções

Funções
Escopo de
variáveis
Plotando funções Chamada de
funções
Procedimentos
Exercícios
Considere a função abaixo: Retornando mais
de uma variável
Exercicio -
1 2 2 2 laboratório
f (x) = + sin(x) + sin(3x) + sin(5x) + . . . Exercício - xação
2 π 3π 5π Funções - parte 2
Variáveis globais
Vetores
que pode ser rescrita como: Exercícios
Matrizes

1 X 2 Strings
f (x) = + sin((2n + 1)x)
2 (2n + 1)π Registros
n=0
Arquivo

24 / 54
Exercício de funções

Funções
Escopo de
variáveis
Chamada de
funções
Procedimentos
Exercícios
Exercício Retornando mais
de uma variável
Exercicio -
Crie a função: laboratório
Exercício - xação
Funções - parte 2
Variáveis globais

1 function n = norma_vetor ( vx , vy , vz ) Vetores


Exercícios
Matrizes
que calcula a norma do vetor v. Strings
Registros
Arquivo

25 / 54
Exercício de funções

Funções
Exercício Escopo de
variáveis
Chamada de
Crie a função: funções
Procedimentos
Exercícios
Retornando mais
de uma variável
Exercicio -
1 function [ wx wy wz ] = ... laboratório
Exercício - xação
produto_vetorial ( vx , vy ,vz , ux , uy , uz ) Funções - parte 2
Variáveis globais
Vetores
que calcula o produto vetorial de dois vetores, conforme formula abaixo: Exercícios

 Matrizes

wx = vy uz − vz uy
 Strings
Registros
v × u = wy = vz ux − vx uz
 Arquivo
wz = vx uy − vy ux

26 / 54
Exercício de funções

Funções
Exercício Escopo de
variáveis
Chamada de
funções
Crie a função: Procedimentos
Exercícios
Retornando mais
de uma variável
Exercicio -
1 function area = area_triangulo ( x1 , y1 , x2 , ... laboratório
Exercício - xação
y2 , x3 , y3 ) Funções - parte 2
Variáveis globais
Vetores
que calcula a área do triângulo formado pelos pontos (x1 , y1 ), (x2 , y2 ) e (x3 , y3 ). Exercícios
Matrizes
Lembre-se que:
Strings
I A área do triângulo é metade da área do paralelograma formado por dois
Registros
vetores que saem do mesmo ponto. Arquivo
I A área do paralelograma é a norma do produto vetorial destes vetores.

27 / 54
Exercício de funções

Funções
Escopo de
variáveis
Chamada de
funções
Procedimentos
Exercícios
Exercício Retornando mais
de uma variável
Exercicio -
laboratório
I Crie uma função que receba três pontos: P1 , P2 e P3 . Exercício - xação
−−−→ Funções - parte 2
I Em seguida, determinar se P3 está a esquerda ou a direita de P1 P2 Variáveis globais
Vetores
I Observe que se o ponto estiver a direita, pela regra da mão direita o produto Exercícios

vetorial (P3 − P1 ) × (P2 −1 ) será positivo. Matrizes


Strings
Registros
Arquivo

28 / 54
Funções recursivas

Funções
Escopo de
variáveis
Chamada de
funções
Procedimentos
Exercícios
Retornando mais
de uma variável
Exercicio -
laboratório
Exercício - xação
Funções - parte 2
Variáveis globais
Vetores
Exercícios
Matrizes
Strings
Registros
Arquivo

29 / 54
Funções recursivas

Funções
Escopo de
variáveis
Chamada de
funções
Procedimentos
Exercícios
Retornando mais
de uma variável
Exercicio -
laboratório
Exercício - xação
Funções - parte 2
Variáveis globais
Vetores
Exercícios
Matrizes
Strings
Registros
Arquivo

30 / 54
Passagem por referência x passagem por valor

Funções
Escopo de
variáveis
Chamada de
funções
Procedimentos
Exercícios
Retornando mais
de uma variável
Exercicio -
laboratório
Exercício - xação
Funções - parte 2
Variáveis globais
Vetores
Exercícios
Matrizes
Strings
Registros
Arquivo

31 / 54
Variáveis globais

Funções
Escopo de
variáveis
Chamada de
funções
Procedimentos
Exercícios
Retornando mais
de uma variável
Exercicio -
laboratório
Exercício - xação
Funções - parte 2
Variáveis globais
Vetores
Exercícios
Matrizes
Strings
Registros
Arquivo

32 / 54
Vetores - Arranjos homogêneos

Funções
Motivação Escopo de
variáveis
Chamada de
funções
Procedimentos
I Crie uma função que peça para o usuário entrar com N valores e determine Exercícios
Retornando mais
sua média de uma variável
Exercicio -
laboratório
Exercício - xação
Funções - parte 2
Variáveis globais
Vetores
Exercícios
Matrizes
Strings
Registros
Arquivo

33 / 54
Vetores - Arranjos homogêneos

Funções
Motivação Escopo de
variáveis
Chamada de
funções
Procedimentos
I Crie uma função que peça para o usuário entrar com N valores e determine Exercícios
Retornando mais
sua média de uma variável
Exercicio -
laboratório
I Crie uma função que determine a moda dos valores anteriores. A moda Exercício - xação
Funções - parte 2
corresponde ao valor mais frequente Variáveis globais
Vetores
I Crie uma função que determine a mediana dos valores anteriores. A mediana
Exercícios
é o valor que se encontra no meio ao ordenarmos a sequência de pontos. Se Matrizes
o número de dados for par, a mediana é a média dos dois valores no centro. Strings

I Crie uma função que determine o desvio padrão dos valores anteriores. O Registros
Arquivo
q
P (xi −x̄)2
desvio padrão de um conjunto de dados é denido como σ= n

33 / 54
Vetores - Arranjos homogêneos

Funções
Escopo de
variáveis
Chamada de
funções
Motivação Procedimentos
Exercícios
Retornando mais
Os últimos problemas só podem ser resolvidos com o uso de vetores. Vetores de uma variável
Exercicio -
são estruturas de dados que: laboratório
Exercício - xação
Funções - parte 2
I Podem armazenar um conjunto de valores, Variáveis globais
I Cada valor pode ser acessado pelo índice (posição), Vetores
Exercícios
I Em MATLAB o índice vai de 1 até o tamanho do vetor Matrizes
I Em C o índice vai de 0 até o tamanho do vetor - 1 Strings
I Armazenam o mesmo tipo de dado (homogênea) Registros
Arquivo

34 / 54
Vetores

Funções
Armazenam conjunto de valores: Escopo de
variáveis
Chamada de
funções
Procedimentos
Exercícios
Retornando mais
de uma variável
Exercicio -
laboratório
Exercício - xação
Podem ser acessados pelo índice: Funções - parte 2
Variáveis globais
Vetores
Exercícios
Matrizes
Strings
Registros
Arquivo

35 / 54
Vetores

Funções
Escopo de
variáveis
Chamada de
funções
Procedimentos
Exercícios
Retornando mais
de uma variável
Exercicio -
laboratório
Exercício - xação
Funções - parte 2
Variáveis globais
Vetores
Exercícios
Em MATLAB: Matrizes
Strings
Registros
1 vetor = [10 20 21 25 30 35 77 60 80]; Arquivo
2 vetor (7) = 50;

36 / 54
Vetores

Vetores Funções
Escopo de
Vetor também é chamado de variável indexável unidimensional variáveis
Chamada de
funções
I Vetor é uma variável que armazena um conjunto de elementos Procedimentos
Exercícios
Retornando mais
I Cada elemento pode ser acessado individualmente pelo índice de uma variável
Exercicio -
laboratório
I Um único índice (unidimensional) para acessar os elementos (matrizes Exercício - xação
Funções - parte 2
possuem 2 ou mais) Variáveis globais
Vetores
Exercícios
Matrizes

1 vetor = [12 35 73 97 90]; Strings

2 vetor (3) = 11; % altera o 3 elemento do ... Registros

vetor de 73 para 11 Arquivo

3 soma = vetor (1) + vetor (2) ; % armazena 47 na ...


variavel soma

37 / 54
Vetores

Funções
Escopo de
variáveis
Chamada de
Versão ingênua funções
Procedimentos
Exercícios
Mostrar todos os elementos de um vetor Retornando mais
de uma variável
Exercicio -
laboratório
Exercício - xação
Funções - parte 2
Variáveis globais
1 function vetor_mostra_todos_v1 () Vetores
2 v = [10 20 8 7]; Exercícios

3 fprintf ( ' vetor = % d % d % d % d \ n ' , v (1) , ... Matrizes

v (2) , v (3) , v (4) ) ; Strings


Registros
4 end
Arquivo

38 / 54
Vetores

Funções
Versão melhorada Escopo de
variáveis
Chamada de
Mostrar todos os elementos de um vetor, usando laço for funções
Procedimentos
Exercícios
Retornando mais
de uma variável
Exercicio -
laboratório
1 function vetor_mostra_todos_v2 () Exercício - xação
Funções - parte 2
2 v = [10 20 8 7]; Variáveis globais
Vetores
3 fprintf ( ' vetor = ') ; Exercícios
4 for i = 1:4 Matrizes
5 fprintf ( '% d ', v ( i ) ) ; Strings

6 end Registros

7 fprintf ( '\ n ') ; Arquivo

8 end

39 / 54
Vetores

Funções
Versão MATLAB Escopo de
variáveis
Chamada de
Mostrar todos os elementos de um vetor, usando recurso do MATLAB funções
Procedimentos
Exercícios
Retornando mais
de uma variável
Exercicio -
laboratório
1 function vetor_mostra_todos_v3 () Exercício - xação
Funções - parte 2
2 v = [10 20 8 7]; Variáveis globais

3 fprintf ( ' vetor = ') ; Vetores


Exercícios
4 for vi = v Matrizes
5 fprintf ( '% d ', vi ) ; Strings

6 end Registros

7 fprintf ( '\ n ') ; Arquivo

8 end

40 / 54
Vetores

Funções
Escopo de
Comando size variáveis
Chamada de
funções
Descobrindo o tamanho do vetor Procedimentos
Exercícios
Retornando mais
de uma variável
Exercicio -
laboratório
Exercício - xação
1 v = [10 22 34 41 56 69 79]; Funções - parte 2
Variáveis globais
2 a = size (v ,1) ; Vetores
3 b = size (v ,2) ; Exercícios
Matrizes
Strings
I A variável a armazena a quantidade de dimensões do vetor.
Registros
Como o vetor é unidimensional, o valor será sempre 1 (ver matrizes) Arquivo
I A variável b armazena o tamanho do vetor.

41 / 54
Vetores
Encontrar o menor elemento de um vetor
Funções
Escopo de
variáveis
Chamada de
1 function menor = vetor_menor_elemento () funções
Procedimentos
2 v = [10 20 8 7 9 5]; Exercícios
Retornando mais
de uma variável
3 menor = v (1) ; Exercicio -
laboratório
4 for i = 2: size (v ,2) Exercício - xação
Funções - parte 2
5 if v ( i ) < menor Variáveis globais
Vetores
6 menor = v ( i ); Exercícios
7 fprintf ( ' menor (1) % d \ n ', menor ) ; Matrizes

8 % Qtas vezes o fprintf eh executado ? ... Strings

1x , 2 x ? 3 x ? 4 x ? Registros

9 end Arquivo

10 end
11 end

42 / 54
Vetores

I Crie uma função que crie um vetor contendo as 5 primeiras potências de 2: Funções
Escopo de
[1 2 4 8 16] variáveis
Chamada de
funções
Procedimentos
Exercícios
Retornando mais
de uma variável
Exercicio -
laboratório
Exercício - xação
Funções - parte 2
Variáveis globais
Vetores
Exercícios
Matrizes
Strings
Registros
Arquivo

43 / 54
Vetores

I Crie uma função que crie um vetor contendo as 5 primeiras potências de 2: Funções
Escopo de
[1 2 4 8 16] variáveis
Chamada de
funções
Procedimentos
Exercícios
Retornando mais
de uma variável
Exercicio -
1 function v = ... laboratório
Exercício - xação
potencia2_ingenuo () Funções - parte 2
Variáveis globais
2 v (1) = 1; Vetores
Exercícios
3 v (2) = 2; Matrizes
4 v (3) = 4; Strings
5 v (4) = 8; Registros
6 v (5) = 16; Arquivo
7 end

43 / 54
Vetores

Funções
I Crie uma função que crie um vetor contendo as 5 primeiras potências de 2: Escopo de
variáveis
[1 2 4 8 16] Chamada de
funções
Procedimentos
Exercícios
Retornando mais
1 function v = potencia2_melhorado1 () de uma variável
Exercicio -
laboratório
2 v = [1 2 4 8 16]; Exercício - xação
Funções - parte 2
3 end Variáveis globais
Vetores
4
Exercícios
5 function v = potencia2_melhorado2 () Matrizes
6 for i = 1:5 Strings

7 v ( i ) = 2^( i -1) ; Registros

8 end Arquivo

9 end

44 / 54
Vetores - acesso múltiplo
É possível acessar simultaneamente mais de um elemento do vetor.
Funções
Escopo de
variáveis
Chamada de
v = [10 22 33 42 51 69 78]; funções
Procedimentos
Exercícios
Retornando mais
I Atribuindo 0 aos 3 primeiros elementos do vetor: de uma variável
Exercicio -
laboratório
Exercício - xação
Funções - parte 2
v (1:3) = 0; Variáveis globais
Vetores
Exercícios
I Atribuindo 100 do 5º ao último elemento do vetor:
Matrizes
Strings

v (5 : e n d ) = 100; Registros
Arquivo
I Salvando o subvetor de v(2) até v(4) em w:

w = v (2:4) ;
45 / 54
Vetores - acesso múltiplo
É possível acessar múltiplos elementos dispersos:
Funções
Escopo de
variáveis
Chamada de
v = [10 22 33 42 51 69 78]; funções
Procedimentos
Exercícios
Retornando mais
I Acessando o 1º, 5º e 7º elementos: de uma variável
Exercicio -
laboratório
Exercício - xação
Funções - parte 2
w = v ([1 5 7]) Variáveis globais
Vetores
Exercícios
I Acessando todos os elementos de índice ímpar:
Matrizes
Strings

w = v (1:2 : e n d ) ; Registros
Arquivo
I Invertendo um vetor:

w = v( e n d : -1:1) ;
46 / 54
Vetores - concatenando
A concatenação de vetores é feita de forma simples
Funções
Escopo de
variáveis
Chamada de
v = [10 22 33 42 51 69 78]; funções
Procedimentos
u = [80 97]; Exercícios
Retornando mais
de uma variável
Exercicio -
laboratório
I Concatenando os vetores v e u: Exercício - xação
Funções - parte 2
Variáveis globais
Vetores
w = [v u ]; Exercícios
Matrizes
Strings
I Existem duas formas de adicionar um novo elemento no nal do vetor:
Registros
Arquivo

v = [v 1];
v ( end +1) = 2;

47 / 54
Vetores
I Crie a função function vetor = gera_vetor_aleatorio(N) . Funções
Ela cria um vetor com N números inteiros aleatórios, de 0 à 100. Utilize a Escopo de
variáveis
função rand() . Chamada de
funções
Procedimentos
Chame a função e crie um vetor com 10 elementos. Exercícios
Retornando mais
I Crie a função function indice = busca(vetor, x) . de uma variável
Exercicio -
laboratório
Busca deve retornar a posição onde o valor de x está no vetor, ou -1 se ele Exercício - xação
Funções - parte 2
não for encontrado. Variáveis globais
Use a função size() para determinar o tamanho do vetor. Vetores
Exercícios
I Crie a função function [maior,indice]=busca_maior(vetor) Matrizes
Busca_maior deve encontrar o maior elemento do vetor e sua posição. Strings

I Crie a função function r = crescente(vetor) Registros


Arquivo
Crescente deve retornar true se o vetor for monotonicamente crescente e
false caso contrário.
Altere manualmente os valores do vetor para que ele seja monotonicamente
crescente.
48 / 54
Vetores

Funções
Escopo de
variáveis
Chamada de
I Crie a função function s = soma(vetor) que soma todos os funções
Procedimentos
elementos de um vetor. Exercícios
Retornando mais
de uma variável
I Crie a função function m = media(vetor) que calcula a média dos Exercicio -
laboratório
elementos no vetor. Exercício - xação
Funções - parte 2
Variáveis globais
I Crie a função function d = desvio_padrao(vetor) que calcula o
Vetores
desvio padrão dos elementos no vetor, usando a fórmula Exercícios
Matrizes
r
X (xi − x̄)2 Strings
σ= Registros
n
Arquivo

49 / 54
Vetores

Funções
Escopo de
variáveis
Chamada de
funções
I Crie a função function v = inverte(vetor) . Procedimentos
Exercícios
Ela deve inverter todos os elementos do vetor de entrada. Retornando mais
de uma variável
Exercicio -
I Crie a função function sv = subvetor(vetor, inicio, fim) . laboratório
Exercício - xação
Ela deve criar um subvetor contendo os elementos no intervalo vetor(inicio) Funções - parte 2
Variáveis globais
até vetor(m). Teste se os limites do vetor são respeitados. Vetores
Exercícios
I Crie a função function v = inserevetor(vetor, novo) . Matrizes
Ela deve receber um vetor já ordenado como entrada e inserir um novo valor Strings
no vetor, mantendo a ordenação. Registros
Arquivo

50 / 54
Matrizes - Arranjos multidimensionais

Funções
Escopo de
variáveis
I Vetor é uma variável armazenando um conjunto de dados (homogêneos) Chamada de
funções
Procedimentos
indexáveis em 1 dimensão Exercícios
Retornando mais
I Matriz é uma variável armazenando um conjunto de dados (homogêneos) de uma variável
Exercicio -
laboratório
indexáveis em N dimensões. Exercício - xação
Funções - parte 2
Exemplo de matriz bidimensional: Variáveis globais
Vetores
coluna
Exercícios
1 2 3 Matrizes
1 10 21 36 Strings
linha

2 14 25 32 Registros

3 11 29 38 Arquivo

51 / 54
Strings - vetor de caracteres

Funções
Escopo de
variáveis
Chamada de
funções
Procedimentos
Exercícios
Retornando mais
de uma variável
Exercicio -
laboratório
Exercício - xação
Funções - parte 2
Variáveis globais
Vetores
Exercícios
Matrizes
Strings
Registros
Arquivo

52 / 54
Registros - arranjos heterogêneos

Funções
Escopo de
variáveis
Chamada de
funções
Procedimentos
Exercícios
Retornando mais
de uma variável
Exercicio -
laboratório
Exercício - xação
Funções - parte 2
Variáveis globais
Vetores
Exercícios
Matrizes
Strings
Registros
Arquivo

53 / 54
Manipulação arquivo

Funções
Escopo de
variáveis
Chamada de
funções
Procedimentos
Exercícios
Retornando mais
de uma variável
Exercicio -
laboratório
Exercício - xação
Funções - parte 2
Variáveis globais
Vetores
Exercícios
Matrizes
Strings
Registros
Arquivo

54 / 54

Você também pode gostar