Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


Primera Pràctica Programació, Apuntes de Algoritmos y Programación

Asignatura: Programacio, Profesor: Maria Ferrer, Carrera: Enginyeria Informàtica, Universidad: URV

Tipo: Apuntes

2013/2014

Subido el 09/10/2014

lid_goodmorning
lid_goodmorning 🇪🇸

5

(1)

1 documento

1 / 5

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
Programació Curs 2014-2015
1
PRIMERA PRÀCTICA DE PROGRAMACIÓ
Què hi ha al meu voltant?
Presentació del problema
Google Maps va posar a l’abast del gran públic el fet de poder ubicar en un mapa la posició
on es troba un servei, un usuari, ... Avui en dia ens trobem amb moltes aplicacions que fan
ús d’aquesta eina i ens ajuden a localitzar, a partir de la nostra posició, els serveis d’un cert
tipus que tenim més propers.
Una forma de representar la posició d’una localització geogràfica són les coordenades
geogràfiques de longitud i latitud. Tot sistema de coordenades ha de tenir un origen i uns
eixos. En el cas de la longitud, l’origen és el meridià de Greenwich (longitud 0) i per a la
latitud, l’origen és l’equador (latitud 0). La longitud és positiva des del meridià cap a l’est i la
latitud és positiva en l’hemisferi nord. Les següents imatges poden ajudar a clarificar el
sistema de representació de la informació.
La latitud i la longitud es poden expressar utilitzant graus, minuts i segons, o bé, en graus
decimals. En la notació dels graus decimals la longitud pot tenir valors des de [-180, 180] (els
dos extrems representen el mateix punt) i la latitud pot tenir valors en el rang [-90, 90]. En la
notació que s’utilitza graus, minuts i segons sempre es mostren les dades amb valors positius
i s’afegeix a la latitud si és un valor del Nord o del Sud, i per a la longitud si és de l’Est o de
l’Oest.
pf3
pf4
pf5

Vista previa parcial del texto

¡Descarga Primera Pràctica Programació y más Apuntes en PDF de Algoritmos y Programación solo en Docsity!

PRIMERA PRÀCTICA DE PROGRAMACIÓ

Què hi ha al meu voltant?

Presentació del problema

Google Maps va posar a l’abast del gran públic el fet de poder ubicar en un mapa la posició on es troba un servei, un usuari, ... Avui en dia ens trobem amb moltes aplicacions que fan ús d’aquesta eina i ens ajuden a localitzar, a partir de la nostra posició, els serveis d’un cert tipus que tenim més propers.

Una forma de representar la posició d’una localització geogràfica són les coordenades geogràfiques de longitud i latitud. Tot sistema de coordenades ha de tenir un origen i uns eixos. En el cas de la longitud, l’origen és el meridià de Greenwich (longitud 0) i per a la latitud, l’origen és l’equador (latitud 0). La longitud és positiva des del meridià cap a l’est i la latitud és positiva en l’hemisferi nord. Les següents imatges poden ajudar a clarificar el sistema de representació de la informació.

La latitud i la longitud es poden expressar utilitzant graus, minuts i segons, o bé, en graus decimals. En la notació dels graus decimals la longitud pot tenir valors des de [-180, 180] (els dos extrems representen el mateix punt) i la latitud pot tenir valors en el rang [-90, 90]. En la notació que s’utilitza graus, minuts i segons sempre es mostren les dades amb valors positius i s’afegeix a la latitud si és un valor del Nord o del Sud, i per a la longitud si és de l’Est o de l’Oest.

Donem alguns exemples per a clarificar les notacions.

Lloc Notació graus, minuts i segons Latitud Longitud LatitudNotació graus decimals Longitud

ETSE 41º 7 ‘ 32.89” N 1º 14’ 18.90” E 41.1258048 1. La Corunya 43º 21’ 42.74” N 8º 24’ 45.66” O 43.3618741 -8. Johannesburg 26º 10’ 17.47” S 28º 2’ 24.08” E -26.1715215 28. Buenos Aires 34º 36’ 57.06” S 58º 25’ 59.88” O -34.6158527 -58.

Per a traduir el valor d’una notació a l’altre tenim les següents fórmules:

(1) valor decimal = graus + (minuts/60) + (segons/3600)

