download (.rar)
TRANSCRIPT
ÍNDICE
1. Introdução / Scilab / Estruturação
2. Variáveis / Operadores / Comando Condicional
3. Comandos de Controle de Fluxo (Condicional / Repetição / Parada /
Continuação)
4. Funções / Recursividade / Biblioteca
5. Vetor e Matriz
6. Strings / Janelas de Diálogo
7. Arquivos
8. Tipos de dados determinados pelo usuário (listas / estruturas)
9. Limites e Derivadas
10. Gráficos
2016/2
Prof. Afonso P. Santos 1
Universidade Federal de ViçosaCurso de Engenharia de Agrimensura e Cartográfica
EAM 480
Programação aplicada a Engª. de Agrimensura e Cartográfica
AULA 01
Prof. Afonso P. Santos
[email protected].: 3899-3029
Sumário
• Apresentação da Disciplina
• Termos utilizados em programação
• Scilab
• Estrutura de um programa• Funções
• Palavras Reservadas
• Variáveis
• Entrada e saída de dados
• Comando de Pausa
• Exemplo
• Exercícios
2016/2
Prof. Afonso P. Santos 2
EAM 480
� Objetivos e Ementa
• A disciplina objetiva oferecer ao aluno o conhecimento aplicado àprogramação de computadores na área de Engenharia de Agrimensura eCartográfica.
• Serão apresentados os fundamentos e estrutura da linguagem, variáveis,constantes, operadores e expressões. Comandos de controle de fluxo.Conceitos de matrizes e vetores. Uso de ponteiros e funções . Comandosde entrada e saída pelo console ou por arquivos. Tipos de dados definidospelo usuário. Ferramentas, bibliotecas e extensões.
• Ao final do curso, o aluno deverá ser capaz de utilizar com proficiência alinguagem de programação do Scilab/Matlab para implementar algoritmosda área.
EAM 480
• Plano de Aulas, Critérios de Avaliação e Referências Bibliográficas.
Disponível no PVANET
2016/2
Prof. Afonso P. Santos 3
EAM 480
� Softwares utilizados
Scilab
• Começou a ser desenvolvido na década de 1990 por pesquisadores doINRIA (Institut National de Recherche en Informatique et en Automatique)e do ENPC (École Nationale des Ponts et Chaussées) na França. O Scilab éagora mantido e desenvolvido pelo Scilab Enterprises desde 2010.
• Disponível gratuitamente em: www.scilab.org
Alguns Termos
2016/2
Prof. Afonso P. Santos 4
Termos
Definição de termos
• Código-fonte: é o texto ou conjunto de palavras, em uma determinadalinguagem, escrita de forma ordenada e contendo instruções de formalógica.
• Compilador: realiza a leitura do código-fonte como um todo traduzindoem código-objeto.
• Interpretador: realiza a leitura do código-fonte linha por linha,executando a instrução de cada linha por vez. Quando se utiliza de uminterpretador, toda vez em que for executar o programa é necessário autilização do interpretador. Exemplos: Linguagens em Scilab, Matlab,BASIC, VB, PHP, LISP, Javascript, entre outras.
Termos
Definição de termos
• Código objeto: é o nome dado ao código resultante do processo decompilação. É uma forma intermediária similar a linguagem de máquinado computador. Apesar de estar representado em binário, não éexecutável diretamente pelo processador, pois normalmente, o código-objeto referencia partes de programa que não estão necessariamentedefinidas no mesmo arquivo que o gerou, por exemplo, arquivos debibliotecas de sub-rotinas.
• Código de máquina: são um conjunto de instruções que o computadorentende para executá-las. Essas instruções são representadas porsequências de bits, chamadas de código binário já que são formados por0 e 1.
2016/2
Prof. Afonso P. Santos 5
Termos
Definição de termos
• Linkeditor: também chamado de Ligação é um programa que une oscódigos-objeto que foram compilados separadamente gerando umprograma executável. A linkedição nada mais é que a união debibliotecas utilizadas com o código escrito por um programador,gerando assim um único módulo, denominado de programa executável.
• Biblioteca: Arquivos contendo funções que podem ser acopladas /utilizadas no seu programa.
• Tempo de compilação: São os eventos que ocorrem enquanto seuprograma está sendo compilado. Um exemplo de eventos são erros desintaxe (regra da linguagem de programação)
• Tempo de execução: São os eventos que ocorrem enquanto seuprograma está sendo executado.
Termos
Definição de termos
• Editor: é o programa onde o código-fonte é escrito.
• Debugger: auxilia o programador a eliminar, ou reduzir, a quantidade deerros de execução no programa. Possibilita a execução passo-a-passo departes do programa, visualização de valores das variáveis, visualizaçãodos conteúdos dos registros internos do processador, alteração emtempo de execução de conteúdos de memória, de variáveis ou deinstruções, entre outros pontos.
• IDE (Ambiente de Desenvolvimento Integrado): é um programa decomputador que reúne características e ferramentas de apoio aodesenvolvimento de software com o objetivo de agilizar este processo.
2016/2
Prof. Afonso P. Santos 6
Scilab
Scilab
• Scilab é um software para computação numérica, semelhante aoMatlab, que fornece um ambiente computacional robusto e gratuito.
• Algoritmos complexos podem ser criados em poucas linhas de código,em comparação com outras linguagens como C, Python, Fortran, ouC++, já que possui centenas de funções matemáticas/estatísticas.
• Possui sofisticadas estruturas de dados, incluindo listas, polinômios,sistemas lineares, etc.;
• Possui ferramentas para geração de gráficos 2D e 3D, simulações eotimizações;
• Bastante difundida e utilizada profissionalmente e cientificamente nasEngenharias;
2016/2
Prof. Afonso P. Santos 7
Scilab
• Console: Tela principal do Scilab
ConsoleJanela de Comandos
Histórico de Comandos
Navegador de Variáveis
Navegador de Arquivo
Scilab
• SciNotes: é um editor para os códigos-fonte que será interpretado pelo Scilabe exibidos na janela de console. Os arquivos são salvos na extensão .sce
2016/2
Prof. Afonso P. Santos 8
Scilab
• Ajuda: possui todos os comandos e funções do Scilab, bem como trechos decódigos explicando seu funcionamento.
A linguagem do Scilab
2016/2
Prof. Afonso P. Santos 9
A linguagem do Scilab
• Linguagem baseada na linguagem C;
• Scilab é uma linguagem de programação de alto nível, orientada àanálise numérica.
• Possui uma linguagem estruturada e modular;
• O Scilab detém uma linguagem que é interpretada e nãocompilada;
• O Scilab é “case sensitive”, ou seja, há uma diferenciação entreletras maiúsculas e minúsculas.
• Como em linguagens C/C++ o Scilab possui operadores lógicos,aritméticos e relacionais, comandos de controle de fluxo comorepetições e condicionais, manipulação com arquivos, matrizes etextos...
A linguagem do Scilab
Nível de
Linguagem
Linguagem de
Programação
Alto(similar àlinguagem humana)
PascalCOBOL
FORTRANBASICScilab
MédioC++
CJava
Baixo(similar à
linguagem de máquina)
Assembler
Linguagem
Não-Estruturada
Linguagem
Estruturada
COBOLFORTRAN
BASIC
PascalC++
CScilab
Matlab
2016/2
Prof. Afonso P. Santos 10
Estrutura de um programa em C
• É de conhecimento que a estrutura de um programa em C/C++ seguebasicamente a seguinte ordem:
• Declarações de bibliotecas (#include <stdio.h> | #include<iostream>);
• Definição de constantes (#define pi 3.1415);
• Definição de tipos de dados (Struct)
• Declaração de variáveis globais;
• Funções
• Função Principal (main)
Estrutura de um programa Scilab
• O Scilab não tem uma estruturação específica, mas no nosso curso iremosutilizar a seguinte estrutura:
• Chamadas de Funções externas (exec(‘nome_arquivo_função’));
• Definição de constantes
• Definição de tipos de dados (Struct )
• Funções
• Código Principal
2016/2
Prof. Afonso P. Santos 11
Estrutura de um programa Scilab
• Escreva um programa que receba o ângulo em graus decimais e apresente na tela em radianos.
Algoritmo:
• Ler o ângulo em graus decimais• Converter o ângulo em radianos
RAD = ang*PI/180.0• Escrever o resultado em tela
Estrutura de um programa Scilab
• Diferentemente das linguagens C/C++, no Scilab não é necessário a
declaração de bibliotecas, nem a presença de uma função principal;
• As funções clear e clc são bastantes utilizadas na programação noScilab. Nesta disciplina seu uso será obrigatório em todos osprogramas desenvolvido:
• clear: limpa a memória do Scilab, destruindo todas as variáveiscriadas anteriormente;
• clc: limpa a tela do console, apagando registros antigos;
2016/2
Prof. Afonso P. Santos 12
Variáveis
• Variável é uma posição nomeada de memória, que tem como função
armazenar um valor (que pode ser modificado pelo programa) de acordo
com o tipo pré-definido;
• O nome de uma variável é chamado de identificador .
• Os identificadores tem que iniciar com uma letra (a a z) ou com oscaracteres: %, _ , # , ! , $ e ?. O restante do nome pode conter letras enúmeros apenas. Recomenda-se para o tamanho máximo para umidentificador o uso de 20 posições (caracteres);
• Não é aceito o uso de acentuações nos identificadores de variáveis;
• Uma variável pode ser dividido em Local e Global.
Variáveis
Variáveis Locais• Também chamadas de variáveis dinâmicas ou automáticas;• São declaradas dentro de uma função;• São visualizadas apenas dentro da função onde foram declaradas;• São criadas em tempo de execução quando a função é chamada;• É destruída após o final da execução da função, portanto não é
apresentada no navegador de variáveis do Scilab;• Sobrepõem à uma variável global de mesmo nome dentro da função;
function [saída] = nome(ent1, ent2)i = 1;b = 2.1;
endfunction;
2016/2
Prof. Afonso P. Santos 13
Variáveis
Variáveis Globais
• É declarada fora do corpo de qualquer função;
• Podem serem utilizadas em qualquer função do código fonte;
• São alocadas em tempo de interpretação/execução e ocupam a memóriadurante toda a execução do Scilab. Portanto, deve-se evitar o uso abusivo devariáveis globais ou utilizar o comando Clear para limpar a memória;
• Para uma melhor organização, sugere-se declarar todas as variáveis globaisno início do código-fonte;
i = 2;function [saída] = nome(ent1, ent2)
a = b + i;endfunction;
Tipo de dados
• Diferentemente de linguagens C/C++, no Scilab não é preciso declarar o tipo que uma variável irá ter;
• Uma variável pode armazenar diferentes tipos de caracteres e números:
Tipo Descrição Faixa de Valores Bytes
char Caractere. Geralmente são armazenados em códigos ASCII
-128 a 127 1
int Número inteiro -32767 a 32767 2
float Número Real (Ponto Flutuante) 3.4e-38 a 3.4e+38 4
double Número Real (Ponto Flutuante com precisão dupla) 1.7e-308 a 1.7e+308 8
void serve para indicar que um resultado não tem um tipo definido
unsigned int Números inteiros positivos 0 a 65535 4
long int Números inteiros longos -2147483648 a 2147483648 8
A faixa de valores dos tipos de dados podem variar de acordo com o compilador/interpretador.
Tipo de variáveis utilizados na linguagem C/C++
2016/2
Prof. Afonso P. Santos 14
Tipo de dados
• Diferentemente de linguagens C/C++, no Scilab não é preciso declarar o tipo que uma variável irá ter;
Conversor /
EspecificadorSaída
%d Números inteiros
%f Números Reais (ponto flutuante)
%e Exponencial
%g Menor formato possível
%c Caractere
%s String ou Texto (Conjunto ou vetores de caracteres)
Especificadores ou conversores de tipos utilizados principalmente nos comandos de saída:
Tabela ASCII
2016/2
Prof. Afonso P. Santos 15
Funções
• A palavra reservada que indica o início da declaração de uma função éfunction. A palavra endfunction indica o término de uma função;
• O corpo de uma função é delimitado apenas pela palavras function eendfunction, não sendo necessário qualquer tipo de caractere;
• A identificação (nome) das funções segue a mesma regra dos identificadoresdas variáveis.
function [saida1, saida2,...] = nome_funcao (ent1, ent2, ...)declarações de variáveis locais;bloco de comandos;
endfunction
Funções
• Após o nome da função, abre-se parêntesis e declara a lista de parâmetrosutilizadas no corpo da função;
• A lista de parâmetros são variáveis que irão receber os valores de outrasvariáveis declaradas previamente no código principal do programa;
• A variáveis que serão apresentadas como resultado daaplicação da função deverão ser delimitadas por colchetes([ ])e separadas entre si por vírgulas.
• Pode-se ter mais de uma variável como saída de umadeterminada função
2016/2
Prof. Afonso P. Santos 16
Entrada e Saída de dados
• A entrada e saída de dados é realizada, principalmente, pelos comandos:
• printf() � utilizado quando se quer escrever algo na tela do computador(Saída);
• input() � utilizado quando se quer obter dados a partir do teclado (Entrada);
sintaxe:
printf (“formatacao”, arg1, arg2, ...)
formatacao - é uma cadeia de caracterescontendo textos e formatações que serãoutilizados para apresentar os resultados devariáveis, expressões, etc. É delimitada poraspas duplas.arg1 – é a expressão ou variável que teráseu valor mostrado na tela.
sintaxe:
variavel = input (“formatacao”)
formatacao - é uma cadeia de caracterescontendo formatações que serão utilizadaspara informar ao usuário o tipo de dadosque ele deverá digitar no teclado .variavel – é a variável que receberá osdados lidos.
Entrada e Saída de dados
Note que não há nenhuma variável aser mostrada em tela. O comandoapenas escreve um texto em tela. Hásó uso da formatação.
A formatação %d, é um conversor de tipo de dados. O %d converte o caractere emnúmero e vice-versa.O conversor/especificador de tipo serve como uma janela para que variáveispossam ser apresentadas junto à formatação do comando de saída (printf,mprintf, disp).
O comando input lê os dados digitadosvia teclado e atribui à variável idade;A formatação existente no comandoinput serve para informar ao usuário oque se deve digitar ao teclado;
2016/2
Prof. Afonso P. Santos 17
Entrada e Saída de dados
Caracteres especiais (a serem utilizados na formatação do comando printf)
Caractere Descrição
\b retrocesso
\f Nova página
\n Nova linha
\t tabulação
\’ apóstrofo
%% Porcentagem
\\ Barra invertida
Entrada e Saída de dados
Formatando a saída dos dados:
2016/2
Prof. Afonso P. Santos 18
Exemplos
• Uso de Funções e variáveis – multiplicar números
Exercício
1) Dados os valores máximos (max) e mínimos (min) de um intervalo [max,min], escrever um programa em C para re-escalonar valores (Vo), nesseintervalo [max, min] para o intervalo entre [0,1]; onde,
2) Escrever um programa para converter distâncias obtidas num documentocartográfico em milhas para quilômetros, sendo que 1 milha é igual a1.60934 quilômetros;
3) Escrever um programa para calcular a média do ângulo zenital coletadoem pontaria direta (PD) e indireta (PI). Os dados de entrada devem ser oângulo zenital (PD e PI)
– A fórmula para o cálculo é: Z médio = (360 + PD – PI)/2
minmax
min
−
−=
o
E
VV
2016/2
Prof. Afonso P. Santos 19
Exercício
4) Escrever um programa para o cálculo da área de um polígono obtido
através de imagem raster. O programa deve solicitar o nº de células (pixel) dopolígono e a resolução espacial (comprimento do pixel) da imagem (considereo pixel sendo quadrado) e retornar a área do polígono.
5) Escrever um programa para obter a declividade (D) de um terreno, atravésdo ângulo de inclinação (i).
A fórmula para o cálculo é: D = 100* tg(i);
6) Escrever um programa para obter a declividade (D) de um terreno, atravésda diferença de altitude (Dn) e da distancia horizontal (Dh) entre dois pontos.A fórmula para o cálculo é: D = (Dn/Dh)*100;
Exercício
7) Escrever um programa para converter ângulo vertical de inclinação (i) emângulo zenital (Z). A fórmula para o cálculo é: Z = 90 – i
8) Faça um programa para que o usuário entre com uma distância medida emum mapa e sua medida homologa no terreno. Calcule o denominador daescala correspondente.
9) Faça um programa para converter graus decimais em graus, minutos esegundos;
10) Faça um programa que calcule o efeito da curvatura terrestre (ΔS) naaltimetria para uma dada distância na superfície esférica (S).
– Fórmula: ΔS = S/R² ; onde R é o raio terrestre.
2016/2
Prof. Afonso P. Santos 1
Universidade Federal de Viçosa
Curso de Engenharia de Agrimensura e Cartográfica
EAM 480
Programação aplicada a Engª. de Agrimensura e Cartográfica
AULA 02
Prof. Afonso P. Santos
[email protected].: 3899-3029
Sumário
• Variáveis
• Operadores
• Comando condicional IF
• Exercícios
2016/2
Prof. Afonso P. Santos 2
Variáveis
• Variável é uma posição nomeada de memória, que tem como função
armazenar um valor (que pode ser modificado pelo programa) de acordo com
o tipo pré-definido.
• Regras Gerais:
� O nome de uma variável é chamado de identificador .
� Os identificadores tem que iniciar com uma letra (a a z) ou com os
caracteres: %, _ , # , ! , $ e ?. O restante do nome pode conter letras e
números apenas. Recomenda-se para o tamanho máximo para um
identificador o uso de 20 posições (caracteres);
� Não é aceito o uso de acentuações nos identificadores de variáveis;
Variáveis
• Regras Gerais
� As variáveis tipo caractere e texto deverão receber valores entre
aspas simples (‘);
� Tipo Booleano: o Scilab utiliza as constantes %t ou %T para
verdadeiro e %f ou %F para falso;
2016/2
Prof. Afonso P. Santos 3
Tipo de dados
• Diferentemente de linguagens C/C++, no Scilab não é preciso declarar o tipo
que uma variável irá ter;
Conversor /
EspecificadorSaída
%d Números inteiros
%f Números Reais (ponto flutuante)
%e Exponencial
%g Menor formato possível
%c Caractere
%s String ou Texto (Conjunto ou vetores de caracteres)
Especificadores ou conversores de tipos utilizados principalmente nos comandos de saída:
Expressões e Operadores
• Segundo Araújo e Hoffmann (2006), expressão é um conjunto de variáveis,
constantes e operadores que resultam em um valor.
• Os operadores podem ser classificados quanto:
• ao numero de operandos sobre os quais este atua:
• Unário: trabalha apenas com um operando;
• Binário: trabalha com dois operandos;
• Ternário: trabalha com três operandos;
• ao tipo de dado de seus operandos e ao valor resultante:
• Aritméticos;
• Lógicos;
• Relacionais;
• Literais;
2016/2
Prof. Afonso P. Santos 4
Operadores Matemáticos
Operador
Aritmético
Tipo Operação Exemplo
= ---- Atribuição: insere o resultado da expressão que
está a direita do operador na área de memória da
variável que está a esquerda do operador.
X =10;
X=Y=Z=20;
C=‘A’;
- unário Inversão de sinal -a
+ unário Manutenção do sinal +b
* binário Multiplicação a = b * c;
/ binário Divisão a = b / c;
+ binário Soma a = b + c;
- binário Subtração a = b - c;
^ binário Potência a = b ^ c;
sqrt() - Raiz Quadrada a = sqrt(b)
exp() - Exponencial [a = eb] a = exp(b)
Operadores Matemáticos
Operador divisão “/”• Pode-se utilizar em números inteiros ou flutuantes;
• Não importa se um número é inteiro, o resultado sempre será
um ponto flutuante. Ex: 5/2 = 2.5
resto de divisão
• Utiliza-se o comando modulo(i, j) para devolver o resto da
divisão entre os operadores i e j;
2016/2
Prof. Afonso P. Santos 5
Exemplo
Exemplo
2016/2
Prof. Afonso P. Santos 6
Operadores Relacionais
Operador
Relacional
Descrição Tipo Exemplo
> Maior que Binário a > b
>= Maior que ou igual a Binário a >= b
< Menor que Binário a < b
<= Menor que ou igual a Binário a <= b
== Igual Binário a == b
~= Diferente Binário a ~= b
Os operadores relacionais e lógicos resultam em Verdadeiro (T) ou Falso (F)
Operadores Lógicos
Os operadores relacionais e lógicos resultam em Verdadeiro (T) ou Falso (F)
Operador
Lógico
Descrição Tipo Exemplo
& AND (e) Binário a & b
| OR (ou) Binário a | b
~ NOT (não) Unário ~a
a b a & b a | b ~b
F F F F T
F T F T F
T T T T F
T F F T T
& � dá preferência para o termo FALSO;
| � dá preferência para o termo VERDADEIRO;
! � troca os valores;
2016/2
Prof. Afonso P. Santos 7
Exemplo
Funções Trigonométricas
• Não é necessário declarar quaisquer tipos de bibliotecas!
• Operações que envolve ângulos quase sempre utilizam dados de entrada
em radianos!
� sin() – retorna o seno de um ângulo.
� cos() – retorna o cosseno de um ângulo.
� tan() – retorna a tangente de um ângulo
� sec() – retorna a secante de um ângulo
� csc() – retorna a cossecante de um ângulo
� cotg() – retorna a cotangente de um ângulo
� asin() – retorna o arco-seno de um ângulo.
� acos() – retorna o arco-cosseno de um ângulo.
� atan() – retorna o arco-tangente de um ângulo.
Entrada com dados
em Radianos
2016/2
Prof. Afonso P. Santos 8
Funções Trigonométricas
• Não é necessário declarar quaisquer tipos de bibliotecas!
• Operações que envolve ângulos utilizam dados de entrada em radianos!
� sind() – retorna o seno de um ângulo dado em graus.
� cosd() – retorna o cosseno de um ângulo dado em graus.
� tand() – retorna a tangente de um ângulo dado em graus.
� asind() – retorna o arco-seno com o resultado em graus.
� acosd() – retorna o arco-cosseno com o resultado em graus.
� atand() – retorna o arco-tangente com o resultado em graus.
Entrada dos
dados em Graus
Saída dos
Resultados
em Graus
Exemplo
2016/2
Prof. Afonso P. Santos 9
Exemplo
Operações com variáveis de diferentes tipos
• Como não se declara o tipo da variável no Scilab, uma determinada
variável que se inicia como número inteiro, pode-se posteriormente
receber valores flutuantes ou textuais � veja a varável X;
2016/2
Prof. Afonso P. Santos 10
Operações com variáveis de diferentes tipos
• O especificador/conversor de tipo define como o resultado será apresentado.
• Na linha 7 e 9 uma divisão de número real e inteiro (ou vice-versa) resulta em
uma número real utilizando o especificador %f.
• Na linha 8 e 10 uma divisão de número real e inteiro (ou vice-versa) resulta em
uma número inteiro utilizando o especificador %d.
Prioridades Operadores
Maior Prioridade
Menor Prioridade
1. ~ (não - lógico)
2. ^ (potência)
3. * / (multiplicação e divisão)
4. + - (soma e subtração)
5. < <= >= > == ~= (relacionais)
6. & | (e ou – lógicos)
A ordem de prioridade
pode ser alterada pelo
uso do parênteses
2016/2
Prof. Afonso P. Santos 11
Exemplo
• Obtenha o valor de Graus, Minutos e Segundos correspondente ao formato
GGG.MMSS
Comandos de Controle de Fluxo
2016/2
Prof. Afonso P. Santos 12
Comandos de Controle de Fluxo
� Os comandos de controle de fluxo são a essência de qualquer linguagem,
porque governam o fluxo da execução do programa.
� São poderosos e ajudam a explicar a popularidade da linguagem.
� Os comandos de Controle de Fluxo é divididos em três categorias:
� Comandos condicionais (de decisão) � IF - SELECT
� Comandos de repetições (loop ou laços) � WHILE - FOR
� Comandos de Interrupções e Continuação � CONTINUE – BREAK – QUIT –
ABORT – PAUSE
sintaxe:
if (condição) then
bloco de comandos se a condição for verdadeira
else
bloco de comandos se a condição for falsa
end
Comando IF
� O comando IF instrui o computador a tomar uma decisão simples;
� Se a condição do comando if for verdadeiro, o computador executará o
comando ou o bloco;
� Se for falso, e se a cláusula else existir, o computador executará o comando ou o
bloco definido;
2016/2
Prof. Afonso P. Santos 13
Comando IF
� Exemplo simples:
Exemplo:if(i==1)then
comando 1;
elseif(i>1 & i<3) then
comando 2;
elseif(i>3 & i<5) then
comando 3;
else
comando 4;
IF aninhados
� Um if aninhado é um comando if que é o
objeto de outro if ou else. São muito comuns
em programação;
� Para o caso de um if dentro de um else, o
Scilab possui a forma elseif, para simplificar
o processo;
� Um comando else sempre se refere ao
comando if ou elseif mais próximo;
Sintaxe:
if (expressão1) then
bloco de comandos 1
elseif (expressão2) then
bloco de comandos 2
elseif (expressão3) then
bloco de comandos 3
else
bloco de comandos 4
end
2016/2
Prof. Afonso P. Santos 14
Exemplos
• Programa para calcular o Azimute de um alinhamento definido por dois
pontos:� Necessário ter as coordenadas planimétricas de dois pontos (X1,Y1 e X2,Y2);
� Iniciar o cálculo do azimute pelo fórmula do arco-tangente;
� Realizar a análise de quadrantes e realizar a correção do azimute;
� Apresentar o resultado do azimute do alinhamento;
����� � ����
�
Resultado de saída em graus
correspondente ao intervalo -90° a +90°
• Se dX>=0 e dy<0 (2°qd) � Az = Az + 180°;
• Se dX<0 e dy<0 (3°qd) � Az = Az + 180°;
• Se dX<0 e dy>=0 (4°qd) � Az = Az + 360°;
� � �2 � �1
� � �2 � �1
Exemplos
2016/2
Prof. Afonso P. Santos 15
Exemplos
• Calculando o Azimute com a função atan utilizando dois parâmetros:
����� � ��� �, �Resultado de saída em graus
correspondente ao intervalo -180° a +180°
• Se Az<0 (3° e 4°qd) � Az = Az + 360°;
� � �2 � �1
� � �2 � �1
Exemplos
2016/2
Prof. Afonso P. Santos 16
Exercício
1) Escrever um programa para calcular as áreas de figuras planas: quadrado
(lado), retângulo (2 lados), círculo (raio), triângulo (base e altura), trapézio (2
bases e altura) e paralelogramo (base e altura).
2) No Brasil empregou-se oficialmente, num passado recente, as seguintes
unidades lineares:
– 1 légua = 6 600 m
– 1 légua marítima = 5 555,55 m
– 1 quadra = 132 m
– 1 corda = 33 m
– 1 braça = 2,20 m
– 1 vara = 1,10 m
– 1 palmos = 0,22 m
Escreva um programa para que cada uma destas unidades seja
convertidas em metros
Exercício
3) Escrever um programa em que o usuário entre com o valor de um azimute.
O programa terá que analisar qual quadrante o azimute se encontra e
transformar azimute em rumo:
– 1º. Quadrante (NE) RUMO = AZ
– 2º. Quadrante (SE) RUMO = 180º - AZ
– 3º. Quadrante (SW) RUMO = AZ – 180º
– 4º. Quadrante (NW) RUMO = 360º - AZ
4) Escrever um programa para converter ângulo de inclinação (AI) em ângulo
zenital (Z). O ângulo de Inclinação deve obedecer ao formato: ggg.mmss
(graus.minutos_segundos). O resultado deverá ser dado em graus decimais.
– A fórmula para o cálculo é: Z = 90 – AI
2016/2
Prof. Afonso P. Santos 17
Exercício
5) Escrever um programa para obter a declividade (D) de um terreno, através
do ângulo de inclinação (i) ou através da diferença de altitude (Dn) e da
distancia horizontal (Dh) entre dois pontos. Faça um Menu de opções. O
ângulo de inclinação em graus deve obedecer ao formato: ggg.mmss
(graus.minutos_segundos).
– A fórmula para o cálculo é: D = 100* tg(i) ou D = (Dn/Dh)*100
6) Escrever um programa para calcular a distancia horizontal (Dh) utilizando
mira Horizontal. Os dados de entrada devem ser o comprimento da mira
horizontal (b), e o ângulo horizontal (α). O ângulo horizontal em graus deve
obedecer ao formato: ggg.mmss (graus.minutos_segundos).
– A fórmula para o cálculo é: Dh = b / (2*tg(α/2))
Exercício
7) Escrever um programa para calcular o azimute de um alinhamento de uma
poligonal topográfica. O usuário deverá entrar com o azimute do alinhamento
anterior e o ângulo horário entre os dois alinhamentos.
2016/2
Prof. Afonso P. Santos 18
Exercício
8) Escrever um programa para calcular as coordenadas X, Y do ponto p. Foi
realizado um levantamento por interseção angular onde as observáveis foram
os ângulos αA e αB, o azimute AZAB. O usuário detinha as coordenadas X e Y do
ponto A.
Fonte: Rodrigues (2007)
2016/2
Prof. Afonso P. Santos 1
Universidade Federal de ViçosaCurso de Engenharia de Agrimensura e Cartográfica
EAM 480
Programação aplicada a Engª. de Agrimensura e Cartográfica
AULA 03
Prof. Afonso P. [email protected]
Tel.: 3899-3029
Sumário
• Comandos de Controle de Fluxo;– IF
– SELECT
– FOR
– WHILE
– Continue
– Break
– Return
– Abort
– Pause
• Exercícios.
2016/2
Prof. Afonso P. Santos 2
Comandos de Controle de Fluxo
� Os comandos de controle de fluxo são a essência de qualquer linguagem,porque governam o fluxo da execução do programa.
� São poderosos e ajudam a explicar a popularidade da linguagem.
� Os comandos de Controle de Fluxo é divididos em três categorias:
� Comandos condicionais (de decisão) � IF - SELECT
� Comandos de repetições (loop ou laços) � WHILE - FOR
� Comandos de Interrupções e Continuação � CONTINUE – BREAK – QUIT –ABORT – PAUSE
COMANDOS CONDICIONAIS
2016/2
Prof. Afonso P. Santos 3
sintaxe:if (condição) then
bloco de comandos se a condição for verdadeiraelse
bloco de comandos se a condição for falsaend
Comando IF
� O comando IF instrui o computador a tomar uma decisão simples;
� Se a condição do comando if for verdadeiro, o computador executará ocomando ou o bloco;
� Se for falso, e se a cláusula else existir, o computador executará o comando ou obloco definido;
Comando IF
� Exemplo simples:
2016/2
Prof. Afonso P. Santos 4
Exemplo:if(i==1)then
comando 1;
elseif(i>1 & i<3) then
comando 2;
elseif(i>3 & i<5) then
comando 3;
else
comando 4;
IF aninhados
� Um if aninhado é um comando if que é oobjeto de outro if ou else. São muito comunsem programação;
� Para o caso de um if dentro de um else, oScilab possui a forma elseif, para simplificaro processo;
� Um comando else sempre se refere aocomando if ou elseif mais próximo;
Sintaxe:
if (expressão1) thenbloco de comandos 1
elseif (expressão2) thenbloco de comandos 2
elseif (expressão3) thenbloco de comandos 3
else
bloco de comandos 4end
Exemplos
• Programa para calcular o Azimute de um alinhamento definido por dois pontos:� Necessário ter as coordenadas planimétricas de dois pontos (X1,Y1 e X2,Y2);� Iniciar o cálculo do azimute pelo fórmula do arco-tangente;� Realizar a análise de quadrantes e realizar a correção do azimute;� Apresentar o resultado do azimute do alinhamento;
����� � ����
�
Resultado de saída em graus correspondente ao intervalo -90° a +90°
• Se dX>=0 e dy<0 (2°qd) � Az = Az + 180°;• Se dX<0 e dy<0 (3°qd) � Az = Az + 180°;• Se dX<0 e dy>=0 (4°qd) � Az = Az + 360°;
� � �2 � �1
� � �2 � �1
2016/2
Prof. Afonso P. Santos 5
Exemplos
Comando SELECT
• Comando similar ao SWITCH na linguagemC/C++;
• Uma variável é testada sucessivamentecontra uma lista de variáveis inteiras ou decaracteres. Depois de encontrar umacoincidência, o comando ou o bloco decomandos é executado.
• Se nenhuma coincidência for encontrada ocomando else será executado. O else éopcional.
select(variável) case constante1 then
bloco de comandoscase constante2 then
bloco de comandoscase constante3 then
bloco de comandos...else
bloco de comandos end
2016/2
Prof. Afonso P. Santos 6
Comando SELECT
• O comando select só testa igualdade,diferentemente, o if avalia uma expressãológica ou relacional;
• Duas ou mais constantes case pertencentesao mesmo select não podem ter valoresidênticos;
select(variável) case constante1 then
bloco de comandoscase constante2 then
bloco de comandoscase constante3 then
bloco de comandos...else
bloco de comandosend
SELECT aninhado
• É possível utilizar um select comoparte de um bloco de comando deum outro select;
• Select aninhado é quando seutiliza um select dentro de outroselect;
• Constantes case de valoresidênticos de dois select que estãoaninhados não causam conflitos;
select(x) case 1 then
selext(y)case 0 then
printf(“erro de divisão por zero”);else
printf(“divisão de K por Y eh: %d”, k/y);end
case 2 then
printf(“Multiplicação de K por Y eh: %d”, k*y);case 3 then
printf(“Soma de K por Y eh: %d”, k+y);else
printf(“Opção invalida”);end
2016/2
Prof. Afonso P. Santos 7
Exemplo
• O comando SELECT é muito utilizado para a criação de menu.
COMANDOS DE REPETIÇÃO
2016/2
Prof. Afonso P. Santos 8
Comando FOR
� O comando for é de alguma maneira encontrado em todas linguagensprocedurais de programação.
� Em sua forma mais simples, a incialização é um comando de atribuição que ocompilador usa para estabelecer a variável de controle da repetição (loop). Asvariáveis tipo char deverão receber valores entre aspas duplas (“);
� O incremento define a maneira como a variável de controle da repetição seráalterada cada vez que o computador realizar uma iteração da repetição.
� A parada é um valor limite da variável de controle da repetição. Antes de cadaiteração o Scilab testa se o valor da variável atingiu este valor de parada.Enquanto não for atingido tal valor, realiza-se a repetição.
Sintaxe:
for inicialização : incremento : paradabloco de comandos
end
Comando FOR
for x=1 : 1 : 100
disp(x);
end
Programa para imprimir valor de 1 a 10 tendo o incremento igual a 1
A variável X é inicializada,no comando FOR, com ovalor igual a 1.
A condição de parada docomando FOR é 10. Logo se ovalor de X passar deste valorlimite, a repetição não é maisexecutada, assim, prossegue ocódigo-fonte.
A cada repetição docomando FOR a variávelutilizada (X) é incrementadaem uma unidade (1)
2016/2
Prof. Afonso P. Santos 9
Comando FOR
for x=100: -5 : 70
z = x*x;
printf(“O quadrado de %d eh %d \n\n”, x, z);
end
• Rastreio em programação é muito utilizado quando se quer saber como umdeterminado algoritmo ou código-fonte está funcionando.
• O rastreio é feito pelo usuário de forma manual obtendo os valores de variáveis eexpressões durante todo o código-fonte, obedecendo os controles de fluxo domesmo
loop x z
1 100 10000
2 95 9025
3 90 8100
4 85 7225
5 80 6400
6 75 5625
7 70 4900
Comando WHILE
� Uma outra maneira possível de executar uma repetição é utilizando o comandowhile.
� Ele permite que o código fique sendo executado numa mesma parte doprograma de acordo com uma determinada condição.
� ele é executado desde que a condição seja verdadeira
� testa a condição antes de executar
Sintaxe:
while condiçãobloco de comandos
end
• A inicialização da variável utilizada nacondição deve ser realizada previamente docomando while
• O incremento ou decremento da variávelutilizada na condição deverá ser realizadano bloco de comandos do while
2016/2
Prof. Afonso P. Santos 10
Comando WHILE
x=100; //inicialização
while x~=65
z = x * x;
printf(“O quadrado de %d eh %d \n\n”, x, z);
x = x - 5; //decremento
end
loop x z
1 100 10000
2 95 9025
3 90 8100
4 85 7225
5 80 6400
6 75 5625
7 70 4900
8 65 -
Sintaxe:
while condiçãobloco de comandos
end
Exemplo
• Comandos de Repetição
2016/2
Prof. Afonso P. Santos 11
COMANDOS DE INTERRUPÇÕES E CONTINUAÇÃO
Comando CONTINUE
• Algumas vezes é necessário “saltar” uma parte do programa, para issoutiliza-se o comando continue.
• Este comando serve para: força a próxima iteração de um loop; pular ocódigo que estiver em seguida;
2016/2
Prof. Afonso P. Santos 12
Comando BREAK
• Quando este comando é encontrado em qualquer lugar do corpo de umcomando condicional ou de repetição, ele causará seu término imediato.O controle do programa passará então imediatamente para o códigoseguinte.
Comando PAUSE
• Quando este comando é encontrado em qualquer lugar do corpo de umprograma, ele causará uma pausa e no console aparecerá a seguinte frase:“Digite "resume" ou "abort" para retornar ao nível padrão de prompt.”
Escolha resume para continuar a execução ou abort para sair da execução doprograma.
2016/2
Prof. Afonso P. Santos 13
Comando ABORT e QUIT
• A função QUIT provoca a terminação do SCILAB, fechando a tela principale todas as outras janelas secundárias;
• A função ABORT interrompe a execução do programa e volta ao consoledo Scilab
Exemplo
• Faça o rastreio do texto abaixo que é uma mistura de código-fonte e algoritmo:
2016/2
Prof. Afonso P. Santos 14
iteração linha i j n
1
4 5 5 0
5 7
6 7
7 7
8 2
2
4 7 9 2
5 13
6 13
7 9
8 4
iteração linha i j n
3
4 9 13 4
5 17
6 17
7 11
8 6
4
4 11 17 6
5 21
6 21
7 13
8 8
Exemplo
Exemplo
2016/2
Prof. Afonso P. Santos 15
Exemplo
• Escrever um programa que realize a rotação de um ângulo k em n pontosde coordenadas planimétricas (U,V) em relação a um ponto de origem decoordenadas (c,d). As coordenadas rotacionadas (X,Y) são determinadaspelo modelo abaixo:
Exemplo
2016/2
Prof. Afonso P. Santos 16
Exercícios
• 1) Faça o rastreio do código/algoritmo abaixo:
i = 3; j=0; n=1;enquanto n menor que 6
j = n + i;if (modulo(j, i) ~= 0) then
j = j + 5;elseif (j>(n+i)) then
j = j +2;else
j = j -10;
imprima o ji = i + 3;n aumenta mais uma unidade;
fim
Exercícios
2) Faça um programa, com menu dinâmico, de modo a transformar Rumopara Azimute e Azimute para Rumo. Utilize o formato do ângulo emGGG.MMSS;
2016/2
Prof. Afonso P. Santos 17
Exercícios
3) Escrever um programa para calcular estatísticas de um conjunto deresíduos (V). Peça ao usuário para entrar com a média da amostra (Vm) eapós, entrar com os elementos da amostra, os resíduos (Vi), (o usuário devedefinir o número total de resíduos - n). Leia os dados e calcule o DesvioPadrão, o Coeficiente de Variação e o RMS.
– Desvio Padrão = S = raiz[ Σ(Vi - Vm)² / (n-1)]
– Coeficiente Variação = CV = (S/ Vm)*100
– RMS = raiz[ Σ(Vi)² / n]
Exercícios
4) Escrever um programa que aplique uma escala nos diferentes eixos (Eu, Ev)em n pontos de coordenadas planimétricas (U,V) em relação a um ponto deorigem de coordenadas (a,b). As coordenadas escaladas (X,Y) sãodeterminadas pelo modelo abaixo:
5) Escrever um programa que calcule a distância horizontal (dr) e o desnível(dn) de um levantamento taqueométrico. Faça um menu para o usuárioinformar qual tipo de ângulo vertical foi utilizado (zenital ou inclinação):
2016/2
Prof. Afonso P. Santos 18
Exercícios
6) Faça um programa, que faça o cálculo dos azimutes de cada alinhamentode uma poligonal e calcule o erro angular do levantamento. Como dado deentrada o usuário deve informar o número de lados da poligonal (n), oAzimute inicial do primeiro lado (az0), os ângulos horizontais horário entre osalinhamentos da poligonal.
Azimute calculado = azimute anterior + ângulo horário + 180°Se > 360° � subtrair 360° (-360°)
Se < 0° � somar 360° (+360°)
Erro angular = Azimute final calculado – Azimute inicial
ouErro angular = ∑(ang. Poligonal) – Si (ou Se)
Si = ∑ ang. Internos = 180°.(n-2)Se = ∑ ang. Externos = 180°.(n+2)
2016/2
Prof. Afonso P. Santos 1
EAM 480
Programação aplicada à Engenharia de Agrimensura e Cartográfica
AULA 04
Prof. Afonso P. Santosemail: [email protected]
Universidade Federal de ViçosaCurso de Engenharia de Agrimensura e Cartográfica
Sumário
• Rotinas;
– Funções e Procedimentos;
– Recursividade;
– Funções como bibliotecas;
• Exercícios
2016/2
Prof. Afonso P. Santos 2
Rotinas
• Um programa de computador pode possuir uma quantidadeenorme de linhas de comandos;
• Entretanto, um programa não deve ser um bloco único de linhas deinstruções, mas sim uma estrutura modular de fácil manutenção,compostos de várias partes que se “conectam” formando oprograma por inteiro;
• Uma das vantagens da programação estruturada em módulos é acapacidade de reutilização dos códigos;
• Cada módulo é chamado de Rotinas;
Rotinas
• Em programas mais elaborados, o uso de rotinas é essencial. Deve-se utilizar rotinas para:
– Modularizar um programa em partes menores;
– Executar uma tarefa rotineira;
– Aumentar a legibilidade do programa;
– Facilitar a manutenção de um programa;
2016/2
Prof. Afonso P. Santos 3
Rotinas
• Um rotina é um bloco de comandos ou instruções, adequadamenteidentificado que executa uma tarefa específica dentro de umprograma;
• A rotina pode ser dividida:
– Procedimento: é uma rotina que ao ser executada, não retorna umresultado ou valor à alguma variável;
– Função: é uma rotina que ao ser executada retorna um valor parauma varável ou um resultado;
Funções
• A forma geral das funções no Scilab:
• A palavra reservada que indica o início da declaração de umafunção é function. A palavra endfunction indica o término de umafunção;
• A identificação (nome) das funções segue a mesma regra dosidentificadores das variáveis.
function [x,y,..., zn] = nome_função(lista_parâmetros)
variáveis locais
Corpo da função
...
endfunction
2016/2
Prof. Afonso P. Santos 4
Funções
function [saida1, saida2,...] = nome_funcao (ent1, ent2, ...)declarações de variáveis locais;bloco de comandos;
endfunction
• Após o nome da função, abre-se parêntesis e declara a lista de parâmetrosutilizadas no corpo da função;
• A lista de parâmetros são variáveis que irão receber os valores de outrasvariáveis declaradas previamente no código principal do programa;
• A variáveis que serão apresentadas como resultado da aplicação da funçãodeverão ser delimitadas por colchetes [ ] e separadas entre si por vírgulas.
• Pode-se ter mais de uma variável como saída de uma determinada função
Variáveis
• Na verdade existem três tipos de variáveis:– Locais;
– parâmetros formais;
– variáveis globais.
• Variáveis locais são declaradas dentro de uma função ou dentro de umbloco de código e só são criadas quando entra no bloco e descartadas aosair do mesmo (seu conteúdo se perde). É prática comum declarar asvariáveis locais numa função no começo do bloco de código de umafunção.
• Se uma função usar argumentos, então ela deve definir variáveis queaceitarão os valores dos argumentos, as quais são chamadas deparâmetros formais.
2016/2
Prof. Afonso P. Santos 5
Variáveis
• As variáveis globais são conhecidas por todo o programa e podemser usadas por qualquer parte do código, e mais, retêm seus valoresdurante toda a execução do programa.
• Argumentos podem ser passados para uma sub-rotina de duasformas:– Na chamada por valor, é feita uma cópia do valor do argumento para o
parâmetro formal da sub-rotina. Portanto, as alterações que forem feitas nosparâmetros da sub-rotina, não terão nenhum efeito sobre as variáveis queforam usadas para chamá-las.
– Na chamada por referência, uma cópia do endereço de memória (ponteiros)de um argumento é passado para o parâmetro, assim as alterações que foremfeitas nos parâmetros formais afetarão as variáveis usadas para chamar arotina (NÃO UTILIZÁVEL NO SCILAB)
Exemplo - Função
Parâmetros Formais (Chamada por Valor)
Cálculo da Declividade
2016/2
Prof. Afonso P. Santos 6
Exemplo - Procedimento
Exemplo
• Escrever um programa que realize a rotação de um ângulo k em n pontosde coordenadas planimétricas (U,V) em relação a um ponto de origem decoordenadas (c,d). As coordenadas rotacionadas (X,Y) são determinadaspelo modelo abaixo:
2016/2
Prof. Afonso P. Santos 7
Exemplo
Recursividade
• Uma função é recursiva quando ela chama a si mesma;
function [saida] = nome_função(lista_parâmetros)
variáveis locais
Corpo da função
nome_função(lista_parâmetros)
...
endfunction
2016/2
Prof. Afonso P. Santos 8
Exemplo - Recursividade
Fatorial de um Número
Exemplo - Recursividade
• Para calcular o fatorial de um número não negativo, o Scilab já possui uma função implementada:
factorial(num)
2016/2
Prof. Afonso P. Santos 9
Funções como Bibliotecas
• No Scilab, existe a possibilidade de elaborar um arquivo .scecontendo somente funções em seu código. Este arquivos defunções funciona como um biblioteca;
• Para carregar esta biblioteca dentro de um programa e usufruir desuas funções já implementadas, deve-se utilizar o comando exec
Executar um programa do Scilab dentro de outro:
exec(“nome_do_arquivo.sce”);
Funções como Bibliotecas
Exemplo:
Crie uma biblioteca paraconversão de graus emradianos e vice-versa,além da conversão doformato GGG.MMSS.
Nome:
04.biblioteca.sce
2016/2
Prof. Afonso P. Santos 10
Funções como Bibliotecas
Para utilização de um arquivo externocomo uma biblioteca:
1. deve-se colocar o arquivo bibliotecana mesma pasta do programa emdesenvolvimento;
2. alterar o diretório de trabalho doScilab para que seja coincidente como diretório do programa emdesenvolvimento.
Exercícios
1. Crie um programa no Scilab para obter as coordenadas docentroide de um polígono.onde: Xi e Yi são as coordenadas de cada vértice de um polígono de n lados;
����� �∑��
���� �
∑�
2016/2
Prof. Afonso P. Santos 11
Exercícios
2. Calcule a distância horizontal (dh) e sua precisão (σdh) a partir deuma dada distância inclinada (S) [metros] (e sua precisão σs[metros]) e um ângulo de inclinação (i) [graus decimais] (e suaprecisão σi [em segundos]).
Considere que S e i não são correlacionados.
�� � . cos(i) ���� �
���
��
�
. ��� �
���
��
�
. ���
Exemplo:S = 50m σs = 0,05mi = 60° σi = 1800”dh = 25m σdh = 0,378m
2016/2
Prof. Afonso P. Santos 1
EAM 480
Programação aplicada a Engª. de Agrimensura e Cartográfica
AULA 05
Prof. Afonso P. Santosemail: [email protected]
Tel: 3899-3029
Universidade Federal de Viçosa
Curso de Engenharia de Agrimensura e Cartográfica
Sumário
• Vetores e Matrizes
– Conceito
– Construção de Vetores
– Construção de Matrizes
– Leitura de Vetores e Matrizes
– Operadores
– Funções
– Exemplos
2016/2
Prof. Afonso P. Santos 2
Vetores e Matrizes
� Uma matriz é uma coleção de variáveis do mesmo tipo que são
referenciadas pelo mesmo nome e que são armazenadas em um
espaço contiguo da memória em uma ordem de índice.
� Uma matriz pode ter de uma a várias dimensões.
� unidimensional � Vetor
� multi-dimensional � Matriz
� No Scilab, como qualquer variável, não se declara o tipo de um
vetor ou uma matriz;
Vetores
Instruções Descrição
Colchetes “[]” Marca o início e o fim de um vetor ou matriz
Vírgula “,” ou espaço “ “ Separa elementos de um vetor linha
Ponto e vírgula “;”Separa elementos de um vetor coluna / Separa os
elementos em linhas diferentes na matriz
Apóstrofo “ ‘ “ Faz a transposição de uma matriz ou vetor
x = inicio : fimCria um vetor a partir de inicio até fim com o
incremento um (1)
x = inicio : increm : fimCria um vetor a partir de inicio até fim com o
incremento de valor increm.
x = linspace( inicio, fim, nelem)Cria um vetor a partir de inicio até fim com o valor
nelem de elementos no vetor
� Um vetor pode ser criado na forma de linha ou de coluna;
2016/2
Prof. Afonso P. Santos 3
Vetores
� Formas de criação de um vetor linha:
� vl = [1, 2, 3, 4, 5]
� vl = [1 2 3 4 5]
� vl = 1 : 0.5 : 5
� vl = 1 : 5
� vl = linspace(0, 10, 5)
Vetores
� Formas de criação de um vetor coluna:
� vc = vl’
� vc = [1; 2; 3; 4; 5]
� vc = [1 2 3 4 5]’
� vc = linspace(0, 10, 5)’
2016/2
Prof. Afonso P. Santos 4
Matrizes
� As formas de criação de uma matriz segue a junção da criação de
vetores linhas com vetores colunas:
� m = [1 2 3; 4 5 6; 7 8 9]
� m = [1, 2, 3
4, 5, 6
7, 8, 9]
Matrizes
� Matrizes Padrão:
Comando Descrição
ones(l, c) Cria uma matriz de dimensão l x c com todos os elementos iguais a 1
zeros(l, c) Cria uma matriz de dimensão l x c com todos os elementos iguais a 0
eye(l, c) Cria uma matriz identidade de dimensão l x c
rand(l, c)Cria uma matriz de dimensão l x c com números aleatórios no intervalo
[0,1)
diag(v, d)
Cria uma matriz de zeros onde o vetor v é inserido na diagonal, sendo
que o deslocamento d positivo é aplicado nas colunas e o d negativo nas
linhas
2016/2
Prof. Afonso P. Santos 5
Matrizes
Acesso aos elementos de uma Matriz
Comando Descrição
size(m, p)
Retorna a dimensão de um vetor/matriz m. Se o parâmetro p for 1
obtém-se o numero de linhas, 2 para obter o numero de colunas e
“*” para obter o número de elementos.
who Exibe todas as funções do scilab
Whos –type constant Exibe todas as variáveis e constantes do scilab
m(l, c) Acesso ao elemento da matriz m localizado na linha l e coluna c
m(2:3, 5:7)Trabalhando apenas com uma parte da matriz. Sub-matriz da linhas 2
e 3 e colunas 5, 6 e 7
m(3, : ) Extrai a terceira linha da matriz m
m(4, : ) = [ ] Elimina a quarta linha da matriz m
m( : ) Exibe os elementos da matriz m de forma linear, coluna por coluna.
m($) Acessa o último elemento da matriz/vetor
unique(m)Exibe os valores únicos (sem repetição) dos elementos de uma
matriz m.
2016/2
Prof. Afonso P. Santos 6
Acesso aos elementos de uma Matriz
Leitura de um Vetor/Matriz
2016/2
Prof. Afonso P. Santos 7
Leitura de um Vetor/Matriz
Leitura de um Vetor/Matriz
2016/2
Prof. Afonso P. Santos 8
Operadores Matriciais
� Operações entre matrizes:
Operador tipo Descrição
+ - binário Soma e Subtração. Matrizes tem que ter a mesma dimensão.
‘ unário Transposta
* binárioMultiplicação. O primeiro operando tem que ter o numero de
colunas iguais ao número de linhas do segundo operando.
.* ./ .^ binárioMultiplicação, Divisão e Potenciação pontual (elemento a
elemento). Matrizes tem que ter a mesma dimensão.
x = [m, a] - Concatenação por colunas das matriz m e a
x = [m; a] - Concatenação por linhas das matriz m e a
Operadores Matriciais
� Operações com matriz e um escalar:
Operador tipo Descrição
+ - binário Soma e Subtração de uma matriz por um escalar.
* / binário Multiplicação e Divisão de uma matriz por um escalar.
^ binário Potenciação de uma matriz por um escalar.
2016/2
Prof. Afonso P. Santos 9
Funções Matriciais
Operador Descrição
inv(m) Retorna a inversa da matriz m.
det(m) Retorna o determinante da matriz m.
max(m) Retorna o maior valor entre os elementos da matriz m.
min(m) Retorna o menor valor entre os elementos da matriz m.
sum(m) Retorna a somatório dos valores dos elementos da matriz m.
prod(m) Retorna o produtório dos valores dos elementos da matriz m.
sign(m)Retorna uma matriz onde cada elemento exibe o sinal (positivo � 1
negativo�-1) do elemento da matriz m.
tril(m)Mantém a triangulação inferior da matriz m, e zera a triangulação
superior.
triu(m)Mantém a triangulação superior da matriz m, e zera a triangulação
inferior.
Exemplo
• Escrever um programa para calcular estatísticas básicas
• Entrada: amostra;
• Processamento:
• Média � Desvio Padrão �
• Variância �
• Saída: média, desvio padrão, variância;
2)()var( xsx =
n
x
x
n
i
∑== 1)(µ
1
))((
)( 1
2
−
−
=∑=
n
xx
xs
n
i
µ
2016/2
Prof. Afonso P. Santos 10
Exemplo
Exemplo
• Escrever um programa para ler duas matrizes quadradas A e B, e calcular a
soma, subtração e multiplicação entre elas.
– Algoritmo:
• Ler a matriz A
• Ler a matriz B
• Calcular a soma
• Calcular a subtração
• Calcular a multiplicação
• Imprimir o resultado em tela
2016/2
Prof. Afonso P. Santos 11
Exercícios
• 1 ) Escrever um programa para transformar uma data (dia, mês, ano) do
calendário gregoriano em dias corridos do ano.
– Ex: 05-01-2010 (5 JAN) � dia = 5;
– Ex: 18-03-2010 (18 MAR) � dia = 77;
OBS: O programa deverá verificar se o ano é bissexto! Para verificar se o
ano é bissexto as condições abaixo tem que serem atendidas:
- Ano for divisível por 4;
- Ano não for divisível por 100, ou ser divisível por 400.
2016/2
Prof. Afonso P. Santos 12
Exercícios
• 2) Escrever um programa que realize a rotação de um ângulo k em n
pontos de coordenadas planimétricas (U,V) em relação a um ponto de
origem de coordenadas (c,d). Utilize de uma estrutura matricial para
resolução deste exercício. As coordenadas rotacionadas (X,Y) são
determinadas pelo modelo abaixo:
Exercícios
3) Escrever um programa para calcular estatísticas de um conjunto de
resíduos (V). Antes da entrada dos elementos da amostra, os resíduos (Vi),
o usuário deve definir o número total de resíduos (n). Leia os dados e
calcule o Desvio Padrão, o Coeficiente de Variação e o RMS.
– Desvio Padrão = S = raiz[ Σ(Vi - Vm)² / (n-1)]
– Coeficiente Variação = CV = (S/ Vm)*100
– RMS = raiz[ Σ(Vi)² / n]
2016/2
Prof. Afonso P. Santos 13
Exercícios
• 4) Escrever um programa que aplique uma escala nos diferentes eixos
(Eu, Ev) em n pontos de coordenadas planimétricas (U,V) em relação a
um ponto de origem de coordenadas (a,b). Utilize de uma estrutura
matricial para resolução deste exercício. As coordenadas escaladas (X,Y)
são determinadas pelo modelo abaixo:
2016/2
Prof. Afonso P. Santos 1
EAM 480
Programação aplicada à Engenharia de Agrimensura e Cartográfica
AULA 07
Prof. Afonso P. Santosemail: [email protected]
Universidade Federal de Viçosa
Curso de Engenharia de Agrimensura e Cartográfica
Sumário
• Entrada e saída de dados via arquivos;
– Funções simples
– Associação de arquivos
– Leitura em um arquivo;
– Escrevendo em um arquivo;
– Exemplo;
• Exercícios
2016/2
Prof. Afonso P. Santos 2
Arquivos
� Arquivos são unidades de armazenamento de informações, que fica
gravado em uma unidade de memória secundária (HD) do
computador;
� Arquivos de computador podem ser considerados como o
equivalente aos documentos em papel que tradicionalmente são
armazenados em arquivos de escritórios e bibliotecas, sendo esta a
origem do termo;
� Os arquivos são acessados/identificados/criados de acordo com o
seu nome e extensão, bem como o diretório a qual ele está
armazenado;
� O SciLab possui a capacidade de trabalhar com arquivos textos
(legíveis por humanos) que podem ser editados pelo “Bloco de
Notas” ou qualquer programa leitor de texto;
Funções Simples
� save� salva as variáveis da memória do scilab para um arquivo
� load� recupera as variáveis de um arquivo
� diary � criar um arquivo de log, mantendo um registro de toda a
atividade desenvolvida no SciLab.
save(‘nome_arq’, ‘var1’, ’var2’, ‘varN’);
diary(“log021015.sav”);
diary(0);
Iniciar:
Terminar:
load(‘nome_arq’, ‘var1’, ’var2’, ‘varN’);
2016/2
Prof. Afonso P. Santos 3
Exemplo 1
Exemplo 2
2016/2
Prof. Afonso P. Santos 4
Associação de Arquivos
� Antes de associar um determinado arquivo ao SciLab, deve-se saber o
endereço do seu diretório, seu nome e extensão;
� O comando uigetfile permite a seleção de um arquivo por meio de uma
janela de diálogo onde é possível a navegação nos diretórios do sistema
operacional. Esta seleção grava o diretório e o nome do arquivo em uma
variável do tipo string;
� Conhecendo o endereço completo do arquivo é possível associar este
arquivo ao SciLab, utilizando o comando mopen para realizar a abertura
do arquivo ou a criação de um novo arquivo.
� Já o comando mclose permite a dissociação deste arquivo, fechando-o;
Associação de Arquivos
� uigetfile
nomearq = uigetfile(“*.*”, pwd(), “Selecione o arquivo”);
Diretório padrão do SciLabFiltro de Arquivos
Mostrar todos arquivos � “*.*”
Mostrar só TXT � “*.txt”
Título da Janela de Diálogo
2016/2
Prof. Afonso P. Santos 5
Associação de Arquivos
� mopen � associa um arquivo ao SciLab, realizando a abertura do
mesmo. O modo “r” abre um arquivo já existente para leitura, e o modo
“w” cria um novo arquivo e em seguida realiza o processo de abertura ou
abre um arquivo já existente para gravação;
� mclose � disassocia um arquivo no SciLab, realizando o processo de
fechamento do arquivo em manipulação;
� meof � retorna verdadeiro (%T) se o final do arquivo for encontrado.
var_arq = mopen(“nomearq”, “r”);
mclose(var_arq);
Leitura de um Arquivo
� mfscanf � realiza o processo de leitura de uma linha do arquivo,
associado ao SciLab, atribuindo os valores lidos às variáveis.
[n, lista_var] = mfscanf(arq, “formato”);
1 2.3 4.5
2 5.6 7.8
3 2.6 4.7
Arquivo.txt
while ~meof(arq)
[n,id,num1,num2] = mfscanf(arq, “%d %f %f”);
end
while ~meof(arq)
[n,id,num1,num2] = mfscanf(arq, “%d %f %f”);
end
Código para leitura
Sempre lê a quantidade
de valores de uma linha
2016/2
Prof. Afonso P. Santos 6
Escrevendo em um Arquivo
� mfprintf � realiza o processo de gravação de uma variável ou texto
dentro de um arquivo que está associado ao SciLab.
mfprintf(arq, “frase ou formato”, lista_var);
1 2.3 4.5
Arquivo_saida.txt
mfprintf(arq, “%d %f %f”, id, num1, num2);mfprintf(arq, “%d %f %f”, id, num1, num2);
Código para gravação
Manipulação de um Arquivo
� Ao ler ou escrever em um arquivo quase sempre utiliza-se de um comando
de repetição para este processo;
� Normalmente o controle de parada da repetição pode ser de duas formas:
– fim do arquivo: utiliza-se da função meof() (end of file) para verificar
se o arquivo está no fim; meof() retorna verdadeiro se a posição atual
do arquivo estiver no fim.
– Número de linhas a serem lidas: configura-se o arquivo de leitura para
que a primeira linha contenha o número de linhas que serão lidas nas
linhas abaixo do arquivo;
2016/2
Prof. Afonso P. Santos 7
Exemplo 3
• Leitura de um arquivo Texto
Exemplo 4
• Escreva um programa em SciLab para realizar a leitura dos vértices de um
polígono disponíveis em um arquivo-texto. Em seguida, calcule o
centroide do polígono e salve o resultado em um outro arquivo-texto;
Arquivo a ser lido
Arquivo a ser gerado
2016/2
Prof. Afonso P. Santos 8
Exemplo 4Cálculo de centroide de um
polígono (ler e gravar arquivo)
continua...
Exemplo 4Cálculo de centroide de um
polígono (ler e gravar arquivo)
2016/2
Prof. Afonso P. Santos 9
Exercício
• 1) Crie um programa para o cálculo da distância reduzida e desnível a
partir de dados de taqueometria. Os dados devem serem lidos a partir de
um arquivo com a seguinte estrutura:
– Considere todas as variáveis do tipo double, com exceção do ID_ponto que
será do tipo char[5];
– Considere a constante do equipamento com valor igual a 100;
– O arquivo de entrada não deverá ter cabeçalho nem o número de pontos a
serem lidos, apenas os dados brutos.
– Os resultados serão mostrado em um arquivo de texto gerado
automaticamente pelo programa com o nome “sai_taqueometria.txt”
ID_Ponto ângulo_horiz ângulo_zenital FS FM FI alt_instr
Exercício
• 2) Crie um programa para o cálculo da área e perímetro de um polígono.
Os dados devem serem lidos a partir de um arquivo com a seguinte
estrutura:
– Os resultados deverão serem mostrados em tela;
– Utilize o método de Gauss para o cálculo da área (S):
– Para o cálculo do perímetro crie um vetor para armazenar as distâncias e ao
final some-as;
x y
2S = – x1y2 – x2y3 – x3y4 – ... – xny1 + x2y1 + x3y2 + x4y3 + ... + x1yn.
2016/2
Prof. Afonso P. Santos 1
EAM 480
Programação aplicada à Engenharia de Agrimensura e Cartográfica
AULA 08
Prof. Afonso P. Santosemail: [email protected]
Universidade Federal de ViçosaCurso de Engenharia de Agrimensura e Cartográfica
Sumário
• Tipos de dados definidos pelo usuário– Listas (List)
– Estruturas (Struct)
• Exemplos;
• Exercícios;
2016/2
Prof. Afonso P. Santos 2
Tipos de dados definidos pelo usuário
• O SciLab permite que seja criados diferentes tipos de dadospersonalizados.
• Aqui será visto dois tipos:
– Listas (list), é uma classe de variável que permite o armazenamento dediferentes tipos de dados;
– Estrutura (struct), que é um grupo de variáveis sob o mesmo nome;
Listas
• Listas: é uma classe de variável (estilo ao de uma matriz) que permite oarmazenamento de diferentes tipos de dados;
• A palavra reservada list informa ao interpretador que está sendo definidoos valores de uma lista.
L = list(‘EAM’, -3.2, [1,2,3,4], 3, [‘a’ ‘b’; ‘c’ ‘d’]);
var_lista = list(valor1, valor2, valor3, ..., valorN);
2016/2
Prof. Afonso P. Santos 3
Listas
Diferentemente do C e C++, o índice de umalista, estrutura ou matrizes no SciLab semprese inicia do índice 1;
Listas
• Acessar um elemento da Lista:
– Basta fazer a chamada da variável de lista, com o índice do elementoda lista delimitados por parêntesis:
• Extração um elemento da Lista:
– Uma variável recebe os valores de um determinado índice da lista:
[a , b] = L([1, 3]);
var_lista(índice_elementoN);
var = var_lista(índice_elementoN);
2016/2
Prof. Afonso P. Santos 4
Listas
• Atribuir um novo valor para um elemento de uma
Lista:
– Basta fazer a chamada da variável de lista, com oíndice do elemento da lista delimitados porparêntesis recebendo o novo valor.
L(4) = “UFV”;
var_lista(ind_elemN) = NOVOvalor;
Listas
• Atribuir um novo elemento de uma Lista:
– Basta fazer a chamada da variável de lista, com oíndice do novo elemento da lista delimitados porparêntesis recebendo o novo valor.
L(6) = 100;
var_lista(ind_elemNOVO) = NOVOvalor;
2016/2
Prof. Afonso P. Santos 5
Listas
• Remoção de um elemento da Lista:
– Atribui-se ao elemento da variável de lista ainstrução null():
L(3) = null();
var_lista(ind_elem) = null();
Repare que o elemento da lista é removido e uma nova ordem deíndice é criada. Assim como o índice 3 foi apagado, instantaneamenteo índice 4 se transforma em índice 3, para que a numeração dosíndices fique contínua.
Estruturas
• Estruturas: é um grupo de variáveis às quais faz-se referência sob omesmo nome.
• A palavra reservada struct informa ao interpretador que está sendodefinido o gabarito de uma estrutura.
var = struct(campo1, valor1, campo2, valor2, ..., campoN, valorN);
2016/2
Prof. Afonso P. Santos 6
Estruturas
• Acessar um campo da estrutura:
– A referência aos elementos da estrutura pode ser feito colocando onome da variável de estrutura, que é seguido de um ponto, e o nomedo campo específico da estrutura.
• Atribuindo um valor ao campo de uma estrutura:
var_estrutura.nomeCampo;
var_estrutura.nomeCampo = NovoValor
Estruturas
• Removendo um campo da estrutura:
– Atribui-se ao campo da variável de estrutura a instrução null().
var_estrutura.nomeCampo = null();
2016/2
Prof. Afonso P. Santos 7
Estruturas
Função Descrição Exemplo
isstruct() Verifica se a variável é uma estrutura
fieldnames() Retorna os campos de uma estrutura
isfield() Checa se um nome de campo existe na estrutura
Estruturas
• Vetor de Estruturas:
– Cria-se a variável de estruturas com os seus respectivos campos, evalores zerados;
– Para inserir os dados em cada índice do vetor basta atribuir o valor àvariável da estrutura no índice i (delimitado por parêntesis), seguidodo caractere ponto (.) e do nome do campo:
var(i).nomeCampo = valor;
var = struct(campo1, 0, campo2, 0, ..., campoN, 0);
2016/2
Prof. Afonso P. Santos 8
Exemplo
Implementar um programa que faça o processamento de uma linha denivelamento geométrico simples.
Dados de entrada: arquivo com as leituras da mira em cada estaca, bem como acota da estaca inicial (ré).
Dados de saída: arquivo contendo as diferenças de nível em relação a estacainicial (ré) e as cotas de cada estaca.
Menu:Sair do Programa;Ler arquivo de dados;Calcular nivelamento;Gravar arquivo de resultados;
Estrutura do Arquivo a ser lido:N° de estacas
Cota Inicial
ID_Estaca Dist_est_interm leit_mira
...
Exemplo
2016/2
Prof. Afonso P. Santos 9
Exemplo
Exemplo
2016/2
Prof. Afonso P. Santos 10
Exemplo
Exemplo
2016/2
Prof. Afonso P. Santos 11
Exercício
• 1) Crie um programa para calcular dados provenientes de um nivelamentotrigonométrico por taqueometria;
– A entrada de dados deve se dar por arquivos;
– A saída dos dados (resultados) também deve se dar por arquivos;
– Utilize tipos definidos pelo usuários;
Exercício
• 2) Crie um programa para calcular dados provenientes de um nivelamentotrigonométrico apenas por estação total.
– Considere que o usuário coletou Distancia Inclinada (em metros) e ÂnguloZenital (já em graus decimais);
– A entrada de dados deve se dar por arquivos;
– A saída dos dados (resultados) também deve se dar por arquivos;
– Utilize tipos definidos pelo usuários;
Estrutura do Arquivo a ser lido:N° de estacas
Cota do ponto onde a Estação Total está estacionada
Altura da Estação Total
ID_Estaca Dist_Inclinada Ang_Zenital Alt.Prsima
...
2016/2
Prof. Afonso P. Santos 12
Estação Total: Lfm é a altura no prisma; di é obtido diretamente
dn = dv + ih – Lfm
dn = di.cos(Z) + ih - Lfm (geral – dist. inclinada)dn = m.g.sen(2.z)/2 + ih – Lfm (taqueometria)
2016/2
Prof. Afonso P. Santos 1
EAM 480
Programação aplicada à Engenharia de Agrimensura e Cartográfica
AULA 09
Prof. Afonso P. Santosemail: [email protected]
Universidade Federal de ViçosaCurso de Engenharia de Agrimensura e Cartográfica
Sumário
• Limites
• Derivadas
• Exemplos Ajustamento MMQ
• Exercícios;
2016/2
Prof. Afonso P. Santos 2
Limites
• O SciLab não dispõe de um comando especifico para o cálculodo limite de uma função;
• Pode-se definir uma faixa de valores bem próximos paradescobri o limite de uma função;
A regra de L’Hopital tem como objetivo calcular o limite de frações no caso em que ocorre indeterminações do tipo 0/0 ou ∞/∞
Para achar o limite da função basta derivar o numerador e o denominador.
Ex: lim�→�
����
���
����
���
� Aplicando a regra:
�.��
�.�� 2
Limites
No Scilab:
lim�→�
�� � 4�
�� � 4Valor igual Valor bem próximo
2016/2
Prof. Afonso P. Santos 3
Derivadas
• Se diz que uma função f(x) é derivável ou diferenciável se, próximoa cada ponto m do seu domínio a função f(m) se comporte comouma função linear, ou seja, seu gráfico for aproximadamente umareta.
• A derivada é o coeficiente angular da reta tangente ao gráfico dafunção no ponto m.
• A representação da derivada é dada por f ‘ (m) ou����
��
• As derivadas são extremamente importante em aplicações deajustamento de observações pelo Método dos Mínimos Quadrados,quando se utiliza as derivadas parciais para confecção da matrizjacobiana A (ou matriz design);
Derivadas (Polinômio)
• O comando geral de calcular a derivada em uma funçãopolinomial é derivat;
• É necessário definir a função polinomial e em seguida utilizaro comando derivat para realizar a derivação algébrica dafunção;
y= x² - 5x + 6y’ = 2x – 5
2016/2
Prof. Afonso P. Santos 4
Derivadas (em um ponto)
• O comando geral de calcular a derivada em um ponto éutilizar o comando derivative ou numderivative;
• Para utilização deste comando é necessário, incialmente, acriação de uma estrutura de função (function) cuja a função aser derivada deverá ser definida. Após utiliza-se o comandode derivação em um determinado ponto;
f(x) = x² - 5x + 6f ‘ (x) = 2x – 5f ‘ (4) = 3
Derivadas parciais
f1 = sen(x1) + x2² + x3³f2 = x1³ + x2³ + x3³
� �
��1
��1
��1
��2
��1
��3
��2
��1
��2
��2
��2
��3
2016/2
Prof. Afonso P. Santos 5
Exemplo
• Realizar o ajustamento de observações de uma rede de
nivelamento
Exemplo
• Realizar o ajustamento de observações de uma rede de
nivelamento
Acompanhar explicação, croqui e desenvolvimento no quadro.
2016/2
Prof. Afonso P. Santos 6
Exemplo
Exemplo
2016/2
Prof. Afonso P. Santos 7
Exemplo
Exemplo
2016/2
Prof. Afonso P. Santos 8
Exemplo
2016/2
Prof. Afonso P. Santos 1
EAM 480
Programação aplicada à Engenharia de Agrimensura e Cartográfica
AULA 10
Prof. Afonso P. Santosemail: [email protected]
Universidade Federal de ViçosaCurso de Engenharia de Agrimensura e Cartográfica
Sumário
• Gráficos– 2d - linhas;
– 2d - Barra / colunas / setas
– 2d - Vetor de Deslocamento;
– 2d – perspectiva, dando sensação 3d;
2016/2
Prof. Afonso P. Santos 2
Gráficos
• O SciLab dispõe de vários comandos para criação emanipulação de gráficos;
• Existe a possibilidade de gerar gráficos 2D (bi-dimensional) egráficos em perspectiva que que dá uma ideia de umambiente 3D (tridimensional);
• Existem vários tipos de gráficos 2D como: barra, colunas,linhas, vetores de deslocamentos, etc.
Gráficos 2D - linhas
• O comando utilizado para criar gráficos 2D de linhas é ocomando plot2d ou plot;
• x e y devem ser vetores ou matrizes, com a mesma dimensão;assim, a função plot2d permite traçar um gráfico de y emfunção de x;
• É permitido utilizar apenas a variável y para traçar o gráfico:plot2d(y);
• Se as variáveis forem matrizes, será criada uma linha nográfico para cada coluna da matriz;
plot2d ( x , y) plot ( x , y)
2016/2
Prof. Afonso P. Santos 3
Gráfico 2D (vetor)
Janela Gráfica
• Ao executar novamente o comando plot2d, os gráficossubsequentes são apresentados na mesma janela gráfica (porcima dos anteriores). Assim é necessário limpar a janelagráfica ou criar outra janela gráfica;
• Limpando Janela Gráfica:
• Criando uma nova Janela Gráfica:
clf ( );
scf (n); Onde n é o número sequencia decada janela criada. Ex: 0, 1, 2, 3,etc...
2016/2
Prof. Afonso P. Santos 4
Gráfico 2D (matriz)
Gráficos 2D - linhas
• Comando plot2d com todos os parâmetros possíveis:
• Style: é utilizada para especificar o estilo das curvas. Valoresinteiros positivos define uma curva contínua cm determinada cor.Valores inteiros negativos define uma curva tracejada ou commarcadores;
• Rect: Define a dimensão do gráfico: [xmin, ymin, xmax, ymax];
• Logflag: ajusta a escala (linear ou logarítmica) ao longo dos eixos. Ovalor associado deve ser um string com um dos possíveis valores:"nn", "nl" , "ln" e "ll“; onde n é a escala normal e l é a escalalogarítmica;
plot2d ( x , y , style , rect , logflag, frameflag , axesflag , leg );
2016/2
Prof. Afonso P. Santos 5
Gráficos 2D - linhas
• Comando plot2d com todos os parâmetros possíveis:
• Frameflag: é utilizada para controlar a escala dos eixoscoordenados. O valor utilizado deve ser um número inteiro de 0 a 8;
• Axesflag: especifica como os eixos serão traçados. O valor utilizadodeve ser um número inteiro de 0 a 5;
• Leg: permite definer as legendas das curvas. O valor utilizado deveser uma string. Se tiver mais de uma legenda separar os strings pelosímbolo @;
plot2d ( x , y , style , rect , logflag, frameflag , axesflag , leg );
Gráfico 2D - linhas
2016/2
Prof. Afonso P. Santos 6
Edição de Título e Eixos
• Forma Manual:
Edição de Título e Eixos
• Comando para inserir título do gráfico:
• Comando para inserir uma grade de coordenadas no gráfico
xtitle(“Título”);
xgrid(n);
2016/2
Prof. Afonso P. Santos 7
Gráficos 2D – barras / colunas / setas
• Comando plot2d2: gráfico de colunas;
• Comando plot2d3: gráfico de barras;
• Comando plot2d4: gráfico de setas;
plot2d2 ( x , y)
plot2d3 ( x , y)
plot2d2 ( x , y)
Gráficos 2D – barras / colunas / setas
2016/2
Prof. Afonso P. Santos 8
Gráficos 2D – barras / colunas / setas
Gráficos 2D – barras / colunas / setas
2016/2
Prof. Afonso P. Santos 9
Gráfico – Vetor de Deslocamento
O comando utilizado para criar gráficos com setas indicando umcampo vetorial ou vetores de deslocamento ou discrepâncias é ocomando champ
champ(x, y, dx, dy);
Gráficos 3D*
O comando utilizadopara criar gráficos 2Dem perspectiva, que dáideia de 3D, é ocomando plot3d
Mais opções de parâmetros, como oapresentado no comando plot2d,consultar o help do scilab
Plot3d(x,y,z);
2016/2
Prof. Afonso P. Santos 10
Outros Gráficos
polarplot cria um gráfico 2d polarcontour2d traça curvas de nível em uma superfície num gráfico 2derrbar acrescenta barras de erros em um gráfico;fgrayplot cria uma superfície definida por uma função usando coresgrayplot cria uma superfície num gráfico 2d usando coresmesh faz um gráfico 3D definido por uma redepie cria um gráfico circular no formato pizza