126

download (.rar)

Embed Size (px)

Citation preview

Page 1: download (.rar)
Page 2: download (.rar)
Page 3: download (.rar)

Í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

Page 4: download (.rar)
Page 5: download (.rar)

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

Page 6: download (.rar)

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

Page 7: download (.rar)

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

Page 8: download (.rar)

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.

Page 9: download (.rar)

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.

Page 10: download (.rar)

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;

Page 11: download (.rar)

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

Page 12: download (.rar)

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

Page 13: download (.rar)

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

Page 14: download (.rar)

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

Page 15: download (.rar)

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;

Page 16: download (.rar)

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;

Page 17: download (.rar)

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++

Page 18: download (.rar)

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

Page 19: download (.rar)

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

Page 20: download (.rar)

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;

Page 21: download (.rar)

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:

Page 22: download (.rar)

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

Page 23: download (.rar)

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.

Page 24: download (.rar)
Page 25: download (.rar)

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

Page 26: download (.rar)

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;

Page 27: download (.rar)

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;

Page 28: download (.rar)

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;

Page 29: download (.rar)

2016/2

Prof. Afonso P. Santos 5

Exemplo

Exemplo

Page 30: download (.rar)

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;

Page 31: download (.rar)

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

Page 32: download (.rar)

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

Page 33: download (.rar)

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;

Page 34: download (.rar)

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

Page 35: download (.rar)

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

Page 36: download (.rar)

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;

Page 37: download (.rar)

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

Page 38: download (.rar)

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

Page 39: download (.rar)

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

Page 40: download (.rar)

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

Page 41: download (.rar)

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.

Page 42: download (.rar)

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)

Page 43: download (.rar)

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.

Page 44: download (.rar)

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

Page 45: download (.rar)

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:

Page 46: download (.rar)

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

Page 47: download (.rar)

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

Page 48: download (.rar)

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

Page 49: download (.rar)

2016/2

Prof. Afonso P. Santos 7

Exemplo

• O comando SELECT é muito utilizado para a criação de menu.

COMANDOS DE REPETIÇÃO

Page 50: download (.rar)

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)

Page 51: download (.rar)

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

Page 52: download (.rar)

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

Page 53: download (.rar)

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;

Page 54: download (.rar)

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.

Page 55: download (.rar)

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:

Page 56: download (.rar)

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

Page 57: download (.rar)

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

Page 58: download (.rar)

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;

Page 59: download (.rar)

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):

Page 60: download (.rar)

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)

Page 61: download (.rar)

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

Page 62: download (.rar)

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;

Page 63: download (.rar)

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

Page 64: download (.rar)

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.

Page 65: download (.rar)

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

Page 66: download (.rar)

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:

Page 67: download (.rar)

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

Page 68: download (.rar)

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)

Page 69: download (.rar)

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

Page 70: download (.rar)

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;

����� �∑��

���� �

∑�

Page 71: download (.rar)

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

Page 72: download (.rar)
Page 73: download (.rar)

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

Page 74: download (.rar)

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;

Page 75: download (.rar)

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)’

Page 76: download (.rar)

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

Page 77: download (.rar)

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.

Page 78: download (.rar)

2016/2

Prof. Afonso P. Santos 6

Acesso aos elementos de uma Matriz

Leitura de um Vetor/Matriz

Page 79: download (.rar)

2016/2

Prof. Afonso P. Santos 7

Leitura de um Vetor/Matriz

Leitura de um Vetor/Matriz

Page 80: download (.rar)

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.

Page 81: download (.rar)

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

µ

Page 82: download (.rar)

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

Page 83: download (.rar)

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.

Page 84: download (.rar)

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]

Page 85: download (.rar)

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:

Page 86: download (.rar)
Page 87: download (.rar)

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

Page 88: download (.rar)

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’);

Page 89: download (.rar)

2016/2

Prof. Afonso P. Santos 3

Exemplo 1

Exemplo 2

Page 90: download (.rar)

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

Page 91: download (.rar)

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

Page 92: download (.rar)

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;

Page 93: download (.rar)

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

Page 94: download (.rar)

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)

Page 95: download (.rar)

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.

Page 96: download (.rar)
Page 97: download (.rar)

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;

Page 98: download (.rar)

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);

Page 99: download (.rar)

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);

Page 100: download (.rar)

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;

Page 101: download (.rar)

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);

Page 102: download (.rar)

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();

Page 103: download (.rar)

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);

Page 104: download (.rar)

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

Page 105: download (.rar)

2016/2

Prof. Afonso P. Santos 9

Exemplo

Exemplo

Page 106: download (.rar)

2016/2

Prof. Afonso P. Santos 10

Exemplo

Exemplo

Page 107: download (.rar)

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

...

Page 108: download (.rar)

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)

Page 109: download (.rar)

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;

Page 110: download (.rar)

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

Page 111: download (.rar)

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

Page 112: download (.rar)

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

Page 113: download (.rar)

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.

Page 114: download (.rar)

2016/2

Prof. Afonso P. Santos 6

Exemplo

Exemplo

Page 115: download (.rar)

2016/2

Prof. Afonso P. Santos 7

Exemplo

Exemplo

Page 116: download (.rar)

2016/2

Prof. Afonso P. Santos 8

Exemplo

Page 117: download (.rar)

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;

Page 118: download (.rar)

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)

Page 119: download (.rar)

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...

Page 120: download (.rar)

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 );

Page 121: download (.rar)

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

Page 122: download (.rar)

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);

Page 123: download (.rar)

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

Page 124: download (.rar)

2016/2

Prof. Afonso P. Santos 8

Gráficos 2D – barras / colunas / setas

Gráficos 2D – barras / colunas / setas

Page 125: download (.rar)

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);

Page 126: download (.rar)

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