Aula 7
28/Set - Variáveis lógicas; Operadores relacionais e lógicos; Controle de fluxo de dados - if
|
- Endereçamento lógico de vetores e matrizes
Operador
|
Significado
|
< |
Menor que
|
<= |
Menor ou igual a
|
> |
Maior que
|
>= |
Maior ou igual a
|
== |
Igual a
|
~= |
Não é igual a
|
- Operadores lógicos (vetores):
Operador
|
Nome
|
& |
AND
|
ǀ |
OR
|
~ |
NOT
|
xor(a,b) |
XOR
|
- Operadores lógicos curto-circuito:
Operador
|
Nome
|
&& |
AND
|
ǀǀ |
OR
|
-
- Comandos strcmp e strcmpi
- 1. Sejam x = [1 7 5 3 8 2] e y = [1 8 2 3 9 1]. Encontre os resultados dos seguintes comandos antes de executá-los:
- a) z = x < 6
- b) z = x <= y
- c) z = x == y
- d) z = x ~= y
- 2. A tabela abaixo mostra as temperaturas diárias (em Celsius) em três cidades diferentes.
Cidade \ Temperatura
|
Dia 1
|
Dia 2
|
Dia 3
|
Dia 4
|
Dia 5
|
Dia 6
|
Dia 7
|
Palhoça |
10 |
13 |
6 |
5 |
-1 |
10 |
4
|
São José |
19 |
13 |
3 |
5 |
1 |
22 |
14
|
Biguaçu |
30 |
2 |
3 |
-1 |
10 |
-2 |
40
|
- Determine em quais dias:
- a) A temperatura na Palhoça é maior que 8 °C.
- b) A temperatura em São José se encontra entre 1 °C e 15 °C (incluindo ambos os extremos).
- c) Fez mais frio na Palhoça que em São José.
- d) Biguaçu foi a cidade mais quente de todas.
- 3. A altura e a velocidade de um projétil lançado com uma velocidade e um ângulo com a horizontal são dadas, em funcão do tempo t, por
- respectivamente, em que g é a aceleração da gravidade. O projétil atinge o solo quando , o que ocorre no tempo . Suponha que °, m/s e m/s².
- a) Plote os gráficos da altura e da velocidade do projétil, de até .
- b) Determine os instantes de tempo em que a altura é de no mínimo 15 m.
- c) Determine os instantes de tempo em que a altura é de no mínimo 15 m e, ao mesmo tempo, a velocidade é de no máximo 36 m/s.
- c) Determine os instantes de tempo em que a altura é de no mínimo 15 m ou a velocidade é de no máximo 36 m/s.
- Controle de fluxo de dados:
- As sentenças if, else e elseif
- 1. Crie um código que calcula o valor gasto total (em R$) e o peso total (em kg) da compra de algumas unidades de arroz (5 kg), feijão (1 kg) e café (500 g).
- O usuário deve fornecer quantas unidades quer comprar de cada produto (comando input).
- Os dados devem ser validados: verificar se o usuário forneceu alguma quantidade negativa.
- Condições de compra:
- O preço unitário do arroz é R$15,00. Se comprar 3 ou mais, o preço cai para R$14,00 cada.
- O preço unitário do feijão é R$12,00. Se comprar 4 ou mais, o preço cai para R$11,50 cada.
- O preço unitário do café é R$10,00. Se comprar 3 ou mais, o preço cai para R$9,25 cada.
- 2. Implemente uma calculadora com as quatro operações básicas, recebendo a escolha de operação e números com o comando input. Não se esqueça de implementar proteções para as entradas de dados (divisão por zero, vetores, etc).
|
Aula 8
03/Out - Controle de fluxo de dados - switch; Structs; Cells
|
- Um único valor
- Múltiplos valores
- 1. Reescreva o código da calculadora da aula anterior fazendo o uso da sentença switch
- Criando estruturas com o operador "."
- Criando estruturas com o comando struct
- Comando isfield para identificar se um campo existe ou não
- Comando rmfield para remover campo da estrutura
- 1. Crie um arranjo de estruturas que contenha os os seguintes campos de informação concernentes a pontes rodoviárias em uma cidade: localização da ponte, carga máxima (toneladas), ano de construção, ano agendado para a manutenção.
- a) Insira os dados abaixo na estrutura:
Localização
|
Carga máxima
|
Ano de construção
|
Agendamento para a manutenção
|
Smith St.
|
80
|
1928
|
2011
|
Hope Ave.
|
90
|
1950
|
2013
|
Clark St.
|
85
|
1933
|
2012
|
North Rd.
|
100
|
1960
|
2012
|
- b) Edite o arranjo de estruturas para mudar de 2012 para 2018 o ano agendado para a manutenção da ponte Clark St.
- c) Adicione a seguinte ponte ao arranjo de estruturas:
Localização
|
Carga máxima
|
Ano de construção
|
Agendamento para a manutenção
|
Shore Rd.
|
85
|
1997
|
2014
|
- 2. Crie uma estrutura que contenha todas as informações necessárias para construir um diagrama de um conjunto de dados. No mínimo, a estrutura deve conter os seguintes campos:
- x_data: dado referente ao eixo "x"
- y_data: dado referente ao eixo "y"
- title: título do diagrama
- x_label: rótulo do eixo "x"
- y_label: rótulo do eixo "y"
- x_range: faixa de valores exibidos no eixo "x"
- y_range: faixa de valores exibidos no eixo "y"
- Você pode adicionar outros campos que aumentem seu controle sobre o diagrama final.
- Depois de criar essa estrutura, escreva um programa no MATLAB que use a estrutura para gerar um gráfico. O programa deve aplicar características iniciais inteligentes se alguns campos de dados estiverem faltando.
- Arranjo de células: texto e números
- Comando celldisp e cellplot
- 1. Repita os exercícios anteriores de estruturas usando células
|
Aula 9
05/Out - Estruturas de repetição - for e while
|
- Laços for
- Laços while
- Sentenças break e continue
- 1. Acrescente à calculadora a possibilidade de continuar realizando cálculos até que o usuário solicite a saída digitando 's'.
- 2. Escreva um programa que calcule o fatorial de um número, utilizando for e while.
- 3. Escreva um programa que calcule os n primeiros termos da sequência de Fibonacci, dispondo-os num vetor.
- 4. Considere os códigos abaixo:
Símbolo
|
A
|
B
|
C
|
D
|
E
|
F
|
Código 1
|
000
|
001
|
010
|
011
|
100
|
101
|
Código 2
|
00
|
10
|
11
|
010
|
0110
|
0111
|
- a) Escreva um programa que codifique uma sequência de símbolos, gerando a sequência de bits correspondente. Seu programa deverá funcionar tanto para o código 1 quanto para o código 2. Teste seu programa com a seguinte string: F A D A B A B A C A.
- b) Escreva um programa que decodifique uma string recuperando a sequência de símbolos original. Teste seu programa com a seguinte sequência de bits:
- Código 1: 001000001000101100011100
- Código 2: 10001000011101100100110
- c) Junte os dois códigos anteriores num único programa, onde o usuário seleciona a operação (codificação ou decodificação), o código (1 ou 2), e entra com o dado a ser operado.
- 5. Escreva um programa que implementa o jogo Genius®. O programa deverá gerar uma sequência aleatória de letras e/ou números e exibir um por um na tela, limpando-a em seguida. Após isso, aguardará o usuário entrar com a sequência.
- 6. A série de Fourier é uma representação em série de funções periódicas em termos de senos e cossenos. A representação em série de Fourier da função
- é
- .
- Plote em um mesmo gráfico a função f(x) e sua representação em série g(x), utilizando um número de termos definido pelo usuário.
|
Aula 10
10/Out - Funções; Importação de dados; Solução de sistemas de equações
|
- Funções definidas pelo usuário
- Único retorno
- Múltiplos retornos
- Comando return
- 1. Adapte os Exercícios 2 e 3 da Aula 9 de modo a utilizar funções.
- 2. Escreva uma função que retorna a média aritmética e a média geométrica de dois dados números.
- 3. Escreva uma função que determina o tempo (em anos) necessário para que você acumule pelo menos VF (em dólares) em uma conta bancária se você depositar inicialmente V0 (em dólares) e mais P (em dólares) ao final de cada ano, com um rendimento anual de R%.
- 4. Fazer o plot de um sinal de tensão versus tempo, como da figura, usando os conceitos da aula de hoje.
- Não esquecer de nomear os eixos.
- 5. Escreva uma função que implementa a Cifra de César. A entrada da função deve ser:
- O string a ser codificado/decodificado;
- O deslocamento a ser aplicado em cada letra do string, podendo ser um inteiro positivo (deslocamento para a direita) ou negativo (deslocamento para a esquerda).
- 6. Escreva uma função que retorna todos os números primos menores ou iguais a um dado inteiro n. Utilize o algoritmo do Crivo de Erastótenes.
- Comando uiimport
- Formato do separador decimal (. ou ,)
- Exemplo: usar Celular4g.txt, importar e trabalhar com as funções de matrizes.
- 1. Com o arquivo Add_user.txt (Adições Líquidas de Aparelhos 4G das Operadoras no período), calcular a soma dos anos 2014, 2015 e 2016 (até o momento) por operadora e a soma e a média por período.
- Sistemas de equações lineares
- Encontrando a solução de Ax = b com A\b
|
Aula 11
Aula 12
19/Out - Gráficos em 2D e 3D
|
- Revisão: Comandos plot, stem, bars e stairs
- Comandos semilogx, semilogy e loglog
-
- , onde k é um parâmetro.
- Números complexos e funções abs e angle
- Comando plotyy para plotar gráficos com dois eixos em y.
- Letras gregas nos gráficos:
Letra
|
Representação
|
|
\alpha
|
|
\beta
|
|
\gamma
|
|
\delta
|
|
\epsilon
|
|
\kappa
|
|
\lambda
|
|
\mu
|
|
\nu
|
|
\omega
|
|
\phi
|
|
\pi
|
|
\chi
|
|
\psi
|
|
\rho
|
|
\sigma
|
|
\tau
|
|
\upsilon
|
|
\Sigma
|
|
\Pi
|
|
\Lambda
|
|
\Omega
|
|
\Gamma
|
- 1. Plote em vermelho a função polar
- , de .
- 2. Plote o gráfico da função utilizando todos os quatro tipos de combinações de eixos (linear/logarítmico).
- 3. As seguintes funções descrevem as oscilações em circuitos elétricos e as vibrações de máquinas e estruturas. Sobreponha as plotagens dessas funções no mesmo eixo. Como elas são similares, defina qual é a melhor forma de plotá-las e de rotulá-las para evitar confusão.
-
-
- Comando view
- Rótulo no eixo z: zlabel
-
- Comando meshgrid para criar uma malha 3D
- Comando surf para plot de função de f(x,y)
- Comando shading, com parâmetros flat, faceted e interp
- Comando alternativo mesh
- Exemplo: Símbolo da Itapema FM incompleto:
- [X,Y] = meshgrid(-20:0.5:20);
- R = sqrt(X.^2 + Y.^2) + eps;
- Z = sin(R)./R;
- surf(X,Y,Z)
- Comandos contour, surfc e meshc
Arquivo:FIC Matlab Exercicios plot.pdf
|
Aula 13
24/Out - Toolbox simbólico
|
Básico
- Comandos syms e sym
- Comandos pretty e latex
- Comando subs
- Valores via argumento da função
- Valores retirados do workspace
- Comandos factor, expand, collect e simplify
Cálculo
- Comando diff: Derivada primeira, segunda, terceira, etc.
- Comando int: Integrais indefinidas e definidas
- Interlúdio: comandos assume e assumptions
- Comando taylor: Séries de Taylor
- Comando symsum: Somatórios / séries
- Outros: dsolve, fourier, laplace, partfrac
Solução de equações
Códigos executados em sala
|
Aula 14
26/Out - Interface gráfica
|
Aula
Proposta de Interface gráfica
|
function varargout = Interface(varargin)
% INTERFACE MATLAB code for Interface.fig
% INTERFACE, by itself, creates a new INTERFACE or raises the existing
% singleton*.
%
% H = INTERFACE returns the handle to a new INTERFACE or the handle to
% the existing singleton*.
%
% INTERFACE('CALLBACK',hObject,eventData,handles,...) calls the local
% function named CALLBACK in INTERFACE.M with the given input arguments.
%
% INTERFACE('Property','Value',...) creates a new INTERFACE or raises the
% existing singleton*. Starting from the left, property value pairs are
% applied to the GUI before Interface_OpeningFcn gets called. An
% unrecognized property name or invalid value makes property application
% stop. All inputs are passed to Interface_OpeningFcn via varargin.
%
% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one
% instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES
% Edit the above text to modify the response to help Interface
% Last Modified by GUIDE v2.5 19-Apr-2017 19:45:52
% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @Interface_OpeningFcn, ...
'gui_OutputFcn', @Interface_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT
% --- Executes just before Interface is made visible.
function Interface_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% varargin command line arguments to Interface (see VARARGIN)
handles.contador = 0;
display(handles.contador)
assignin('base','handles',handles)
% Choose default command line output for Interface
handles.output = hObject;
% Update handles structure
guidata(hObject, handles);
% UIWAIT makes Interface wait for user response (see UIRESUME)
% uiwait(handles.figure1);
% --- Outputs from this function are returned to the command line.
function varargout = Interface_OutputFcn(hObject, eventdata, handles)
% varargout cell array for returning output args (see VARARGOUT);
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Get default command line output from handles structure
varargout{1} = handles.output;
% --- Executes on button press in btnDesenhar.
function btnDesenhar_Callback(hObject, eventdata, handles)
% hObject handle to btnDesenhar (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
%Incrementa o contador
handles.contador = handles.contador + 1;
display(handles.contador)
%handles
%Axis 1
hold(handles.axes1,'off')
amostras = [0:1:1000];
if not(isempty(str2num(get(handles.edtFrequencias,'String'))))
Freq = str2num(get(handles.edtFrequencias,'String'))
onda = 2*pi*Freq*0.001*amostras;
plot(handles.axes1,sin(onda))
grid(handles.axes1,'on')
assignin('base','contador',handles.contador);
assignin('base','hObject',hObject)
% Update handles structure
guidata(hObject, handles);
if (get(handles.rbtCosseno,'Value') == 1)
%Axis 2
plot(handles.axes2,cos(onda))
grid(handles.axes2,'on')
elseif (get(handles.rbtTangente,'Value') == 1)
%Axis 2
plot(handles.axes2,tan(onda))
grid(handles.axes2,'on')
ylim(handles.axes2,[-2,2])
else
errordlg('Selecione uma onda de saída!')
end
end
% --- Executes on button press in rbtCosseno.
function rbtCosseno_Callback(hObject, eventdata, handles)
% hObject handle to rbtCosseno (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hint: get(hObject,'Value') returns toggle state of rbtCosseno
set(hObject,'Value',1)
set(handles.rbtTangente,'Value',0)
% --- Executes on button press in rbtTangente.
function rbtTangente_Callback(hObject, eventdata, handles)
% hObject handle to rbtTangente (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hint: get(hObject,'Value') returns toggle state of rbtTangente
set(hObject,'Value',1)
set(handles.rbtCosseno,'Value',0)
function edtFrequencias_Callback(hObject, eventdata, handles)
% hObject handle to edtFrequencias (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edtFrequencias as text
% str2double(get(hObject,'String')) returns contents of edtFrequencias as a double
% --- Executes during object creation, after setting all properties.
function edtFrequencias_CreateFcn(hObject, eventdata, handles)
% hObject handle to edtFrequencias (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
</syntaxhighlight>
|
|
Aula 15
31/Out - Projeto
|
Aula dedicada ao projeto.
|
Aula 16
07/Nov - Projeto
|
Aula dedicada ao projeto.
|
Aula 17
09/Nov - Projeto
|
Aula dedicada ao projeto.
|
Questões da turma
Projetos finais
Ideias
Hachuras em gráficos de barras
Implementar uma função em MATLAB que plote um gráfico de barras com hachuras. O comportamento deve ser semelhante ao comando bar, nativo do MATLAB, mas parâmetros poderão ser acrescentados para controle da trama. Um exemplo de resultado pode ser visto na figura abaixo:
Genius®
Implementar uma versão avançada do jogo Genius® construído na aula 9, adicionando sons, elementos gráficos, etc.
Outros
- relógio analógico
- dtmf
- sudoku
- jogo da velha
- contar moedas
- esteganografia
- batalha naval
|