Escolar Documentos
Profissional Documentos
Cultura Documentos
INSTITUTO DE TECNOLOGIA
Este material foi produzido com base no livro, MATLAB com Aplicações em
Engenharia, de Amos Gilat, e no livro de programação computacional com MATLAB
(Computer Programming with MATLAB), desenvolvido na Vanderbilt University para
alunos do primeiro ano de engenharia, que se encontra disponível para compra em
http://cs103.net/buy. Aliado a este livro está o curso de Introdução à programação com
MATLAB, disponível na plataforma Coursera: https://www.coursera.org/#. Alguns
exercícios de algoritmos utilizados neste material foram retirados deste curso. Se você
deseja um curso interativo e relativamente aprofundado desta linguagem,
recomendamos a plataforma Coursera.
Caso haja alguma dúvida, crítica ou sugestão, contate-nos através dos e-mails:
2
Sumário
1. INICIANDO O MATLAB .......................................................................................................... 4
8 SENTENÇAS CONDICIONAIS................................................................................................ 44
3
1. INICIANDO O MATLAB
Ao iniciar o MATLAB em seu computador, irá aparecer o seguinte layout:
A janela marcada em vermelho é a “Current Folder”. Esta janela mostra o diretório atual
do MATLAB, ou seja, se você quiser editar algum script ou função terá que estar gravado
na pasta atual na Current Folder. Caso o usuário deseje alterar a pasta atual, ele deve
clicar no ícone “browse for folder”, localizado bem acima do nome da janela. É
importante ressaltar que o MATLAB só irá reconhecer os arquivos que estiverem
atualmente na Current Folder, ou seja, se você quiser usar uma função (veremos mais a
frente), e esta não estiver na Current Folder, o programa acusará erro.
4
assim que o anterior for finalizado, ou então se o usuário interromper o comando em
execução. Para interromper um comando em execução, basta teclarmos CTRL + C. Isto
é muito comum em laços while em que a condição está incorreta, matrizes com índices
muito altos, como veremos mais a frente.
Todas estas janelas podem ser alteradas à preferência do usuário, podendo ser variado
o tamanho, a posição, e até mesmo fecha-las.
5
2. CALCULANDO NA COMMAND WINDOW
Símbolo Operação
+ Soma
- Subtração
* Multiplicação
/ Divisão
^ Expoente
>> a = 2*2
>> a =
Neste momento, no workspace, foi gravado o valor 4, para a variável a. Para acessar a
variável novamente, basta digitar a e teclar enter, e o valor será mostrado.
>> sqrt(9)
ans =
Neste momento, na ausência de uma variável, para o comando não ser perdido, o
MATLAB atribui automaticamente o comando solicitado a uma variável de resposta
(answer) ans. Sendo assim, no workspace, ficou declarado o valor 3 para a variável ans.
6
Caso o usuário volte a executar um comando sem variável, o valor anterior será
substituído pelo novo resultado solicitado.
Caso o usuário tente acessar uma variável que não foi previamente declarada, o MATLAB
mostrará uma mensagem de erro:
Sem ponto-e-vírgulas
>> a = 2+4+6
a =
12
Com ponto-e-vírgulas
>> a = 2+4+6;
>>
>> a = 1; CORRETO
7
O MATLAB não lê o símbolo = como “igual a” mas sim como atribuição, ou seja,
o que temos é: “Atribua o valor à direita do igual à variável a esquerda.
A sintaxe do MATLAB permite que uma variável seja apenas uma letra, ou uma
palavra1, ao contrário de expressões matemáticas, em que constam apenas uma única
letra. Por conta disso, é comum o uso de letras consecutivas, indicando multiplicação.
Entretanto, em programação se faz necessário o uso explícito do indicador de
multiplicação (no nosso caso o símbolo *), entre cada um dos produtos.
(1): Para a versão R2015a do MATLAB, as variáveis podem conter até 63 caracteres, caso o usuário exceda as 63, o
programa ignorará o excedente.
8
Para calcular o que está sendo pedido, devemos antes conhecer os passos que devemos
seguir para sair dos dados de início do problema até a resposta final. Esta é a base de
toda a programação, executar tarefas ou comandos em uma ordem tal, que saiamos da
origem ao fim de um determinado problema. No nosso caso, partiremos de uma figura
irregular, em que desejamos determinar a ordenada do centroide.
∑ 𝐴𝑖 ∙ 𝑋𝑖
𝑋𝐺 =
∑ 𝐴𝑖
Onde XG é o a ordenada do centroide da figura irregular
9
Calcularemos as áreas e ordenadas de cada subfigura:
Sabendo que todas as áreas são iguais, atribuiremos o valor de A1 para as variáveis A2
e A3. Logo:
10
Concluídas as áreas, partiremos para as ordenadas do centroide dos triângulos. Para
isso, temos as seguintes formulações:
ℎ 40𝑐𝑚
𝑋𝐴1 = = = 13,33𝑐𝑚
3 3
11
𝑏 80𝑐𝑚
𝑋𝐴2 = = = 40𝑐𝑚
2 2
ℎ 40𝑐𝑚
𝑋𝐴3 = (80𝑐𝑚 − ) = (80𝑐𝑚 − ) = 66,66𝑐𝑚
3 3
Aplicando no MATLAB, faremos as atribuições acima nas varáveis XA1, XA2 e XA3.
∑ 𝐴𝑖 ∙ 𝑋𝑖
𝑋𝐺 =
∑ 𝐴𝑖
O procedimento de cálculo se dá através da soma dos produtos entre as subáreas e as
respectivas ordenadas: 𝑋𝐴1 ∙ 𝐴1 + 𝑋𝐴2 ∙ 𝐴2 + 𝑋𝐴3 ∙ 𝐴3 e sua posterior divisão pela soma
das áreas A1, A2 e A3
12
Logo, teremos:
No MATLAB, podemos fazer este último passo de duas maneiras: Podemos criar duas
outras variáveis, sendo elas a soma dos produtos área x ordenada e a soma das áreas,
ou somente atribuir à variável XG a razão da soma dos produtos sobre a soma das áreas,
como descrito acima. Faremos da primeira maneira. É recomendável que você tente
fazer da segunda maneira como exercício. Porém, atenção quanto à sintaxe do
MATLAB, não esquecendo os parênteses para respeitar as precedências de operações
(potência>multiplicação e divisão> soma e subtração).
SITUAÇÃO 1:
Como esperado, obtivemos como resultado da ordenada o valor de 40cm, uma vez que
é uma figura simétrica em relação à base.
13
3. OBTENDO AJUDA NO MATLAB
Existem várias formas de buscar informação sobre o MATLAB. Você pode ir ao google e
lá efetuar sua pesquisa. Certamente haverá alguém que já procurou o mesmo comando
que você. Entretanto, você pode já conhecer um determinado comando, mas não saber
como ele funciona. E para isso o próprio MATLAB lhe ajuda, sem precisar de conexão
com a internet. Ele dispõe de um “helper” muito eficiente, porém está em inglês, assim
como todo o MATLAB. Mostraremos a seguir como obter ajuda no próprio programa.
Digamos que você queira tirar a raiz quadrada de um número, ou vetor. Uma das
funções mais comuns é a sqrt em inglês, “square root”. Consideraremos que você
conhece este comando, mas não sabe como ele funciona, a que limites de operadores
está restrito. Na própria Command Window você irá digitar a palavra “help” dar um
espaço e digitar o comando a ser pesquisado, da seguinte maneira:
Após apertar ENTER, o programa mostrará logo em baixo a descrição do comando, para
que é indicado e a sua sintaxe. Mostrará também uma página de referência com
exemplos usando a função pesquisada. Mostrará, também, comados similares que você
possa vir a usar. Aparecerá o seguinte:
14
Outra forma de pesquisa é seguir direto para a página de referência, onde se encontram
os exemplos e as funções similares. Para isso você terá que digitar a palavra “doc” dar
um espaço e digitar o comando a ser pesquisado.
Assim que digitar ENTER, será aberta a janela de referência com a descrição completa
do comando, da seguinte maneira:
15
Agora, partiremos do pressuposto que você não conhece o comando. Analogamente ao
“help”, existe o “lookfor”, onde o MATLAB irá procurar os comandos que contenham a
palavra chave que você esteja procurando. Mas ATENÇÃO: O MATLAB procura apenas
uma PALAVRA. Não use frases, ou palavras compostas.
No nosso caso, a palavra chave será “root” e não “square root”. Sendo assim, no
MATLAB:
16
No google aparecerá:
Estas são as formas mais práticas de obter ajuda com os próprios recursos do MATLAB.
A partir disso você poderá ter acesso a todos os recursos disponíveis desta ferramenta.
17
4. O EDITOR E OS ARQUIVOS.m
Agora que você já tem uma noção de como funciona o MATLAB e como trabalhar com
ele, você já está apto a escrever programas e funções simples. Para tal, utilizaremos o
recurso do MATLAB chamado “editor”. É no editor que serão escritos os programas e as
funções, que poderão ser executadas ou atribuídas na command window. Neste tópico
a metodologia se dará através de um exemplo prático. Construiremos um programa
simples onde o passo a passo será detalhado. Ao final, deixaremos um exemplo de
aplicação onde você terá que escrever o programa que faça o que for solicitado, e gere
os resultados esperados.
Esse é o layout do editor. Aqui você é livre para escrever qualquer função ou programa.
O MATLAB trabalha basicamente com funções. Ou seja, o seu programa vai ser
composto de uma ou mais funções, feitas por você.
Para iniciarmos a entender o editor, vamos escrever um programa que nos retorna a
área e o perímetro de uma circunferência (output), a partir do raio (input).
Para isso, precisamos saber como se calcula o raio e o perímetro de uma circunferência.
18
Sendo assim, no MATLAB, iniciaremos abrindo o editor. Você pode usar a command
window, digitando o comando “edit” mais um espaço e em seguida o nome que ficará
salvo o seu programa. Ao fazer isso, o MATLAB automaticamente cria um arquivo .m na
pasta atual (current folder), como na imagem abaixo:
Podemos, também, abrir o editor clicando em “new script”, porém você terá que salvar
manualmente o seu arquivo.
Uma boa prática de programação é sempre comentar o seu programa, para que você
sempre lembre o que cada variável significa, quais as unidades em que estão, etc. Para
comentar no editor, você precisa adicionar o símbolo de porcentagem (%) no início do
comentário, todo texto em verde é comentário, logo o MATLAB não o considera na hora
de executar o programa. Iniciaremos comentando a finalidade do programa, o
cabeçalho, e as instruções de uso.
19
Agora iniciaremos a escrever os algoritmos do programa.
Para o nosso caso, colocamos os outputs entre colchetes, porque temos mais de um
elemento de saída, logo precisamos que os dois resultados saiam juntos. Seguiremos
com a construção do programa, atribuindo aos outputs os seus respectivos valores.
Assim que forem finalizados os algoritmos, devemos dar o comando “end”, indicando
que a função chegou ao fim. Feito isso, estamos prontos para rodar o programa.
Podemos fazer isso de duas formas: Podemos escrever a função na command window,
20
e ali atribuir às variáveis desejadas, ou executar no próprio editor, apenas clicando no
botão “run”. Para a segunda opção, devemos determinar os valores dos inputs dentro
da função, o que não é recomendável. UMA BOA PRÁTICA DE PROGRAMAÇÃO, PARA
ESTE CASO, É CRIAR UMA FUNÇÃO SÓ PARA EXECUTAR O PROGRAMA.
Para r = 4
Para r = 4
21
Como podemos ver acima, temos:
O input (r)
A linha chamando a função do nosso programa
A função “fprintf”, que retorna na command window os resultados obtidos no
editor. Esse comando funciona da seguinte maneira: fprintf (‘texto’,variável(1),
variável(2), até a variável(n) ) onde, dentro do texto devemos inserir o símbolo
de porcentagem (%), que diz ao programa que o valor de uma variável deve ser
retornado. O número ao lado do % indica o número de casas decimais após a
vírgula, para o formato escolhido (f), no nosso caso utilizamos a letra f, que indica
que é uma notação de ponto fixo. Para cada variável que se deseja retornar,
deve-se utilizar o símbolo %, a notação e a formatação desejadas. Para saber
mais sobre esta função, use o doc fprintf na command window, e se você deseja
conhecer os tipos de formatação das variáveis, pesquise formatting strings.
22
5. CRIANDO GRÁFICOS NO MATLAB
Além de ser uma ferramenta muito útil para programação, o MATLAB dispõe de uma
interface muito simples para criação de gráficos. Nele podemos criar gráficos 2D e 3D.
O MATLAB trabalha em sua essência com matrizes. Um escalar, por exemplo, nada mais
é do que uma matriz 1x1. Para gerar um gráfico 2D, temos duas formas comuns de
captação de dados: como matriz e como vetor. O comando a ser utilizado é o “plot”, e
sua sintaxe é: plot(X,Y), onde X e Y são matrizes ou vetores, e plot(Y), onde Y é uma
matriz ou vetor. Quando usamos X e Y como matrizes, elas devem ter o mesmo tamanho
(ix=iy e jx=jy). O MATLAB irá plotar as colunas de X versus colunas de Y (situação a), e no
caso de vetores, irá plotar o vetor X versus o vetor Y.
Situação a:
O MATLAB irá plotar os pontos: (1,2), (-4,8), (7,14) da primeira coluna. E fará isso
novamente para as colunas restantes, ou seja, os pares ordenados a serem plotados são
os mesmos elementos de cada matriz (X1,1 , Y1,1) , (X2,1 , Y2,1), até (Xn,n , Yn,n). Executando
o comando plot(X,Y) no MATLAB, teremos:
23
Cada coluna será plotada automaticamente com uma cor diferente. É possível que o
usuário escolha sua formatação de linha, cor, espessura, formas sobre os pontos, etc.
Para mais informações sobre como formatar o comando plot, pesquise doc plot na
command window.
Situação b:
Sejam X e Y dois vetores de mesmo tamanho. Não importando se são vetores linha ou
coluna.
24
É possível, também, acrescentar mais de uma linha em uma mesma figura. Basta
executarmos o plot com todos os argumentos de uma só vez. Digamos que temos 2
pares de vetores, o par A e B e o par C e D. Para plotarmos AxB e CxD, devemos fazer:
>> plot(A,B,C,D)
>>
Tente você mesmo. Crie 2 ou mais pares de vetores e tente plotar. Caso não consiga, ou
apresente dificuldade, utilize o comando doc plot na command window para mais
informações sobre este e outros comandos de plotagem gráfica.
25
6 MATRIZES E SUAS OPERAÇÕES
Matrizes são, de uma maneira simplificada, tabelas com m linhas e n colunas. Para
iniciarmos nosso estudo sobre matrizes vamos aprender a declará-las no MATLAB.
Iniciaremos com os vetores, que são matrizes de apenas uma dimensão.
>> A = [ 1 2 3 4 5]
>> A =
1 2 3 4 5
>>
Sendo assim, criamos um vetor linha de 5 elementos ao colocarmos entre colchetes (os
colchetes definem o início e o fim de uma matriz/vetor) os elementos 1, 2, 3, 4 e 5
separados por espaços. Caso você prefira, pode separar os elementos de uma mesma
linha em uma matriz ou vetor por vírgulas. O resultado será o mesmo. Mas lembre-se
de separar os elementos, caso contrário o MATLAB irá interpretar como apenas um
número.
Agora, vamos criar um vetor coluna, com os mesmos elementos. Para tal, temos que
discriminar para o MATLAB o fim de uma linha e o início de outra. Para isso usamos o
ponto-e-vírgula (;), da seguinte maneira:
26
>> B = [1 ; 2 ; 3 ; 4 ; 5]
Agora que já sabemos como declarar vetores, fica fácil deduzir como declarar uma
matriz de mais de uma dimensão. Declaremos então uma matriz M de 3 linhas e 2
colunas (3x2):
>> M = [1 2; 3 4; 5 6]
E mais uma vez o MATLAB nos retornou exatamente aquilo que queríamos. Agora você
já sabe como declarar uma matriz no MATLAB.
Imaginemos agora que você trabalha com alguma área que envolva matrizes, mas
precisa escrever matrizes muito grandes, da ordem de 100 ou 1000 linhas. Como você
procederá? Será que temos que digitar todos os elementos das matrizes?
27
Digamos que você quer escrever um vetor que represente o número de passos que você
dá ao sair da escola para sua casa. Vamos considerar que você dê 1 passo por segundo,
e demora 15 minutos para chegar em casa. Lembre-se que você quer representar todos
os seus passos em um vetor.
São tantos elementos que nem cabem na tela. Experimente executar esse comando no
seu MATLAB e role a command window até o final. Você perceberá que temos um vetor
linha que vai de 1 até 900.
Essa ferramenta também pode ser utilizada em linhas ou colunas para criação de
matrizes, desde que cada linha ou coluna contenham o mesmo número de elementos,
condição para que seja, de fato, uma matriz. Tente no MATLAB o comando abaixo e veja
o que acontece.
>> M = [ 0 : 2 : 8; 1 : 5; 10 : -5/2 : 0]
Cria uma matriz de m linhas e n colunas, contendo apenas zeros como elementos.
Quando declarado apenas o n, o comando cria uma matriz quadrada de n linhas e n
colunas.
É muito parecido com o comando anterior, diferindo apenas nos elementos, que ao
invés de zeros, são todos o número um.
29
Parte do mesmo princípio dos comandos anteriores, entretanto é criada uma matriz
identidade de m linhas e n colunas ou n linhas e n colunas, onde a diagonal principal é
composta por 1 e o restante da matriz é composta por 0.
Este comando cria uma matriz pseudo-aleatória (não apresentam uma ordem, porém
seguem uma sequência) de m linhas e n colunas ou n linhas e n colunas, com elementos
entre 0 e 1.
Este comando cria uma matriz aleatória de m linhas e n colunas ou n linhas e n colunas,
com elementos entre 1 e imax.
30
6.2 ENTENDENDO AS OPERAÇÕES MATRICIAIS
Agora que você sabe como criar uma matriz, veremos como fazer operações com elas.
Análogo às operações com os escalares (item 2), são as operações matriciais. Exceto a
multiplicação, divisão e potência escalar. Portanto:
Veremos mais à frente algumas aplicações e usos das operações com matrizes dentro
dos exemplos de funções e algoritmos que mais tarde exercitaremos.
31
6.3 ENCONTRANDO ELEMENTOS DENTRO DE UMA MATRIZ
(INDEXAÇÃO)
Para tal, você deve saber acessar um elemento matricial matematicamente. É bem
simples. Sendo a matriz uma tabela, basta que tenhamos as “coordenadas” i da linha e
j da coluna. Assim acessaremos o elemento aij, de uma matriz qualquer. Vamos ao
MATLAB...
>> M = [ 1 3 5; 7 9 1; 2 4 6; 1 2 3];
>> M(2,3)
>>
Podemos atribuir este valor à variáveis, assim como o MATLAB atribuiu à variável “ans”.
Caso estejamos trabalhando com um vetor, uma vez que possui apenas uma linha ou
coluna, podemos acessar o elemento da seguinte maneira:
32
Seja o vetor v = 1:12 . Para acessar o 7º elemento, basta que façamos:
>> v(12)
ans =
12
Obs: Esta notação acima também pode ser usada em matrizes, porém a ordem se dará
do primeiro elemento sendo o elemento (1,1), indo de cima para baixo e da esquerda
para a direita.
ans =
2 6
Existe no MATLAB o operador “end”, que indica fim de intervalo, ou seja, você pode
indicar o último índex de uma matriz apenas com este operador. Digamos que você
queira atribuir a uma variável o valor do último elemento de uma matriz de 10.000 linhas
e 10.000 colunas. Você não precisa digitar (10000,10000). Basta atribuir a indexação
(end,end).
33
acessarmos estas informações, basta que usemos o comando size(M) e numel(M), onde
M é uma matriz qualquer. O primeiro comando retorna um vetor linha com 2 elementos,
o primeiro é o número de linhas e o segundo é o número de colunas da matriz M. O
segundo comando nos retorna um escalar, que representa o número de elementos da
matriz M.
1º elemento da 4ª linha
3º elemento da 1ª linha
2º e 3º elemento da 4ª linha
1º e 2º elemento da 2ª coluna
Todos os elementos da 3ª linha
Vamos ver se você aprendeu a pesquisar os comandos e ferramentas do
MATLAB. Tente acessar uma linha ou coluna inteira sem precisar declarar cada
elemento da mesma. Existem 2 maneiras, ambas usando o dois-pontos (:).
6.4 EXEMPLO DE APLICAÇÃO
Neste exemplo vamos utilizar os tópicos comentados nos itens anteriores, bem como
explorar a criação de funções/scripts/programas no MATLAB. Estamos caminhando aos
poucos nas habilidades necessárias para construir um programa. Já vimos como fazer
operações aritméticas, já aprendemos a definir vetores e matrizes, e agora através do
exemplo, vamos fazer operações com as mesmas.
Enunciado: Escreva um programa que leva como argumentos de entrada dois números
inteiros positivos (n e m) nessa ordem. O programa retorna Q, uma matriz 2n por 2m.
Q consiste em quatro submatrizes n x m. Os elementos da submatrizes no canto
superior esquerdo são todos os 0, os elementos da submatriz no canto superior direito
são 1, os elementos na parte inferior esquerda são 2 e os elementos no canto inferior
direito são 3.
34
enunciado e pense no que fazer para escrever o programa, caso não consiga, siga para
a próxima dica.
Para relembrar a sintaxe de uma função no editor, retorne ao item 04 e dê uma olhada
no exemplo da área e perímetro da circunferência.
|
|
Dica²: Utilizaremos apenas os comandos zeros e ones. Retorne mais uma vez ao
enunciado e tente novamente escrever o programa.
|
|
35
|
Dica³: Utilizaremos os comandos zeros e ones para formar uma matriz. Fique atento na
ordem especificada no enunciado para cada quadrante da matriz. Na próxima página
revelaremos a solução do exemplo.
|
|
36
|
end
Escreva um programa que leva uma matriz N como entrada e retorna a matriz S como
a saída. S tem o mesmo número de linhas que N. Cada elemento da primeira coluna
de S contém a média da linha correspondente de N. Da mesma forma, a segunda
coluna contém os valores médios; enquanto a terceira coluna tem os mínimos.
Finalmente, cada elemento da quarta coluna de S é igual ao valor máximo de uma
linha dada de N. (Dica: Lembre-se, pedir ajuda é indispensável).
37
|
DICA¹: Pesquise no google: how do i find the mean element on a array on matlab e abra
o primeiro link. A partir dessa pesquisa você deve pesquisar o que falta.
38
|
DICA²: Organize cada coluna obtida com a dica anterior dentro de colchetes para formar
a matriz S.
39
|
O código do programa é:
function S = simple_stats(N)
[a,b] = size(N);
S = [mean(N,2) median(N,2) min(N,[],2) max(N,[],2)];
end
40
7 OPERADORES LÓGICOS E RELACIONAIS
Exemplos:
41
Operador Lógico Nome Descrição
Exemplos:
42
Para você não cometer erros de precedência na hora de escrever os seus programas,
aqui vai a tabela de precedência com os operadores. E não se esqueça, não tenha pena
de parênteses. É melhor um programa cheio de parênteses, porém correto, do que um
programa limpo, mas com equações erradas.
PRECEDÊNCIA OPERAÇÃO
1 (mais alta) Parênteses (se houver mais de um, os
mais internos tem prioridade.)
2 Exponenciação
3 NOT (~)
4 Multiplicação e divisão
5 Adição e Subtração
6 Operadores Relacionais
7 AND (&)
8 (mais baixa) OR (|)
43
8 SENTENÇAS CONDICIONAIS
If – end
If – else – end
If – elseif – else –end
IF – END
if
F
A
L Verdadeiro
S
O
Grupo de comandos
fim
44
EXEMPLO USANDO A SENTENÇA IF-END:
Um trabalhador é pago de acordo com a jornada semanal de 40 horas, mais 50% sobre
as horas extras trabalhadas. Escreva um programa que calcule o salário do
trabalhador. O programa deve solicitar ao usuário a quantidade de horas trabalhadas
e o valor pago pela hora trabalhada. Por último, o programa deve retornar o salário.
O objetivo é calcular o salário do trabalhador, porém em duas situações: sem hora extra
e com hora extra. Esta é a condição que temos que informar ao MATLAB. Qual condição
confere hora extra? Vejamos, a jornada semanal é de 40h, caso extrapole este
montante, é considerado hora extra. Ou seja, os valores de horas acima de 40 são
contados como hora extra, logo terá um acréscimo de 50% para cada hora que
extrapolar 40. Sendo assim, vamos ao programa.
45
Programa que calcula o salário do trabalhador:
IF – ELSE -END
if
FALSO
Verdadeiro
fim
46
IF – ELSEIF-ELSE-END
if
FALSO
ELSEIF Verdadeiro
FALSO
Grupo de Comandos
Grupo de comandos 2
Grupo de comandos 3
fim
Volume de Caixa-dágua:
BÓIA
BÓIA O tanque de caixa-dágua
possui geometria
mostrada na figura ao
lado. A parte de baixo é um
cilindro e a parte de cima é
um tronco de cone
invertido. Dentro do
tanque há uma boia que
indica o nível de água. Escreva um programa que determine o volume d’água
armazenado no tanque a partir da posição indicada pela boia. O programa deve
receber a variável h (altura da boia), em metros e retornar o volume de água em m³.
47
As sentenças if- elseif possuem entre si um grupo de comandos a serem executados
dentro da condição presente no if. Assim como entre elseif – elseif possuem outros
grupos de comandos a serem executados a partir da condição presente no elseif, entre
o elseif e o else a mesma coisa, já entre o else e o end, estão o grupo de comandos que
serão executados caso nenhuma das condições anteriores tenha sido encontrada.
1ª condição: h>0
A condição básica é que h>0 para que haja volume na caixa-dágua. Para esse caso
colocaremos um código de erro alertando o usuário que o valor inserido deve ser maior
que zero
2ª condição: h<33m
Análogo à situação anterior, colocaremos outro código de erro que alerte o usuário que
a altura não pode ser superior a 33m.
3ª condição: 0 ≤ h ≤ 19m
Condição de cálculo do volume de água na caixa-dágua. Até 19m o cálculo é feito através
do volume do cilindro, a partir daí o cálculo se da através do cilindro+tronco de cone.
Como já dito, nesta condição de altura, o cálculo do volume deve der feito com o volume
do cilindro + o tronco de cone em função do raio variável em relação à altura.
48
Tente escrever o programa com base nas condições e formulações. A resposta estará na
próxima página.
49
RESPOSTA DO PROGRAMA DA CAIXA-D’ÁGUA:
50
9 A SENTENÇA switch-case
Esta é uma sentença bem simples. Ele seleciona um grupo de comandos dependendo
do caso solicitado. É feito através da combinação. A entrada é analisada em relação aos
cases presentes na sentença, quando der uma correlação, o grupo de comandos é
executado. Associado aos case, pode vir o comando otherwise, é análogo ao else.
Quando em nenhum case é encontrada coincidência, a sequência de comandos entre o
otherwise e o end são executados.
Exemplo:
51
10 LAÇOS (LOOPS)
Como já foi dito, este laço tem número de passos definido. É definido também o valor
inicial, o incremento e o valor final. A sintaxe é similar à declaração de vetores, vejamos
abaixo como funciona este laço.
for i = a:b:c
comando 1
comando 2
.
.
.
comando n
end
Índice do loop
Valor de i no primeiro passo
Incremento em i após cada passo
Valor de i no último passo
52
Caso o incremento seja tal que o valor de k supere o valor de c, o penúltimo valor é
assumido, mesmo que seja inferior a c, da mesma forma que a atribuição de
vetores/matrizes pelo operador dois-pontos (:).
O incremento b pode ser um valor negativo
Se o incremento for omitido, o MATLAB automaticamente atribuirá valor 1 para
o mesmo
Se a>c e b> 0 ou a<c e b<0, o laço não é executado
É possível atribuir valores específicos para i, por exemplo i = [ 2 5 -6 8]
O valor de i não deve ser redefinido dentro do laço
Cada comando for deve estar alinhado com um comando end.
for i = 1:2:10
x(i) = 2^(1+i)
end
53
EXEMPLO DESAFIO:
Escreva um programa que plote o gráfico do diagrama de momento fletor de
uma viga que pode ser submetida a carregamento distribuído retangular, carga
concentrada (apenas uma carga), ou as duas simultaneamente.
54
Código do programa anterior:
% INPUTS:
% L = Comprimento da viga, em centímetros.
% tipo_de_carregamento = 1 para carga dist. retangular
% 2 para carga concentrada
% 3 para as duas situações anteriores
juntas
% Lp = Posição da carga concentrada, em metros
% q = Carregamento distribuído, em kN/m
% P = Carga concentrada, em kN
function momento_viga_biapoiada
clc;
close all;
if tipo_de_carregamento == 1
q = input('Digite o valor da carga distribuída, em kN/m:\n');
elseif tipo_de_carregamento == 2
P = input('Digite o valor da carga concentrada, em kN:\n');
Lp = input('Digite a posição da carga concentrada, em m:\n');
elseif tipo_de_carregamento == 3
q = input('Digite o valor da carga distribuída, em kN/m:\n');
P = input('Digite o valor da carga concentrada, em kN:\n');
Lp = input('Digite a posição da carga concentrada, em m:\n');
end
if tipo_de_carregamento == 1
for x = 1:L+1
M(x) = ((-q*(x-1)^2)/2 + q*L/2)/100;
end
x = 1:L+1;
plot(x,M);
elseif tipo_de_carregamento == 2
for x = 1:Lp
M1(x) =(P*(L-Lp)*(x-1)/L)/100;
end
for x = Lp:L+1
M2(x) = ((P*(L-Lp)/L - P)*(x-1) +P*Lp)/100;
55
end
x=1:L+1;
M = [M1 M2(651:end)];
plot(x,M);
elseif tipo_de_carregamento == 3
for x =1:Lp
M1(x) =((P*(L-Lp)*(x-1)/L) +(-q*(x-1)^2)/2 + q*L/2)/100;
end
for x = Lp:L+1
M2(x) = (((P*(L-Lp)/L - P)*(x-1) +P*Lp) + (-q*(x-1)^2)/2 +
q*L/2)/100;
end
x=1:L+1;
M = [M1 M2(651:end)];
plot(x,M);
end
end
56
10. 2 LAÇO while-end
Estrutura do laço while-end
comando 1
comando 2
.
.
.
comando n
contador
end
EXEMPLO:
57
EXEMPLO DE APLICAÇÃO:
Escreva um programa que verifica e calcula o número máximo de barras para uma
camada de aço para armadura de flexão, em uma seção transversal de concreto
armado, tomando como entrada apenas a área de aço necessária e a largura da viga.
Utilize como dados para montar o código:
58
CÓDIGO DO EXEMPLO ANTERIOR:
a = 0; % Inicia a variável
que altera a entrada das bitolas
% a cada vez que o
laço é executado.
else
fprintf('Não há detalhamento de armadura\n');
end
60
10. 3 COMANDOS BREAK E CONTINUE
BREAK
O comando break, quando inserido em um laço for ou while, provoca a saída
imediata do laço. Assim, quando o MATLAB encontra um comando break, o
programa salta para o comando end.
Se dentro de um programa ou função, provoca o término imediato de sua
execução, a partir de onde está inserido.
É comumente utilizado dentro de sentenças condicionais. Quando atingida uma
condição, é um modo eficaz de parar um looping.
CONTINUE
É utilizado dentro de um laço para provocar o fim do passo atual e iniciar o
próximo processo de looping. Geralmente utilizado dentro de uma sentença
condicional, de forma a conduzir o laço até o comando end e retomando o
próximo passo.
61
11 REFERÊNCIAS
GILAT, Amos. MATLAB com Aplicações em Engenharia. 4 ed. Porto Alegre: Bookman
editora, 2012, 417p.
MATSUMOTO, Élia Yathie. MATLAB® 7: Fundamentos. 2 ed. São Paulo: Érica 2008
62