Prévia do material em texto
<p>Introdução ao Scilab e à</p><p>Programação de Computadores</p><p>Cursos de Engenharia</p><p>Daniel A. Furtado</p><p>Uberlândia</p><p>2014</p><p>Este documento foi escrito por Daniel A. Furtado e não pode ser reproduzido ou apropriado, total</p><p>ou parcialmente, sem a permissão do autor.</p><p>SUMÁRIO</p><p>C A P Í T U L O 1 INTRODUÇÃO AO SCILAB ........................................................................................................... 4</p><p>1.1 AMBIENTE DE TRABALHO E CONSOLE ................................................................................................................................. 4</p><p>1.2 OPERAÇÕES E EXPRESSÕES MATEMÁTICAS ......................................................................................................................... 5</p><p>1.3 PRECEDÊNCIA DOS OPERADORES ...................................................................................................................................... 6</p><p>EXERCÍCIOS PROPOSTOS ....................................................................................................................................................... 7</p><p>1.4 VARIÁVEIS .................................................................................................................................................................... 8</p><p>1.5 VARIÁVEIS ESPECIAIS DO SCILAB ....................................................................................................................................... 9</p><p>1.6 NOMES DE VARIÁVEIS..................................................................................................................................................... 9</p><p>EXERCÍCIOS PROPOSTOS ....................................................................................................................................................... 9</p><p>1.7 FUNÇÕES PREDEFINIDAS ................................................................................................................................................. 9</p><p>EXERCÍCIOS PROPOSTOS ..................................................................................................................................................... 12</p><p>C A P Í T U L O 2 INTRODUÇÃO A ALGORITMOS .................................................................................................13</p><p>2.1 ALGORITMO COMO UMA DESCRIÇÃO NARRATIVA .............................................................................................................. 14</p><p>2.2 ALGORITMO EM FLUXOGRAMA....................................................................................................................................... 15</p><p>2.2.1 Estrutura Condicional em Fluxograma ............................................................................................................ 17</p><p>C A P Í T U L O 3 ENTRADA E SAÍDA UTILIZANDO O SCINOTES ............................................................................19</p><p>3.1 FUNÇÕES INPUT E DISP .................................................................................................................................................. 20</p><p>3.2 FUNÇÃO PRINTF .......................................................................................................................................................... 21</p><p>3.3 COMENTÁRIOS ............................................................................................................................................................ 22</p><p>EXERCÍCIOS PROPOSTOS ..................................................................................................................................................... 23</p><p>C A P Í T U L O 4 ESTRUTURA CONDICIONAL IF-THEN-ELSE .................................................................................24</p><p>4.1 ESTRUTURA CONDICIONAL SIMPLES ................................................................................................................................ 26</p><p>4.2 ESTRUTURA CONDICIONAL ANINHADA ............................................................................................................................. 26</p><p>4.3 OPERADORES RELACIONAIS ........................................................................................................................................... 28</p><p>4.4 OPERADORES LÓGICOS ................................................................................................................................................. 28</p><p>EXERCÍCIOS PROPOSTOS ..................................................................................................................................................... 29</p><p>C A P Í T U L O 5 OPERAÇÕES COM VETORES ......................................................................................................31</p><p>5.1 ACESSANDO OS ELEMENTOS DE UM VETOR ....................................................................................................................... 31</p><p>5.2 MODIFICANDO UM VETOR ............................................................................................................................................ 32</p><p>5.3 UTILIZANDO O OPERADOR “:” PARA DEFINIR VETORES ....................................................................................................... 32</p><p>5.4 UTILIZANDO A FUNÇÃO LINSPACE .................................................................................................................................... 33</p><p>5.5 OPERAÇÕES COM VETORES ............................................................................................................................................ 34</p><p>5.6 OUTRAS FUNÇÕES APLICADAS A VETORES ........................................................................................................................ 34</p><p>EXERCÍCIOS PROPOSTOS ..................................................................................................................................................... 35</p><p>C A P Í T U L O 6 CONSTRUÇÃO DE GRÁFICOS .....................................................................................................36</p><p>6.1 GRÁFICOS DE FUNÇÕES ................................................................................................................................................. 36</p><p>6.1.1 Opções do Gráfico ........................................................................................................................................... 37</p><p>6.1.2 Título, Rótulos dos Eixos e Legenda ................................................................................................................ 39</p><p>6.1.3 Outras Opções do Gráfico ............................................................................................................................... 40</p><p>6.2 O COMANDO SUBPLOT ................................................................................................................................................. 41</p><p>6.3 OUTROS TIPOS DE GRÁFICOS ......................................................................................................................................... 44</p><p>C A P Í T U L O 7 OPERAÇÕES COM MATRIZES ....................................................................................................46</p><p>7.1 ACESSO AOS ELEMENTOS DA MATRIZ .............................................................................................................................. 47</p><p>7.2 ADICIONANDO E REMOVENDO LINHAS E COLUNAS ............................................................................................................. 48</p><p>7.3 OPERAÇÕES DE SOMA, SUBTRAÇÃO E MULTIPLICAÇÃO ....................................................................................................... 49</p><p>7.4 OUTRAS FUNÇÕES APLICADAS A MATRIZES .......................................................................................................................</p><p>0. 1. 2. 5.</p><p>1. 3. 4. 6.</p><p>Removendo uma Linha ou Coluna</p><p>-->C = [1, 2; 3, 4; 5, 6] (define uma matriz C)</p><p>C =</p><p>1. 2.</p><p>3. 4.</p><p>5. 6.</p><p>-->C(2,:) = [] (exclui a 2ª linha da matriz C)</p><p>C =</p><p>1. 2.</p><p>5. 6.</p><p>-->C(:,1) = [] (exclui a 1ª coluna da matriz C)</p><p>C =</p><p>2.</p><p>6.</p><p>Observe que quando uma linha ou coluna é excluída, as demais são reorganizadas para</p><p>ocupar o seu lugar.</p><p>7.3 Operações de Soma, Subtração e Multiplicação</p><p>As operações de soma, subtração e multiplicação de matrizes podem ser realizadas com os</p><p>próprios operadores matemáticos +, - e *, respectivamente. Entretanto, é preciso que as</p><p>matrizes operadas sejam compatíveis, de acordo com as restrições matemáticas. Veja os</p><p>exemplos:</p><p>50</p><p>Operações com Matrizes Prof. Dr. Daniel A. Furtado</p><p>-->A = [1,2; 3,4] (define uma matriz A)</p><p>A =</p><p>1. 2.</p><p>3. 4.</p><p>-->B = A (define uma matriz B igual à matriz A)</p><p>B =</p><p>1. 2.</p><p>3. 4.</p><p>-->C = A + B (calcula a soma das matrizes A e B e armazena em C.</p><p>C = As matrizes precisam ter as mesmas dimensões)</p><p>2. 4.</p><p>6. 8.</p><p>-->D = A – B (calcula a diferença das matrizes A e B)</p><p>D =</p><p>0. 0.</p><p>0. 0.</p><p>-->E = A * B (calcula o produto matricial de A por B.</p><p>E = O número de colunas da primeira deve ser igual ao</p><p>7. 10. número de linhas da segunda)</p><p>15. 22.</p><p>-->F = 2 * A + 1 (operação com escalares. Cada elemento da matriz A é</p><p>F = multiplicado por 2 e somado com 1, resultando em uma</p><p>3. 5. nova matriz F)</p><p>7. 9.</p><p>7.4 Outras Funções Aplicadas a Matrizes</p><p> length(A) – retorna o número total de elementos da matriz A;</p><p> sum(A) – calcula o somatório dos elementos de A;</p><p> det(A) – calcula o determinante da matriz quadrada A;</p><p> inv(A) – calcula a inversa da matriz quadrada A (se houver);</p><p> A' – calcula a matriz transposta de A;</p><p> diag(A) – retorna a diagonal principal da matriz A na forma de um vetor coluna;</p><p> size(A) – retorna as dimensões de A (o número de linhas e o número de colunas);</p><p> eye(m,n) – define uma matriz contendo 1‟s na diagonal principal e 0‟s nas</p><p>demais posições (matriz identidade);</p><p> zeros(m,n) – define uma matriz nula de tamanho ;</p><p> ones(m,n) – define uma matriz onde todos os elementos são iguais a 1;</p><p> rand(m,n) – define uma matriz de números aleatórios entre 0 e 1.</p><p>51</p><p>Operações com Matrizes Prof. Dr. Daniel A. Furtado</p><p>Exemplos:</p><p>-->A = [3,7,1;8,5,0] (define uma matriz A)</p><p>A =</p><p>3. 7. 1.</p><p>8. 5. 0.</p><p>-->length(A) (obtém o número total de elementos de A)</p><p>ans =</p><p>6.</p><p>-->size(A) (obtém o número de linhas e o número de colunas de A)</p><p>ans =</p><p>2. 3.</p><p>-->[L,C]=size(A) (obtém as dimensões de A, armazenando nas vars. L e C)</p><p>C =</p><p>3.</p><p>L =</p><p>2.</p><p>-->A = [A;[2,1,3]] (adiciona uma nova linha em A)</p><p>A =</p><p>3. 7. 1.</p><p>8. 5. 0.</p><p>2. 1. 3.</p><p>-->det(A) (calcula o determinante de A)</p><p>ans =</p><p>- 125.</p><p>-->A' (calcula a matriz transposta de A)</p><p>ans =</p><p>3. 8. 2.</p><p>7. 5. 1.</p><p>1. 0. 3.</p><p>-->inv(A) (calcula a matriz inversa de A)</p><p>ans =</p><p>-0.12 0.16 0.04</p><p>0.192 -0.056 -0.064</p><p>0.016 -0.088 0.328</p><p>-->eye(3,3) (matriz identidade 3 x 3)</p><p>ans =</p><p>1. 0. 0.</p><p>0. 1. 0.</p><p>0. 0. 1.</p><p>-->ones(3,3) (matriz 3 x 3 contendo apenas o valor 1)</p><p>ans =</p><p>1. 1. 1.</p><p>1. 1. 1.</p><p>1. 1. 1.</p><p>52</p><p>Operações com Matrizes Prof. Dr. Daniel A. Furtado</p><p>-->zeros(3,3) (matriz nula 3 x 3)</p><p>ans =</p><p>0. 0. 0.</p><p>0. 0. 0.</p><p>0. 0. 0.</p><p>-->rand(3,3) (matriz 3 x 3 de números aleatórios)</p><p>ans =</p><p>0.2113249 0.3303271 0.8497452</p><p>0.7560439 0.6653811 0.6857310</p><p>0.0002211 0.6283918 0.8782165</p><p>7.5 Resolução de Sistemas Lineares</p><p>Para resolver um sistema de equações lineares no Scilab, pode-se considerá-lo como uma</p><p>multiplicação de matrizes e realizar o cálculo da matriz inversa. Por exemplo, considere o</p><p>seguinte sistema:</p><p>{</p><p>Esse sistema pode ser representado pela multiplicação de matrizes:</p><p>(</p><p>) (</p><p>) (</p><p>)</p><p>que pode ser representada, de forma sucinta, por:</p><p>onde A é a matriz dos coeficientes, b é o vetor coluna dos termos independentes e s é o vetor</p><p>solução (</p><p>). Ao multiplicar os dois lados da equação pela matriz inversa de A, obtemos:</p><p>que resulta na equação:</p><p>Assim, para encontrar o vetor solução de um sistema linear, pode-se multiplicar a inversa da</p><p>matriz dos coeficientes do sistema (caso ela exista) pelo vetor coluna de seus termos</p><p>independentes. Por exemplo, o sistema linear anterior pode ser resolvido pelo programa:</p><p>A=[2,3;1,-1]; // define a matriz dos coeficientes</p><p>b=[19;-3]; // define o vetor coluna dos termos independentes</p><p>s=inv(A)*b; // resolve o sistema linear</p><p>printf("x=%.1f, y=%.1f", s(1), s(2)); // apresenta a solução do sistema</p><p>Entretanto, o sistema será possível e determinado apenas quando a matriz dos coeficientes</p><p>possuir inversa, o que acontece quando o seu determinante é diferente de zero. Assim,</p><p>convém verificar o determinante da matriz dos coeficientes antes de utilizar a função inv.</p><p>Isto é feito no exemplo a seguir.</p><p>53</p><p>Operações com Matrizes Prof. Dr. Daniel A. Furtado</p><p>Exemplo 1. Faça um programa que receba do usuário uma matriz 3x3 correspondente aos</p><p>coeficientes de um sistema linear e um vetor coluna correspondente aos termos</p><p>independentes. O programa deve encontrar e apresentar a solução do respectivo sistema,</p><p>caso ele seja possível e determinado. Caso contrário, uma mensagem adequada deve ser</p><p>apresentada.</p><p>A=input('Informe a matriz 3x3 dos coeficientes do sistema: ');</p><p>b=input('Informe o vetor coluna dos termos independentes: ');</p><p>if (det(A) ~= 0) then</p><p>s=inv(A)*b;</p><p>printf("x=%.1f, y=%.1f, z=%.1f", s(1), s(2), s(3));</p><p>else</p><p>printf('Sistema impossível ou indeterminado');</p><p>end</p><p>Um sistema linear da forma também pode ser resolvido no Scilab utilizando-se o</p><p>operador “\”. Neste caso, a solução é dada por: s = A \ b.</p><p>54</p><p>Estruturas de Repetição Prof. Dr. Daniel. A. Furtado</p><p>Capítulo 8</p><p>Estruturas de Repetição</p><p>8.1 Estrutura de Repetição while (enquanto)</p><p>A estrutura de repetição while (em português, “enquanto”) é utilizada quando se deseja</p><p>repetir a execução de um bloco de comandos enquanto uma determinada condição for</p><p>verdadeira. Sua forma geral de uso no Scilab é:</p><p>while (condição)</p><p>comando 1</p><p>comando 2</p><p>...</p><p>comando n</p><p>end</p><p>Antes dos comandos serem executados pela primeira vez, a condição é verificada. Caso ela</p><p>seja falsa, então o bloco de comandos não será executado nenhuma vez. Caso seja</p><p>verdadeira, então o bloco de comandos será executado enquanto a condição permanecer</p><p>verdadeira. Dessa forma, após a execução do último comando dentro do bloco (comando n, no</p><p>exemplo acima), a condição é novamente verificada, o que determina se os comandos</p><p>deverão ser executados novamente ou não. O diagrama a seguir ilustra a lógica de</p><p>funcionamento da estrutura while.</p><p>55</p><p>Estruturas de Repetição Prof. Dr. Daniel. A. Furtado</p><p>Exercícios Resolvidos</p><p>Exemplo 1. Faça um programa que receba o valor do raio de um círculo e calcule a sua área.</p><p>Caso o usuário informe um valor menor ou igual a 0 para o raio, o programa deverá solicitar</p><p>repetidamente outro valor, até que o usuário informe um número positivo.</p><p>r = input('Informe o valor do raio do círculo: ');</p><p>while (r <= 0)</p><p>printf('Valor inválido!');</p><p>r =</p><p>input('Informe um valor positivo para o raio: ');</p><p>end</p><p>area = %pi * r^2;</p><p>printf('A área do círculo de raio %d é %d', r, area);</p><p>Exemplo 2. Faça um programa para exibir na tela a mensagem “Olá” 100 vezes.</p><p>i = 1;</p><p>while (i <= 100)</p><p>printf('\nOlá!');</p><p>i = i + 1;</p><p>end</p><p>Exemplo 3. Utilizando a estrutura while, faça um programa para ler números inteiros do</p><p>teclado até que o número 0 seja lido. Ao término da leitura, o programa deverá apresentar a</p><p>soma de todos os números informados.</p><p>total = 0;</p><p>x = input('Digite o primeiro número: ');</p><p>while (x ~= 0)</p><p>total = total + x;</p><p>x = input('Digite o próximo número (ou 0 para encerrar): ');</p><p>end</p><p>printf('A soma dos números informados é: %d', total);</p><p>Estrutura while</p><p>56</p><p>Estruturas de Repetição Prof. Dr. Daniel. A. Furtado</p><p>Exemplo 4. Utilizando a estrutura while, faça um programa para ler números inteiros do</p><p>teclado até que o número 0 seja lido. Ao término, o programa deverá apresentar o maior</p><p>número lido (desconsiderando o valor 0).</p><p>x = input('Digite o primeiro número: ');</p><p>maior = x;</p><p>while (x ~= 0)</p><p>if (x > maior) then</p><p>maior = x</p><p>end</p><p>x = input('Digite o próximo número (ou 0 para encerrar): ');</p><p>end</p><p>printf('O maior número lido é: %d', maior);</p><p>Exemplo 5. Utilizando a estrutura while, faça um programa para calcular o somatório da série</p><p>1 + 2 + 3 + ... + N. O valor N deve ser solicitado ao usuário.</p><p>N = input('Informe o valor de N: ');</p><p>i = 1;</p><p>soma = 0;</p><p>while (i <= N)</p><p>soma = soma + i;</p><p>i = i + 1;</p><p>end</p><p>printf('O somatório é %d', soma);</p><p>Exemplo 6. Faça um programa que apresente na tela o seguinte menu de opções:</p><p>Menu de Opções</p><p>1 – Calcular a área de uma sala retangular</p><p>2 – Calcular a área de uma redonda</p><p>3 – Sair</p><p>Informe a opção desejada:</p><p>O programa deverá voltar ao menu após a execução da opção escolhida pelo usuário e deverá</p><p>ser encerrado apenas quando o usuário escolher a opção 3 (sair). Quando a opção 1 for</p><p>escolhida, por exemplo, o programa deverá solicitar as dimensões da sala retangular,</p><p>calcular e mostrar a sua área.</p><p>57</p><p>Estruturas de Repetição Prof. Dr. Daniel. A. Furtado</p><p>op = 0;</p><p>while (op ~= 3)</p><p>clc;</p><p>printf(' Menu de Opções \n');</p><p>printf('\n 1 - Calcular a área de uma sala retangular');</p><p>printf('\n 2 – Calcular a área de uma redonda');</p><p>printf('\n 3 – Sair \n\n');</p><p>op = input('Informe a opção desejada: ');</p><p>clc;</p><p>if (op == 1) then</p><p>b = input('Informe a largura da sala (em metros): ');</p><p>a = input('Informe o comprimento da sala (em metros): ');</p><p>area = b * a;</p><p>printf('A área da sala de larg. %d e comp. %d é %d m2', b, a, area);</p><p>else</p><p>if (op == 2) then</p><p>d = input('Informe o diâmetro da sala (em metros): ');</p><p>r = d / 2;</p><p>area = %pi*r^2;</p><p>printf('A area da sala é %f m2', area);</p><p>end</p><p>end</p><p>input('Pressione ENTER para continuar');</p><p>end</p><p>printf('Fim do programa');</p><p>Exemplo 6. Faça um programa para calcular o somatório dos números pares menores que</p><p>um dado número N fornecido pelo usuário.</p><p>N = input('Informe o valor de N: ');</p><p>i = 2;</p><p>soma = 0;</p><p>while (i <= N)</p><p>soma = soma + i;</p><p>i = i + 2;</p><p>end</p><p>printf('O somatório é %d', soma);</p><p>8.2 Estrutura de Repetição for (“repita para”)</p><p>A estrutura de repetição for é comumente empregada quando se deseja repetir a execução de</p><p>um bloco de comandos para cada valor que uma variável assume a partir de uma expressão.</p><p>A forma geral de utilização da estrutura for no Scilab é:</p><p>for variável = expressão</p><p>comando 1</p><p>comando 2</p><p>...</p><p>comando n</p><p>end</p><p>58</p><p>Estruturas de Repetição Prof. Dr. Daniel. A. Furtado</p><p>A expressão utilizada no laço for geralmente define um vetor de números inteiros, que</p><p>indica o valor que a variável receberá durante cada ciclo de execução. Por exemplo, o</p><p>programa a seguir exibe na tela os valores que a variável i receberá ao longo de sua execução.</p><p>for i = 1:5</p><p>printf('\nValor da variável i: %d', i);</p><p>end</p><p>O programa anterior produz o seguinte resultado:</p><p>Valor da variável i: 1</p><p>Valor da variável i: 2</p><p>Valor da variável i: 3</p><p>Valor da variável i: 4</p><p>Valor da variável i: 5</p><p>Embora o comando for possa ser empregado também em outros contextos, a forma ilustrada</p><p>a seguir é a mais comum:</p><p>for variável = valorInicial : incremento(ou decremento) : limiteSuperior(inferior)</p><p>comando 1</p><p>comando 2</p><p>...</p><p>comando n</p><p>end</p><p>Exercícios Resolvidos</p><p>Exemplo 1. Faça um programa utilizando a estrutura for para apresentar na tela todos os</p><p>números inteiros do intervalo [1, N], onde N é um número inteiro informado pelo usuário.</p><p>N = input('Informe o valor de N: ');</p><p>for i = 1:N</p><p>printf('\n %d', i);</p><p>end</p><p>Exemplo 2. Faça um programa utilizando a estrutura for para apresentar na tela todos os</p><p>números inteiros pares do intervalo [0, N], onde N é informado pelo usuário.</p><p>N = input('Informe o valor de N: ');</p><p>for i = 0:2:N</p><p>printf('\n %d', i);</p><p>end</p><p>Exemplo 3. Faça um programa utilizando a estrutura for para apresentar na tela a sequência</p><p>de valores 100, 95, 90, 85, ..., 15, 10.</p><p>for i = 100:-5:10</p><p>printf('\n %d', i);</p><p>end</p><p>59</p><p>Estruturas de Repetição Prof. Dr. Daniel. A. Furtado</p><p>Exemplo 4. Utilizando a estrutura for, faça um programa para calcular o somatório 20 + 21 +</p><p>22 + ... + 2N. O valor N deve ser informado pelo usuário.</p><p>N = input('Informe o valor de N: ');</p><p>soma = 0;</p><p>for i = 0:N</p><p>soma = soma + 2^i;</p><p>end</p><p>printf('A soma dos valores é %d', soma);</p><p>Exemplo 5. Utilizando a estrutura for, faça um programa para ler um vetor de números</p><p>inteiros e em seguir calcular o produto de todos os elementos do vetor.</p><p>v = input('Informe um vetor de valores: ');</p><p>n = length(v); // a função length calcula o número de elementos de um vetor</p><p>produto = 1;</p><p>for i = 1:n</p><p>produto = produto * v(i);</p><p>end</p><p>printf('O produto dos elementos do vetor é %d', produto);</p><p>Exemplo 6. Utilizando a estrutura for, faça um programa para somar todos os elementos da</p><p>matriz A = rand(50,100).</p><p>A = rand(50,100);</p><p>soma = 0;</p><p>for i = 1:50</p><p>for j = 1:100</p><p>soma = soma + A(i,j);</p><p>end</p><p>end</p><p>printf('A soma dos números aleatórios gerados é %d', soma);</p><p>60</p><p>Estruturas de Repetição Prof. Dr. Daniel. A. Furtado</p><p>Referências</p><p>1. BAUDIN, Michael. Introduction to Scilab. The Scilab Consortium, 2010.</p><p>2. KNUTH, D. E. Art of Computer Programming, Volume 1: Fundamental Algorithms. 3.</p><p>ed. Reading, Massachusetts: Addison-Wesley, 1997.</p><p>3. ASCENCIO, A. F. G. & CAMPOS, E. A. V. Fundamentos da programação de</p><p>computadores: Algoritmos, Pascal e C/C++. São Paulo: Pearson Prentice Hall, 2002.</p><p>4. www.scilab-enterprises.com</p><p>5. www.scilab.org</p><p>http://www.scilab.org/</p><p>50</p><p>7.5 RESOLUÇÃO DE SISTEMAS LINEARES ................................................................................................................................ 52</p><p>C A P Í T U L O 8 ESTRUTURAS DE REPETIÇÃO.....................................................................................................54</p><p>8.1 ESTRUTURA DE REPETIÇÃO WHILE (ENQUANTO) ................................................................................................................. 54</p><p>8.2 ESTRUTURA DE REPETIÇÃO FOR (“REPITA PARA”) ............................................................................................................... 57</p><p>4</p><p>Introdução ao Scilab Prof. Dr. Daniel A. Furtado</p><p>Capítulo 1</p><p>Introdução ao Scilab</p><p>Scilab é um software livre, de computação numérica, que oferece um poderoso ambiente</p><p>computacional para aplicações científicas e de engenharia. O software é mantido e</p><p>distribuído pela Scilab Enterprises e pode ser baixado gratuitamente pela Internet</p><p>(www.scilab.org). Atualmente, o Scilab é utilizado em diversos centros educacionais e</p><p>industriais pelo mundo. Algumas das várias atividades que podem ser realizadas no Scilab</p><p>são:</p><p> Operações e simulações matemáticas,</p><p> Operações com polinômios,</p><p> Construção de gráficos,</p><p> Processamento de sinais,</p><p> Cálculos estatísticos,</p><p> Operações com matrizes,</p><p> Resolução de equações diferenciais,</p><p> Interpolação e aproximação,</p><p> Projeto e análise de sistemas de controle.</p><p>1.1 Ambiente de Trabalho e Console</p><p>O ambiente de trabalho padrão da versão 5.4.0 do Scilab é apresentado a seguir. O ambiente</p><p>é organizado em um conjunto de janelas menores que são encaixadas na janela principal. São</p><p>elas: Navegador de arquivos, Console do Scilab, Navegador de variáveis e Histórico de comandos. A</p><p>janela Console do Scilab é utilizada para a execução de operações diversas.</p><p>http://www.scilab-enterprises.com/</p><p>http://www.scilab.org/</p><p>5</p><p>Introdução ao Scilab Prof. Dr. Daniel A. Furtado</p><p>Figura 1.1 - Tela inicial do Scilab</p><p>O sinal de prontidão “-->” indica que o Scilab aguarda a digitação de um comando ou</p><p>expressão, que deve ser finalizado pela tecla ENTER. Exemplos:</p><p>-->5+10</p><p>ans =</p><p>10.</p><p>-->10/4</p><p>ans =</p><p>2.5</p><p>Observe que o resultado é precedido por “ans” de answer (resposta).</p><p>1.2 Operações e Expressões Matemáticas</p><p>As operações básicas da matemática podem ser realizadas no Scilab por meio dos seguintes</p><p>operadores:</p><p>+ Soma</p><p>- Subtração</p><p>* Multiplicação</p><p>/ Divisão</p><p>^ Potenciação (</p><p>Exemplos:</p><p>-->2*6</p><p>ans =</p><p>12.</p><p>6</p><p>Introdução ao Scilab Prof. Dr. Daniel A. Furtado</p><p>-->2^3</p><p>ans =</p><p>8.</p><p>-->3+5-1</p><p>ans =</p><p>7.</p><p>Se necessário, o comando clc (de clear console) pode ser utilizado para limpar o console.</p><p>1.3 Precedência dos Operadores</p><p>Quando uma expressão envolve diversos operadores, o Scilab considera a ordem de</p><p>precedência dos mesmos para avaliar a expressão:</p><p>Prioridade Operação</p><p>1ª Potenciação: ^</p><p>2ª Multiplicação e divisão: *, /</p><p>3ª Soma e subtração: +, -</p><p>Exemplos:</p><p>-->4*3^2</p><p>ans =</p><p>36.</p><p>Como o operador de potenciação tem maior prioridade em relação ao</p><p>de multiplicação, a operação 3^2 é avaliada primeiro e o seu resultado</p><p>(9) é multiplicado por 4.</p><p>-->10+4/2</p><p>ans =</p><p>12.</p><p>4/2 é avaliado primeiro, pois o operador de divisão tem prioridade</p><p>sobre o de adição. O resultado é então somado com 10.</p><p>-->2+3*4-1</p><p>ans =</p><p>13.</p><p>3*4 é avaliado primeiro.</p><p>A ordem de avaliação das operações pode ser definida utilizando-se os parênteses. Por</p><p>exemplo, caso seja necessário resolver a expressão matemática a seguir, os parênteses se</p><p>tornam essenciais.</p><p>Expressão matemática:</p><p>Expressão equivalente no Scilab: -->(10+4)/2</p><p>Repare que, se os parênteses não fossem utilizados, a expressão 10+4/2 no Scilab seria</p><p>equivalente à expressão matemática</p><p>, que é diferente da expressão anterior (a primeira</p><p>expressão resulta em 7, enquanto a segunda resulta em 12).</p><p>7</p><p>Introdução ao Scilab Prof. Dr. Daniel A. Furtado</p><p>Outros exemplos:</p><p>Expressão Matemática Expressão correspondente no Scilab</p><p>-->1/2 + 3/5 - 5/8</p><p>-->(3+2^5)/5</p><p>-->(5*(4+2)–1)/(10+3^2)</p><p>-->(2^4+2^6)/(2^5-1)+20</p><p>Quando uma expressão envolve operadores de mesma prioridade, o Scilab avalia primeiro a</p><p>operação mais à esquerda. Por exemplo, na expressão 5-3+1, os operadores de soma e</p><p>subtração possuem a mesma prioridade. Assim, a operação 5-3 é calculada primeiro e o</p><p>resultado (2) é então somado com 1, resultando em 3. Repare que o resultado seria diferente</p><p>caso a operação de adição fosse feita antes da subtração. O mesmo acontece com expressão</p><p>10/5*2. A operação 10/5 é calculada primeiro, pois está mais à esquerda, e o resultado é</p><p>multiplicado por 2. Esta regra é denominada de associatividade à esquerda.</p><p>Exercícios Propostos</p><p>Elabore expressões no SciLab correspondentes às expressões matemáticas a seguir. Utilize o</p><p>menor número de parênteses possível.</p><p>a) 10 + 20</p><p>b) 2 ∙ 45</p><p>c) (resp: 7,2)</p><p>d) + 1 (resp: 17)</p><p>e) (resp: 32)</p><p>f)</p><p>(resp: 0,9)</p><p>g)</p><p>(resp: 2,2)</p><p>h)</p><p>+ 7 (resp: 53,5)</p><p>i)</p><p>(resp: 1,538...)</p><p>j)</p><p>8</p><p>Introdução ao Scilab Prof. Dr. Daniel A. Furtado</p><p>1.4 Variáveis</p><p>Em computação, uma variável corresponde a uma posição na memória do computador que é</p><p>associada a um nome de identificação. As variáveis são comumente utilizadas para armazenar</p><p>dados temporariamente, como números, resultados de expressões, cadeia de caracteres ou</p><p>valores lógicos. No Scilab, as variáveis podem ser definidas e utilizadas diretamente no</p><p>console. Veja o exemplo:</p><p>-->a = 10</p><p>a =</p><p>10.</p><p>A expressão “a = 10” é utilizada para definir uma variável de nome “a” a fim de</p><p>armazenar o valor 10. O símbolo de igualdade é denominado de operador de atribuição, uma</p><p>vez que atribui (armazena) o valor à variável. Após ser definida, a variável permanece</p><p>disponível até que o Scilab seja fechado ou até que o usuário apague a mesma manualmente</p><p>(pode-se digitar o comando clear seguido do nome da variável).</p><p>Outros exemplos:</p><p>-->b = 2 + 3</p><p>b =</p><p>5.</p><p>Define uma variável de nome b para armazenar o resultado da</p><p>expressão 2 + 3.</p><p>-->b</p><p>b =</p><p>5.</p><p>Acessa o conteúdo da variável b, definida anteriormente.</p><p>-->c = 2*b + 1</p><p>c =</p><p>11.</p><p>Define uma nova variável c para armazenar o resultado de (2*b + 1),</p><p>que resulta em 11.</p><p>-->soma = b + c</p><p>soma =</p><p>16.</p><p>Define uma nova variável de nome soma para armazenar a soma das</p><p>variáveis b e c.</p><p>-->b = b + 1</p><p>b =</p><p>6.</p><p>Altera o valor da variável b, adicionando 1 ao seu conteúdo.</p><p>-->t = 'teste'</p><p>t =</p><p>teste</p><p>Também é possível criar variáveis para armazenar cadeias de</p><p>caracteres (strings), desde que eles sejam especificados entre aspas.</p><p>-->d = 30;</p><p>Define a variável d. OBS: O ponto-e-vírgula é utilizado para suprimir</p><p>a resposta imediata do Scilab.</p><p>-->d Mostrar o conteúdo da variável d</p><p>-->clear b Apaga apenas a variável b.</p><p>-->clear Apaga todas as variáveis definidas pelo usuário.</p><p>9</p><p>Introdução ao Scilab Prof. Dr. Daniel A. Furtado</p><p>1.5 Variáveis Especiais do Scilab</p><p>O Scilab disponibiliza ao usuário um conjunto de variáveis pré-definidas. Algumas delas são</p><p>as variáveis %pi e %e que armazenam os valores da constante matemática e do número de</p><p>Euler, respectivamente:</p><p>-->%pi</p><p>%pi =</p><p>3.1415927</p><p>-->%e</p><p>%e =</p><p>2.7182818</p><p>1.6 Nomes de Variáveis</p><p>Os nomes das variáveis devem ser escolhidos com atenção. Algumas regras são:</p><p> O nome da variável não deve começar com um algarismo;</p><p> Não são permitidos acentos, espaços ou caracteres especiais como: ç, !, ?, @ , etc;</p><p> Entretanto, o caractere sublinha “_” é permitido;</p><p> O Scilab faz distinção entre letras minúsculas</p><p>e maiúsculas.</p><p>Exemplos de nomes inválidos para variáveis: &a, 5_a, +2, área, núm, var@, área total.</p><p>Exercícios Propostos</p><p>1. Defina uma variável de nome x para armazenar o valor 8.</p><p>2. Acesse o conteúdo da variável x.</p><p>3. Defina uma variável de nome y como sendo igual a 2x + 1.</p><p>4. Atualize a variável y acrescentando 2 ao seu conteúdo.</p><p>5. Acesse o conteúdo da variável y.</p><p>6. Defina três variáveis a, b e c para armazenar valores de sua escolha.</p><p>7. Defina uma variável de nome delta para armazenar o resultado de</p><p>8. Defina uma variável z como sendo igual ao produto de x por y. Utilize o ponto-e-</p><p>vírgula no final da expressão e verifique a diferença entre utilizá-lo ou não.</p><p>1.7 Funções Predefinidas</p><p>O Scilab disponibiliza ao usuário uma vasta coleção de funções que realizam cálculos</p><p>diversos e podem ser utilizadas diretamente no console. Por exemplo, a função sqrt calcula a</p><p>raiz quadrada de um número (do inglês, square root - sqrt):</p><p>-->sqrt(9)</p><p>ans =</p><p>3.</p><p>10</p><p>Introdução ao Scilab Prof. Dr. Daniel A. Furtado</p><p>-->y = sqrt(49)</p><p>y =</p><p>7.</p><p>Outros exemplos são as funções trigonométricas sin e cos que calculam o seno e o cosseno,</p><p>respectivamente, de um ângulo em radianos.</p><p>Exemplos:</p><p>-->cos(%pi)</p><p>ans =</p><p>- 1.</p><p>-->sin(%pi/2)</p><p>ans =</p><p>1.</p><p>Para executar uma função no Scilab, utiliza-se frequentemente a seguinte sintaxe:</p><p>nomeDaFunção ( argumentos_de_entrada )</p><p>Observe que os argumentos de entrada da função devem ser passados entre parênteses, logo</p><p>após o nome da função. No Scilab, há funções que operam sobre zero, um ou vários</p><p>argumentos de entrada. A função sqrt apresentada anteriormente exige um único</p><p>argumento. Já a função max, responsável por calcular o maior dentre dois ou mais números,</p><p>é capaz de operar sobre diversos argumentos de entrada. Neste caso, eles devem ser</p><p>separados por vírgula:</p><p>-->max(3,4)</p><p>ans =</p><p>4.</p><p>-->max(6,3,5)</p><p>ans =</p><p>6.</p><p>-->max(2,6,3,5,12,8)</p><p>ans =</p><p>12.</p><p>Outros exemplos de funções:</p><p>Função Descrição Exemplos</p><p>abs Calcula o valor absoluto de um número</p><p>ou expressão.</p><p>-->abs(-5)</p><p>ans =</p><p>5.</p><p>round Arredonda um número para o inteiro</p><p>mais próximo.</p><p>-->round(5.1)</p><p>ans =</p><p>5.</p><p>-->round(7.6)</p><p>ans =</p><p>8.</p><p>-->round(2.5)</p><p>ans = 3.</p><p>11</p><p>Introdução ao Scilab Prof. Dr. Daniel A. Furtado</p><p>floor Arredonda um número para o próximo</p><p>inteiro menor. Se o valor já for inteiro,</p><p>retorna o próprio.</p><p>-->floor(5.1)</p><p>ans =</p><p>5.</p><p>-->floor(7.6)</p><p>ans =</p><p>7.</p><p>-->floor(12)</p><p>ans =</p><p>12.</p><p>-->floor(-4.9)</p><p>ans =</p><p>-5.</p><p>ceil Arredonda um número para o próximo</p><p>inteiro maior. Se o valor já for inteiro,</p><p>retorna o próprio.</p><p>-->ceil(5.1)</p><p>ans =</p><p>6.</p><p>-->ceil(7.6)</p><p>ans =</p><p>8.</p><p>-->ceil(12)</p><p>ans =</p><p>12.</p><p>min Calcula o menor número de uma lista de</p><p>números.</p><p>-->min(3,8,5,2,7)</p><p>ans =</p><p>2.</p><p>sin, cos, tan Calculam, respectivamente, o seno, o</p><p>cosseno e a tangente de um ângulo (em</p><p>radianos).</p><p>-->sin(%pi/2)</p><p>ans =</p><p>1.</p><p>-->cos(%pi)</p><p>ans =</p><p>-1.</p><p>-->tan(45 * %pi/180)</p><p>ans =</p><p>1.</p><p>sind, cosd,</p><p>tand</p><p>Calculam, respectivamente, o seno, o</p><p>cosseno e a tangente de um ângulo em</p><p>graus.</p><p>-->sind(90)</p><p>ans =</p><p>1.</p><p>asin, acos,</p><p>atan</p><p>Calculam, respectivamente, o arco-seno,</p><p>o arco-cosseno e o arco-tangente, com o</p><p>resultado em radianos.</p><p>-->asin(1)</p><p>ans =</p><p>1.5707963</p><p>log, log10,</p><p>log2</p><p>Calculam, respectivamente, o logaritmo</p><p>de um número na base e (logaritmo</p><p>natural), na base 10 e na base 2.</p><p>-->log(%e)</p><p>ans =</p><p>1.</p><p>-->log10(100)</p><p>ans =</p><p>2.</p><p>modulo Calcula o resto da divisão inteira de um</p><p>número por outro.</p><p>-->modulo(6,2)</p><p>ans =</p><p>0.</p><p>-->modulo(5,2)</p><p>ans =</p><p>1.</p><p>12</p><p>Introdução ao Scilab Prof. Dr. Daniel A. Furtado</p><p>Exercícios Propostos</p><p>1. Elabore expressões no Scilab que sejam equivalentes às expressões matemáticas a seguir:</p><p>a) √ Resp.: 16</p><p>b) Resp.: 2.4771213</p><p>c) Resp.: 9</p><p>d) Resp.: 3.2188758</p><p>e) Resp.: 0.9396926</p><p>f) Resp.: 0.8660254</p><p>g) Resp.: 6.2831853</p><p>h) Resp.: 1</p><p>i)</p><p>Resp.: 0.7071068</p><p>j)</p><p>Resp.: 1</p><p>k) Resp.: 145</p><p>l)</p><p>Resp.: 166.5</p><p>m)</p><p>√</p><p>Resp.: -484.99032</p><p>n) |√ | Resp.: 120.52786</p><p>o)</p><p>√</p><p>√</p><p>Resp.: 14.202356</p><p>p)</p><p>√</p><p>(</p><p>) Resp.: 27.897856</p><p>2. Calcule o resto da divisão inteira de 25 por 7. Resp.: 4</p><p>3. Calcule o resto da divisão inteira de 11 por 2. Resp.: 1</p><p>4. Forneça a expressão para arredondar o número 9.75 para o inteiro mais próximo.</p><p>5. Forneça a expressão para arredondar o número 9.75 para 9.</p><p>13</p><p>Introdução a Algoritmos Prof. Dr. Daniel. A. Furtado</p><p>Capítulo 2</p><p>Introdução a Algoritmos</p><p>Os programas de computador podem ser desenvolvidos para solucionar problemas de</p><p>diversas áreas do conhecimento. Durante o desenvolvimento desses programas, é sempre</p><p>desejável a busca por soluções eficientes, que possam ser executadas pelo computador de</p><p>forma a atender os requisitos do problema e ao mesmo tempo minimizar o uso de recursos,</p><p>como o processador e a memória da máquina. Neste contexto, é comum a busca pelas</p><p>soluções que envolvam os melhores algoritmos.</p><p>Embora não exista uma definição formal universalmente aceita para algoritmo, o termo pode</p><p>ser definido informalmente como uma sequência de instruções que levam à solução de um</p><p>dado problema. Por exemplo, uma simples sequência de passos que descreve o processo de</p><p>preparação de um sanduíche pode ser vista como um algoritmo, pois tais passos</p><p>correspondem às instruções que devem ser seguidas para que o problema “fazer o</p><p>sanduíche” seja resolvido. No mundo real, muitos problemas de engenharia e de</p><p>computação são resolvidos desenvolvendo-se, inicialmente, um ou um conjunto de</p><p>algoritmos que solucionam o problema em questão. Posteriormente, tais algoritmos são</p><p>implementados em software utilizando-se uma linguagem de programação, como C++, C#</p><p>ou Java.</p><p>Conforme verificado por Donald Knuth, um algoritmo deve ter cinco</p><p>propriedades/capacidades:</p><p>1) Finitude. Um algoritmo deve sempre terminar após um número finito de instruções.</p><p>2) Clareza. Cada passo do algoritmo deve ser especificado com clareza, precisão e sem</p><p>ambiguidade.</p><p>3) Entrada. Um algoritmo geralmente possui um ou mais elementos de entrada, que</p><p>devem ser fornecidos para a execução adequada das instruções.</p><p>4) Saída. Um algoritmo produz um ou mais elementos de saída (ou resultado).</p><p>14</p><p>Introdução a Algoritmos Prof. Dr. Daniel. A. Furtado</p><p>5) Eficácia. Um algoritmo deve ser eficaz. Todas as suas instruções devem ser passíveis</p><p>de execução em tempo finito.</p><p>Um algoritmo pode ser especificado de três formas principais, que são: (1) descrição</p><p>narrativa, (2) fluxograma e (3) linguagem algorítmica (pseudocódigo). Cada uma dessas</p><p>formas apresenta suas próprias vantagens e desvantagens e a escolha adequada pode</p><p>depender do tipo e da complexidade do problema a ser resolvido. Nesta capítulo,</p><p>apresentamos brevemente as formas (1) e (2).</p><p>2.1 Algoritmo como uma Descrição Narrativa</p><p>Quando um algoritmo é especificado na forma de uma descrição narrativa, utiliza-se a</p><p>linguagem natural (o próprio português) para descrever os seus passos.</p><p>Exemplo 1. Considere o problema “preparar um misto quente”. A sequência de passos a</p><p>seguir constitui um algoritmo em descrição narrativa que o soluciona:</p><p>1) Preparar os ingredientes: manteiga, duas fatias de pão, uma de queijo e uma de</p><p>presunto;</p><p>2) Passar a manteiga em ambas as fatias de pão;</p><p>3) Colocar o presunto sobre uma fatia de pão e o queijo sobre a outra;</p><p>4) Juntar as duas fatias, fechando o sanduíche;</p><p>5)</p><p>Colocar o sanduíche em uma sanduicheira e aguardar até o pão tostar;</p><p>6) Retirar o sanduíche da sanduicheira.</p><p>Repare que o algoritmo é composto por um conjunto finito de passos e tem um início e um</p><p>fim. Os elementos de entrada são os ingredientes (manteiga, pão, queijo e presunto) e a saída</p><p>é o sanduíche pronto. Os passos são claros e passíveis de realização.</p><p>Exemplo 2. Considere o problema “Dadas as dimensões (em metros) de uma piscina</p><p>retangular, calcule a sua capacidade em litros de água”. Um algoritmo que o soluciona é:</p><p>1) Receber as três dimensões da piscina: largura, comprimento e profundidade;</p><p>2) Calcular o volume da piscina, em metros cúbicos, multiplicando: largura x</p><p>comprimento x profundidade;</p><p>3) Calcular o volume da piscina em litros, multiplicando o volume em m3 por 1000;</p><p>4) Apresentar o volume em litros.</p><p>Exemplo 3. Considere o seguinte problema:</p><p>“Dadas as três notas de um aluno correspondentes a três provas semestrais, calcular a sua nota final</p><p>(somatório das três notas) e apresentar a sua situação, que pode ser: APROVADO, caso a nota final</p><p>seja maior ou igual a 70; ou REPROVADO, caso a nota final seja inferior a 70.”</p><p>A sequência de passos a seguir constitui um algoritmo que o soluciona:</p><p>15</p><p>Introdução a Algoritmos Prof. Dr. Daniel. A. Furtado</p><p>1) Receber as três notas do aluno;</p><p>2) Calcular a nota final do aluno somando as três notas recebidas;</p><p>3) Verificar se a nota final é maior ou igual a 70;</p><p>4) Caso a nota final seja maior ou igual a 70, apresentar a mensagem APROVADO;</p><p>5) Caso contrário (ou seja, nota final menor que 70), apresentar a mensagem</p><p>REPROVADO.</p><p>As principais vantagens e desvantagens de um algoritmo em descrição narrativa são:</p><p>Vantagem</p><p> Utiliza a linguagem natural, já conhecida.</p><p>Desvantagens</p><p> Impreciso,</p><p> Possível ambiguidade,</p><p> Extenso.</p><p>2.2 Algoritmo em Fluxograma</p><p>Um algoritmo também pode ser especificado por meio de um diagrama. Neste caso, vários</p><p>símbolos gráficos são utilizados para a sua composição:</p><p>Nome Símbolo Significado</p><p>Oval (início/fim)</p><p>Indica o início ou o fim do algoritmo.</p><p>Retângulo (processo)</p><p>Indica um processo ou operação do</p><p>algoritmo.</p><p>Losango (decisão)</p><p>Indica que uma decisão deve ser tomada e</p><p>que a execução deve seguir por uma de duas</p><p>possíveis direções.</p><p>Paralelograma</p><p>(entrada/saída)</p><p>Indica uma operação de entrada ou saída.</p><p>Círculo (conector) Utilizado como ponto de junção de dois ou</p><p>mais ramos de execução.</p><p>Seta Indica a direção do fluxo de operações.</p><p>O algoritmo do Exemplo 1 apresentado anteriormente pode ser especificado, em fluxograma,</p><p>da seguinte forma:</p><p>16</p><p>Introdução a Algoritmos Prof. Dr. Daniel. A. Furtado</p><p>O algoritmo do Exemplo 2, já apresentado em descrição narrativa, pode ser especificado em</p><p>fluxograma da seguinte forma:</p><p>Início</p><p>Fim</p><p>Entrada: comprimento, largura e</p><p>profundidade da piscina</p><p>VolumeM3 comprimento * largura * profundidade</p><p>VolumeL VolumeM3 * 1000</p><p>Saída: VolumeL</p><p>Início</p><p>Fim</p><p>Entrada: manteiga, 2 fatias de pão, 1</p><p>fatia de queijo e 1 de presunto</p><p>Passar a manteiga em ambas as fatias de pão</p><p>Colocar o presunto sobre uma fatia de pão e o queijo sobre a outra</p><p>Juntar as duas fatias, fechando o sanduíche</p><p>Colocar o sanduíche em uma sanduicheira e aguardar até o pão tostar</p><p>Retirar o sanduíche da sanduicheira</p><p>Saída: sanduíche pronto</p><p>17</p><p>Introdução a Algoritmos Prof. Dr. Daniel. A. Furtado</p><p>No fluxograma anterior, a etapa “Entrada: comprimento, largura, profundidade” é utilizada</p><p>para expressar o fato de, nesse momento, as três dimensões da piscina precisam ser</p><p>fornecidas, de alguma forma, para que a execução do algoritmo possa prosseguir. A partir</p><p>desse passo, as três medidas de dimensões serão representadas pelos termos comprimento,</p><p>largura e profundidade.</p><p>Ao invés de “Entrada: comprimento, largura, profundidade”, também é comum o uso da</p><p>expressão “LEIA comprimento, largura, profundidade”, a qual mantém o mesmo significado.</p><p>Observe o passo:</p><p>A seta para a esquerda () é empregada para indicar que, a partir desse ponto no algoritmo,</p><p>o termo VolumeM3 representará o resultado da expressão comprimento * largura * profundidade.</p><p>Esse termo é utilizado no passo seguinte, onde o volume em litros é calculado a partir do</p><p>volume em metros cúbicos:</p><p>2.2.1 Estrutura Condicional em Fluxograma</p><p>Um algoritmo em fluxograma correspondente ao Exemplo 3 (problema para determinar a</p><p>situação final de um aluno) é apresentado a seguir. Neste caso, utilizamos o símbolo</p><p>condicional losango ( ). Este símbolo deve ser empregado quando uma decisão precisa</p><p>ser tomada com base na análise de uma condição. No exemplo citado, o losango indica que a</p><p>condição “NotaFinal ≥ 70?” deve ser avaliada. Caso ela seja verdadeira, então a execução do</p><p>algoritmo deve seguir pelo ramo indicado pela seta “SIM”. Caso contrário (condição falsa),</p><p>então a execução deve seguir pelo ramo indicado pela seta “NÃO”.</p><p>VolumeM3 comprimento * largura * profundidade</p><p>VolumeL VolumeM3 * 1000</p><p>18</p><p>Introdução a Algoritmos Prof. Dr. Daniel. A. Furtado</p><p>Exemplo 4. Desenvolver um algoritmo, em fluxograma, para calcular e apresentar as raízes</p><p>de uma equação do segundo grau (ax2 + bx + c = 0). O algoritmo deve receber os três</p><p>coeficientes da equação, a, b e c, e apresentar mensagens adequadas de acordo com as</p><p>possíveis raízes.</p><p>Fim</p><p>Mostrar mensagem</p><p>“Raízes distintas:”, x1, x2</p><p>Início</p><p>LEIA a, b, c</p><p>D b2 – 4 · a · c</p><p>D > 0?</p><p>SIM</p><p>NÃO</p><p>D = 0?</p><p>SIM</p><p>NÃO</p><p>x1 (-b + √ ) / (2· a)</p><p>x2 (-b - √ ) / (2· a) x (-b) / (2· a)</p><p>Mostrar mensagem</p><p>“Raízes iguais:”, x</p><p>Mostrar mensagem</p><p>“Não há raízes reais”</p><p>Início</p><p>Fim</p><p>Entrada: nota1, nota2, nota3</p><p>NotaFinal nota1 + nota2 + nota3</p><p>NotaFinal ≥ 70? Mostrar “Aprovado”</p><p>Mostrar “Reprovado”</p><p>SIM</p><p>NÃO</p><p>19</p><p>Entrada e Saída utilizando o SciNotes Prof. Dr. Daniel. A. Furtado</p><p>Capítulo 3</p><p>Entrada e Saída utilizando o SciNotes</p><p>Todas as operações e funções apresentadas no Capítulo 1 foram executadas utilizando o</p><p>console do Scilab. Em geral, o console é utilizado quando se deseja executar sequências de</p><p>operações não muito complexas ou extensas, ou quando se deseja obter um resultado</p><p>imediato dessas operações. Entretanto, há situações em que é necessário executar uma série</p><p>de operações envolvendo testes lógicos, repetições de cálculos e interações com o usuário.</p><p>Nesses casos, pode ser necessário o desenvolvimento de um programa propriamente dito,</p><p>que poderá ser salvo em um arquivo e executado quando necessário. No Scilab, tais</p><p>programas (ou scripts) podem ser feitos utilizando o seu próprio editor de textos, o SciNotes.</p><p>Para abrir o SciNotes, clique na janela do console e depois no ícone (ver Figura 3.1).</p><p>Figura 3.1 – Abrindo o editor SciNotes</p><p>20</p><p>Entrada e Saída utilizando o SciNotes Prof. Dr. Daniel. A. Furtado</p><p>Figura 3.2 - Editor SciNotes</p><p>Assim que o SciNotes é aberto, pode-se escrever a sequência de comandos correspondente ao</p><p>programa e executá-lo (basta clicar no ícone ou pressionar a tecla F5).</p><p>3.1 Funções input e disp</p><p>Antes de apresentar um primeiro programa como exemplo, é importante descrever duas</p><p>funções básicas que são utilizadas com frequência no SciNotes:</p><p> input – realiza uma operação de entrada de dados. Possibilita que um dado seja</p><p>solicitado ao usuário do programa (para que seja processado).</p><p> disp – realiza uma operação de saída de dados. Permite exibir mensagens de texto na</p><p>tela ou valores de variáveis (geralmente os resultados obtidos).</p><p>O programa a seguir solicita ao usuário a medida do lado de um quadrado e então calcula e</p><p>apresenta a sua área. Para testá-lo, copie os comandos para o editor SciNotes, salve o arquivo</p><p>e clique em executar . Em seguida, ative a janela do console do Scilab para acompanhar a</p><p>sua execução. Forneça um valor qualquer e pressione</p><p>ENTER.</p><p>Exemplo 1a. Programa para calcular a área de um quadrado.</p><p>lado = input("Informe a medida do lado de um quadrado: ");</p><p>area = lado * lado;</p><p>disp("A área do quadrado é: ");</p><p>disp(area);</p><p>21</p><p>Entrada e Saída utilizando o SciNotes Prof. Dr. Daniel. A. Furtado</p><p>Os comandos que compõem um programa feito no SciNotes serão executados pelo</p><p>computador sequencialmente, na ordem de suas linhas. Por exemplo, quando o programa</p><p>anterior for executado, o computador começará processando a expressão:</p><p>lado = input("Informe a medida do lado de um quadrado: ");</p><p>Tal expressão é responsável pela operação de entrada de dados que solicita a medida do lado</p><p>do quadrado ao usuário. Essa operação envolve três ações básicas:</p><p>1. Exibe a mensagem “Informe a medida do lado de um quadrado” na tela;</p><p>2. Aguarda até que o usuário informe um dado e pressione a tecla ENTER;</p><p>3. Armazena o dado informado pelo usuário na variável lado.</p><p>Quando o usuário pressionar ENTER, o computador prosseguirá com a execução do</p><p>programa. A segunda linha é responsável pelo cálculo da área em si, cujo resultado é</p><p>armazenado na variável area. As duas últimas linhas foram utilizadas para a apresentação</p><p>do resultado obtido (operação de saída). Na terceira linha, a função disp tem o papel de</p><p>exibir a mensagem “A área do quadrado é:”. Em seguida, ela é utilizada para apresentar o</p><p>conteúdo da variável area.</p><p>3.2 Função printf</p><p>No programa do Exemplo 1a, poderíamos ter utilizado a função printf ao invés da função</p><p>disp. Vejo o exemplo:</p><p>Exemplo 1b. Utilizando a função printf.</p><p>lado = input("Informe a medida do lado de um quadrado: ");</p><p>area = lado * lado;</p><p>printf("A área do quadrado é: %f", area);</p><p>A diferença é que, com a função printf, podemos apresentar a mensagem de texto juntamente</p><p>com o valor da variável, de maneira formatada e utilizando um único comando. O termo %f</p><p>foi utilizado para que o valor da variável area pudesse ser adicionado à mensagem.</p><p>Poderíamos apresentar ao usuário uma mensagem de resultado um pouco mais elaborada,</p><p>incluindo, por exemplo, a medida do lado do quadrado para o qual a área foi calculada.</p><p>Execute o programa a seguir e observe a alteração.</p><p>Exemplo 1c.</p><p>lado = input("Informe a medida do lado de um quadrado: ");</p><p>area = lado * lado;</p><p>printf("A área do quadrado de lado %f é %f", lado, area);</p><p>Observe que, neste caso, foi necessário colocar o termo %f em dois locais da mensagem,</p><p>exatamente onde se deseja inserir os valores das variáveis. Entretanto, as variáveis em si</p><p>devem ser especificadas após o fechamento das aspas, na ordem adequada. Para cada %f</p><p>22</p><p>Entrada e Saída utilizando o SciNotes Prof. Dr. Daniel. A. Furtado</p><p>inserido na mensagem de texto, é necessário especificar uma variável ou expressão que o</p><p>substituirá na mensagem final:</p><p>printf("A área do quadrado de lado %f é %f", lado, area);</p><p>Além de %f, outras formas comuns são:</p><p> %d – utilizado quando a variável ou expressão resulta em um número inteiro (ou</p><p>quando se deseja apresentar apenas a parte inteira de um número com casas</p><p>decimais)</p><p> %.2f – o número será apresentado com duas casas decimais (ao invés de seis casas,</p><p>quantidade padrão quando se utilizada apenas %f).</p><p>Exemplo 2a. Programa que solicita ao usuário as medidas de uma sala retangular, em</p><p>metros, e calcula e apresenta a sua área, em metros quadrados.</p><p>l = input("Informe a largura da sala, em metros: ");</p><p>c = input("Informe o comprimento da sala, em metros: ");</p><p>a = l * c;</p><p>printf("A área da sala de largura %.2f e comprimento %.2f é %.2f m2", l, c, a);</p><p>Exemplo 3. Programa que solicita ao usuário as medidas de uma piscina retangular, em</p><p>metros, e calcula e apresenta a sua capacidade, em litros.</p><p>l = input("Informe a largura da piscina, em metros: ");</p><p>c = input("Informe o comprimento da piscina, em metros: ");</p><p>p = input("Informe a profundidade da piscina, em metros: ");</p><p>v = l * c * p * 1000;</p><p>printf("A capacidade da pisc. de dimensões %.2f x %.2f x %.2f é %.2f L.", l,c,p,v);</p><p>3.3 Comentários</p><p>Comentários são utilizados para documentar o programa, pois eles não são avaliados pelo</p><p>computador durante a sua execução. No Scilab, todo o texto que é colocado à frente de “//”</p><p>é tido como um comentário de linha. O programa a seguir desempenha a mesma função</p><p>daquele do Exemplo 2a, mas com a diferença de possuir alguns comentários que o descreve.</p><p>Exemplo 2b.</p><p>// Programa que solicita ao usuário as medidas de uma sala retangular,</p><p>// em metros, e calcula e apresenta a sua área, em metros quadrados.</p><p>l = input("Informe a largura da sala, em metros: ");</p><p>c = input("Informe o comprimento da sala, em metros: ");</p><p>a = l * c; // faz o cálculo da área</p><p>printf("A área da sala de largura %.2f e comprimento %.2f é %.2f m2", l, c, a);</p><p>23</p><p>Entrada e Saída utilizando o SciNotes Prof. Dr. Daniel. A. Furtado</p><p>Exercícios Propostos</p><p>Resolva os exercícios a seguir utilizando o editor SciNotes do Scilab.</p><p>1. Faça um programa que receba do usuário uma medida de temperatura, em Fahrenheit, e</p><p>converta para graus Celsius. Utilize a fórmula</p><p>.</p><p>2. Faça um programa que receba do usuário as medidas da base e da altura de um triângulo</p><p>retângulo e calcule e apresente a sua área.</p><p>3. Faça um programa que receba do usuário a medida do raio de um círculo e calcule e</p><p>apresente a sua área.</p><p>4. Faça um programa que receba do usuário o diâmetro e a profundidade (em metros) de</p><p>uma piscina redonda. O programa deve calcular e apresentar o volume da piscina em</p><p>metros cúbicos e em litros ( , onde e</p><p>).</p><p>5. Faça um programa que receba do usuário a largura, o comprimento e a profundidade de</p><p>uma piscina retangular (em metros) e calcule e apresente a quantidade total de azulejos</p><p>(em m2) necessária para cobrir a superfície interna da piscina.</p><p>24</p><p>Estrutura Condicional if-then-else Prof. Dr. Daniel. A. Furtado</p><p>Capítulo 4</p><p>Estrutura Condicional if-then-else</p><p>A estrutura condicional if-then-else (if = se; then = então; else = senão) é utilizada quando se</p><p>deseja executar um bloco de operações ou outro, dependendo de uma condição ser</p><p>verdadeira ou falsa, respectivamente. A sua forma geral no Scilab é ilustrada a seguir:</p><p>if (cond) then</p><p>Comando C1;</p><p>Comando C2;</p><p>⁞</p><p>Comando Cn;</p><p>else</p><p>Comando D1;</p><p>Comando D2;</p><p>⁞</p><p>Comando Dm;</p><p>end</p><p>Os termos C1, C2, ..., Cn e D1, D2, ..., Dm no código acima representam comandos quaisquer,</p><p>como uma operação de soma ou um cálculo de raiz quadrada e o termo cond representa uma</p><p>condição lógica qualquer, como raio > 0. A estrutura if-then-else indica que os comandos C1,</p><p>C2, ..., Cn devem ser executados pelo computador apenas quando a condição cond for</p><p>verdadeira e que os comandos D1, D2, ..., Dm devem ser executados apenas quando a</p><p>condição cond for falsa.</p><p>E outras palavras, ao executar um programa contendo o código anterior, o computador irá</p><p>verificar se a condição cond é verdadeira ou falsa. Se cond for verdadeira então (then) o</p><p>computador partirá para a execução do primeiro bloco de comandos (C1, C2, ..., Cn – os</p><p>comandos que antecedem a palavra else). Mas se cond for falsa, o computador executará apenas o</p><p>segundo bloco de comandos (D1, D2, ..., Dm − os comandos que estão entre a palavra else</p><p>e a palavra end (fim)).</p><p>25</p><p>Estrutura Condicional if-then-else Prof. Dr. Daniel. A. Furtado</p><p>Exemplo 1. Deseja-se elaborar um programa que receba do usuário a medida do lado de uma</p><p>sala quadrada e calcule e apresente a sua área. Entretanto, o programa deve calcular a área da</p><p>sala apenas quando o valor informado pelo usuário for maior do que zero, pois não há sala com lado</p><p>negativo ou nulo. Caso o usuário informe um valor inválido (negativo ou zero), o programa</p><p>deve apenas apresentar uma mensagem notificando o fato.</p><p>lado = input("Informe a medida do lado da sala: ");</p><p>if (lado > 0) then</p><p>area</p><p>= lado * lado;</p><p>printf("A area da sala é %f", area);</p><p>else</p><p>printf("O valor informado é inválido! ");</p><p>end</p><p>Execute o programa anterior pelo menos duas vezes. Na primeira execução, informe um</p><p>valor positivo e verá a área calculada. Da segunda vez, informe um valor negativo (ou zero),</p><p>e receberá apenas uma mensagem notificando a medida incorreta.</p><p>Ao ser executado, o programa inicialmente solicita a medida ao usuário (linha 1). Assim que</p><p>o usuário digita o valor e pressiona a tecla ENTER, o computador armazena esse dado na</p><p>variável lado. Na sequência, o computador testará a condição lado > 0. Se o usuário digitou</p><p>um valor positivo, tal condição será verdadeira. Assim, os comandos:</p><p>area = lado * lado; (faz o cálculo da área e armazena na var. area)</p><p>printf("A area do quadrado é %f", area); (mostra na tela o resultado)</p><p>serão executados e o programa será encerrado. Por outro lado, se o usuário informar um</p><p>valor negativo, então os dois comandos do bloco then NÃO serão executados, mas sim o</p><p>único comando do bloco else-end (pois a condição lado > 0 passa a ser falsa).</p><p>Exemplo 2. Programa que recebe do usuário dois números quaisquer e em seguida verifica</p><p>se os números fornecidos são iguais ou não.</p><p>n1 = input("Informe o primeiro número: ");</p><p>n2 = input("Informe o segundo número: ");</p><p>if (n1 == n2) then</p><p>printf("Os números fornecidos são iguais");</p><p>else</p><p>printf("Os números fornecidos são diferentes");</p><p>end</p><p>Observe que foi utilizado o operador relacional de igualdade do Scilab (“==”) para verificar</p><p>se os valores das variáveis n1 e n2 são iguais. Diferente do operador de atribuição (que tem</p><p>um único “=”), dois iguais são utilizados para fins de comparação.</p><p>26</p><p>Estrutura Condicional if-then-else Prof. Dr. Daniel. A. Furtado</p><p>4.1 Estrutura Condicional Simples</p><p>O bloco else da estrutura if não é obrigatório. Há situações em que é necessário executar uma</p><p>série de comandos caso uma condição seja verdadeira, mas que não é necessário executar</p><p>nada em especial caso essa condição seja falsa. Considere, por exemplo, que seja preciso</p><p>calcular a área de um quadrado quando o lado informado pelo usuário for válido, mas que</p><p>não seja necessário apresentar nenhuma mensagem caso o usuário digite um valor inválido.</p><p>Isto é feito no código a seguir. Neste caso, não colocamos o bloco else.</p><p>lado = input("Informe a medida do lado da sala: ");</p><p>if (lado > 0) then</p><p>area = lado * lado;</p><p>printf("A area da sala é %f", area);</p><p>end</p><p>4.2 Estrutura Condicional Aninhada</p><p>É possível utilizar a estrutura condicional if dentro de outra, tanto no bloco then quando no</p><p>bloco else. Uma vez iniciado outro if, bastar seguir as mesmas regras descritas anteriormente.</p><p>Exemplo 3. Deseja-se elaborar um programa para calcular as raízes reais de uma equação do</p><p>2º grau, caso elas existam. O programa deve solicitar ao usuário os coeficientes a, b e c que</p><p>definem a equação ( .</p><p>Neste exemplo, há três possibilidades para se tratar:</p><p>1. A equação pode ter duas raízes distintas;</p><p>2. A equação pode ter duas raízes iguais (uma raiz distinta);</p><p>3. A equação pode não ter raízes reais</p><p>Portanto, será necessário o emprego de duas estruturas condicionais:</p><p>a = input("Informe o coeficiente a da equação: ");</p><p>b = input("Informe o coeficiente b da equação: ");</p><p>c = input("Informe o coeficiente c da equação: ");</p><p>delta = b^2 – 4*a*c;</p><p>if (delta > 0) then</p><p>// Neste caso, há duas raízes que precisam ser calculadas</p><p>x1 = (-b + sqrt(delta))/(2*a);</p><p>x2 = (-b - sqrt(delta))/(2*a);</p><p>printf("As raízes da equação são %.2f e %.2f", x1, x2);</p><p>else</p><p>if (delta == 0) then</p><p>// Neste caso, há apenas uma raiz distinta</p><p>x = (-b)/(2*a);</p><p>printf("Duas raízes iguais: %.2f", x);</p><p>else</p><p>printf("Não existem raízes reais!");</p><p>end</p><p>end</p><p>27</p><p>Estrutura Condicional if-then-else Prof. Dr. Daniel. A. Furtado</p><p>O programa apresentado solicita os três coeficientes ao usuário e em seguida calcula o valor</p><p>do discriminante ( , que é armazenado na variável delta. Na sequência, a primeira</p><p>estrutura if verifica se a condição delta > 0 é verdadeira. Caso seja, então as duas raízes são</p><p>calculadas e o resultado é apresentado. Caso contrário (else), tem-se ainda duas</p><p>possibilidades (delta = 0 ou delta < 0) e para trata-las utilizou-se o segundo if.</p><p>É importante observar que as condições tratadas no programa anterior poderiam ter sido</p><p>verificadas em uma ordem diferente, desde que a sequência lógica das operações se</p><p>mantivesse correta. O código a seguir ilustra outra possibilidade:</p><p>a = input("Informe o coeficiente a da equação: ");</p><p>b = input("Informe o coeficiente b da equação: ");</p><p>c = input("Informe o coeficiente c da equação: ");</p><p>delta = b^2 – 4*a*c;</p><p>if (delta < 0) then</p><p>// Neste caso, não há raízes reais</p><p>printf("Não existem raízes reais!");</p><p>else</p><p>if (delta == 0) then</p><p>// Neste caso, há apenas uma raiz distinta</p><p>x = (-b)/(2*a);</p><p>printf("Duas raízes iguais: %.2f", x);</p><p>else</p><p>// Neste caso, temos duas raízes distintas</p><p>x1 = (-b + sqrt(delta))/(2*a);</p><p>x2 = (-b - sqrt(delta))/(2*a);</p><p>printf("As raízes da equação são %.2f e %.2f", x1, x2);</p><p>end</p><p>end</p><p>Exemplo 4. Deseja-se elaborar um programa que receba do usuário a altura e o sexo de uma</p><p>pessoa e calcule e apresente o seu peso ideal. As seguintes fórmulas devem ser utilizadas</p><p>(onde h é a altura em metros):</p><p> Para homens: peso ideal = (72.7 * h) – 58</p><p> Para mulheres: peso ideal = (62.1 * h) – 44.7</p><p>Para indicar o sexo masculino, o usuário deverá informar o número 1. Para indicar o</p><p>feminino, o usuário deverá informar o número 2. Caso um valor diferente de 1 e 2 seja</p><p>fornecido, então o programa deverá apresentar uma mensagem notificando o dado inválido.</p><p>O programa também deverá verificar se a altura informada pelo usuário é válida (maior do</p><p>que zero).</p><p>28</p><p>Estrutura Condicional if-then-else Prof. Dr. Daniel. A. Furtado</p><p>Solução:</p><p>clc;</p><p>h = input("Informe a altura da pessoa, em metros: ");</p><p>if (h > 0) then</p><p>sexo = input("Informe 1 para masculino ou 2 para feminino: ");</p><p>if (sexo == 1) then</p><p>pesoIdealM = (72.7 * h) – 58;</p><p>printf("O peso ideal é: %.2f", pesoIdealM);</p><p>else</p><p>if (sexo == 2) then</p><p>pesoIdealF = (62.1 * h) – 44.7;</p><p>printf("O peso ideal é: %.2f", pesoIdealF);</p><p>else</p><p>printf("Valor inválido para o sexo!");</p><p>end</p><p>end</p><p>else</p><p>printf("Altura inválida!");</p><p>end</p><p>4.3 Operadores Relacionais</p><p>O Scilab disponibiliza ao usuário um conjunto de operadores relacionais, que inclui os já</p><p>utilizados == e >. Esses operadores são ilustrados na Erro! Fonte de referência não encontrada..</p><p>Operador Significado</p><p>== Igual a</p><p>~= Diferente de</p><p>> Maior que</p><p>>= Maior ou igual a</p><p>< Menor que</p><p><= Menor ou igual a</p><p>Tabela 4.1 - Operadores relacionais do Scilab</p><p>4.4 Operadores Lógicos</p><p>Em todos os exemplos anteriores, na estrutura condicional if, utilizou-se uma expressão</p><p>lógica simples (if delta > 0, if n1 == n2, etc.). Entretanto, os operadores lógicos do Scilab</p><p>podem ser utilizados para a formação de expressões lógicas mais complexas (que envolvem,</p><p>por exemplo, duas ou mais condições). Tais operadores são apresentados na Tabela 4.2.</p><p>29</p><p>Estrutura Condicional if-then-else Prof. Dr. Daniel. A. Furtado</p><p>Operador Lógico Significado Exemplo Significado</p><p>& “e” lógico if (a > 0 & a < 10)... Verifica se o valor da variável a é</p><p>maior que 0 e menor que 10.</p><p>| “ou” lógico if (a == 0 | b == 0) ... Verifica se alguma das variáveis</p><p>(a ou b) tem valor igual a zero.</p><p>~ Negação if ~(a < 0) ... Verifica se o valor da variável a</p><p>NÃO é menor que zero. Isto é</p><p>equivalente à condição a >= 0</p><p>Tabela 4.2 - Operadores lógicos do Scilab</p><p>A B A & B A | B ~A</p><p>V V V V F</p><p>V F F V F</p><p>F V F F V</p><p>F F F F V</p><p>Tabela 4.3 - Tabela verdade dos operadores lógicos</p><p>Exercícios Propostos</p><p>1) Faça um programa para calcular a situação</p><p>final de um aluno com base nas suas três</p><p>notas semestrais. O programa deve solicitar as três notas, soma-las e informar se o aluno</p><p>está aprovado (quando a soma das notas é maior ou igual a 70) ou reprovado (soma das</p><p>inferior a 70).</p><p>2) Faça um programa que receba do usuário dois números e apresente o menor deles.</p><p>3) Faça um programa que receba do usuário dois números e em seguida apresente esses</p><p>números na ordem crescente.</p><p>4) Analise os programas a seguir (sem executá-los no computador) e informe qual seria a</p><p>sua saída caso fossem executados.</p><p>a) a = 2; b = 3; c = 1;</p><p>if (a > b) then</p><p>printf("%d",a);</p><p>else</p><p>if (b > c) then</p><p>printf("%d",b);</p><p>else</p><p>printf("%d",c);</p><p>end</p><p>end</p><p>b) a = 10; b = 20; c = 10;</p><p>if (a == b | a == c) then</p><p>printf("%d",a);</p><p>else</p><p>printf("%d",b);</p><p>end</p><p>30</p><p>Estrutura Condicional if-then-else Prof. Dr. Daniel. A. Furtado</p><p>c) a = 10; b = 10; c = 20;</p><p>if (a == b & a == c) then</p><p>printf("%d",a);</p><p>else</p><p>printf("%d",c);</p><p>end</p><p>d) a = 1; b = 2; c = 3;</p><p>if (a < b & b > c) then</p><p>printf("%d",a);</p><p>printf("%d",b);</p><p>else</p><p>if (b < c) then</p><p>d = b + c;</p><p>printf("%d",d);</p><p>else</p><p>printf("%d",c);</p><p>end</p><p>printf("%d",a);</p><p>end</p><p>e = a + b + c;</p><p>printf("%d",e);</p><p>31</p><p>Operações com Vetores Prof. Dr. Daniel A. Furtado</p><p>Capítulo 5</p><p>Operações com Vetores</p><p>No Scilab, os vetores (arrays) são utilizados para armazenar uma lista de elementos, como</p><p>números ou caracteres, os quais podem ser acessados por meio de um índice. Um vetor pode</p><p>ser do tipo linha ou do tipo coluna e pode ser definido por meio dos caracteres [ e ]. No caso</p><p>de um vetor linha, os elementos devem ser separados por vírgula ou espaço. Já um vetor</p><p>coluna deve ter os elementos separados por ponto-e-vírgula.</p><p>Exemplos:</p><p>-->a = [1 2 3 4] (define um vetor linha de nome a contendo 4 elementos)</p><p>a =</p><p>1. 2. 3. 4.</p><p>___________________________________________________________________________________</p><p>-->b = [10, 20, 30] (define um vetor linha de nome b contendo 3 elementos)</p><p>b =</p><p>10. 20. 30.</p><p>___________________________________________________________________________________</p><p>-->v1 = [5; 8; 1] (define um vetor coluna de nome v1 contendo 3 elementos)</p><p>v1 =</p><p>5.</p><p>8.</p><p>1.</p><p>5.1 Acessando os Elementos de um Vetor</p><p>Os elementos de um vetor linha ou coluna podem ser acessados individualmente por meio</p><p>de um índice. Deve-se colocar o nome do vetor seguido da posição do elemento entre</p><p>parênteses.</p><p>Exemplos:</p><p>-->a = [7, 4, 12, 9] (define um vetor)</p><p>a =</p><p>7. 4. 12. 9.</p><p>32</p><p>Operações com Vetores Prof. Dr. Daniel A. Furtado</p><p>-->a(3) (acessa o terceiro elemento do vetor)</p><p>ans =</p><p>12.</p><p>___________________________________________________________________________________</p><p>-->a(1) (acessa o primeiro elemento do vetor)</p><p>ans =</p><p>7.</p><p>5.2 Modificando um Vetor</p><p>Também é possível modificar os elementos de um vetor, adicionar novos elementos ou até</p><p>mesmo excluí-los. Veja os exemplos:</p><p>-->a = [6 4 8 3] (define um vetor linha de nome a contendo 4 elementos)</p><p>a =</p><p>6. 4. 8. 3.</p><p>___________________________________________________________________________________</p><p>-->a(4) = 15 (altera o quarto elemento do vetor a para o valor 15)</p><p>a =</p><p>6. 4. 8. 15.</p><p>___________________________________________________________________________________</p><p>-->a(1) = a(1) + 2 (adiciona 2 ao primeiro elemento do vetor a)</p><p>a =</p><p>8. 4. 8. 15.</p><p>___________________________________________________________________________________</p><p>-->a = [a, 17] (adiciona o elemento 17 no final do vetor a)</p><p>a =</p><p>8. 4. 8. 15. 17.</p><p>___________________________________________________________________________________</p><p>-->a = [13, a] (adiciona o elemento 13 no início do vetor a)</p><p>a =</p><p>13. 8. 4. 8. 15. 17.</p><p>___________________________________________________________________________________</p><p>-->a(7) = 6 (adiciona o elemento 6 no final do vetor a (outra forma))</p><p>a =</p><p>13. 8. 4. 8. 15. 17. 6.</p><p>___________________________________________________________________________________</p><p>-->a(3) = [] (apaga o terceiro elemento do vetor a)</p><p>a =</p><p>13. 8. 8. 15. 17. 6.</p><p>5.3 Utilizando o Operador “:” para Definir Vetores</p><p>Vetores com elementos sequenciais podem ser definidos por meio do operador “:” (dois</p><p>pontos). Neste caso, deve-se especificar o incremento ou o decremento desejado para que os</p><p>elementos do vetor sejam calculados automaticamente. Sua forma geral é:</p><p>[inicio : incremento (ou decremento) : valor limite ]</p><p>33</p><p>Operações com Vetores Prof. Dr. Daniel A. Furtado</p><p>Exemplos:</p><p>-->a = [0:2:10] (cria um vetor a partir de zero, de dois em dois, até 10)</p><p>a =</p><p>0. 2. 4. 6. 8. 10.</p><p>___________________________________________________________________________________</p><p>-->b = [1:5:28] (a partir de um, de cinco em cinco, limitado por 28)</p><p>b =</p><p>1. 6. 11. 16. 21. 26.</p><p>___________________________________________________________________________________</p><p>-->c = [-1:0.2:1] (a partir de -1, com espaçamento de 0.2, até 1)</p><p>c =</p><p>- 1. -0.8 -0.6 -0.4 -0.2 0. 0.2 0.4 0.6 0.8 1.</p><p>___________________________________________________________________________________</p><p>-->d = [5:-1:1] (de 5, com decremento de -1, até 1)</p><p>b =</p><p>5. 4. 3. 2. 1.</p><p>Entretanto, o incremento pode ser omitido quando se deseja o valor 1. Veja os exemplos:</p><p>-->a = [2:6] (a partir de 2, de um em um, até 6)</p><p>a =</p><p>2. 3. 4. 5. 6.</p><p>___________________________________________________________________________________</p><p>-->b = [-2:2] (a partir de -2, de um em um, até 2)</p><p>b =</p><p>-2. -1. 0. 1. 2.</p><p>5.4 Utilizando a Função linspace</p><p>A função linspace do Scilab pode ser utilizada para definir vetores contendo um número</p><p>específico de elementos igualmente espaçados dentro de um intervalo. Neste caso, não é</p><p>necessário saber o incremento (ou decremento), pois o mesmo será calculado</p><p>automaticamente. Sua forma geral é:</p><p>linspace(início, fim, número_de_elementos)</p><p>Exemplos:</p><p>-->x1=linspace(1, 3, 5) (vetor com 5 elementos igualmente espaçados de 1 a 3)</p><p>x1 =</p><p>1. 1.5 2. 2.5 3.</p><p>___________________________________________________________________________________</p><p>-->x2=linspace(-5, 5, 30) (vetor de 30 elementos igualmente espaçados de -5 a 5)</p><p>x2 =</p><p>-5. -4.6 -4.3 -3.9 -3.6 ... 3.9 4.3 4.6 5.</p><p>___________________________________________________________________________________</p><p>-->x3=linspace(-%pi, %pi, 40) (vetor com 40 elementos espaçados de - a )</p><p>x3 =</p><p>-3.14 -2.98 ... 2.98 3.14</p><p>34</p><p>Operações com Vetores Prof. Dr. Daniel A. Furtado</p><p>5.5 Operações com Vetores</p><p>Os operados matemáticos e diversas funções do Scilab também podem ser aplicados a</p><p>vetores. O resultado das operações dependerá do contexto empregado.</p><p>Exemplos:</p><p>-->a = [1 2 3 4] (define um vetor de nome a)</p><p>a =</p><p>1. 2. 3. 4.</p><p>-->b = 2*a (cada elemento do vetor b terá o dobro do respectivo elemento de a)</p><p>b =</p><p>2. 4. 6. 8</p><p>-->c = a + b (os respectivos elementos são somados para a composição do vetor c)</p><p>c =</p><p>3. 6. 9. 12.</p><p>-->d = 2*a + 1 (cada elemento do vetor a é multiplicado por dois e somado com 1)</p><p>d =</p><p>3. 5. 7. 9.</p><p>__________________________________________________________________________________</p><p>-->x = [-3:3]</p><p>x =</p><p>-3. -2. -1. 0. 1. 2. 3.</p><p>-->y = x^2</p><p>y =</p><p>9. 4. 1. 0. 1. 4. 9.</p><p>___________________________________________________________________________________</p><p>-->x = [-%pi/2, 0, %pi/2]</p><p>x =</p><p>-1.57 0 1.57</p><p>-->y = sin(x) (a função seno será aplicada a cada valor de x)</p><p>y =</p><p>-1 0 1</p><p>5.6 Outras Funções Aplicadas a Vetores</p><p>O Scilab disponibiliza um conjunto de funções que podem ser aplicadas a vetores. Algumas</p><p>dessas funções são:</p><p> length – retorna o número de elementos de um vetor.</p><p> sum – calcula o somatório dos elementos de um vetor.</p><p> prod – calcula o produto dos elementos</p><p>de um vetor.</p><p> norm – calcula a norma de um vetor.</p><p>35</p><p>Operações com Vetores Prof. Dr. Daniel A. Furtado</p><p>Exercícios Propostos</p><p>1. Defina um vetor linha de nome para conter os valores 3, 8, 1, 5, 2.</p><p>2. Aplique a função matemática a todos os elementos do vetor x definido</p><p>anteriormente e armazene o resultado em um vetor y1.</p><p>3. Aplique a função a todos os elementos de x e armazene o resultado em</p><p>um vetor y2.</p><p>4. Defina um vetor coluna de nome x2 contendo os elementos 1, 10, 100, 1000.</p><p>5. Aplique a função aos elementos de x2 e armazene o resultado no vetor y2.</p><p>6. Defina um vetor de nome v1 contendo os números inteiros no intervalo [5, 100].</p><p>7. Defina um vetor de nome v2 contendo a sequência de números 1, 4, 7, 10, 13, ..., 97.</p><p>Utilize os recursos adequados.</p><p>8. Defina um vetor de nome v3 contendo a sequência de números 90, 84, 78, 72, ..., 12.</p><p>Utilize os recursos adequados.</p><p>9. Defina um vetor de nome v4 contendo números de – a espaçados de 0.15.</p><p>10. Defina um vetor de nome v5 contendo 80 números igualmente espaçados no intervalo</p><p>[ ]. Utilize os recursos adequados.</p><p>36</p><p>Construção de Gráficos Prof. Dr. Daniel A. Furtado</p><p>Capítulo 6</p><p>Construção de Gráficos</p><p>O Scilab disponibiliza uma série de recursos que possibilitam a construção de diversos tipos</p><p>de gráficos, incluindo gráficos de funções matemáticas, gráficos de barras e gráficos do tipo</p><p>pizza. Este capítulo faz uma breve introdução a alguns desses recursos.</p><p>6.1 Gráficos de Funções</p><p>Gráficos de funções de uma variável podem ser construídos no Scilab por meio da função</p><p>plot. Os valores das abcissas (x) e os valores das ordenadas (y) a serem utilizados no gráfico</p><p>podem ser especificados em vetores. Por exemplo, o gráfico da função para os</p><p>valores de apresentados na tabela a seguir, pode ser construído pela sequência de</p><p>comandos do Exemplo 1.</p><p>p1 p2 p3 p4 p5 p6 p7</p><p>-3 -2 -1 0 1 2 3</p><p>9 4 1 0 1 4 9</p><p>Exemplo 1. Construção de um gráfico pela especificação de uma série de pares ordenados.</p><p>x = [-3, -2, -1, 0, 1, 2, 3];</p><p>y = [9, 4, 1, 0, 1, 4, 9];</p><p>plot(x, y);</p><p>Ao executar tal sequência de comandos, no console do Scilab ou no SciNotes, será criada uma</p><p>janela gráfica, conforme ilustrado na Figura 6.1. A função plot pressupõe que os elementos</p><p>das respectivas posições dos dois vetores constituem os pares ordenados, os quais são</p><p>interligados por uma linha.</p><p>Antes de executar novamente o comando plot, pode ser necessário limpar a janela gráfica</p><p>para evitar que os gráficos se sobreponham. Isto pode ser feito com o comando clf (de clear</p><p>figure). A janela gráfica pode ser fechada manualmente ou pelo comando close.</p><p>37</p><p>Construção de Gráficos Prof. Dr. Daniel A. Furtado</p><p>Figura 6.1 – Gráfico da função construído com a função plot do Scilab. Foram considerados</p><p>7 pontos no intervalo [-3, 3].</p><p>Uma maneira mais prática de construir o gráfico de uma função é utilizar os recursos do</p><p>Scilab para definição e manipulação de vetores, ao invés de definir explicitamente todos os</p><p>pontos em x e y. O gráfico geralmente é criado em três passos:</p><p>1. Cria-se um vetor para armazenar os pontos de interesse em x. Isto pode ser feito</p><p>utilizando o operador “:” ou a função linspace;</p><p>2. Aplica-se a função matemática de interesse sobre o vetor x, o que permitirá a</p><p>obtenção do vetor y;</p><p>3. Utiliza-se a função plot em conjunto com os vetores x e y criados anteriormente.</p><p>Por exemplo, o gráfico anterior poderia ter sido criado pela sequência de comandos:</p><p>x = [-3:3]; // define o vetor x. Neste caso, com pontos de -3 a 3, espaçados de 1.</p><p>y = x^2; // o valores de y são calculados a partir de x</p><p>plot(x, y);</p><p>6.1.1 Opções do Gráfico</p><p>É possível alterar diversas características do gráfico, como o tipo de linha, a cor e o tipo de</p><p>marcador. Tais opções são comumente especificadas entre aspas, da seguinte forma:</p><p>plot(vetor x, vetor y, 'opções')</p><p>onde “opções” representa um conjunto caracteres que define os detalhes do gráfico.</p><p>Algumas das opções aceitas pelo Scilab são apresentadas na Tabela 6.1. Elas podem ser</p><p>especificadas em qualquer ordem, desde que estejam dentro das aspas.</p><p>38</p><p>Construção de Gráficos Prof. Dr. Daniel A. Furtado</p><p>Símbolo Significado</p><p>Marcador</p><p>* Asterisco.</p><p>+ Símbolo +</p><p>o Círculo (Letra „o‟)</p><p>d Losango – diamond</p><p>s Quadrado – square</p><p>Linha</p><p>- Linha sólida</p><p>-- Linha tracejada</p><p>: Linha pontilhada</p><p>Cor</p><p>r Cor vermelha - red</p><p>g Cor verde – green</p><p>b Cor azul – blue</p><p>y Cor amazela - yellow</p><p>k Cor preta – black</p><p>Tabela 6.1 - Algumas opções da função plot</p><p>Exemplo Descrição Resultado</p><p>x = [-5:0.5:5];</p><p>y = x^2;</p><p>plot(x, y, '*');</p><p>Os pontos aparecem com o</p><p>marcador *. Não há linha. Cor</p><p>azul (padrão).</p><p>x = [-5:0.5:5];</p><p>y = x^2;</p><p>plot(x, y, '*-')</p><p>Gráfico com o marcador * e</p><p>com linha sólida conectando os</p><p>pontos.</p><p>39</p><p>Construção de Gráficos Prof. Dr. Daniel A. Furtado</p><p>Exemplos Descrição Resultado</p><p>x = [-5:0.5:5];</p><p>y = x^2;</p><p>plot(x, y, '--ro');</p><p>Linha tracejada, na cor</p><p>vermelha, com o marcador</p><p>„o‟.</p><p>x = [-%pi:0.2:%pi];</p><p>y1 = sin(x);</p><p>plot(x,y1,'-*g');</p><p>y2 = cos(x);</p><p>plot(x,y2,'-dr');</p><p>Dois gráficos sobrepostos</p><p>utilizando duas vezes o</p><p>comando plot. Função seno</p><p>(verde) e cosseno</p><p>(vermelho). Valores de x no</p><p>intervalo [ ],</p><p>espaçados de 0.2.</p><p>x=linspace(1,10,50);</p><p>y = log2(x);</p><p>plot(x,y,'-sk');</p><p>Gráfico da função</p><p>para 50</p><p>pontos igualmente</p><p>espaçados no intervalo</p><p>[1,10]. Marcador</p><p>„quadrado‟ e cor preta.</p><p>6.1.2 Título, Rótulos dos Eixos e Legenda</p><p>O gráfico, seus eixos e as curvas podem receber rótulos de identificação por meio das funções:</p><p> xtitle – insere um título para o gráfico</p><p> xlabel – insere um rótulo para o eixo</p><p> Ylabel – insere um rótulo para o eixo</p><p> legend – insere uma legenda para identificação das séries</p><p>40</p><p>Construção de Gráficos Prof. Dr. Daniel A. Furtado</p><p>Exemplo:</p><p>clf</p><p>x = [0:0.1:4*%pi];</p><p>y1 = sin(x);</p><p>y2 = cos(x);</p><p>plot(x,y1,'-*b');</p><p>plot(x,y2,'-dr');</p><p>xtitle('Funções seno e cosseno'); // insere o título</p><p>xlabel('Eixo X'); // insere o rótulo do eixo horizontal x</p><p>ylabel('Eixo Y'); // insere o rótulo do eixo vertical y</p><p>legend('Seno', 'Cosseno'); // insere uma legenda para identificar,</p><p>// na respectiva ordem, as duas curvas</p><p>Resultado:</p><p>OBS: É possível desenhar o gráfico de diversas funções utilizando o comando plot uma única</p><p>vez. Para o exemplo anterior, poderíamos ter utilizado:</p><p>plot(x,y1,'-*b', x,y2,'-dr');</p><p>6.1.3 Outras Opções do Gráfico</p><p>Detalhes sobre os eixos podem ser especificados por meio da função gca (get current axes),</p><p>que retorna uma variável especial para manipulação dos eixos do gráfico. Tal variável dá</p><p>acesso às diversas propriedades dos eixos, que podem ser configuradas pelo usuário.</p><p>Algumas dessas propriedades são:</p><p> x_location – posição do eixo x. Pode ser „top’, „middle’ ou „bottom’;</p><p> y_location – posição do eixo y. Pode ser „left’, „middle’ ou „right’;</p><p>41</p><p>Construção de Gráficos Prof. Dr. Daniel A. Furtado</p><p> axes_visible – indica se os eixos devem ser mostrados ‘on’ ou não ‘off’;</p><p> isoview – utiliza escalas isométricas para os eixos. Pode ser „on’ ou „off’;</p><p>Exemplo:</p><p>clf</p><p>x = [0:0.1:2*%pi];</p><p>y1 = sin(x);</p><p>y2 = cos(x);</p><p>plot(x,y1,'-*b', x,y2,'-dr');</p><p>xtitle('Funções seno e cosseno – Escalas isométricas');</p><p>legend('Seno', 'Cosseno');</p><p>a = gca(); // obtém o manipulador de eixos</p><p>a.isoview = 'on'; // utiliza escalas isométricas</p><p>a.x_location = 'middle'; // o eixo x será mostrado no centro</p><p>Resultado:</p><p>Algumas das propriedades dos eixos e de outros elementos do gráfico podem ser</p><p>configuradas visualmente. Bastar acessar a opção Editar Propriedades dos eixos da</p><p>janela do gráfico. A janela</p><p>de configuração exibida pelo Scilab é apresentada na Figura 6.2.</p><p>6.2 O Comando subplot</p><p>O comando subplot é utilizado para inserir diversos gráficos em uma mesma janela. O</p><p>comando divide a janela gráfica em uma matriz de m x n células, onde em cada célula é</p><p>possível inserir um gráfico. Sua forma de uso é:</p><p>subplot(m, n, p)</p><p>onde:</p><p> m – número de linhas em que se deseja dividir a janela gráfica</p><p> n – número de colunas em que se deseja dividir a janela gráfica</p><p>42</p><p>Construção de Gráficos Prof. Dr. Daniel A. Furtado</p><p> p – posição da matriz a ser ativada, contada da esquerda para a direita, linha a linha.</p><p>Todos os comandos voltados para a inserção e configuração de gráficos terão efeito</p><p>sobre o gráfico dessa posição.</p><p>Figura 6.2 - Janela de configuração das propriedades dos eixos</p><p>No exemplo a seguir, seis gráficos são colocados em uma mesma janela gráfica. Eles são</p><p>organizados em uma matriz de duas linhas e três colunas. Repare que a função subplot é</p><p>utilizada diversas vezes para ativar cada uma das posições de plotagem. O número de linhas e</p><p>o número de colunas permanecem inalterados (pois não desejamos alterar essa disposição),</p><p>mas a posição ativa de plotagem é atualizada para cada novo gráfico.</p><p>Exemplo:</p><p>// vetor x</p><p>x = [-3:0.1:3];</p><p>// Gráfico 1</p><p>y1 = x^2;</p><p>subplot(2,3,1); // A janela será div. em 2 linhas e 3 colunas. A 1ª pos. é ativada</p><p>plot(x,y1,'*-');</p><p>xtitle('Gráfico 1: função quadrática');</p><p>// Gráfico 2</p><p>y2 = x^3;</p><p>subplot(2,3,2); // Ativa a segunda posição de plotagem</p><p>plot(x,y2,'+-');</p><p>xtitle('Gráfico 2: função cúbica');</p><p>// Gráfico 3</p><p>y3 = sin(x);</p><p>subplot(2,3,3);</p><p>43</p><p>Construção de Gráficos Prof. Dr. Daniel A. Furtado</p><p>plot(x,y3,'o-');</p><p>xtitle('Gráfico 3: função seno');</p><p>// Gráfico 4</p><p>y4 = -x^2;</p><p>subplot(2,3,4);</p><p>plot(x,y4,'d-');</p><p>xtitle('Gráfico 4: função quadrática 2');</p><p>// Gráfico 5</p><p>y5 = -x^3;</p><p>subplot(2,3,5);</p><p>plot(x,y5,'p-');</p><p>xtitle('Gráfico 5: função cúbica 2');</p><p>// Gráfico 6</p><p>y6 = cos(x);</p><p>subplot(2,3,6);</p><p>plot(x,y6,'x-');</p><p>xtitle('Gráfico 6: função cosseno');</p><p>Resultado:</p><p>Figura 6.3 - Inserindo diversos gráficos na mesma janela com a função subplot.</p><p>44</p><p>Construção de Gráficos Prof. Dr. Daniel A. Furtado</p><p>6.3 Outros Tipos de Gráficos</p><p>O Scilab também disponibiliza funções para a construção de outros tipos de gráficos,</p><p>incluindo gráficos de barras verticais, gráficos de barras horizontais e gráficos do tipo pizza.</p><p>As funções são:</p><p> bar – para gráficos de barras verticais;</p><p> barh – para gráficos de barras horizontais;</p><p> pie – para gráficos do tipo pizza.</p><p>Tais funções são comumente utilizadas da seguinte forma:</p><p>bar(vetor_de_números, <largura_das_barras>)</p><p>barh(vetor_de_números, <largura_das_barras>)</p><p>pie(vetor_de_números, <espaçamento_fatias>, <rótulos_fatias>)</p><p>onde:</p><p> vetor_de_números: vetor contendo os valores que definem, de maneira</p><p>proporcional, o comprimento de cada barra (ou o tamanho de cada fatia da „pizza‟);</p><p> largura_das_barras: número entre 0 e 1 que determina a largura das barras (0 =</p><p>largura mínima, 1 = largura máxima). Este dado é opcional.</p><p> espaçamento_fatias: vetor de números que especificam se a respectiva fatia da</p><p>„pizza‟ deve aparecer afastada (número diferente de 0) ou „grudada‟ no centro da</p><p>„pizza‟ (valor 0);</p><p> rótulos_fatias: vetor contendo os rótulos, entre aspas, correspondentes às fatias</p><p>da „pizza‟.</p><p>Veja alguns exemplos:</p><p>Comandos Gráfico Resultante</p><p>clf;</p><p>x = [1,2,3,4];</p><p>bar(x, 0.5);</p><p>45</p><p>Construção de Gráficos Prof. Dr. Daniel A. Furtado</p><p>clf;</p><p>x = [1,2,3,2];</p><p>bar(x, 0.9);</p><p>clf;</p><p>x = [1,2,3,4];</p><p>barh(x, 0.5);</p><p>clf;</p><p>pie([18,4,3],[0,1,0],['Aprovados',</p><p>'Rep. por falta', 'Rep. por</p><p>nota']);</p><p>46</p><p>Operações com Matrizes Prof. Dr. Daniel A. Furtado</p><p>Capítulo 7</p><p>Operações com Matrizes</p><p>Matrizes podem ser definidas no Scilab de maneira semelhante aos vetores. Os elementos</p><p>devem ser especificados entre colchetes. As linhas podem ser separadas por ponto-e-vírgula</p><p>ou ENTER e os elementos de uma mesma linha podem ser separados por vírgula ou espaço.</p><p>Exemplos:</p><p>[</p><p>] [</p><p>] *</p><p>+</p><p>-->A = [1,2,3; 2,5,1; 7,4,9]</p><p>A =</p><p>1. 2. 3.</p><p>2. 5. 1.</p><p>7. 4. 9.</p><p>-->B = [2 1; 3 2; 4 3]</p><p>B =</p><p>2. 1.</p><p>3. 2.</p><p>4. 3.</p><p>-->C = [9 8 7 6</p><p>-->1 2 3 4]</p><p>C =</p><p>9. 8. 7. 6.</p><p>1. 2. 3. 4.</p><p>O operador “:” pode ser utilizado para especificar uma sequência de elementos dentro de</p><p>uma mesma linha. Por exemplo, a matriz:</p><p>[</p><p>]</p><p>pode ser definida pelo comando:</p><p>--> D = [1:5; 6:10; 12:2:20]</p><p>47</p><p>Operações com Matrizes Prof. Dr. Daniel A. Furtado</p><p>7.1 Acesso aos Elementos da Matriz</p><p>Após definir a matriz, um elemento específico pode ser acessado utilizando-se a notação</p><p>, onde A é o nome da matriz, i é o número da linha e j é número da coluna onde o</p><p>elemento se encontra.</p><p>Exemplos:</p><p>-->M = [4,9,5; 7,3,8] (define uma matriz M)</p><p>M =</p><p>4. 9. 5.</p><p>7. 3. 8.</p><p>-->M(1,3) (Acessa o elemento da 1ª linha e 3ª coluna de M)</p><p>ans =</p><p>5.</p><p>-->x = M(2,1) (Acessa o elemento da 2ª linha e 1ª coluna de M e o armazena em x)</p><p>x =</p><p>7.</p><p>-->M(1,2) = 10 (Altera o elemento da 1ª linha e 2ª coluna de M para o valor 10)</p><p>M =</p><p>4. 10. 5.</p><p>7. 3. 8.</p><p>Acessando uma Linha Inteira</p><p>Especifica-se o número da linha e coloca-se “:” para a coluna.</p><p>-->M = [1,2,3; 4,5,6] (define uma matriz M)</p><p>M =</p><p>1. 2. 3.</p><p>4. 5. 6.</p><p>-->M(2,:) (acessa toda a 2ª linha de M)</p><p>ans =</p><p>4. 5. 6.</p><p>-->M(2,:) = [7,8,9] (altera toda a 2ª linha de M. Repare no novo vetor linha)</p><p>M =</p><p>1. 2. 3.</p><p>7. 8. 9.</p><p>Acessando uma Coluna Inteira</p><p>Especifica-se o número da coluna e coloca-se “:” para a linha.</p><p>-->M = [1,2,3; 4,5,6] (define uma matriz M)</p><p>M =</p><p>1. 2. 3.</p><p>4. 5. 6.</p><p>48</p><p>Operações com Matrizes Prof. Dr. Daniel A. Furtado</p><p>-->M(:,3) (acessa toda a 3ª coluna de M)</p><p>ans =</p><p>3.</p><p>6.</p><p>-->M(:,2) = [20; 30] (altera toda a 2ª coluna de M. [20;30] é um vetor coluna)</p><p>M =</p><p>1. 20. 3.</p><p>4. 30. 6.</p><p>Acessando uma Submatriz</p><p>Também é possível acessar uma parte da matriz envolvendo mais de uma linha ou coluna.</p><p>Neste caso, deve-se especificar o intervalo de linhas e o intervalo de colunas que envolvem a</p><p>parte desejada. No exemplo a seguir, acessamos a submatriz de A indicada pela linha</p><p>tracejada.</p><p>[</p><p>]</p><p>-->A = [1 9 6 0; 6 7 8 9; 5 1 6 8; 4 0 9 3]</p><p>A =</p><p>1. 9. 6. 0.</p><p>6. 7. 8. 9.</p><p>5. 1. 6. 8.</p><p>4. 0. 9. 3.</p><p>-->A(1:3,2:4) (acessa a submatriz de A: da linha 1 à 3, da coluna 2 à 4)</p><p>ans =</p><p>9. 6. 0.</p><p>7. 8. 9.</p><p>1. 6. 8.</p><p>7.2 Adicionando e Removendo Linhas e Colunas</p><p>Adicionando Linhas à Matriz</p><p>-->A = [3 2 1; 6 5 4] (define uma matriz A)</p><p>A =</p><p>3. 2. 1.</p><p>6. 5. 4.</p><p>-->A = [A; [1,2,3]] (adiciona a linha [1,2,3] no final da matriz A)</p><p>A =</p><p>3. 2. 1.</p><p>6. 5. 4.</p><p>1. 2. 3.</p><p>49</p><p>Operações com Matrizes Prof. Dr. Daniel A. Furtado</p><p>-->A = [[5,5,5]; A] (adiciona a linha [5,5,5] no início da matriz A)</p><p>A =</p><p>5. 5. 5.</p><p>3. 2. 1.</p><p>6. 5. 4.</p><p>1. 2. 3.</p><p>Adicionando uma Nova Coluna</p><p>-->B = [1, 2; 3, 4] (define uma matriz B)</p><p>B =</p><p>1. 2.</p><p>3. 4.</p><p>-->B = [B, [5;6]] (adiciona a coluna [5;6] no final da matriz B)</p><p>B =</p><p>1. 2. 5.</p><p>3. 4. 6.</p><p>-->B = [[0;1], B] (adiciona a coluna [0;1] no início da matriz B)</p><p>B =</p>