(2) tenint en compte que [ ] representa la part entera,

graus = [valor decimal]

minuts = [ (valor decimal – graus) *60 ]

segons = ( ( (valor decimal – graus) *60 ) – minuts ) * 60

Hem de dissenyar també la classe que conté el main i que crearà instàncies de la classe servei i validarà el seu funcionament. Hem de tenir especial cura en definir diferents jocs de prova que utilitzin tots els mètodes cobrint els diferents casos que es poden donar, per tal de comprovar que el programa funciona correctament en tots els casos. Per fer les proves no cal llegir la informació de teclat sinó que els valors es poden donar als mètodes directament dins el codi del main. De cada prova que feu, heu de (afegiu comentaris en el mateix codi del main):

  • Dir què s’està provant (exemple, inicialització correcta, transformació de ... correcta, etc.)
  • Crear les instàncies de la classe servei que faci falta
  • Cridar als mètodes concrets i mostrar els resultats per pantalla.

Càlcul de la distància entre dos punts segons la fórmula de

Harversine

Per a calcular la distància entre dos punts sobre l’esfera terrestre no podem utilitzar la fórmula de la distància sobre un pla, hem de tenir en compte la curvatura de la terra. La fórmula de Harversine resol el problema.

distància_punts_terrestres (P1, P2 ) = R * 2 * atan2(sqrt(a), sqrt(1-a))

on R = radi de la terra (l’aproximem pel valor de 6378.137)

a = sin^2 (∆lat/2) + cos(lat1) * cos(lat2) * sin^2 (∆long/2)

on ∆lat = (lat2 – lat1) i ∆long =( long2 – long1);

Per a entendre la fórmula hem de tenir en compte un seguit d’aspectes. El punt de partida són les coordenades de longitud i latitud dels dos punts. En el nostre cas els tenim guardats en graus decimals. La fórmula, però, espera tenir aquests valors en radiants i per tant el primer que hem de fer és fer-ne la traducció. Per a fer-ho, recordeu la fórmula:

valor_en_radiants = valor_en_graus * π / 180;

Anomenarem les coordenades dels punts de partida ja en radiants segons la següent notació (i és el que teniu en les fórmules): P1 (lat1, long1) P2 (lat2, long2)

Instruccions per al desenvolupament de la pràctica

  • Heu de creat el Java Project amb el vostre nom, cognom_nomAlumne_nomPractica
  • El termini de lliurament és el dilluns 6 d'octubre de 2014 a les 21h.
  • Aquesta pràctica és individual. En cas de detectar-se dues o més pràctiques iguals o molt similars es posarà una nota de 0 a tots els alumnes implicats.
  • Els resultats de la pràctica es lliuraran a través del “moodle” a la tasca corresponent. El nom del fitxer serà cognom_nomAlumne_nomPractica.zip
  • Lliurareu els codi fonts (fitxer Java) i la documentació generada amb l’eina JavaDoc com a projecte exportat de l'Eclipse (arxiu ZIP). Si ho creieu convenient podeu afegir un breu fitxer de text amb les explicacions que considereu pertinents.
  • Recordeu que no s'acceptaran pràctiques que no funcionin per què tenen errors de compilació o no facin el que demana l'enunciat. Reviseu que el codi compili sense advertiments.

Criteris d’avaluació

  • Correctesa en la definició dels atributs (que siguin del tipus adequat).
  • Correctesa de la implementació dels mètodes (que rebin els paràmetres que s'indica i facin correctament el que es demana, de la forma més senzilla i òptima possible).
  • El programa principal crea les instàncies necessàries i fa crides als mètodes passant adequadament els paràmetres requerits.
  • El codi que s'implementi ha de ser clar: ha d'estar tabulat, ha d'estar comentat adequadament (cada mètode ha de tenir una capçalera indicant què fa, i quins paràmetres rep) i els noms que useu pels atributs, mètodes, ... han de ser representatius.
  • No s'acceptarà que les sortides per pantalla (System.out.println) es facin en qualsevol altre lloc que no sigui el main.
  • Joc de proves complert en la classe principal.
  • Ús de l'eina Javadoc per a generar la documentació.
  • Entrega del projecte exportat de forma correcta des d'Eclipse.