SlideShare une entreprise Scribd logo
1  sur  5
Télécharger pour lire hors ligne
PROGRAMACI´ON (EUI). Curso 2001-2002
Pr´actica 2. RESOLUCI ´ON DE UNA ECUACI ´ON DE
SEGUNDO GRADO
F. Marqu´es y N. Prieto
´Indice General
1 Introducci´on. Algoritmos num´ericos 1
2 El problema 2
2.1 Soluci´on de la ecuaci´on . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
3 El programa 2
3.1 Estrategia de resoluci´on . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
3.2 Variables y tipos de datos . . . . . . . . . . . . . . . . . . . . . . . . . . 3
3.3 Impresi´on de resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
4 Introducci´on de los valores de los coeficientes 4
4.1 Argumentos de un programa . . . . . . . . . . . . . . . . . . . . . . . . 4
4.2 Argumentos num´ericos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1 Introducci´on. Algoritmos num´ericos
Uno de los primeros usos de los computadores fue su utilizaci´on en la resoluci´on de
problemas de ´ındole num´erica y estad´ıstica: tabulaci´on de funciones elementales, deter-
minaci´on de tablas de trayectorias de proyectiles, resoluci´on de ecuaciones, etc.
Los algoritmos basados en el uso de las operaciones aritm´eticas elementales se cono-
cen con el nombre de algoritmos num´ericos. Estos juegan un papel importante en las
matem´aticas debido a que muchas operaciones pueden reducirse a otras m´as elementales,
habitualmente mediante un uso reiterado de las ´ultimas.
Los algorimos num´ericos se dan usualmente en forma de instrucciones verbales o
diversas clases de f´ormulas y esquemas. Algoritmos num´ericos sobradamente conocidos
son los que permiten resolver una ecuaci´on de segundo grado, un sistema lineal de
ecuaciones, o extraer una ra´ız cuadrada. La utilizaci´on de computadoras en la resoluci´on
de problemas que implican este tipo de algoritmos permite ahorrar al hombre una gran
cantidad de trabajo tedioso y rutinario.
1
2 EL PROBLEMA 2
En esta pr´actica se plantea el problema de calcular de forma general mediante un
programa, la soluci´on o soluciones de una ecuaci´on de segundo grado de coeficientes
reales cualesquiera. El m´etodo que se seguir´a consistir´a en la aplicaci´on, casi inmediata,
de la conocida f´ormula de resoluci´on de ecuaciones de dicho tipo.
2 El problema
Se desea resolver de forma general, la siguiente ecuaci´on de segundo grado:
ax2
+ bx + c = 0
donde, a, b y c, que son los coeficientes de la ecuaci´on, son n´umeros reales cualesquiera,
y x, la variable, cuyo valor o valores se desea conocer, puede ser un n´umero real o
complejo.
2.1 Soluci´on de la ecuaci´on
La soluci´on de la ecuaci´on anterior depende de los valores de los coeficientes y, en funci´on
de los mismos, cabe distinguir entre los siguientes casos:
• si a, b y c valen simult´aneamente 0, entonces cualquier n´umero es soluci´on de la
ecuaci´on
• si a y b son simult´aneamente 0, pero c no lo es, la ecuaci´on es incorrecta
• si a vale 0 y b es distinto de 0, entonces la ecuaci´on es de primer grado, y la soluci´on
x es el n´umero real −c/b
• si a es distinto de 0, entonces la soluci´on de la ecuaci´on se puede obtener siempre
aplicando la f´ormula:
x =
−b ±
√
b2 − 4ac
2a
donde al valor (b2 − 4ac) se denomina discriminante. En dicho caso:
– si el discriminante es 0 la soluci´on es ´unica y es un n´umero real,
– si el discriminante es positivo las dos soluciones son n´umeros reales,
– si el discriminante es negativo las dos soluciones son n´umeros complejos.
3 El programa
Es necesario, para poder resolver el problema mediante un programa determinar tanto
la estrategia, o pasos que seguir´a el mismo en la soluci´on del problema, como las carac-
ter´ısticas de los datos que intervengan en el mismo. Todo ello para expresar mediante el
lenguaje de programaci´on deseado la estructura del programa soluci´on, y las variables
y tipos de los datos implicados.
3 EL PROGRAMA 3
3.1 Estrategia de resoluci´on
Para resolver el problema, de forma general, mediante un programa, se puede seguir una
estrategia como la siguiente:
1. Pedir inicialmente los valores de los coeficientes al usuario,
2. En funci´on de ellos decidir si la ecuaci´on:
• Es incorrecta,
• tiene un n´umero infinito de soluciones,
• es una ecuaci´on de primer grado, con soluci´on real, o
• es una ecuaci´on de segundo grado y:
– el discriminante vale 0 y la ecuaci´on tiene una ´unica soluci´on real
– el discriminante es positivo, y la ecuaci´on tiene soluciones reales, o
– el discriminante es negativo y la ecuaci´on tiene soluciones complejas,
3. escribir en la salida la advertencia o soluci´on hallada seg´un corresponda.
3.2 Variables y tipos de datos
Tanto los coeficientes, a, b y c, como otros posibles n´umeros, como el discriminante, son
n´umeros reales, por lo que se mantendr´an a lo largo de la ejecuci´on mediante variables
de dicho tipo, por ejemplo se pueden declarar como variables de tipo double.
Como se ha visto, seg´un el tipo de ecuaci´on, algunas soluciones pueden ser n´umeros
complejos. Sin embargo, en el lenguaje no existe el tipo de datos n´umero complejo de
forma predefinida, por lo que se hace necesario representar dichos n´umeros de alguna
forma alternativa. Se puede utilizar, por su sencillez, la forma cartesiana, en la que cada
n´umero complejo se representa mediante un par de valores de tipo real (double), uno
para la parte real, y otro para la imaginaria. De esta manera, si n es un n´umero real
negativo cualquiera, entonces el valor complejo
√
n, es equivalente a |n|i.
Por ejemplo, el valor complejo
√
−16, es equivalente a | − 16|i, esto es: 4i.
3.3 Impresi´on de resultados
La impresi´on de los resultados debe realizarse siempre de forma que sea legible y no
de lugar a ambig¨uedades. Para este programa, adem´as, deber´an tenerse en cuenta las
siguientes consideraciones:
• Si existe una ´unica soluci´on de la ecuaci´on, como por ejemplo cuando el discrimi-
nante vale 0, ´esta no deber´a aparecer duplicada.
• Cuando se escriba un n´umero complejo, deber´a quedar claramente diferenciada su
parte real y su parte imaginaria, como por ejemplo:
Soluciones: (3.2145 + 14.48i) (3.2145 - 14.48i)
4 INTRODUCCI ´ON DE LOS VALORES DE LOS COEFICIENTES 4
4 Introducci´on de los valores de los coeficientes
Para la introducci´on de los coeficientes se utilizar´an dos m´etodos distintos. El primero
de ellos, que no merece consideraci´on especial, ya que ya ha sido utilizado, consiste en
hacer uso de las primitivas definidas en el paquete nsIO para la definici´on de ficheros de
entrada/salida e introducci´on de datos.
La segunda posibilidad, que se estudiar´a a continuaci´on, consiste en introducir los
datos como argumentos del programa que se va a ejecutar.
4.1 Argumentos de un programa
Al estudiar la estructura de un programa en el tema 2o, se ha visto que ´esta era de la
forma:
class NombrePrograma {
public static void main (String args[]) {
...
}
}
donde el m´etodo main indica el segmento de c´odigo que se ejecutar´a inicialmente.
Dicho m´etodo tiene un argumento declarado: String args[], que hace referencia a un
grupo de variables enumeradas (un array en t´erminos del Java) de tipo String.
Cuando el usuario ejecuta el programa NombrePrograma, puede hacerlo utilizando
argumentos, como se hace en el siguiente ejemplo en el que se utilizan tres argumentos,
uno de ellos el n´umero 37:
java NombrePrograma ejem1 37 ejem3
Cuando el programa NombrePrograma se ejecuta puede hacer referencia a los ar-
gumentos con los que arranca, mediante las variables: args[0], cadena de caracteres
(String) de valor ”ejem1”; args[1], cadena de caracteres (String) de valor ”37” y
args[2], cadena de caracteres (String) de valor ”ejem3”
N´otese que los argumentos:
• pueden ser tantos como se desee,
• se separan entre si por espacios en blanco, y
• son todos de tipo String
4.2 Argumentos num´ericos
Si se desea hacer uso de argumentos num´ericos, entonces es necesario transformar a
n´umero la String con que se reconocen dentro del programa los argumentos con que se
inicia el mismo.
4 INTRODUCCI ´ON DE LOS VALORES DE LOS COEFICIENTES 5
Para hacer esto posible, el lenguaje Java hace uso de unos tipos de datos num´ericos
especiales, denominados tipos de envoltura, que se estudiar´an m´as adelante, y que tienen
operaciones espec´ıficas para realizar dicho tipo de transformaciones. Los tipos Int y
Double son, por ejemplo, tipos de envoltura de los tipos int y double, respectivamente.
El siguiente ejemplo, donde se desea introducir un valor entero y otro real en la
linea de comando del programa, muestra c´omo puede realizarse todo esto en Java. Para
ello se leen dos argumentos num´ericos como String, almacenadas en argv[0] y argv[1],
y a continuaci´on se transforman, respectivamente, en variables de tipo int y double,
escribi´endose dichos n´umeros seguidamente:
class ejem2 {
static public void main(String argv[]) {
int i = new Integer(argv[0]).intValue();
double d = new Double(argv[1]).doubleValue();
System.out.println("El primer numero es: " + i);
System.out.println("El segundo numero es: " + d);
}
} /* fin de ejem2 */
Donde los m´etodos Integer() y Double(), permiten construir objetos de dicho tipo,
(Integer y Double), a partir de valores de tipo String, y los m´etodos intValue() y
doubleValue() devuelven, respectivamente, un valor elemental de tipo int y double.
As´ı, con ello, es posible efectuar una llamada inicial al programa como la siguiente:
java ejem2 12 123.678
Es importante se˜nalar que se producir´a un error de ejecuci´on (una excepci´on) en el
caso de que alguno de los argumentos no tenga las caracter´ısticas previstas, o si faltara
alguno de ellos. Pru´ebese, por ejemplo, a introducir un caracter donde se prevee un
n´umero.

