CURSO de NIVELAMENTO Métodos Computacionais Data: 10 a 12 de fevereiro de 2009 17 a 19 de fevereiro de 2009 e PARTE I - INTRODUÇÃO À PROGRAMAÇÃO Rogério Pagano (MatLab) Eduardo Lemos (Maple e EMSO) INTRODUÇÃO À PROGRAMAÇÃO Lógica de Programação Lógica de programação é a técnica de encadear pensamentos (instruções) para atingir determinado objetivo. Instruções Instruções são regras ou normas definidas para a realização ou emprego de algo. Em informática, é o que indica a um computador uma ação elementar a executar. INTRODUÇÃO À PROGRAMAÇÃO Algoritmo [Do lat. med. algorismos, algorithmos, 'algarismo', por infl. do gr. arithmós, 'número'.] 1. Matemática. Processo de cálculo, ou de resolução de um grupo de problemas semelhantes, em que se estipulam, com generalidade e sem restrições, regras formais para a obtenção do resultado, ou da solução do problema. 2. Informática. Conjunto de regras e operações bem definidas e ordenadas, destinadas à solução de um problema, ou de uma classe de problemas, em um número finito de etapas. [AURÉLIO] INTRODUÇÃO À PROGRAMAÇÃO Exemplos de Algoritmos instruções para se utilizar um aparelho eletrodoméstico; uma receita para preparo de algum prato; guia de preenchimento para declaração do imposto de renda; a regra para determinação de máximos e mínimos de funções por derivadas sucessivas; a maneira como as contas de água, luz e telefone são calculadas mensalmente; etc. INTRODUÇÃO À PROGRAMAÇÃO Características Todo algoritmo deve apresentar algumas características básicas: ter fim não dar margem à dupla interpretação (não ambíguo) capacidade de receber dado(s) de entrada poder gerar informações de saída para o mundo externo ao do ambiente do algoritmo ser efetivo (todas as etapas especificadas no algoritmo devem ser alcançáveis em um tempo finito) INTRODUÇÃO À PROGRAMAÇÃO Formas de Apresentação DESCRIÇÃO NARRATIVA EXEMPLO Receita de Bolo: Providencie manteiga, ovos, 2 Kg de massa, etc. Misture os ingredientes Despeje a mistura na fôrma de bolo Leve a fôrma ao forno Espere 20 minutos Retire a fôrma do forno Deixe esfriar Prove VANTAGENS: o português é bastante conhecido por nós; DESVANTAGENS: imprecisão; pouca confiabilidade (a imprecisão acarreta a desconfiança); extensão (normalmente, escreve-se muito para dizer pouca coisa). INTRODUÇÃO À PROGRAMAÇÃO FLUXOGRAMA EXEMPLO VANTAGENS: Uma das ferramentas mais conhecidas Figuras dizem muito mais que palavras Padrão mundial DESVANTAGENS: Pouca atenção aos dados, não oferecendo recursos para descrevê-los ou representá-los, além disso, complica-se à medida que o algoritmo cresce. INTRODUÇÃO À PROGRAMAÇÃO LINGUAGEM ALGORITMICA EXEMPLO VANTAGENS: Usa o português como base Pode-se definir quais e como os dados vão estar estruturados Passagem quase imediata do algoritmo para uma linguagem de programação qualquer DESVANTAGENS: Exige a definição de uma linguagem não real para trabalho Não padronizado INTRODUÇÃO À PROGRAMAÇÃO PSEUDOCÓDIGO EXEMPLO TESTE DE MESA EXEMPLO X=5 Y=9 SOMA = 5 + 9 ESCREVA SOMA = 14 INTRODUÇÃO À PROGRAMAÇÃO ALGORITMOS EXEMPLOS INTRODUÇÃO À PROGRAMAÇÃO OPERADORES Os operadores são meios pelo avaliamos dados dentro do computador. Operadores Aritméticos Operadores Relacionais Operadores Lógicos INTRODUÇÃO À PROGRAMAÇÃO Operadores Aritméticos Os operadores aritméticos são os utilizados para obter resultados numéricos. Além da adição, subtração, multiplicação e divisão, podem utilizar também o operador para exponenciação. INTRODUÇÃO À PROGRAMAÇÃO Operadores Relacionais Os operadores relacionais são utilizados para comparar String de caracteres e números. Os valores a serem comparados podem ser caracteres ou variáveis. Estes operadores sempre retornam valores lógicos (verdadeiro ou falso/ True ou False) INTRODUÇÃO À PROGRAMAÇÃO INTRODUÇÃO À PROGRAMAÇÃO Operadores Lógicos Os operadores lógicos servem para combinar resultados de expressões, retornando se o resultado final é verdadeiro ou falso. INTRODUÇÃO À PROGRAMAÇÃO A tabela abaixo mostra todos os valores possíveis criados pelos três operadores lógicos (AND, OR e NOT) Exemplo: Suponha que temos três variáveis A = 5, B = 8 e C =1 INTRODUÇÃO À PROGRAMAÇÃO Estruturas de Decisão e Repetição SE ... ENTÃO / IF ... THEN Estrutura Condicional Simples Exemplo: Atribui 4 a variavel A .. A > B ??? Atribui 3 a variavel B A = 4 Condição B = 3 Como a resposta é verdadeira : 4é>3 SE (A > B) ENTÃO (THEN) ENTÃO ESCREVA ‘A > B’ FIM SE Executa comando de escrita 18 INTRODUÇÃO À PROGRAMAÇÃO Estruturas de Decisão e Repetição SE ... ENTÃO ... SENÃO/ IF ... THEN ... ELSE Estrutura Condicional Composta Exemplo: Atribui 4 a variavel A .. A > B ??? Atribui 5 a variavel B Condição A = 4 B = 5 SE (A > B) Como a resposta não é ENTÃO verdadeira : 4 não é > 5 de ESCREVA ‘A > Executamos B’ Executao comando caso contrário escrita (ELSE) SENÃO ESCREVA ‘B > A’ FIM SE 20 INTRODUÇÃO À PROGRAMAÇÃO SE ... ENTÃO ... SENÃO/ IF ... THEN ... ELSE INTRODUÇÃO À PROGRAMAÇÃO Estruturas de Decisão e Repetição ENQUANTO ... PROCESSAR / DO WHILE ... LOOP Estrutura de Repetição Simples Exemplos: ..... i > 10 ??? Enquanto compradas!!!! i < 10 n = 10 %Número de peças preço = 5 %Preço de cada peça ENQUANTO i < n TOTAL Condição = TOTAL + preço 50 > 40??? i = i+1 Executa se verdade FIM ENQUANTO SE (TOTAL >= 40) Executa Caso ENTÃO contrário ESCREVA ‘NÃO TENHO COMO PAGAR!!!!’ SENÃO ESCREVA ‘ACHO QUE DÁ!’ FIM SE 23 INTRODUÇÃO À PROGRAMAÇÃO Estruturas de Decisão e Repetição PARA ... ATÉ ... PROCESSAR / DO ... UNTIL ... LOOP Estrutura de Repetição Simples Exemplos: i > 10 ??? ..... Para i < 10 n = 10 %Número de peças compradas!!!! preço = 5 %Preço de cada peça PARA i = 1 até n TOTAL = TOTAL + preço 50 > 40??? i = i +1 Condição Executa se verdade FIM PARA SE (TOTAL >= 40) Executa Caso contrário ENTÃO ESCREVA ‘NÃO TENHO COMO PAGAR!!!!’ SENÃO ESCREVA ‘ACHO QUE DÁ!’ FIM SE 25 início Leia altura Leia sexo Se sexo=M P = 72.7*altura - 58 P = 62.1*altura – 44.7 Escreva P fim início Leia idade Se id<5 Sem classificação Se id<=7 Infantil A Se id<=11 Infantil B Se id<=18 Adulto fim CURSO de NIVELAMENTO Métodos Computacionais PARTE II - INTRODUÇÃO AO MATLAB Rogério Pagano (MatLab) MATLAB O Matlab é um software destinado a fazer cálculos com matrizes (Matlab = MATrix LABoratory). OBJETIVO Introduzir comandos básicos do MATLAB para permitir um rápido acesso às potencialidades do ambiente. O utilizador iniciante poderá dispor de uma referência rápida para algumas possibilidades de uso do MATLAB. MATLAB MATLAB O MatLab é case sensitive (a≠ A) Comandos Básicos Inserir dados (variáveis, vetores, matrizes) Manipulação de vetores e matrizes clear variable; clear all; Comando lookfor: lookfor [-all] inverse MATLAB Exercício 1 Gere uma sequência de números pares com início em 4 e a terminar no número 100. Exercício 2 Gere uma sequência numérica decrescente com início em 5 e a terminar em -5. Exercício 3 Gere uma sequência numérica com 100 elementos pertencentes ao intervalo [0 . . . 1]. Exercício 4 Considere uma matriz A com 20 linhas e 30 colunas. Construa um comando que permita extrair para uma matriz B uma sub-matriz de A constituída pelas linhas de 10 a 15 e as colunas de 9 a 12. Exercício 5 Gere uma sequência de números múltiplos de 3 compreendidos entre 100 e 132, dispostos num vector por ordem decrescente. Exercício 6 Gere uma sequência a começar em π e a acabar em −π com um passo de −π/15. MATLAB Comandos Básicos (matrizes especiais) eye(n) = matriz identidade de dimensão n ones(n) = matriz somente com elementos iguais a unidade inv(A) = inversa da matriz A diag(u) = constrói uma matriz diagonal com o vetor u A’ = retorna a transposta de A zeros(n) = constrói uma matriz de dimensão n com zeros rand(n) = fornece uma matriz aleatória de dimensão n zeros(n) = constrói uma matriz de dimensão n com zeros MATLAB Números e matrizes associadas a A det(A) é o determinante (se A for uma matriz quadrada) [S,E] = eig(A) fornece uma matriz diagonal E de valores característicos e uma matriz S de vetores característicos rank(A) é o posto (número de pivôs = dimensão do espaço da linha e do espaço da coluna) size(A) é o par de números [m n] trace(A) é o traço = soma das entradas diagonais = soma dos valores característicos MATLAB Polinômios f(x) = x2 – 3x + 2 p = [1 -3 2]; r = roots(p) raízes do polinômio q = poly(r) calcula coeficientes com as raízes polyval(p,r) calcula o valor de r num polinômio de coef p MATLAB Outras funções (Polinômios) polyvalm - avalia o polinômio com o argumento sendo uma matriz conv - multiplicação deconv - divisão residue - expansão em frações parciais polyder - derivada do polinômio polyfit - ajuste do polinômio Exercício 10 Calcule o valor da função sin(x+pi/10) ∗ cos(x) em 100 pontos do intervalo [−π . . . π]. Exercício 11 Calcule o produto dos polinómios x6 + 10 e x2 − 2x + 3. Exercício 12 Obtenha o polinômio cujas raízes são os números inteiros 1, 2 e 3. MATLAB Formato numérico format short format short e format long format long e format hex Operadores MATLAB lógicos aritiméticos elemento a elemento MATLAB Funções intrínsecas MATLAB Otimização EDO MATLAB Gráficos t = 0:pi/100:2*pi; x = sin(t); plot(t,x) t = 0:pi/100:2*pi; x1 = sin(t); x2 = sin(t+pi/2); x3 = x1.*x2; plot(t,x1,t,x2,t,x3) legend(‘sin’,’cos’,’asin*cos’) fplot(‘sin(x)’,[ -pi, pi]) fplot(‘x^2+3’, [ -1, 2]) fplot(‘sin(x)’,[ -0, pi]) MATLAB Gráficos t = linspace(0,10*pi,1001); x = t + 3*sin(2*t); y = t + 5*cos(5*t); figure(1) plot(x,y) t = linspace(0,5*pi,5001); x = cos(t) - cos(80*t).*sin(t); y = 2*sin(t) - sin(80*t); figure(2) plot(x,y) Lembrar as funções hold on e hold off MATLAB Gráficos Outros tipos: MATLAB Outros tipos: MATLAB Gráficos X = 0:0.05:1; subplot(121), plot(X,X.^2,’k*’) subplot(122), plot(X,X.^2,’b --‘) MATLAB Gráficos 3D mesh [X,Y] = meshgrid(-8:.5:8); R = sqrt(X.^2 + Y.^2) + eps; Z = sin(R)./R; mesh(X,Y,Z) MATLAB Outros tipos de Gráficos 3D: