Baixe o app para aproveitar ainda mais
Prévia do material em texto
UNIJUÍ – Universidade Regional do Noroeste do Estado do Rio Grande do Sul EGE – Engenharia Elétrica DCEEng – Departamento de Ciências Exatas e Engenharias Algoritmos Introdução à Programação Utilizando MATLAB Professor: Mauro F. Rodrigues Organização inicial: Prof. Maurício de Campos Adaptado por: Prof. Mauro F. Rodrigues Programação • Clique abaixo para abrir o editor de arquivos do Matlab Programação • O Editor de arquivos do Matlab Área de edição Salvar e rodar o arquivo v1=input('Informe um valor: '); % Informe um valor real: 1.23 v2=v1+2 fprintf('O valor informado foi %2.2f e v2=v1+2= %d\n',v1,v2) disp('fim') %ir para slide 10 Entrada e Saída de Dados (Funções Estruturadas) (Continuação) →→→→ Função fprintf() Formato: fprintf(‘string-formatação’, <lista de parâmetros>); Exemplos: >> fprintf('O valor de pi eh: %2.7f',pi) O valor de pi eh: 3.1415927 >> fprintf('Calculo: %d + %d = %d',A,B,C) Calculo: 2 + 5 = 7 Especificação de formato Entrada e Saída de Dados (Funções Estruturadas) (Continuação) Especificação de Formato % - 12.5 e Marcador (Obrigatório) Modificador (Opcional) Comprimento do campo (Opcional) Precisão (Opcional) Descritor de formato (Obrigatório) Entrada e Saída de Dados (Funções Estruturadas) (Continuação) Especificação de Formato Conversão de formato para a função fprintf Entrada e Saída de Dados (Funções Estruturadas) (Continuação) Especificação de Formato Marcadores de Formato Exemplos: >> fprintf('%d',123) 123 >> fprintf('%6d',123) 123 >> fprintf('%-6d',123) 123 >> fprintf('%+6d',123) +123 >> fprintf('%06d',123) 000123 Entrada e Saída de Dados (Funções Estruturadas) (Continuação) Especificação de Formato Caracteres Especiais para a função fprintf Exemplo: >> fprintf('O valor em %% e \n %d',123) O valor em % e 123 Entrada e Saída de Dados (Funções Estruturadas) (Continuação) →→→→ Função input() Formato: var = input(‘string’); Exemplos: >> v1=input('Informe um valor: '); Informe um valor: 1.23 >> v2=input('Informe um valor: ','s'); Informe um valor: 1.23 >> v3=v1+2 v3 = 3.2300 >> v4=v2+2 v4 = 51 48 52 53 >> setstr(v4) ans = 3045 Armazena em v2 o valor informado na forma de uma cadeia de caracteres Entrada e Saída de Dados (Funções Estruturadas) (Continuação) Slide 10 →→→→ Exercício: Grave e execute o seguinte programa: disp('Programa para teste da funçoes de entrada e saida'); A=input('Informe o valor de A: '); B=input('Informe o valor de B: '); C=A*B; fprintf('O resultado da multiplicacao de %f por %f eh %f',A,B,C) Estruturas de Comando →→→→ Estrutura de comando: if <expressao> <comandos> end →Descrição: A simples estrutura if-end executa os comandos enquanto a expressão for verdadeira ou não nula. →Similar ao desvio condicional simples do Visualg: se-então-fimse Estruturas de Comando (Continuação) Exemplo: Criar um programa que efetue a leitura de dois valores numéricos. Faça a operação de soma entre os dois valores. Apresente o resultado somente se este for maior que 10. Estruturas de Comando (Continuação) A = input('Qual o valor de A? \n'); B = input('Qual o valor de B? \n'); X = A + B; if (X > 10) fprintf('O valor de X eh %d.',X); end X Qual o valor de A? A Qual o valor de B? B X�A+B Início Fim Se X>10 S N Estruturas de Comando (Continuação) →→→→ Estrutura de comando: if <expressao> <instr. se expr. verd.> else <instr. se expr. falsa> end →Descrição: A estrutura if-else-end é dividida em duas partes: a primeira será executada se a expressão for verdadeira ou não nula e a segunda se a expressão for falsa ou nula. →Similar ao desvio condicional simples do Visualg: se- então-senao-fimse Estruturas de Comando (Continuação) Exemplo Escrever um programa que lê três valores correspondentes aos lados de um triângulo. Verificar se os valores realmente formam um triângulo. Se a condição for verdadeira, classificar o triângulo quanto ao tipo. Estruturas de Comando (Continuação) A = input('Qual o valor de A? \n'); B = input('Qual o valor de B? \n'); C = input('Qual o valor de C? \n'); if (A<(B+C)) & (B<(A+C)) & (C<(B+A)) if (A==B) & (B==C) fprintf('\nTriangulo Equilatero'); else if ((A==B) | (A==C) | (B==C)) fprintf('\nTriangulo Isosceles'); else fprintf('\nTriangulo Escaleno'); end end else fprintf('\nAs medidas nao formam um triangulo.'); end Estruturas de Comando (Continuação) →Similar ao desvio condicional com várias opções do Visualg: escolha-caso →Estrutura de comando: switch (<variável>) case valor_1, <comandos> case valor_2, <comandos> otherwise, <comandos> end Estruturas de Comando (Continuação) →→→→ Exemplo: cor = input('Informe uma cor: ','s'); switch (cor) case 'vermelho', disp('Pare!'); case 'amarelo', disp('Prepare para parar!'); case 'verde', disp('Siga!'); otherwise, disp('Cor invalida') end Estruturas de Comando (Continuação) →→→→ Similar ao desvio condicional com várias opções do Visualg: para →→→→ Estrutura de comando: for x = arranjo <comandos> end →→→→ Descrição: As repetições dos comandos serão feitas desde a primeira coluna do arranjo (matriz ou sequência) até a última. Estruturas de Comando (Continuação) →→→→ Exemplo Escrever um programa que leia um número qualquer e calcule o seu fatorial: N = input('Qual o valor de N? '); fat = 1; for x = 1:N fat = fat * x; end fprintf('O fatorial de %d eh %d.',N,fat) Estruturas de Comando (Continuação) →→→→ Similar ao desvio condicional com várias opções do Visualg: enquanto →→→→ Estrutura de comando: while <expressao> <comandos> end →→→→ Descrição: As repetições serão feitas enquanto a expressão for verdadeira ou não nula. Estruturas de Comando (Continuação) Exemplo Escrever um programa que calcule a média dos valores indicados. Terminar o programa quando indicado um número negativo. Estruturas de Comando (Continuação) soma = 0; x = 0; n = input('Digite um numero: '); while n > 0 soma = soma + n; x = x + 1; n = input('Digite um numero: '); end media = soma/x; fprintf('A media dos valores informados eh %d.',media ); Estruturas de Comando (Continuação) →→→→ Estrutura de comando: break →→→→ Descrição: Termina a execução das repetições for e while. Estruturas de Comando (Continuação) Exemplo Escrever um programa que efetue a leitura de 10 valores positivos e os armazene em um vetor. Se um número negativo for indicado, terminar o programa com um aviso de erro. Estruturas de Comando (Continuação) t=10 for x = 1:10 fprintf('Digite o elemento %d do vetor Z: ',x); Z(x) = input(' '); if Z(x)<0 fprintf(‘\n\nERRO\n\n'); t = x - 1; break end end disp('O vetor informado foi:'); for x = 1:t fprintf(' %d \n',Z(x)); end Funções MATLAB →→→→ Arquivo de Script: coleção de declarações armazenada em arquivo, cujo resultado é o mesmo se as instruções forem executadas diretamente na Janela de Comandos, e que compartilha o espaço de trabalho da Janela de Comandos. →→→→ Função MATLAB: tipo especial de arquivo M executado em um espaço de trabalho independente e que recebe dados de entrada por meio de uma lista de argumentos de entrada e retorna resultados através de uma lista de argumentos de saída. Funções MATLAB (Continuação) →→→→ Estrutura da Função: function [arg_s1,arg_s2,...]=nome_funcao (arg_e1,arg_e2,...) % L1 - Comentario Resumo % L - Comentarios Utilizacao < comandos > →→→→ Descrição: A declaração function determina o início da função, onde sãoespecificados o nome da função e as listas de argumento de entrada (entre parênteses após o nome da função) e de saída (entre colchetes à esquerda do sinal de igual. No caso de um único argumento de saída não é necessária a colocação de colchetes). Funções MATLAB (Continuação) →→→→ Comentários de uma função: % A primeira linha de comentário, L1, deve conter um resumo de uma linha do objetivo da função. Esse comentário será encontrado e exibido pelo comando lookfor. % As demais linhas de comentário devem conter um resumo breve sobre a utilização da função. Esses comentário serão encontrados e exibidos pelo comando help. function [arg_s1,arg_s2,...]=nome_funcao (arg_e1,arg_e2,...) % L1 - Comentario Resumo % L - Comentarios Utilizacao < comandos > Funções MATLAB (Continuação) Exemplo Desenvolver uma função para calcular a distância entre dois pontos (x1,y1) e (x2,y2) em um sistema de coordenadas cartesianas. Funções MATLAB (Continuação) Função function distance = dist (x1,y1,x2,y2) % DIST calcula a distancia entre dois pontos % A funcao DIST calcula a distancia entre dois pontos % (x1,y1) e (x2,y2) em um sistema de coordenadas % cartesianas. % % Definicao de variaveis: % x1 - posicao do ponto 1 com relacao ao eixo das abcissas % y1 - posicao do ponto 1 com relacao ao eixo das ordenadas % x2 - posicao do ponto 2 com relacao ao eixo das abcissas % y2 - posicao do ponto 2 com relacao ao eixo das ordenadas % distance = sqrt((x2-x1)^2+(y2-y1)^2); Funções MATLAB (Continuação) % TEST_DIST testa a funcao dist % O programa TEST_DIST testa a funcao DIST que calcula a % distancia entre dois pontos (x1,y1) e (x2,y2) % Definicao de variaveis: % xa - posicao do ponto 1 com relacao ao eixo das abcissas % ya - posicao do ponto 1 com relacao ao eixo das ordenadas % xb - posicao do ponto 2 com relacao ao eixo das abcissas % yb - posicao do ponto 2 com relacao ao eixo das ordenadas % d - distancia entre os pontos % program test_dist % var % d, xa, xb, ya, yb: float disp('CALCULO DA DISTANCIA ENTRE DOIS PONTOS'); xa = input('\nInforme o valor do ponto x1: '); ya = input('Informe o valor do ponto y1: '); xb = input('Informe o valor do ponto x2: '); yb = input('Informe o valor do ponto y2: '); d = dist(xa,ya,xb,yb); fprintf('\nA distancia entre os dois pontos informados eh: %f \n.',d); Exercício 1 • Escreva um algoritmo que receba números do usuário e imprima o triplo de cada número digitado. O algoritmo deve encerrar quando o número –999 for digitado. Exercício 2 • Escreva um algoritmo que receba números do usuário e imprima o quadrado de cada número digitado. O programa deve rodar até que o usuário tenha inserido cinco números que sejam múltiplos do número 6. Exercício 3 • Seja R uma matriz 5X5, preenchida com zeros (0), Coloque uma sequência iniciando por 1 em sua diagonal principal. Apresente o resultado na tela. Exercício 4 • Fazer um programa para encontrar todos os pares de números amigáveis entre 1 e 500000. Um par de números é amigável quando cada um deles é igual à soma dos divisores do outro. Exercício 5 • Elabore um programa que leia um valor de ângulo (matlab faz em radiano) e solicite ao usuário se quer fazer tangente, seno ou cosseno daquele ângulo. O programa deve terminar quando for digitado um valor menor que 0 ou maior que 2, pois estaria fora do círculo de 0 a 2*pi. Exercício 6 • Elaborar uma função que receba como parâmetros, a freqüência, o número de pontos e o tempo de simulação e retorne dois vetores, um contendo o tempo e outro contendo a amplitude de uma onda triangular simétrica de amplitude 1. Desenvolver também um programa em Matlab que invoque a função criada e plote um gráfico com os pontos da onda triangular retornados pela função.
Compartilhar