Contenu connexe

Tendances

Apuntesmatlab
ApuntesmatlabApuntesmatlab
Apuntesmatlabford81
 
Matematicas ii 09102 2012
Matematicas ii 09102 2012Matematicas ii 09102 2012
Matematicas ii 09102 2012Maestros Online
 
Fundamentos de programacion
Fundamentos de programacionFundamentos de programacion
Fundamentos de programacionpepe1234554321
 
UTPL-LÓGICA DE LA PROGRAMACIÓN-I BIMESTRE-(abril agosto 2012)
UTPL-LÓGICA DE LA PROGRAMACIÓN-I BIMESTRE-(abril agosto 2012)UTPL-LÓGICA DE LA PROGRAMACIÓN-I BIMESTRE-(abril agosto 2012)
UTPL-LÓGICA DE LA PROGRAMACIÓN-I BIMESTRE-(abril agosto 2012)Videoconferencias UTPL
 
Identificadores en Lógia de Programación
Identificadores en Lógia de ProgramaciónIdentificadores en Lógia de Programación
Identificadores en Lógia de Programaciónnormaroldano
 
Métodos numéricos- Métodos de Aproximación
Métodos numéricos- Métodos de AproximaciónMétodos numéricos- Métodos de Aproximación
Métodos numéricos- Métodos de AproximaciónRonnyArgeta123
 
