Departamento de Engenharia Elétrica
Toda linguagem de programação é constituı́da essencialmente por COMANDOS e ESTRUTURAS DE CONTROLE que o computador é capaz de interpretar e executar.
Os COMANDOS são ordens bastante primitivas como: ler um valor, imprimir um valor, somar dois valores, multiplicar dois valores, etc.
As ESTRUTURAS DE CONTROLE são uma espécie de comandos de nı́vel mais elevado, porque elas são utilizadas para gerenciar a execução dos comandos mais primitivos.
A sequência de comandos escritos para serem executados é chamada de ALGORITMO. Um algoritmo é um procedimento para solucionar determinado problema fazendo uso exclusivamente dos comandos e estruturas de controle que determinada linguagem de programação oferece.
Para resolver o mesmo problema podem se escrever inúmeros algoritmos diferentes. Assim, é possível resolver um problema específio como um algoritmo bem pequeno, ou com um algoritmo longo e, talvez, pouco funcional.
Ao executar um Comando de Leitura aparece um pequeno cursor na tela, indicando que o computador está esperando que seja digitado um caracter no teclado. Após digitar o caracter, pressionando em seguida a tecla enter, o computador faz sua leitura e o armazena em uma posição na sua memória.
Comando input. Exemplo:
>> A = input(’Digite um valor para A’);
Este comando é utilizado quando se deseja que o computador exiba na tela os valores que tem armazenado em diversas posições na memória.
Comando disp. Exemplos:
>> disp(A); % Exibe o valor da variável A
>> disp('Exibe este texto'); % Exibe uma mensagem
O Comando de Atribuição é também chamado de Comando Aritmético porque é nele que são definidas as expressões aritméticas necessárias para a resolução de um problema qualquer. Ao executar um comando de atribuição, o computador armazena, na variável cujo nome é mencionado à esquerda do sinal de igual (=) o valor da expressão aritmética especificada à direita deste sinal.
Exemplos:
>> a = 5 % Atribui o valor 5 a variável a
>> b = a + 10 % Atribui à variável b o valor de a mais 10
>> b = b + 1 % Atribui à variável b o valor de b mais 1
>> c = ’Hello world’ % Atribui à variável c a mensagem Hello world
Esta estrutura força o computador a tomar uma decisão quanto à executar ou não e uma determinada sequência de comandos. Existem duas estruturas distintas: a estrutura if de um único ramo, ou uma única alternativa; e a estrutura if (else) de dois ramos, ou duas alternativas.
Estrutura if de um único ramo:
if <COMPARAÇÃO>
% Comandos e outras estruturas;
end
Pode-se entender a estrutura if da seguinte forma: Se <COMPARAÇÃO> for verdadeira, então Comandos e outras estruturas são executados; caso contrário, ou seja, se <COMPARAÇÃO> for falso, então o computador dá um "salto" para logo após o end.
Estrutura if de dois ramo:
if <COMPARAÇÃO>
% Comandos e outras estruturas 1;
else
% Comandos e outras estruturas 2;
end
Nessa estrutura, se a <COMPARAÇÃO> for verdadeira, então Comandos e outras estruturas 1 são executados e Comandos e outras estruturas 2 não são executados; caso <COMPARAÇÃO> for falso, então Comandos e outras estruturas 2 são executados e Comandos e outras estruturas 1 não são executados.
Exemplo:
A = input(’Digite um valor para A’); % Armazena um valor em A
B = input(’Digite um valor para B’); % Armazena um valor em B
if A < B % Compara A e B
disp(’A variável A é menor que a variável B’); % Executa disp (Comando 1)
else
disp(’A variável A é maior ou igual que a variável B’); % Executa disp (Comando 2)
end
Estrutura for: Esta estrutura serve para repetir uma determinada quantidade de vezes a execução de um ou mais comandos. O formato geral da estrutura de repetição for é dado por:
for i=j:k:M
% Comandos e outras estruturas
end
A variável i começa valendo j, e, adicionando-se um valor k, ela cresce (ou decresce) até M. Em cada acréscimo da variável i, Comandos e outras estruturas é executado. Caso k = 1 ao final teremos M - j + 1 repetições de Comandos e outras estruturas:
Exemplo: No programa a seguir, a palavra Mundo é repetida 3 vezes:
for i=3:1:5
disp(’Mundo’);
end
O while é uma estrutura de repetição que funciona similar à estrutura for. while e for são estruturas de repetição que diferem entre si na forma como é definida execução dos ciclos. Ambas foram projetadas para fazer o computador repetir uma determinada quantidade de vezes a execução de um bloco de comandos. O formato geral da estrutura de repetição while é dado por:
while <COMPARAÇÃO>
% Comandos e outras estruturas
end
Enquanto a <COMPARAÇÃO> for verdadeira Comandos e outras estruturas é executado. O fim da repetição acontece quando <COMPARAÇÃO> se torna falsa.
Exemplo: No programa a seguir, a palavra Mundo é repetida 5 vezes:
A=5; % Armazena o valor 5 em A
while A < 10
disp(’mundo’);
A=A+1;
end
Operadores relacionais:
|
Menor que |
|
Menor ou igual que |
|
Maior que |
|
Maior ou igual que |
|
Igual a |
|
Diferente de |
Conectivos lógicos:
|
E |
|
Ou |
|
Não |
|
Ou excludente |
Funções pré-definidas:
|
Retorna ao cosseno de $x$ |
|
Retorna ao seno de $x$ |
|
Potência. Exemplo: $5^2$:
|
|
Retorna a $e^x$ |
|
Retorna ao $ln(x)$ |
|
Retorna a $\sqrt x $ |
Funções pré-definidas (continuação):
|
Valor absoluto de $x$ ou $|x|$ |
|
Verdadeiro para valores reais de $x$ |
|
Arredondamento na direção do zero |
|
Arredondamento na direção de $-\infty$ |
|
Arredondamento na direção de $+\infty$ |
|
Arredondamento para o inteiro mais próximo |
Funções pré-definidas (continuação):
|
Determinante da matriz A |
|
Inversa da matriz A |
|
Retorna a dimensão da matriz A |
|
Produto vetorial $v \times w$ |
|
Produto interno <$v$,$w$> |
A janela de comandos do MATLAB não é suficiente para escrever programas extensos. Por isso, é necessário criar um script (programa). Um script nada mais é do que uma lista de comandos e estruturas que são executados sequencialmente. Para criar um script, basta clicar em Arquivo >> Novo.
Exemplo: Criar um script para somar o primeiros 100 números.
soma=0;
for i=1:1:100
soma = soma + i;
end
disp(soma);
Exemplo: Script para encontrar e imprimir o menor valor de 3 números.
a = input(’digite o primeiro número’);
b = input(’digite o segundo número’);
c = input(’digite o terceiro número’);
if a < b
if a < c
disp(a);
disp(’ é o menor valor’);
else
disp(c);
disp(’ é o menor valor’);
end
else
if b < c
disp(b);
disp(’ é o menor valor’);
else
disp(c);
disp(’ é o menor valor’);
end
end
Exemplo: Script para ler um número inteiro positivo $N$ e calcular $S$, onde:
\[ \scriptsize S = \frac{1}{1} + \frac{3}{2} + \frac{5}{3} + \frac{7}{4} + \cdots + \frac{I}{N}\]
N = input(’digite o número inteiro positivo N’);
S = 0;
I = 1;
for j=1:1:N
S = S + (I/j);
I = I + 2;
end
disp(’O valor de S é: ’);
disp(S);
Um vetor pode ser considerado como uma variável múltipla, ou seja, uma variável que possui outras variáveis. Assim o vetor $V = \left[ {\begin{array}{*{20}{c}} 1 & 0 & 0 & 5 & 6 \end{array}} \right]$, por exemplo, é considerado um vetor de 5 posições. Cada elemento do vetor $V$ pode ser obtido por referência à posição. Assim $V(1) \ = \ 1$, $V(2) \ = \ 0$, $V(3) \ = \ 0$, $V(4) \ = \ 5$ e $V(5) \ = \ 6$.
O mesmo vale para matrizes. Se por exemplo,
\[ \scriptsize M = \left[ {\begin{array}{*{20}{c}} 1 & 3 & 0\\ 3 & 3 & 3\\ 2 & 1 & 8 \end{array}} \right]\]
Podemos fazer referência aos elementos de $M$ da seguinte forma: $V(i,j)$ onde $i$ é a linha e $j$ a coluna.
Exemplos:
>> V = [1 1 0]
V =
1 1 0
>> 5*V
ans =
5 5 0
>> K = [2 3 5]
K =
2 3 5
>> V + K
ans =
3 4 5
>> M = [1 3 0; 3 3 3; 2 1 8]
M =
1 3 3
3 3 3
2 1 8
>> M(1,3)
ans = 0
>> M(2,3)
ans = 3
>> M(2,2)
ans = 3
>> c = 7*M(2,2)
c = 21
>> 2*M
ans =
2 6 0
6 6 6
4 2 16
Uma função em MATALB é bem parecida com uma função matemática, ou seja, dado um valor $x$ a função se associa a um valor $y$. O valor $x$ é chamado de entrada e $y$ de saı́da.
Assim a função $f\left( x \right) = x^2$ pode ser construı́da da seguinte forma:
function [f_val] = f (x)
f_val = x^2;
end
Quando retornamos para a linha de comando (<<) basta aplicar a função $f\left( x \right)$ em um número qualquer que teremos o quadrado desse número. Por exemplo:
>> f(2)
ans = 4
>> f(3)
ans = 9
Nota: Cada função deve ser salva com o mesmo nome do cabeçalho.
O processo para criar um gráfico de uma função $f\left( x \right)$ é relativamente simples. Cria-se uma tabela de pontos com valores $\left( x,y \right)$ e marca-se estes pontos no plano cartesiano. Por exemplo, o passo a passo a construção do gráfico da função $f\left( x \right) = x^2$, no intervalo $[−3 \ \ 3]$, é dado da seguinte forma:
Passo 1: Cria-se a função $f\left( x \right) = x^2$.
Passo 2: Cria-se o vetor $x$ com espaçamento de $1/100 = 0.01$ no intervalo $[−3 \ \ 3]$.
x = −3:0.01:3;
Passo 3: Como não é conhecido o tamanho do vetor $x$, então é usada a função pré-definida size() para descobrir o tamanho do vetor $x$ e, assim, calcular o vetor $y = f\left( x \right)$.
[L,C] = size(x);
for i=1:C
y = f(x(i));
end
Passo a passo a construção do gráfico da função $f\left( x \right) = x^2$, no intervalo $[−3 \ 3]$ (continuação):
Passo 4: Para traçar o gráfico, basta usar a função pré-definida plot(). Essa função marca, no plano cartesioano, os pontos $\left( {{x_i},{y_i}} \right)$ dos vetores $x$ e $y$.
plot(x,y);
Modo rápido: O modo com que criamos o gráfico anterior, permite mais controle sobre o mesmo. Mas existe uma outra forma de construir mais rapidamente o gráfico de $f\left( x \right)$. Veja:
>> x = −3:0.01:3;
>> y = x.^2;
>> plot(x, y);
O processo para construir gráficos tridimensionais é parecido com o de construção de gráficos bidimensionais. Por exemplo, na construção do gráfico de $f\left( x, y \right) = x_2 + y_2$ nos intervalos definido pelo espaço $D = [−1 \ \ 1] \times [−2 \ \ 3]$.
>> [X,Y] = meshgrid(−1:0.1:1,−2:0.1:3);
>> Z = X.^2 + Y.^2; % Z é uma matriz, por isso, usamos X. e Y. no cálculo.
Para traçar o gráfico pode ser usada a função pré-definida surf(Z).
>> surf(Z);
As curvas de nı́vel podem ser construı́das com a função pré-definida contour(Z).
>> contour(Z);
Departamento de Engenharia Elétrica