Author
dinhkhanh
View
262
Download
4
Embed Size (px)
NDICE
1. Introduo / Scilab / Estruturao
2. Variveis / Operadores / Comando Condicional
3. Comandos de Controle de Fluxo (Condicional / Repetio / Parada /
Continuao)
4. Funes / Recursividade / Biblioteca
5. Vetor e Matriz
6. Strings / Janelas de Dilogo
7. Arquivos
8. Tipos de dados determinados pelo usurio (listas / estruturas)
9. Limites e Derivadas
10. Grficos
2016/2
Prof. Afonso P. Santos 1
Universidade Federal de ViosaCurso de Engenharia de Agrimensura e Cartogrfica
EAM 480
Programao aplicada a Eng. de Agrimensura e Cartogrfica
AULA 01
Prof. Afonso P. Santos
[email protected]: 3899-3029
Sumrio
Apresentao da Disciplina
Termos utilizados em programao
Scilab
Estrutura de um programa Funes
Palavras Reservadas
Variveis
Entrada e sada de dados
Comando de Pausa
Exemplo
Exerccios
2016/2
Prof. Afonso P. Santos 2
EAM 480
Objetivos e Ementa
A disciplina objetiva oferecer ao aluno o conhecimento aplicado programao de computadores na rea de Engenharia de Agrimensura eCartogrfica.
Sero apresentados os fundamentos e estrutura da linguagem, variveis,constantes, operadores e expresses. Comandos de controle de fluxo.Conceitos de matrizes e vetores. Uso de ponteiros e funes . Comandosde entrada e sada pelo console ou por arquivos. Tipos de dados definidospelo usurio. Ferramentas, bibliotecas e extenses.
Ao final do curso, o aluno dever ser capaz de utilizar com proficincia alinguagem de programao do Scilab/Matlab para implementar algoritmosda rea.
EAM 480
Plano de Aulas, Critrios de Avaliao e Referncias Bibliogrficas.
Disponvel no PVANET
2016/2
Prof. Afonso P. Santos 3
EAM 480
Softwares utilizados
Scilab
Comeou a ser desenvolvido na dcada de 1990 por pesquisadores doINRIA (Institut National de Recherche en Informatique et en Automatique)e do ENPC (cole Nationale des Ponts et Chausses) na Frana. O Scilab agora mantido e desenvolvido pelo Scilab Enterprises desde 2010.
Disponvel gratuitamente em: www.scilab.org
Alguns Termos
2016/2
Prof. Afonso P. Santos 4
Termos
Definio de termos
Cdigo-fonte: o texto ou conjunto de palavras, em uma determinadalinguagem, escrita de forma ordenada e contendo instrues de formalgica.
Compilador: realiza a leitura do cdigo-fonte como um todo traduzindoem cdigo-objeto.
Interpretador: realiza a leitura do cdigo-fonte linha por linha,executando a instruo de cada linha por vez. Quando se utiliza de uminterpretador, toda vez em que for executar o programa necessrio autilizao do interpretador. Exemplos: Linguagens em Scilab, Matlab,BASIC, VB, PHP, LISP, Javascript, entre outras.
Termos
Definio de termos
Cdigo objeto: o nome dado ao cdigo resultante do processo decompilao. uma forma intermediria similar a linguagem de mquinado computador. Apesar de estar representado em binrio, no executvel diretamente pelo processador, pois normalmente, o cdigo-objeto referencia partes de programa que no esto necessariamentedefinidas no mesmo arquivo que o gerou, por exemplo, arquivos debibliotecas de sub-rotinas.
Cdigo de mquina: so um conjunto de instrues que o computadorentende para execut-las. Essas instrues so representadas porsequncias de bits, chamadas de cdigo binrio j que so formados por0 e 1.
2016/2
Prof. Afonso P. Santos 5
Termos
Definio de termos
Linkeditor: tambm chamado de Ligao um programa que une oscdigos-objeto que foram compilados separadamente gerando umprograma executvel. A linkedio nada mais que a unio debibliotecas utilizadas com o cdigo escrito por um programador,gerando assim um nico mdulo, denominado de programa executvel.
Biblioteca: Arquivos contendo funes que podem ser acopladas /utilizadas no seu programa.
Tempo de compilao: So os eventos que ocorrem enquanto seuprograma est sendo compilado. Um exemplo de eventos so erros desintaxe (regra da linguagem de programao)
Tempo de execuo: So os eventos que ocorrem enquanto seuprograma est sendo executado.
Termos
Definio de termos
Editor: o programa onde o cdigo-fonte escrito.
Debugger: auxilia o programador a eliminar, ou reduzir, a quantidade deerros de execuo no programa. Possibilita a execuo passo-a-passo departes do programa, visualizao de valores das variveis, visualizaodos contedos dos registros internos do processador, alterao emtempo de execuo de contedos de memria, de variveis ou deinstrues, entre outros pontos.
IDE (Ambiente de Desenvolvimento Integrado): um programa decomputador que rene caractersticas 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 computao numrica, semelhante aoMatlab, que fornece um ambiente computacional robusto e gratuito.
Algoritmos complexos podem ser criados em poucas linhas de cdigo,em comparao com outras linguagens como C, Python, Fortran, ouC++, j que possui centenas de funes matemticas/estatsticas.
Possui sofisticadas estruturas de dados, incluindo listas, polinmios,sistemas lineares, etc.;
Possui ferramentas para gerao de grficos 2D e 3D, simulaes eotimizaes;
Bastante difundida e utilizada profissionalmente e cientificamente nasEngenharias;
2016/2
Prof. Afonso P. Santos 7
Scilab
Console: Tela principal do Scilab
ConsoleJanela de Comandos
Histrico de Comandos
Navegador de Variveis
Navegador de Arquivo
Scilab
SciNotes: um editor para os cdigos-fonte que ser interpretado pelo Scilabe exibidos na janela de console. Os arquivos so salvos na extenso .sce
2016/2
Prof. Afonso P. Santos 8
Scilab
Ajuda: possui todos os comandos e funes do Scilab, bem como trechos decdigos 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 programao de alto nvel, orientada anlise numrica.
Possui uma linguagem estruturada e modular;
O Scilab detm uma linguagem que interpretada e nocompilada;
O Scilab case sensitive, ou seja, h uma diferenciao entreletras maisculas e minsculas.
Como em linguagens C/C++ o Scilab possui operadores lgicos,aritmticos e relacionais, comandos de controle de fluxo comorepeties e condicionais, manipulao com arquivos, matrizes etextos...
A linguagem do Scilab
Nvel de
Linguagem
Linguagem de
Programao
Alto(similar linguagem humana)
PascalCOBOL
FORTRANBASICScilab
MdioC++
CJava
Baixo(similar
linguagem de mquina)
Assembler
Linguagem
No-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:
Declaraes de bibliotecas (#include | #include);
Definio de constantes (#define pi 3.1415);
Definio de tipos de dados (Struct)
Declarao de variveis globais;
Funes
Funo Principal (main)
Estrutura de um programa Scilab
O Scilab no tem uma estruturao especfica, mas no nosso curso iremosutilizar a seguinte estrutura:
Chamadas de Funes externas (exec(nome_arquivo_funo));
Definio de constantes
Definio de tipos de dados (Struct )
Funes
Cdigo 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 no necessrio adeclarao de bibliotecas, nem a presena de uma funo principal;
As funes clear e clc so bastantes utilizadas na programao noScilab. Nesta disciplina seu uso ser obrigatrio em todos osprogramas desenvolvido:
clear: limpa a memria do Scilab, destruindo todas as variveiscriadas anteriormente;
clc: limpa a tela do console, apagando registros antigos;
2016/2
Prof. Afonso P. Santos 12
Variveis
Varivel uma posio nomeada de memria, que tem como funo
armazenar um valor (que pode ser modificado pelo programa) de acordo
com o tipo pr-definido;
O nome de uma varivel 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 enmeros apenas. Recomenda-se para o tamanho mximo para umidentificador o uso de 20 posies (caracteres);
No aceito o uso de acentuaes nos identificadores de variveis;
Uma varivel pode ser dividido em Local e Global.
Variveis
Variveis Locais Tambm chamadas de variveis dinmicas ou automticas; So declaradas dentro de uma funo; So visualizadas apenas dentro da funo onde foram declaradas; So criadas em tempo de execuo quando a funo chamada; destruda aps o final da execuo da funo, portanto no
apresentada no navegador de variveis do Scilab; Sobrepem uma varivel global de mesmo nome dentro da funo;
function [sada] = nome(ent1, ent2)i = 1;b = 2.1;
endfunction;
2016/2
Prof. Afonso P. Santos 13
Variveis
Variveis Globais
declarada fora do corpo de qualquer funo;
Podem serem utilizadas em qualquer funo do cdigo fonte;
So alocadas em tempo de interpretao/execuo e ocupam a memriadurante toda a execuo do Scilab. Portanto, deve-se evitar o uso abusivo devariveis globais ou utilizar o comando Clear para limpar a memria;
Para uma melhor organizao, sugere-se declarar todas as variveis globaisno incio do cdigo-fonte;
i = 2;function [sada] = nome(ent1, ent2)
a = b + i;endfunction;
Tipo de dados
Diferentemente de linguagens C/C++, no Scilab no preciso declarar o tipo que uma varivel ir ter;
Uma varivel pode armazenar diferentes tipos de caracteres e nmeros:
Tipo Descrio Faixa de Valores Bytes
char Caractere. Geralmente so armazenados em cdigos ASCII
-128 a 127 1
int Nmero inteiro -32767 a 32767 2
float Nmero Real (Ponto Flutuante) 3.4e-38 a 3.4e+38 4
double Nmero Real (Ponto Flutuante com preciso dupla) 1.7e-308 a 1.7e+308 8
void serve para indicar que um resultado no tem um tipo definido
unsigned int Nmeros inteiros positivos 0 a 65535 4
long int Nmeros inteiros longos -2147483648 a 2147483648 8
A faixa de valores dos tipos de dados podem variar de acordo com o compilador/interpretador.
Tipo de variveis utilizados na linguagem C/C++
2016/2
Prof. Afonso P. Santos 14
Tipo de dados
Diferentemente de linguagens C/C++, no Scilab no preciso declarar o tipo que uma varivel ir ter;
Conversor /
EspecificadorSada
%d Nmeros inteiros
%f Nmeros Reais (ponto flutuante)
%e Exponencial
%g Menor formato possvel
%c Caractere
%s String ou Texto (Conjunto ou vetores de caracteres)
Especificadores ou conversores de tipos utilizados principalmente nos comandos de sada:
Tabela ASCII
2016/2
Prof. Afonso P. Santos 15
Funes
A palavra reservada que indica o incio da declarao de uma funo function. A palavra endfunction indica o trmino de uma funo;
O corpo de uma funo delimitado apenas pela palavras function eendfunction, no sendo necessrio qualquer tipo de caractere;
A identificao (nome) das funes segue a mesma regra dos identificadoresdas variveis.
function [saida1, saida2,...] = nome_funcao (ent1, ent2, ...)declaraes de variveis locais;bloco de comandos;
endfunction
Funes
Aps o nome da funo, abre-se parntesis e declara a lista de parmetrosutilizadas no corpo da funo;
A lista de parmetros so variveis que iro receber os valores de outrasvariveis declaradas previamente no cdigo principal do programa;
A variveis que sero apresentadas como resultado daaplicao da funo devero ser delimitadas por colchetes([ ])e separadas entre si por vrgulas.
Pode-se ter mais de uma varivel como sada de umadeterminada funo
2016/2
Prof. Afonso P. Santos 16
Entrada e Sada de dados
A entrada e sada de dados realizada, principalmente, pelos comandos:
printf() utilizado quando se quer escrever algo na tela do computador(Sada);
input() utilizado quando se quer obter dados a partir do teclado (Entrada);
sintaxe:
printf (formatacao, arg1, arg2, ...)
formatacao - uma cadeia de caracterescontendo textos e formataes que seroutilizados para apresentar os resultados devariveis, expresses, etc. delimitada poraspas duplas.arg1 a expresso ou varivel que terseu valor mostrado na tela.
sintaxe:
variavel = input (formatacao)
formatacao - uma cadeia de caracterescontendo formataes que sero utilizadaspara informar ao usurio o tipo de dadosque ele dever digitar no teclado .variavel a varivel que receber osdados lidos.
Entrada e Sada de dados
Note que no h nenhuma varivel aser mostrada em tela. O comandoapenas escreve um texto em tela. Hs uso da formatao.
A formatao %d, um conversor de tipo de dados. O %d converte o caractere emnmero e vice-versa.O conversor/especificador de tipo serve como uma janela para que variveispossam ser apresentadas junto formatao do comando de sada (printf,mprintf, disp).
O comando input l os dados digitadosvia teclado e atribui varivel idade;A formatao existente no comandoinput serve para informar ao usurio oque se deve digitar ao teclado;
2016/2
Prof. Afonso P. Santos 17
Entrada e Sada de dados
Caracteres especiais (a serem utilizados na formatao do comando printf)
Caractere Descrio
\b retrocesso
\f Nova pgina
\n Nova linha
\t tabulao
\ apstrofo
%% Porcentagem
\\ Barra invertida
Entrada e Sada de dados
Formatando a sada dos dados:
2016/2
Prof. Afonso P. Santos 18
Exemplos
Uso de Funes e variveis multiplicar nmeros
Exerccio
1) Dados os valores mximos (max) e mnimos (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 distncias obtidas num documentocartogrfico em milhas para quilmetros, sendo que 1 milha igual a1.60934 quilmetros;
3) Escrever um programa para calcular a mdia do ngulo zenital coletadoem pontaria direta (PD) e indireta (PI). Os dados de entrada devem ser ongulo zenital (PD e PI)
A frmula para o clculo : Z mdio = (360 + PD PI)/2
minmax
min
=
o
E
VV
2016/2
Prof. Afonso P. Santos 19
Exerccio
4) Escrever um programa para o clculo da rea de um polgono obtidoatravs de imagem raster. O programa deve solicitar o n de clulas (pixel) dopolgono e a resoluo espacial (comprimento do pixel) da imagem (considereo pixel sendo quadrado) e retornar a rea do polgono.
5) Escrever um programa para obter a declividade (D) de um terreno, atravsdo ngulo de inclinao (i).
A frmula para o clculo : D = 100* tg(i);
6) Escrever um programa para obter a declividade (D) de um terreno, atravsda diferena de altitude (Dn) e da distancia horizontal (Dh) entre dois pontos.A frmula para o clculo : D = (Dn/Dh)*100;
Exerccio
7) Escrever um programa para converter ngulo vertical de inclinao (i) emngulo zenital (Z). A frmula para o clculo : Z = 90 i
8) Faa um programa para que o usurio entre com uma distncia medida emum mapa e sua medida homologa no terreno. Calcule o denominador daescala correspondente.
9) Faa um programa para converter graus decimais em graus, minutos esegundos;
10) Faa um programa que calcule o efeito da curvatura terrestre (S) naaltimetria para uma dada distncia na superfcie esfrica (S).
Frmula: S = S/R ; onde R o raio terrestre.
2016/2
Prof. Afonso P. Santos 1
Universidade Federal de Viosa
Curso de Engenharia de Agrimensura e Cartogrfica
EAM 480
Programao aplicada a Eng. de Agrimensura e Cartogrfica
AULA 02
Prof. Afonso P. Santos
[email protected]: 3899-3029
Sumrio
Variveis
Operadores
Comando condicional IF
Exerccios
2016/2
Prof. Afonso P. Santos 2
Variveis
Varivel uma posio nomeada de memria, que tem como funo
armazenar um valor (que pode ser modificado pelo programa) de acordo com
o tipo pr-definido.
Regras Gerais:
O nome de uma varivel 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
nmeros apenas. Recomenda-se para o tamanho mximo para um
identificador o uso de 20 posies (caracteres);
No aceito o uso de acentuaes nos identificadores de variveis;
Variveis
Regras Gerais
As variveis tipo caractere e texto devero 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 no preciso declarar o tipo
que uma varivel ir ter;
Conversor /
EspecificadorSada
%d Nmeros inteiros
%f Nmeros Reais (ponto flutuante)
%e Exponencial
%g Menor formato possvel
%c Caractere
%s String ou Texto (Conjunto ou vetores de caracteres)
Especificadores ou conversores de tipos utilizados principalmente nos comandos de sada:
Expresses e Operadores
Segundo Arajo e Hoffmann (2006), expresso um conjunto de variveis,
constantes e operadores que resultam em um valor.
Os operadores podem ser classificados quanto:
ao numero de operandos sobre os quais este atua:
Unrio: trabalha apenas com um operando;
Binrio: trabalha com dois operandos;
Ternrio: trabalha com trs operandos;
ao tipo de dado de seus operandos e ao valor resultante:
Aritmticos;
Lgicos;
Relacionais;
Literais;
2016/2
Prof. Afonso P. Santos 4
Operadores Matemticos
Operador
Aritmtico
Tipo Operao Exemplo
= ---- Atribuio: insere o resultado da expresso queest a direita do operador na rea de memria da
varivel que est a esquerda do operador.
X =10;
X=Y=Z=20;
C=A;
- unrio Inverso de sinal -a
+ unrio Manuteno do sinal +b
* binrio Multiplicao a = b * c;
/ binrio Diviso a = b / c;
+ binrio Soma a = b + c;
- binrio Subtrao a = b - c;
^ binrio Potncia a = b ^ c;
sqrt() - Raiz Quadrada a = sqrt(b)
exp() - Exponencial [a = eb] a = exp(b)
Operadores Matemticos
Operador diviso / Pode-se utilizar em nmeros inteiros ou flutuantes;
No importa se um nmero inteiro, o resultado sempre ser
um ponto flutuante. Ex: 5/2 = 2.5
resto de diviso
Utiliza-se o comando modulo(i, j) para devolver o resto da diviso 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
Descrio Tipo Exemplo
> Maior que Binrio a > b
>= Maior que ou igual a Binrio a >= b
< Menor que Binrio a < b
2016/2
Prof. Afonso P. Santos 7
Exemplo
Funes Trigonomtricas
No necessrio declarar quaisquer tipos de bibliotecas!
Operaes 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
Funes Trigonomtricas
No necessrio declarar quaisquer tipos de bibliotecas!
Operaes 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
Sada dos
Resultados
em Graus
Exemplo
2016/2
Prof. Afonso P. Santos 9
Exemplo
Operaes com variveis de diferentes tipos
Como no se declara o tipo da varivel no Scilab, uma determinada
varivel que se inicia como nmero inteiro, pode-se posteriormente
receber valores flutuantes ou textuais veja a varvel X;
2016/2
Prof. Afonso P. Santos 10
Operaes com variveis de diferentes tipos
O especificador/conversor de tipo define como o resultado ser apresentado.
Na linha 7 e 9 uma diviso de nmero real e inteiro (ou vice-versa) resulta em
uma nmero real utilizando o especificador %f.
Na linha 8 e 10 uma diviso de nmero real e inteiro (ou vice-versa) resulta em
uma nmero inteiro utilizando o especificador %d.
Prioridades Operadores
Maior Prioridade
Menor Prioridade
1. ~ (no - lgico)
2. ^ (potncia)
3. * / (multiplicao e diviso)
4. + - (soma e subtrao)
5. < = > == ~= (relacionais)
6. & | (e ou lgicos)
A ordem de prioridade
pode ser alterada pelo
uso do parnteses
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 so a essncia de qualquer linguagem,
porque governam o fluxo da execuo do programa.
So poderosos e ajudam a explicar a popularidade da linguagem.
Os comandos de Controle de Fluxo divididos em trs categorias:
Comandos condicionais (de deciso) IF - SELECT
Comandos de repeties (loop ou laos) WHILE - FOR
Comandos de Interrupes e Continuao CONTINUE BREAK QUIT
ABORT PAUSE
sintaxe:
if (condio) then
bloco de comandos se a condio for verdadeira
else
bloco de comandos se a condio for falsa
end
Comando IF
O comando IF instrui o computador a tomar uma deciso simples;
Se a condio do comando if for verdadeiro, o computador executar o
comando ou o bloco;
Se for falso, e se a clusula 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 & i3 & i
2016/2
Prof. Afonso P. Santos 14
Exemplos
Programa para calcular o Azimute de um alinhamento definido por dois
pontos: Necessrio ter as coordenadas planimtricas de dois pontos (X1,Y1 e X2,Y2);
Iniciar o clculo do azimute pelo frmula do arco-tangente;
Realizar a anlise de quadrantes e realizar a correo do azimute;
Apresentar o resultado do azimute do alinhamento;
Resultado de sada em graus
correspondente ao intervalo -90 a +90
Se dX>=0 e dy
2016/2
Prof. Afonso P. Santos 15
Exemplos
Calculando o Azimute com a funo atan utilizando dois parmetros:
, Resultado de sada em graus
correspondente ao intervalo -180 a +180
Se Az
2016/2
Prof. Afonso P. Santos 16
Exerccio
1) Escrever um programa para calcular as reas de figuras planas: quadrado
(lado), retngulo (2 lados), crculo (raio), tringulo (base e altura), trapzio (2
bases e altura) e paralelogramo (base e altura).
2) No Brasil empregou-se oficialmente, num passado recente, as seguintes
unidades lineares:
1 lgua = 6 600 m
1 lgua martima = 5 555,55 m
1 quadra = 132 m
1 corda = 33 m
1 braa = 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
Exerccio
3) Escrever um programa em que o usurio 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 inclinao (AI) em ngulo
zenital (Z). O ngulo de Inclinao deve obedecer ao formato: ggg.mmss
(graus.minutos_segundos). O resultado dever ser dado em graus decimais.
A frmula para o clculo : Z = 90 AI
2016/2
Prof. Afonso P. Santos 17
Exerccio
5) Escrever um programa para obter a declividade (D) de um terreno, atravs
do ngulo de inclinao (i) ou atravs da diferena de altitude (Dn) e da
distancia horizontal (Dh) entre dois pontos. Faa um Menu de opes. O
ngulo de inclinao em graus deve obedecer ao formato: ggg.mmss
(graus.minutos_segundos).
A frmula para o clculo : 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 frmula para o clculo : Dh = b / (2*tg(/2))
Exerccio
7) Escrever um programa para calcular o azimute de um alinhamento de uma
poligonal topogrfica. O usurio dever entrar com o azimute do alinhamento
anterior e o ngulo horrio entre os dois alinhamentos.
2016/2
Prof. Afonso P. Santos 18
Exerccio
8) Escrever um programa para calcular as coordenadas X, Y do ponto p. Foi
realizado um levantamento por interseo angular onde as observveis foram
os ngulos A e B, o azimute AZAB. O usurio detinha as coordenadas X e Y do
ponto A.
Fonte: Rodrigues (2007)
2016/2
Prof. Afonso P. Santos 1
Universidade Federal de ViosaCurso de Engenharia de Agrimensura e Cartogrfica
EAM 480
Programao aplicada a Eng. de Agrimensura e Cartogrfica
AULA 03
Prof. Afonso P. [email protected]
Tel.: 3899-3029
Sumrio
Comandos de Controle de Fluxo; IF
SELECT
FOR
WHILE
Continue
Break
Return
Abort
Pause
Exerccios.
2016/2
Prof. Afonso P. Santos 2
Comandos de Controle de Fluxo
Os comandos de controle de fluxo so a essncia de qualquer linguagem,porque governam o fluxo da execuo do programa.
So poderosos e ajudam a explicar a popularidade da linguagem.
Os comandos de Controle de Fluxo divididos em trs categorias:
Comandos condicionais (de deciso) IF - SELECT
Comandos de repeties (loop ou laos) WHILE - FOR
Comandos de Interrupes e Continuao CONTINUE BREAK QUIT ABORT PAUSE
COMANDOS CONDICIONAIS
2016/2
Prof. Afonso P. Santos 3
sintaxe:if (condio) then
bloco de comandos se a condio for verdadeiraelse
bloco de comandos se a condio for falsaend
Comando IF
O comando IF instrui o computador a tomar uma deciso simples;
Se a condio do comando if for verdadeiro, o computador executar ocomando ou o bloco;
Se for falso, e se a clusula 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 & i3 & i=0 e dy
2016/2
Prof. Afonso P. Santos 5
Exemplos
Comando SELECT
Comando similar ao SWITCH na linguagemC/C++;
Uma varivel testada sucessivamentecontra uma lista de variveis inteiras ou decaracteres. Depois de encontrar umacoincidncia, o comando ou o bloco decomandos executado.
Se nenhuma coincidncia for encontrada ocomando else ser executado. O else opcional.
select(varivel) 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 expressolgica ou relacional;
Duas ou mais constantes case pertencentesao mesmo select no podem ter valoresidnticos;
select(varivel) case constante1 then
bloco de comandoscase constante2 then
bloco de comandoscase constante3 then
bloco de comandos...else
bloco de comandosend
SELECT aninhado
possvel utilizar um select comoparte de um bloco de comando deum outro select;
Select aninhado quando seutiliza um select dentro de outroselect;
Constantes case de valoresidnticos de dois select que estoaninhados no causam conflitos;
select(x) case 1 then
selext(y)case 0 then
printf(erro de diviso por zero);else
printf(diviso de K por Y eh: %d, k/y);end
case 2 then
printf(Multiplicao de K por Y eh: %d, k*y);case 3 then
printf(Soma de K por Y eh: %d, k+y);else
printf(Opo invalida);end
2016/2
Prof. Afonso P. Santos 7
Exemplo
O comando SELECT muito utilizado para a criao de menu.
COMANDOS DE REPETIO
2016/2
Prof. Afonso P. Santos 8
Comando FOR
O comando for de alguma maneira encontrado em todas linguagensprocedurais de programao.
Em sua forma mais simples, a incializao um comando de atribuio que ocompilador usa para estabelecer a varivel de controle da repetio (loop). Asvariveis tipo char devero receber valores entre aspas duplas ();
O incremento define a maneira como a varivel de controle da repetio seralterada cada vez que o computador realizar uma iterao da repetio.
A parada um valor limite da varivel de controle da repetio. Antes de cadaiterao o Scilab testa se o valor da varivel atingiu este valor de parada.Enquanto no for atingido tal valor, realiza-se a repetio.
Sintaxe:
for inicializao : 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 varivel X inicializada,no comando FOR, com ovalor igual a 1.
A condio de parada docomando FOR 10. Logo se ovalor de X passar deste valorlimite, a repetio no maisexecutada, assim, prossegue ocdigo-fonte.
A cada repetio docomando FOR a varivelutilizada (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 programao muito utilizado quando se quer saber como umdeterminado algoritmo ou cdigo-fonte est funcionando.
O rastreio feito pelo usurio de forma manual obtendo os valores de variveis eexpresses durante todo o cdigo-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 possvel de executar uma repetio utilizando o comandowhile.
Ele permite que o cdigo fique sendo executado numa mesma parte doprograma de acordo com uma determinada condio.
ele executado desde que a condio seja verdadeira
testa a condio antes de executar
Sintaxe:
while condiobloco de comandos
end
A inicializao da varivel utilizada nacondio deve ser realizada previamente docomando while
O incremento ou decremento da varivelutilizada na condio dever ser realizadano bloco de comandos do while
2016/2
Prof. Afonso P. Santos 10
Comando WHILE
x=100; //inicializao
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 condiobloco de comandos
end
Exemplo
Comandos de Repetio
2016/2
Prof. Afonso P. Santos 11
COMANDOS DE INTERRUPES E CONTINUAO
Comando CONTINUE
Algumas vezes necessrio saltar uma parte do programa, para issoutiliza-se o comando continue.
Este comando serve para: fora a prxima iterao de um loop; pular ocdigo 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 repetio, ele causar seu trmino imediato.O controle do programa passar ento imediatamente para o cdigoseguinte.
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 nvel padro de prompt.
Escolha resume para continuar a execuo ou abort para sair da execuo doprograma.
2016/2
Prof. Afonso P. Santos 13
Comando ABORT e QUIT
A funo QUIT provoca a terminao do SCILAB, fechando a tela principale todas as outras janelas secundrias;
A funo ABORT interrompe a execuo do programa e volta ao consoledo Scilab
Exemplo
Faa o rastreio do texto abaixo que uma mistura de cdigo-fonte e algoritmo:
2016/2
Prof. Afonso P. Santos 14
iterao 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
iterao 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 rotao de um ngulo k em n pontosde coordenadas planimtricas (U,V) em relao a um ponto de origem decoordenadas (c,d). As coordenadas rotacionadas (X,Y) so determinadaspelo modelo abaixo:
Exemplo
2016/2
Prof. Afonso P. Santos 16
Exerccios
1) Faa o rastreio do cdigo/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
Exerccios
2) Faa um programa, com menu dinmico, de modo a transformar Rumopara Azimute e Azimute para Rumo. Utilize o formato do ngulo emGGG.MMSS;
2016/2
Prof. Afonso P. Santos 17
Exerccios
3) Escrever um programa para calcular estatsticas de um conjunto deresduos (V). Pea ao usurio para entrar com a mdia da amostra (Vm) eaps, entrar com os elementos da amostra, os resduos (Vi), (o usurio devedefinir o nmero total de resduos - n). Leia os dados e calcule o DesvioPadro, o Coeficiente de Variao e o RMS.
Desvio Padro = S = raiz[ (Vi - Vm) / (n-1)]
Coeficiente Variao = CV = (S/ Vm)*100
RMS = raiz[ (Vi) / n]
Exerccios
4) Escrever um programa que aplique uma escala nos diferentes eixos (Eu, Ev)em n pontos de coordenadas planimtricas (U,V) em relao a um ponto deorigem de coordenadas (a,b). As coordenadas escaladas (X,Y) sodeterminadas pelo modelo abaixo:
5) Escrever um programa que calcule a distncia horizontal (dr) e o desnvel(dn) de um levantamento taqueomtrico. Faa um menu para o usurioinformar qual tipo de ngulo vertical foi utilizado (zenital ou inclinao):
2016/2
Prof. Afonso P. Santos 18
Exerccios
6) Faa um programa, que faa o clculo dos azimutes de cada alinhamentode uma poligonal e calcule o erro angular do levantamento. Como dado deentrada o usurio deve informar o nmero de lados da poligonal (n), oAzimute inicial do primeiro lado (az0), os ngulos horizontais horrio entre osalinhamentos da poligonal.
Azimute calculado = azimute anterior + ngulo horrio + 180Se > 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
Programao aplicada Engenharia de Agrimensura e Cartogrfica
AULA 04
Prof. Afonso P. Santosemail: [email protected]
Universidade Federal de ViosaCurso de Engenharia de Agrimensura e Cartogrfica
Sumrio
Rotinas;
Funes e Procedimentos;
Recursividade;
Funes como bibliotecas;
Exerccios
2016/2
Prof. Afonso P. Santos 2
Rotinas
Um programa de computador pode possuir uma quantidadeenorme de linhas de comandos;
Entretanto, um programa no deve ser um bloco nico de linhas deinstrues, mas sim uma estrutura modular de fcil manuteno,compostos de vrias partes que se conectam formando oprograma por inteiro;
Uma das vantagens da programao estruturada em mdulos acapacidade de reutilizao dos cdigos;
Cada mdulo 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 manuteno de um programa;
2016/2
Prof. Afonso P. Santos 3
Rotinas
Um rotina um bloco de comandos ou instrues, adequadamenteidentificado que executa uma tarefa especfica dentro de umprograma;
A rotina pode ser dividida:
Procedimento: uma rotina que ao ser executada, no retorna umresultado ou valor alguma varivel;
Funo: uma rotina que ao ser executada retorna um valor parauma varvel ou um resultado;
Funes
A forma geral das funes no Scilab:
A palavra reservada que indica o incio da declarao de umafuno function. A palavra endfunction indica o trmino de umafuno;
A identificao (nome) das funes segue a mesma regra dosidentificadores das variveis.
function [x,y,..., zn] = nome_funo(lista_parmetros)
variveis locais
Corpo da funo
...
endfunction
2016/2
Prof. Afonso P. Santos 4
Funes
function [saida1, saida2,...] = nome_funcao (ent1, ent2, ...)declaraes de variveis locais;bloco de comandos;
endfunction
Aps o nome da funo, abre-se parntesis e declara a lista de parmetrosutilizadas no corpo da funo;
A lista de parmetros so variveis que iro receber os valores de outrasvariveis declaradas previamente no cdigo principal do programa;
A variveis que sero apresentadas como resultado da aplicao da funodevero ser delimitadas por colchetes [ ] e separadas entre si por vrgulas.
Pode-se ter mais de uma varivel como sada de uma determinada funo
Variveis
Na verdade existem trs tipos de variveis: Locais;
parmetros formais;
variveis globais.
Variveis locais so declaradas dentro de uma funo ou dentro de umbloco de cdigo e s so criadas quando entra no bloco e descartadas aosair do mesmo (seu contedo se perde). prtica comum declarar asvariveis locais numa funo no comeo do bloco de cdigo de umafuno.
Se uma funo usar argumentos, ento ela deve definir variveis queaceitaro os valores dos argumentos, as quais so chamadas deparmetros formais.
2016/2
Prof. Afonso P. Santos 5
Variveis
As variveis globais so conhecidas por todo o programa e podemser usadas por qualquer parte do cdigo, e mais, retm seus valoresdurante toda a execuo do programa.
Argumentos podem ser passados para uma sub-rotina de duasformas: Na chamada por valor, feita uma cpia do valor do argumento para o
parmetro formal da sub-rotina. Portanto, as alteraes que forem feitas nosparmetros da sub-rotina, no tero nenhum efeito sobre as variveis queforam usadas para cham-las.
Na chamada por referncia, uma cpia do endereo de memria (ponteiros)de um argumento passado para o parmetro, assim as alteraes que foremfeitas nos parmetros formais afetaro as variveis usadas para chamar arotina (NO UTILIZVEL NO SCILAB)
Exemplo - Funo
Parmetros Formais (Chamada por Valor)
Clculo da Declividade
2016/2
Prof. Afonso P. Santos 6
Exemplo - Procedimento
Exemplo
Escrever um programa que realize a rotao de um ngulo k em n pontosde coordenadas planimtricas (U,V) em relao a um ponto de origem decoordenadas (c,d). As coordenadas rotacionadas (X,Y) so determinadaspelo modelo abaixo:
2016/2
Prof. Afonso P. Santos 7
Exemplo
Recursividade
Uma funo recursiva quando ela chama a si mesma;
function [saida] = nome_funo(lista_parmetros)
variveis locais
Corpo da funo
nome_funo(lista_parmetros)
...
endfunction
2016/2
Prof. Afonso P. Santos 8
Exemplo - Recursividade
Fatorial de um Nmero
Exemplo - Recursividade
Para calcular o fatorial de um nmero no negativo, o Scilab j possui uma funo implementada:
factorial(num)
2016/2
Prof. Afonso P. Santos 9
Funes como Bibliotecas
No Scilab, existe a possibilidade de elaborar um arquivo .scecontendo somente funes em seu cdigo. Este arquivos defunes funciona como um biblioteca;
Para carregar esta biblioteca dentro de um programa e usufruir desuas funes j implementadas, deve-se utilizar o comando exec
Executar um programa do Scilab dentro de outro:
exec(nome_do_arquivo.sce);
Funes como Bibliotecas
Exemplo:
Crie uma biblioteca paraconverso de graus emradianos e vice-versa,alm da converso doformato GGG.MMSS.
Nome:
04.biblioteca.sce
2016/2
Prof. Afonso P. Santos 10
Funes como Bibliotecas
Para utilizao de um arquivo externocomo uma biblioteca:
1. deve-se colocar o arquivo bibliotecana mesma pasta do programa emdesenvolvimento;
2. alterar o diretrio de trabalho doScilab para que seja coincidente como diretrio do programa emdesenvolvimento.
Exerccios
1. Crie um programa no Scilab para obter as coordenadas docentroide de um polgono.onde: Xi e Yi so as coordenadas de cada vrtice de um polgono de n lados;
2016/2
Prof. Afonso P. Santos 11
Exerccios
2. Calcule a distncia horizontal (dh) e sua preciso (dh) a partir deuma dada distncia inclinada (S) [metros] (e sua preciso s[metros]) e um ngulo de inclinao (i) [graus decimais] (e suapreciso i [em segundos]).
Considere que S e i no so correlacionados.
. cos(i)
.
.
Exemplo:S = 50m s = 0,05mi = 60 i = 1800dh = 25m dh = 0,378m
2016/2
Prof. Afonso P. Santos 1
EAM 480
Programao aplicada a Eng. de Agrimensura e Cartogrfica
AULA 05
Prof. Afonso P. Santosemail: [email protected]
Tel: 3899-3029
Universidade Federal de Viosa
Curso de Engenharia de Agrimensura e Cartogrfica
Sumrio
Vetores e Matrizes
Conceito
Construo de Vetores
Construo de Matrizes
Leitura de Vetores e Matrizes
Operadores
Funes
Exemplos
2016/2
Prof. Afonso P. Santos 2
Vetores e Matrizes
Uma matriz uma coleo de variveis do mesmo tipo que so
referenciadas pelo mesmo nome e que so armazenadas em um
espao contiguo da memria em uma ordem de ndice.
Uma matriz pode ter de uma a vrias dimenses.
unidimensional Vetor
multi-dimensional Matriz
No Scilab, como qualquer varivel, no se declara o tipo de um
vetor ou uma matriz;
Vetores
Instrues Descrio
Colchetes [] Marca o incio e o fim de um vetor ou matriz
Vrgula , ou espao Separa elementos de um vetor linha
Ponto e vrgula ;Separa elementos de um vetor coluna / Separa os
elementos em linhas diferentes na matriz
Apstrofo Faz a transposio 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 criao 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 criao 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 criao de uma matriz segue a juno da criao 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 Padro:
Comando Descrio
ones(l, c) Cria uma matriz de dimenso l x c com todos os elementos iguais a 1
zeros(l, c) Cria uma matriz de dimenso l x c com todos os elementos iguais a 0
eye(l, c) Cria uma matriz identidade de dimenso l x c
rand(l, c)Cria uma matriz de dimenso l x c com nmeros aleatrios 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 Descrio
size(m, p)
Retorna a dimenso de um vetor/matriz m. Se o parmetro p for 1
obtm-se o numero de linhas, 2 para obter o numero de colunas e
* para obter o nmero de elementos.
who Exibe todas as funes do scilab
Whos type constant Exibe todas as variveis 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 repetio) 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
Operaes entre matrizes:
Operador tipo Descrio
+ - binrio Soma e Subtrao. Matrizes tem que ter a mesma dimenso.
unrio Transposta
* binrioMultiplicao. O primeiro operando tem que ter o numero de
colunas iguais ao nmero de linhas do segundo operando.
.* ./ .^ binrioMultiplicao, Diviso e Potenciao pontual (elemento a
elemento). Matrizes tem que ter a mesma dimenso.
x = [m, a] - Concatenao por colunas das matriz m e a
x = [m; a] - Concatenao por linhas das matriz m e a
Operadores Matriciais
Operaes com matriz e um escalar:
Operador tipo Descrio
+ - binrio Soma e Subtrao de uma matriz por um escalar.
* / binrio Multiplicao e Diviso de uma matriz por um escalar.
^ binrio Potenciao de uma matriz por um escalar.
2016/2
Prof. Afonso P. Santos 9
Funes Matriciais
Operador Descrio
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 somatrio dos valores dos elementos da matriz m.
prod(m) Retorna o produtrio 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)Mantm a triangulao inferior da matriz m, e zera a triangulao
superior.
triu(m)Mantm a triangulao superior da matriz m, e zera a triangulao
inferior.
Exemplo
Escrever um programa para calcular estatsticas bsicas
Entrada: amostra;
Processamento:
Mdia Desvio Padro
Varincia
Sada: mdia, desvio padro, varincia;
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, subtrao e multiplicao entre elas.
Algoritmo:
Ler a matriz A
Ler a matriz B
Calcular a soma
Calcular a subtrao
Calcular a multiplicao
Imprimir o resultado em tela
2016/2
Prof. Afonso P. Santos 11
Exerccios
1 ) Escrever um programa para transformar uma data (dia, ms, ano) do
calendrio 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 condies abaixo tem que serem atendidas:
- Ano for divisvel por 4;
- Ano no for divisvel por 100, ou ser divisvel por 400.
2016/2
Prof. Afonso P. Santos 12
Exerccios
2) Escrever um programa que realize a rotao de um ngulo k em n
pontos de coordenadas planimtricas (U,V) em relao a um ponto de
origem de coordenadas (c,d). Utilize de uma estrutura matricial para
resoluo deste exerccio. As coordenadas rotacionadas (X,Y) so
determinadas pelo modelo abaixo:
Exerccios
3) Escrever um programa para calcular estatsticas de um conjunto de
resduos (V). Antes da entrada dos elementos da amostra, os resduos (Vi),
o usurio deve definir o nmero total de resduos (n). Leia os dados e
calcule o Desvio Padro, o Coeficiente de Variao e o RMS.
Desvio Padro = S = raiz[ (Vi - Vm) / (n-1)]
Coeficiente Variao = CV = (S/ Vm)*100
RMS = raiz[ (Vi) / n]
2016/2
Prof. Afonso P. Santos 13
Exerccios
4) Escrever um programa que aplique uma escala nos diferentes eixos
(Eu, Ev) em n pontos de coordenadas planimtricas (U,V) em relao a
um ponto de origem de coordenadas (a,b). Utilize de uma estrutura
matricial para resoluo deste exerccio. As coordenadas escaladas (X,Y)
so determinadas pelo modelo abaixo:
2016/2
Prof. Afonso P. Santos 1
EAM 480
Programao aplicada Engenharia de Agrimensura e Cartogrfica
AULA 07
Prof. Afonso P. Santosemail: [email protected]
Universidade Federal de Viosa
Curso de Engenharia de Agrimensura e Cartogrfica
Sumrio
Entrada e sada de dados via arquivos;
Funes simples
Associao de arquivos
Leitura em um arquivo;
Escrevendo em um arquivo;
Exemplo;
Exerccios
2016/2
Prof. Afonso P. Santos 2
Arquivos
Arquivos so unidades de armazenamento de informaes, que fica
gravado em uma unidade de memria secundria (HD) do
computador;
Arquivos de computador podem ser considerados como o
equivalente aos documentos em papel que tradicionalmente so
armazenados em arquivos de escritrios e bibliotecas, sendo esta a
origem do termo;
Os arquivos so acessados/identificados/criados de acordo com o
seu nome e extenso, bem como o diretrio a qual ele est
armazenado;
O SciLab possui a capacidade de trabalhar com arquivos textos
(legveis por humanos) que podem ser editados pelo Bloco de
Notas ou qualquer programa leitor de texto;
Funes Simples
save salva as variveis da memria do scilab para um arquivo
load recupera as variveis de um arquivo
diary criar um arquivo de log, mantendo um registro de toda aatividade 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
Associao de Arquivos
Antes de associar um determinado arquivo ao SciLab, deve-se saber o
endereo do seu diretrio, seu nome e extenso;
O comando uigetfile permite a seleo de um arquivo por meio de umajanela de dilogo onde possvel a navegao nos diretrios do sistema
operacional. Esta seleo grava o diretrio e o nome do arquivo em uma
varivel do tipo string;
Conhecendo o endereo completo do arquivo possvel associar este
arquivo ao SciLab, utilizando o comando mopen para realizar a aberturado arquivo ou a criao de um novo arquivo.
J o comando mclose permite a dissociao deste arquivo, fechando-o;
Associao de Arquivos
uigetfile
nomearq = uigetfile(*.*, pwd(), Selecione o arquivo);
Diretrio padro do SciLabFiltro de Arquivos
Mostrar todos arquivos *.*
Mostrar s TXT *.txt
Ttulo da Janela de Dilogo
2016/2
Prof. Afonso P. Santos 5
Associao de Arquivos
mopen associa um arquivo ao SciLab, realizando a abertura domesmo. 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 gravao;
mclose disassocia um arquivo no SciLab, realizando o processo defechamento do arquivo em manipulao;
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 variveis.
[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
Cdigo 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 gravao de uma varivel ou textodentro 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);
Cdigo para gravao
Manipulao de um Arquivo
Ao ler ou escrever em um arquivo quase sempre utiliza-se de um comando
de repetio para este processo;
Normalmente o controle de parada da repetio pode ser de duas formas:
fim do arquivo: utiliza-se da funo meof() (end of file) para verificar
se o arquivo est no fim; meof() retorna verdadeiro se a posio atual
do arquivo estiver no fim.
Nmero de linhas a serem lidas: configura-se o arquivo de leitura para
que a primeira linha contenha o nmero de linhas que sero 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 vrtices de um
polgono disponveis em um arquivo-texto. Em seguida, calcule o
centroide do polgono 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 4Clculo de centroide de um
polgono (ler e gravar arquivo)
continua...
Exemplo 4Clculo de centroide de um
polgono (ler e gravar arquivo)
2016/2
Prof. Afonso P. Santos 9
Exerccio
1) Crie um programa para o clculo da distncia reduzida e desnvel a
partir de dados de taqueometria. Os dados devem serem lidos a partir de
um arquivo com a seguinte estrutura:
Considere todas as variveis do tipo double, com exceo do ID_ponto que
ser do tipo char[5];
Considere a constante do equipamento com valor igual a 100;
O arquivo de entrada no dever ter cabealho nem o nmero de pontos a
serem lidos, apenas os dados brutos.
Os resultados sero 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
Exerccio
2) Crie um programa para o clculo da rea e permetro de um polgono.
Os dados devem serem lidos a partir de um arquivo com a seguinte
estrutura:
Os resultados devero serem mostrados em tela;
Utilize o mtodo de Gauss para o clculo da rea (S):
Para o clculo do permetro crie um vetor para armazenar as distncias 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
Programao aplicada Engenharia de Agrimensura e Cartogrfica
AULA 08
Prof. Afonso P. Santosemail: [email protected]
Universidade Federal de ViosaCurso de Engenharia de Agrimensura e Cartogrfica
Sumrio
Tipos de dados definidos pelo usurio Listas (List)
Estruturas (Struct)
Exemplos;
Exerccios;
2016/2
Prof. Afonso P. Santos 2
Tipos de dados definidos pelo usurio
O SciLab permite que seja criados diferentes tipos de dadospersonalizados.
Aqui ser visto dois tipos:
Listas (list), uma classe de varivel que permite o armazenamento dediferentes tipos de dados;
Estrutura (struct), que um grupo de variveis sob o mesmo nome;
Listas
Listas: uma classe de varivel (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 varivel de lista, com o ndice do elementoda lista delimitados por parntesis:
Extrao um elemento da Lista:
Uma varivel 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 varivel de lista, com ondice do elemento da lista delimitados porparntesis 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 varivel de lista, com ondice do novo elemento da lista delimitados porparntesis recebendo o novo valor.
L(6) = 100;
var_lista(ind_elemNOVO) = NOVOvalor;
2016/2
Prof. Afonso P. Santos 5
Listas
Remoo de um elemento da Lista:
Atribui-se ao elemento da varivel de lista ainstruo null():
L(3) = null();
var_lista(ind_elem) = null();
Repare que o elemento da lista removido e uma nova ordem dendice criada. Assim como o ndice 3 foi apagado, instantaneamenteo ndice 4 se transforma em ndice 3, para que a numerao dosndices fique contnua.
Estruturas
Estruturas: um grupo de variveis s quais faz-se referncia 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 referncia aos elementos da estrutura pode ser feito colocando onome da varivel de estrutura, que seguido de um ponto, e o nomedo campo especfico 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 varivel de estrutura a instruo null().
var_estrutura.nomeCampo = null();
2016/2
Prof. Afonso P. Santos 7
Estruturas
Funo Descrio Exemplo
isstruct() Verifica se a varivel 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 varivel de estruturas com os seus respectivos campos, evalores zerados;
Para inserir os dados em cada ndice do vetor basta atribuir o valor varivel da estrutura no ndice i (delimitado por parntesis), 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 faa o processamento de uma linha denivelamento geomtrico simples.
Dados de entrada: arquivo com as leituras da mira em cada estaca, bem como acota da estaca inicial (r).
Dados de sada: arquivo contendo as diferenas de nvel em relao 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
Exerccio
1) Crie um programa para calcular dados provenientes de um nivelamentotrigonomtrico por taqueometria;
A entrada de dados deve se dar por arquivos;
A sada dos dados (resultados) tambm deve se dar por arquivos;
Utilize tipos definidos pelo usurios;
Exerccio
2) Crie um programa para calcular dados provenientes de um nivelamentotrigonomtrico apenas por estao total.
Considere que o usurio coletou Distancia Inclinada (em metros) e nguloZenital (j em graus decimais);
A entrada de dados deve se dar por arquivos;
A sada dos dados (resultados) tambm deve se dar por arquivos;
Utilize tipos definidos pelo usurios;
Estrutura do Arquivo a ser lido:N de estacas
Cota do ponto onde a Estao Total est estacionada
Altura da Estao Total
ID_Estaca Dist_Inclinada Ang_Zenital Alt.Prsima
...
2016/2
Prof. Afonso P. Santos 12
Estao 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
Programao aplicada Engenharia de Agrimensura e Cartogrfica
AULA 09
Prof. Afonso P. Santosemail: [email protected]
Universidade Federal de ViosaCurso de Engenharia de Agrimensura e Cartogrfica
Sumrio
Limites
Derivadas
Exemplos Ajustamento MMQ
Exerccios;
2016/2
Prof. Afonso P. Santos 2
Limites
O SciLab no dispe de um comando especifico para o clculodo limite de uma funo;
Pode-se definir uma faixa de valores bem prximos paradescobri o limite de uma funo;
A regra de LHopital tem como objetivo calcular o limite de fraes no caso em que ocorre indeterminaes do tipo 0/0 ou /
Para achar o limite da funo basta derivar o numerador e o denominador.
Ex: lim
Aplicando a regra:
.
. 2
Limites
No Scilab:
lim
4
4Valor igualValor bem prximo
2016/2
Prof. Afonso P. Santos 3
Derivadas
Se diz que uma funo f(x) derivvel ou diferencivel se, prximoa cada ponto m do seu domnio a funo f(m) se comporte comouma funo linear, ou seja, seu grfico for aproximadamente umareta.
A derivada o coeficiente angular da reta tangente ao grfico dafuno no ponto m.
A representao da derivada dada por f (m) ou
As derivadas so extremamente importante em aplicaes deajustamento de observaes pelo Mtodo dos Mnimos Quadrados,quando se utiliza as derivadas parciais para confeco da matrizjacobiana A (ou matriz design);
Derivadas (Polinmio)
O comando geral de calcular a derivada em uma funopolinomial derivat;
necessrio definir a funo polinomial e em seguida utilizaro comando derivat para realizar a derivao algbrica dafuno;
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 utilizao deste comando necessrio, incialmente, acriao de uma estrutura de funo (function) cuja a funo aser derivada dever ser definida. Aps utiliza-se o comandode derivao em um determinado ponto;
f(x) = x - 5x + 6f (x) = 2x 5f (4) = 3
Derivadas parciais
f1 = sen(x1) + x2 + x3f2 = 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 observaes de uma rede de
nivelamento
Exemplo
Realizar o ajustamento de observaes de uma rede de
nivelamento
Acompanhar explicao, 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
Programao aplicada Engenharia de Agrimensura e Cartogrfica
AULA 10
Prof. Afonso P. Santosemail: [email protected]
Universidade Federal de ViosaCurso de Engenharia de Agrimensura e Cartogrfica
Sumrio
Grficos 2d - linhas;
2d - Barra / colunas / setas
2d - Vetor de Deslocamento;
2d perspectiva, dando sensao 3d;
2016/2
Prof. Afonso P. Santos 2
Grficos
O SciLab dispe de vrios comandos para criao emanipulao de grficos;
Existe a possibilidade de gerar grficos 2D (bi-dimensional) egrficos em perspectiva que que d uma ideia de umambiente 3D (tridimensional);
Existem vrios tipos de grficos 2D como: barra, colunas,linhas, vetores de deslocamentos, etc.
Grficos 2D - linhas
O comando utilizado para criar grficos 2D de linhas ocomando plot2d ou plot;
x e y devem ser vetores ou matrizes, com a mesma dimenso;assim, a funo plot2d permite traar um grfico de y emfuno de x;
permitido utilizar apenas a varivel y para traar o grfico:plot2d(y);
Se as variveis forem matrizes, ser criada uma linha nogrfico para cada coluna da matriz;
plot2d ( x , y) plot ( x , y)
2016/2
Prof. Afonso P. Santos 3
Grfico 2D (vetor)
Janela Grfica
Ao executar novamente o comando plot2d, os grficossubsequentes so apresentados na mesma janela grfica (porcima dos anteriores). Assim necessrio limpar a janelagrfica ou criar outra janela grfica;
Limpando Janela Grfica:
Criando uma nova Janela Grfica:
clf ( );
scf (n); Onde n o nmero sequencia decada janela criada. Ex: 0, 1, 2, 3,etc...
2016/2
Prof. Afonso P. Santos 4
Grfico 2D (matriz)
Grficos 2D - linhas
Comando plot2d com todos os parmetros possveis:
Style: utilizada para especificar o estilo das curvas. Valoresinteiros positivos define uma curva contnua cm determinada cor.Valores inteiros negativos define uma curva tracejada ou commarcadores;
Rect: Define a dimenso do grfico: [xmin, ymin, xmax, ymax];
Logflag: ajusta a escala (linear ou logartmica) ao longo dos eixos. Ovalor associado deve ser um string com um dos possveis valores:"nn", "nl" , "ln" e "ll; onde n a escala normal e l a escalalogartmica;
plot2d ( x , y , style , rect , logflag, frameflag , axesflag , leg );
2016/2
Prof. Afonso P. Santos 5
Grficos 2D - linhas
Comando plot2d com todos os parmetros possveis:
Frameflag: utilizada para controlar a escala dos eixoscoordenados. O valor utilizado deve ser um nmero inteiro de 0 a 8;
Axesflag: especifica como os eixos sero traados. O valor utilizadodeve ser um nmero 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 pelosmbolo @;
plot2d ( x , y , style , rect , logflag, frameflag , axesflag , leg );
Grfico 2D - linhas
2016/2
Prof. Afonso P. Santos 6
Edio de Ttulo e Eixos
Forma Manual:
Edio de Ttulo e Eixos
Comando para inserir ttulo do grfico:
Comando para inserir uma grade de coordenadas no grfico
xtitle(Ttulo);
xgrid(n);
2016/2
Prof. Afonso P. Santos 7
Grficos 2D barras / colunas / setas
Comando plot2d2: grfico de colunas;
Comando plot2d3: grfico de barras;
Comando plot2d4: grfico de setas;
plot2d2 ( x , y)
plot2d3 ( x , y)
plot2d2 ( x , y)
Grficos 2D barras / colunas / setas
2016/2
Prof. Afonso P. Santos 8
Grficos 2D barras / colunas / setas
Grficos 2D barras / colunas / setas
2016/2
Prof. Afonso P. Santos 9
Grfico Vetor de Deslocamento
O comando utilizado para criar grficos com setas indicando umcampo vetorial ou vetores de deslocamento ou discrepncias ocomando champ
champ(x, y, dx, dy);
Grficos 3D*
O comando utilizadopara criar grficos 2Dem perspectiva, que dideia de 3D, ocomando plot3d
Mais opes de parmetros, como oapresentado no comando plot2d,consultar o help do scilab
Plot3d(x,y,z);
2016/2
Prof. Afonso P. Santos 10
Outros Grficos
polarplot cria um grfico 2d polarcontour2d traa curvas de nvel em uma superfcie num grfico 2derrbar acrescenta barras de erros em um grfico;fgrayplot cria uma superfcie definida por uma funo usando coresgrayplot cria uma superfcie num grfico 2d usando coresmesh faz um grfico 3D definido por uma redepie cria um grfico circular no formato pizza