Guía de Algoritmo y Programación en C
Guía de Algoritmo y Programación en CGuía de Algoritmo y Programación en C
Guía de Algoritmo y Programación en CPablo Chiesa
 
Logica de la Programación Problemas y Soluciones
Logica de la  Programación  Problemas y SolucionesLogica de la  Programación  Problemas y Soluciones
Logica de la Programación Problemas y SolucionesVideoconferencias UTPL
 
Optimizacion Osvelis Ruiz
Optimizacion Osvelis RuizOptimizacion Osvelis Ruiz
Optimizacion Osvelis RuizOsvelis Ruiz
 

Tendances (19)

Programación
ProgramaciónProgramación
Programación
 
Conceptos basicos de métodos numéricos
Conceptos basicos de métodos numéricosConceptos basicos de métodos numéricos
Conceptos basicos de métodos numéricos
 
Estructuras básicas
Estructuras básicas Estructuras básicas
Estructuras básicas
 
Apuntesmatlab
ApuntesmatlabApuntesmatlab
Apuntesmatlab
 
Matematicas ii 09102 2012
Matematicas ii 09102 2012Matematicas ii 09102 2012
Matematicas ii 09102 2012
 
Programación
ProgramaciónProgramación
Programación
 
Algoritmos 01
Algoritmos 01Algoritmos 01
Algoritmos 01
 
Fundamentos de programacion
Fundamentos de programacionFundamentos de programacion
Fundamentos de programacion
 
Programación
ProgramaciónProgramación
Programación
 
UTPL-LÓGICA DE LA PROGRAMACIÓN-I BIMESTRE-(abril agosto 2012)
UTPL-LÓGICA DE LA PROGRAMACIÓN-I BIMESTRE-(abril agosto 2012)UTPL-LÓGICA DE LA PROGRAMACIÓN-I BIMESTRE-(abril agosto 2012)
UTPL-LÓGICA DE LA PROGRAMACIÓN-I BIMESTRE-(abril agosto 2012)
 
Tipos De Datos
Tipos De DatosTipos De Datos
Tipos De Datos
 
matlab
matlabmatlab
matlab
 
Tad
TadTad
Tad
 
Identificadores en Lógia de Programación
Identificadores en Lógia de ProgramaciónIdentificadores en Lógia de Programación
Identificadores en Lógia de Programación
 
Métodos numéricos- Métodos de Aproximación
Métodos numéricos- Métodos de AproximaciónMétodos numéricos- Métodos de Aproximación
Métodos numéricos- Métodos de Aproximación
 
Guía de Algoritmo y Programación en C
Guía de Algoritmo y Programación en CGuía de Algoritmo y Programación en C
Guía de Algoritmo y Programación en C
 
Logica de la Programación Problemas y Soluciones
Logica de la  Programación  Problemas y SolucionesLogica de la  Programación  Problemas y Soluciones
Logica de la Programación Problemas y Soluciones
 
R1 b2
R1 b2R1 b2
R1 b2
 
Optimizacion Osvelis Ruiz
Optimizacion Osvelis RuizOptimizacion Osvelis Ruiz
Optimizacion Osvelis Ruiz
 

En vedette

TRAJABO COLABORATIVO
TRAJABO COLABORATIVOTRAJABO COLABORATIVO
TRAJABO COLABORATIVOflocuevas
 
Trabajo computadores higiene bucal powerpoint
Trabajo computadores higiene bucal powerpointTrabajo computadores higiene bucal powerpoint
Trabajo computadores higiene bucal powerpointRognysMontalvoDiaz2810
 
Adecuaciones curriculares
 Adecuaciones curriculares Adecuaciones curriculares
Adecuaciones curricularesDianitha Blake
 
Marketing Intelligence voor Managers – Marketing Automation Tools
Marketing Intelligence voor Managers – Marketing Automation ToolsMarketing Intelligence voor Managers – Marketing Automation Tools
Marketing Intelligence voor Managers – Marketing Automation ToolsFourPoints Business Intelligence
 
Aprendizaje y nuevas perspectivas didácticas en el aula
Aprendizaje y nuevas perspectivas didácticas en el aulaAprendizaje y nuevas perspectivas didácticas en el aula
Aprendizaje y nuevas perspectivas didácticas en el aulaDianitha Blake
 
【kintone hive 上海】天津ネットワーク様講演資料_160918
【kintone hive 上海】天津ネットワーク様講演資料_160918【kintone hive 上海】天津ネットワーク様講演資料_160918
【kintone hive 上海】天津ネットワーク様講演資料_160918Cybozucommunity
 
Modelos de equipamiento
Modelos de equipamientoModelos de equipamiento
Modelos de equipamientoDianitha Blake
 
Tema 5 arreglos y cadenas por gio
Tema 5   arreglos y cadenas por gioTema 5   arreglos y cadenas por gio
Tema 5 arreglos y cadenas por gioRobert Wolf
 

En vedette (9)

TRAJABO COLABORATIVO
TRAJABO COLABORATIVOTRAJABO COLABORATIVO
TRAJABO COLABORATIVO
 
Trabajo computadores higiene bucal powerpoint
Trabajo computadores higiene bucal powerpointTrabajo computadores higiene bucal powerpoint
Trabajo computadores higiene bucal powerpoint
 
Guia para adultos
Guia para adultosGuia para adultos
Guia para adultos
 
Adecuaciones curriculares
 Adecuaciones curriculares Adecuaciones curriculares
Adecuaciones curriculares
 
Marketing Intelligence voor Managers – Marketing Automation Tools
Marketing Intelligence voor Managers – Marketing Automation ToolsMarketing Intelligence voor Managers – Marketing Automation Tools
Marketing Intelligence voor Managers – Marketing Automation Tools
 
Aprendizaje y nuevas perspectivas didácticas en el aula
Aprendizaje y nuevas perspectivas didácticas en el aulaAprendizaje y nuevas perspectivas didácticas en el aula
Aprendizaje y nuevas perspectivas didácticas en el aula
 
【kintone hive 上海】天津ネットワーク様講演資料_160918
【kintone hive 上海】天津ネットワーク様講演資料_160918【kintone hive 上海】天津ネットワーク様講演資料_160918
【kintone hive 上海】天津ネットワーク様講演資料_160918
 
Modelos de equipamiento
Modelos de equipamientoModelos de equipamiento
Modelos de equipamiento
 
Tema 5 arreglos y cadenas por gio
Tema 5   arreglos y cadenas por gioTema 5   arreglos y cadenas por gio
Tema 5 arreglos y cadenas por gio
 

Similaire à Practica2

Introducción a los Métodos Numéricos
Introducción a los Métodos NuméricosIntroducción a los Métodos Numéricos
Introducción a los Métodos NuméricosJoanny Ibarbia Pardo
 
1raclasedemtodosnumricos-150903221928-lva1-app6892 (1).pptx
1raclasedemtodosnumricos-150903221928-lva1-app6892 (1).pptx1raclasedemtodosnumricos-150903221928-lva1-app6892 (1).pptx
1raclasedemtodosnumricos-150903221928-lva1-app6892 (1).pptxYeshuaCamposChvez
 
tecnologia trabajo en equipo.pdf
tecnologia trabajo en equipo.pdftecnologia trabajo en equipo.pdf
tecnologia trabajo en equipo.pdfLauraPrieto83
 
tecnologia trabajo en equipo.pdf
tecnologia trabajo en equipo.pdftecnologia trabajo en equipo.pdf
tecnologia trabajo en equipo.pdfMajuMuoz
 
tecnologia trabajo en equipo.pdf
tecnologia trabajo en equipo.pdftecnologia trabajo en equipo.pdf
tecnologia trabajo en equipo.pdfssuser7ec9f9
 
tecnologia trabajo en equipo.pdf
tecnologia trabajo en equipo.pdftecnologia trabajo en equipo.pdf
tecnologia trabajo en equipo.pdfMajuMuoz
 
Capitulo i modelos_matematicos_y_errores,_parte_1[1]
Capitulo i modelos_matematicos_y_errores,_parte_1[1]Capitulo i modelos_matematicos_y_errores,_parte_1[1]
Capitulo i modelos_matematicos_y_errores,_parte_1[1]chinop7
 
Diagramas de-flujo.
Diagramas de-flujo.Diagramas de-flujo.
Diagramas de-flujo.Uriel Lopez
 
Logica computacional conceptos basicos
Logica computacional conceptos basicosLogica computacional conceptos basicos
Logica computacional conceptos basicosmoni26011993
 
Unidad 1, 2 y_3_algoritmos
Unidad 1, 2 y_3_algoritmosUnidad 1, 2 y_3_algoritmos
Unidad 1, 2 y_3_algoritmosGrisell d?z
 
37 tarazona karen programacion
37 tarazona karen programacion37 tarazona karen programacion
37 tarazona karen programacionkarenyulithza
 
algoritmos 7 4p.pptx
algoritmos 7 4p.pptxalgoritmos 7 4p.pptx
algoritmos 7 4p.pptxmartin298577
 
informatica_iv_-_unidad_2._algoritmos.pptx
informatica_iv_-_unidad_2._algoritmos.pptxinformatica_iv_-_unidad_2._algoritmos.pptx
informatica_iv_-_unidad_2._algoritmos.pptxyvillada8
 
informatica_iv_-_unidad_2._algoritmos.pptx
informatica_iv_-_unidad_2._algoritmos.pptxinformatica_iv_-_unidad_2._algoritmos.pptx
informatica_iv_-_unidad_2._algoritmos.pptxDanielHidalgo92
 
Analisis maria virg
Analisis maria virgAnalisis maria virg
Analisis maria virgtareasuft
 
Programacion primero
Programacion primeroProgramacion primero
Programacion primeroVictor Zapata
 
Programacion primero
Programacion primeroProgramacion primero
Programacion primeroVictor Zapata
 

Similaire à Practica2 (20)

Introducción a los Métodos Numéricos
Introducción a los Métodos NuméricosIntroducción a los Métodos Numéricos
Introducción a los Métodos Numéricos
 
1raclasedemtodosnumricos-150903221928-lva1-app6892 (1).pptx
1raclasedemtodosnumricos-150903221928-lva1-app6892 (1).pptx1raclasedemtodosnumricos-150903221928-lva1-app6892 (1).pptx
1raclasedemtodosnumricos-150903221928-lva1-app6892 (1).pptx
 
Ejercicios de Programación Matemática Aplicada
Ejercicios de Programación Matemática Aplicada Ejercicios de Programación Matemática Aplicada
Ejercicios de Programación Matemática Aplicada
 
Victorleyva eje 4_actividad1
Victorleyva eje 4_actividad1Victorleyva eje 4_actividad1
Victorleyva eje 4_actividad1
 
tecnologia trabajo en equipo.pdf
tecnologia trabajo en equipo.pdftecnologia trabajo en equipo.pdf
tecnologia trabajo en equipo.pdf
 
tecnologia trabajo en equipo.pdf
tecnologia trabajo en equipo.pdftecnologia trabajo en equipo.pdf
tecnologia trabajo en equipo.pdf
 
tecnologia trabajo en equipo.pdf
tecnologia trabajo en equipo.pdftecnologia trabajo en equipo.pdf
tecnologia trabajo en equipo.pdf
 
tecnologia trabajo en equipo.pdf
tecnologia trabajo en equipo.pdftecnologia trabajo en equipo.pdf
tecnologia trabajo en equipo.pdf
 
Capitulo i modelos_matematicos_y_errores,_parte_1[1]
Capitulo i modelos_matematicos_y_errores,_parte_1[1]Capitulo i modelos_matematicos_y_errores,_parte_1[1]
Capitulo i modelos_matematicos_y_errores,_parte_1[1]
 
Diagramas de-flujo.
Diagramas de-flujo.Diagramas de-flujo.
Diagramas de-flujo.
 
Logica computacional conceptos basicos
Logica computacional conceptos basicosLogica computacional conceptos basicos
Logica computacional conceptos basicos
 
Unidad 1, 2 y_3_algoritmos
Unidad 1, 2 y_3_algoritmosUnidad 1, 2 y_3_algoritmos
Unidad 1, 2 y_3_algoritmos
 
37 tarazona karen programacion
37 tarazona karen programacion37 tarazona karen programacion
37 tarazona karen programacion
 
algoritmos 7 4p.pptx
algoritmos 7 4p.pptxalgoritmos 7 4p.pptx
algoritmos 7 4p.pptx
 
informatica_iv_-_unidad_2._algoritmos.pptx
informatica_iv_-_unidad_2._algoritmos.pptxinformatica_iv_-_unidad_2._algoritmos.pptx
informatica_iv_-_unidad_2._algoritmos.pptx
 
informatica_iv_-_unidad_2._algoritmos.pptx
informatica_iv_-_unidad_2._algoritmos.pptxinformatica_iv_-_unidad_2._algoritmos.pptx
informatica_iv_-_unidad_2._algoritmos.pptx
 
Analisis maria virg
Analisis maria virgAnalisis maria virg
Analisis maria virg
 
Computacion de ing nahum
Computacion de ing nahumComputacion de ing nahum
Computacion de ing nahum
 
Programacion primero
Programacion primeroProgramacion primero
Programacion primero
 
Programacion primero
Programacion primeroProgramacion primero
Programacion primero
 

Plus de Robert Wolf

Tema 16 acceso a base de datos usando jpa por gio
Tema 16   acceso a base de datos usando jpa por gioTema 16   acceso a base de datos usando jpa por gio
Tema 16 acceso a base de datos usando jpa por gioRobert Wolf
 
Tema 15 aplicaciones de dos capas por gio
Tema 15   aplicaciones de dos capas por gioTema 15   aplicaciones de dos capas por gio
Tema 15 aplicaciones de dos capas por gioRobert Wolf
 
Tema 14 imágenes en java por gio
Tema 14   imágenes en java por gioTema 14   imágenes en java por gio
Tema 14 imágenes en java por gioRobert Wolf
 
Tema 13 gráficas en java por gio
Tema 13   gráficas en java por gioTema 13   gráficas en java por gio
Tema 13 gráficas en java por gioRobert Wolf
 
Tema 12 hilos en java por gio
Tema 12   hilos en java por gioTema 12   hilos en java por gio
Tema 12 hilos en java por gioRobert Wolf
 
Tema 11 expresiones regulares en java por gio
Tema 11   expresiones regulares en java por gioTema 11   expresiones regulares en java por gio
Tema 11 expresiones regulares en java por gioRobert Wolf
 
Tema 10 clase abstractas e interfaz
Tema 10 clase abstractas e interfazTema 10 clase abstractas e interfaz
Tema 10 clase abstractas e interfazRobert Wolf
 
Tema 10 entrada y salida por gio
Tema 10   entrada y salida por gioTema 10   entrada y salida por gio
Tema 10 entrada y salida por gioRobert Wolf
 
Tema 9 pruebas unitarias por gio
Tema 9   pruebas unitarias por gioTema 9   pruebas unitarias por gio
Tema 9 pruebas unitarias por gioRobert Wolf
 
Tema 9 aplicaciones de dos capas por gio
Tema 9   aplicaciones de dos capas por gioTema 9   aplicaciones de dos capas por gio
Tema 9 aplicaciones de dos capas por gioRobert Wolf
 
Tema 8 entrada y salida por gio
Tema 8   entrada y salida por gioTema 8   entrada y salida por gio
Tema 8 entrada y salida por gioRobert Wolf
 
Tema 8 desarrollo de aplicaciones en java por gio
Tema 8   desarrollo de aplicaciones en java por gioTema 8   desarrollo de aplicaciones en java por gio
Tema 8 desarrollo de aplicaciones en java por gioRobert Wolf
 
Tema 7 gui, swing y java beans por gio
Tema 7   gui, swing y java beans por gioTema 7   gui, swing y java beans por gio
Tema 7 gui, swing y java beans por gioRobert Wolf
 
Tema 7 desarrollo de aplicaciones en java - lsia por gio
Tema 7   desarrollo de aplicaciones en java - lsia por gioTema 7   desarrollo de aplicaciones en java - lsia por gio
Tema 7 desarrollo de aplicaciones en java - lsia por gioRobert Wolf
 
Tema 6 gui, swing y java beans por gio
Tema 6   gui, swing y java beans por gioTema 6   gui, swing y java beans por gio
Tema 6 gui, swing y java beans por gioRobert Wolf
 
Tema 6 colecciones por gio
Tema 6   colecciones por gioTema 6   colecciones por gio
Tema 6 colecciones por gioRobert Wolf
 
Tema 5 arreglos y cadenas - lsia por gio
Tema 5   arreglos y cadenas - lsia por gioTema 5   arreglos y cadenas - lsia por gio
Tema 5 arreglos y cadenas - lsia por gioRobert Wolf
 

Plus de Robert Wolf (20)

Tema6resumido
Tema6resumidoTema6resumido
Tema6resumido
 
Tema4 herencia
Tema4 herenciaTema4 herencia
Tema4 herencia
 
Tema 6
Tema 6Tema 6
Tema 6
 
Tema 16 acceso a base de datos usando jpa por gio
Tema 16   acceso a base de datos usando jpa por gioTema 16   acceso a base de datos usando jpa por gio
Tema 16 acceso a base de datos usando jpa por gio
 
Tema 15 aplicaciones de dos capas por gio
Tema 15   aplicaciones de dos capas por gioTema 15   aplicaciones de dos capas por gio
Tema 15 aplicaciones de dos capas por gio
 
Tema 14 imágenes en java por gio
Tema 14   imágenes en java por gioTema 14   imágenes en java por gio
Tema 14 imágenes en java por gio
 
Tema 13 gráficas en java por gio
Tema 13   gráficas en java por gioTema 13   gráficas en java por gio
Tema 13 gráficas en java por gio
 
Tema 12 hilos en java por gio
Tema 12   hilos en java por gioTema 12   hilos en java por gio
Tema 12 hilos en java por gio
 
Tema 11 expresiones regulares en java por gio
Tema 11   expresiones regulares en java por gioTema 11   expresiones regulares en java por gio
Tema 11 expresiones regulares en java por gio
 
Tema 10 clase abstractas e interfaz
Tema 10 clase abstractas e interfazTema 10 clase abstractas e interfaz
Tema 10 clase abstractas e interfaz
 
Tema 10 entrada y salida por gio
Tema 10   entrada y salida por gioTema 10   entrada y salida por gio
Tema 10 entrada y salida por gio
 
Tema 9 pruebas unitarias por gio
Tema 9   pruebas unitarias por gioTema 9   pruebas unitarias por gio
Tema 9 pruebas unitarias por gio
 
Tema 9 aplicaciones de dos capas por gio
Tema 9   aplicaciones de dos capas por gioTema 9   aplicaciones de dos capas por gio
Tema 9 aplicaciones de dos capas por gio
 
Tema 8 entrada y salida por gio
Tema 8   entrada y salida por gioTema 8   entrada y salida por gio
Tema 8 entrada y salida por gio
 
Tema 8 desarrollo de aplicaciones en java por gio
Tema 8   desarrollo de aplicaciones en java por gioTema 8   desarrollo de aplicaciones en java por gio
Tema 8 desarrollo de aplicaciones en java por gio
 
Tema 7 gui, swing y java beans por gio
Tema 7   gui, swing y java beans por gioTema 7   gui, swing y java beans por gio
Tema 7 gui, swing y java beans por gio
 
Tema 7 desarrollo de aplicaciones en java - lsia por gio
Tema 7   desarrollo de aplicaciones en java - lsia por gioTema 7   desarrollo de aplicaciones en java - lsia por gio
Tema 7 desarrollo de aplicaciones en java - lsia por gio
 
Tema 6 gui, swing y java beans por gio
Tema 6   gui, swing y java beans por gioTema 6   gui, swing y java beans por gio
Tema 6 gui, swing y java beans por gio
 
Tema 6 colecciones por gio
Tema 6   colecciones por gioTema 6   colecciones por gio
Tema 6 colecciones por gio
 
Tema 5 arreglos y cadenas - lsia por gio
Tema 5   arreglos y cadenas - lsia por gioTema 5   arreglos y cadenas - lsia por gio
Tema 5 arreglos y cadenas - lsia por gio
 

Practica2

  • 1. PROGRAMACI´ON (EUI). Curso 2001-2002 Pr´actica 2. RESOLUCI ´ON DE UNA ECUACI ´ON DE SEGUNDO GRADO F. Marqu´es y N. Prieto ´Indice General 1 Introducci´on. Algoritmos num´ericos 1 2 El problema 2 2.1 Soluci´on de la ecuaci´on . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 3 El programa 2 3.1 Estrategia de resoluci´on . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 3.2 Variables y tipos de datos . . . . . . . . . . . . . . . . . . . . . . . . . . 3 3.3 Impresi´on de resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 4 Introducci´on de los valores de los coeficientes 4 4.1 Argumentos de un programa . . . . . . . . . . . . . . . . . . . . . . . . 4 4.2 Argumentos num´ericos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1 Introducci´on. Algoritmos num´ericos Uno de los primeros usos de los computadores fue su utilizaci´on en la resoluci´on de problemas de ´ındole num´erica y estad´ıstica: tabulaci´on de funciones elementales, deter- minaci´on de tablas de trayectorias de proyectiles, resoluci´on de ecuaciones, etc. Los algoritmos basados en el uso de las operaciones aritm´eticas elementales se cono- cen con el nombre de algoritmos num´ericos. Estos juegan un papel importante en las matem´aticas debido a que muchas operaciones pueden reducirse a otras m´as elementales, habitualmente mediante un uso reiterado de las ´ultimas. Los algorimos num´ericos se dan usualmente en forma de instrucciones verbales o diversas clases de f´ormulas y esquemas. Algoritmos num´ericos sobradamente conocidos son los que permiten resolver una ecuaci´on de segundo grado, un sistema lineal de ecuaciones, o extraer una ra´ız cuadrada. La utilizaci´on de computadoras en la resoluci´on de problemas que implican este tipo de algoritmos permite ahorrar al hombre una gran cantidad de trabajo tedioso y rutinario. 1
  • 2. 2 EL PROBLEMA 2 En esta pr´actica se plantea el problema de calcular de forma general mediante un programa, la soluci´on o soluciones de una ecuaci´on de segundo grado de coeficientes reales cualesquiera. El m´etodo que se seguir´a consistir´a en la aplicaci´on, casi inmediata, de la conocida f´ormula de resoluci´on de ecuaciones de dicho tipo. 2 El problema Se desea resolver de forma general, la siguiente ecuaci´on de segundo grado: ax2 + bx + c = 0 donde, a, b y c, que son los coeficientes de la ecuaci´on, son n´umeros reales cualesquiera, y x, la variable, cuyo valor o valores se desea conocer, puede ser un n´umero real o complejo. 2.1 Soluci´on de la ecuaci´on La soluci´on de la ecuaci´on anterior depende de los valores de los coeficientes y, en funci´on de los mismos, cabe distinguir entre los siguientes casos: • si a, b y c valen simult´aneamente 0, entonces cualquier n´umero es soluci´on de la ecuaci´on • si a y b son simult´aneamente 0, pero c no lo es, la ecuaci´on es incorrecta • si a vale 0 y b es distinto de 0, entonces la ecuaci´on es de primer grado, y la soluci´on x es el n´umero real −c/b • si a es distinto de 0, entonces la soluci´on de la ecuaci´on se puede obtener siempre aplicando la f´ormula: x = −b ± √ b2 − 4ac 2a donde al valor (b2 − 4ac) se denomina discriminante. En dicho caso: – si el discriminante es 0 la soluci´on es ´unica y es un n´umero real, – si el discriminante es positivo las dos soluciones son n´umeros reales, – si el discriminante es negativo las dos soluciones son n´umeros complejos. 3 El programa Es necesario, para poder resolver el problema mediante un programa determinar tanto la estrategia, o pasos que seguir´a el mismo en la soluci´on del problema, como las carac- ter´ısticas de los datos que intervengan en el mismo. Todo ello para expresar mediante el lenguaje de programaci´on deseado la estructura del programa soluci´on, y las variables y tipos de los datos implicados.
  • 3. 3 EL PROGRAMA 3 3.1 Estrategia de resoluci´on Para resolver el problema, de forma general, mediante un programa, se puede seguir una estrategia como la siguiente: 1. Pedir inicialmente los valores de los coeficientes al usuario, 2. En funci´on de ellos decidir si la ecuaci´on: • Es incorrecta, • tiene un n´umero infinito de soluciones, • es una ecuaci´on de primer grado, con soluci´on real, o • es una ecuaci´on de segundo grado y: – el discriminante vale 0 y la ecuaci´on tiene una ´unica soluci´on real – el discriminante es positivo, y la ecuaci´on tiene soluciones reales, o – el discriminante es negativo y la ecuaci´on tiene soluciones complejas, 3. escribir en la salida la advertencia o soluci´on hallada seg´un corresponda. 3.2 Variables y tipos de datos Tanto los coeficientes, a, b y c, como otros posibles n´umeros, como el discriminante, son n´umeros reales, por lo que se mantendr´an a lo largo de la ejecuci´on mediante variables de dicho tipo, por ejemplo se pueden declarar como variables de tipo double. Como se ha visto, seg´un el tipo de ecuaci´on, algunas soluciones pueden ser n´umeros complejos. Sin embargo, en el lenguaje no existe el tipo de datos n´umero complejo de forma predefinida, por lo que se hace necesario representar dichos n´umeros de alguna forma alternativa. Se puede utilizar, por su sencillez, la forma cartesiana, en la que cada n´umero complejo se representa mediante un par de valores de tipo real (double), uno para la parte real, y otro para la imaginaria. De esta manera, si n es un n´umero real negativo cualquiera, entonces el valor complejo √ n, es equivalente a |n|i. Por ejemplo, el valor complejo √ −16, es equivalente a | − 16|i, esto es: 4i. 3.3 Impresi´on de resultados La impresi´on de los resultados debe realizarse siempre de forma que sea legible y no de lugar a ambig¨uedades. Para este programa, adem´as, deber´an tenerse en cuenta las siguientes consideraciones: • Si existe una ´unica soluci´on de la ecuaci´on, como por ejemplo cuando el discrimi- nante vale 0, ´esta no deber´a aparecer duplicada. • Cuando se escriba un n´umero complejo, deber´a quedar claramente diferenciada su parte real y su parte imaginaria, como por ejemplo: Soluciones: (3.2145 + 14.48i) (3.2145 - 14.48i)
  • 4. 4 INTRODUCCI ´ON DE LOS VALORES DE LOS COEFICIENTES 4 4 Introducci´on de los valores de los coeficientes Para la introducci´on de los coeficientes se utilizar´an dos m´etodos distintos. El primero de ellos, que no merece consideraci´on especial, ya que ya ha sido utilizado, consiste en hacer uso de las primitivas definidas en el paquete nsIO para la definici´on de ficheros de entrada/salida e introducci´on de datos. La segunda posibilidad, que se estudiar´a a continuaci´on, consiste en introducir los datos como argumentos del programa que se va a ejecutar. 4.1 Argumentos de un programa Al estudiar la estructura de un programa en el tema 2o, se ha visto que ´esta era de la forma: class NombrePrograma { public static void main (String args[]) { ... } } donde el m´etodo main indica el segmento de c´odigo que se ejecutar´a inicialmente. Dicho m´etodo tiene un argumento declarado: String args[], que hace referencia a un grupo de variables enumeradas (un array en t´erminos del Java) de tipo String. Cuando el usuario ejecuta el programa NombrePrograma, puede hacerlo utilizando argumentos, como se hace en el siguiente ejemplo en el que se utilizan tres argumentos, uno de ellos el n´umero 37: java NombrePrograma ejem1 37 ejem3 Cuando el programa NombrePrograma se ejecuta puede hacer referencia a los ar- gumentos con los que arranca, mediante las variables: args[0], cadena de caracteres (String) de valor ”ejem1”; args[1], cadena de caracteres (String) de valor ”37” y args[2], cadena de caracteres (String) de valor ”ejem3” N´otese que los argumentos: • pueden ser tantos como se desee, • se separan entre si por espacios en blanco, y • son todos de tipo String 4.2 Argumentos num´ericos Si se desea hacer uso de argumentos num´ericos, entonces es necesario transformar a n´umero la String con que se reconocen dentro del programa los argumentos con que se inicia el mismo.
  • 5. 4 INTRODUCCI ´ON DE LOS VALORES DE LOS COEFICIENTES 5 Para hacer esto posible, el lenguaje Java hace uso de unos tipos de datos num´ericos especiales, denominados tipos de envoltura, que se estudiar´an m´as adelante, y que tienen operaciones espec´ıficas para realizar dicho tipo de transformaciones. Los tipos Int y Double son, por ejemplo, tipos de envoltura de los tipos int y double, respectivamente. El siguiente ejemplo, donde se desea introducir un valor entero y otro real en la linea de comando del programa, muestra c´omo puede realizarse todo esto en Java. Para ello se leen dos argumentos num´ericos como String, almacenadas en argv[0] y argv[1], y a continuaci´on se transforman, respectivamente, en variables de tipo int y double, escribi´endose dichos n´umeros seguidamente: class ejem2 { static public void main(String argv[]) { int i = new Integer(argv[0]).intValue(); double d = new Double(argv[1]).doubleValue(); System.out.println("El primer numero es: " + i); System.out.println("El segundo numero es: " + d); } } /* fin de ejem2 */ Donde los m´etodos Integer() y Double(), permiten construir objetos de dicho tipo, (Integer y Double), a partir de valores de tipo String, y los m´etodos intValue() y doubleValue() devuelven, respectivamente, un valor elemental de tipo int y double. As´ı, con ello, es posible efectuar una llamada inicial al programa como la siguiente: java ejem2 12 123.678 Es importante se˜nalar que se producir´a un error de ejecuci´on (una excepci´on) en el caso de que alguno de los argumentos no tenga las caracter´ısticas previstas, o si faltara alguno de ellos. Pru´ebese, por ejemplo, a introducir un caracter donde se prevee un n´umero.