SlideShare una empresa de Scribd logo
1 de 26
Nota : array es sinonimo de vector o arreglo. Y con arrays de una dimensión
Un array es un grupo de datos del mismo tipos alamacdnados en la misma porción de memoria en
forma contigua, tienen un mismo nombre y una el array tiene una longitud
Se ua para almacenar muchos datos del mismo tipo.
La metodología para solucionar problemas usando la programación orientada a Objetos consiste en
su esquema mas general en :
Se parte de un problema y usando la inteligencia, la imaginación, se empieza a crear un MODELO
que permita convertir el problema en un programa de computador que soluciona el problema.
El proceso de pensar y hacer modelos se denomina ABSTRACCION eso sucede en nuestra mente
y tratamos de escribirlo en le papel.
Nota a pesar de lo largo del ejemplo vale la pena leerlo y hacerlo despacio analizando cada aso.
Los pasos del método son
Paso 1: Realizar Análisis. Establecer requerimientos.
Paso 2: Hacer un Modelo del problema Diagrama de clase.
Paso 3: Hacer un programa de Prueba (principal, main)
Paso 4: Hacer el modelo del problema . Generar los Algorimtos
Paso 5: Codificar Hacer el Programa en Java
Paso 6: Probar Paso a paso cada Algoritmo y ajustar
Uso de las pruebas de Escritorio
El proceso es Iterativo y en cada paso se puede devolver al anterior , o dos o tres pasos antes y
hacer ajustes. Incuso dede el paso 6 se debe incuir mejoras , cambios a los algirtimos por ejemplo,
o adicionar otro método al Diagrama de Clase.
Se ilustra el método con un ejemplo
Elaborar un programa que permita manejar Arrays de enteros y que permita realizar todas estas
operaciones en el Objeto Creado:
1 ) Crear el Objeto (constructor)
2 ) meter (adicionar) nuevos enteros
3) buscar un entero x y decir su posición
4) eliminar un entero del array
5) Modificar un dato en una posición dada
6) contar cuantas veces se repite un numero x
7) ordenar los datos ascendentemente
8) ordenar los datos descendentemente
9) hallar el mayor
10) hallar el menor
11) calcular el promedio
12) hallar el numero que mas se repite
suponiendo que solo hay uno que se repite mas.
13) desordenar (aleatoriamente)
14) imprimir los datos
15) invertir los datos
16) determinar cuantos son primos
Se usara el métodopropuesto
Se debe crear un programa (una clase ) que permita almacenar varios enteros, pueden ser 5 o 6
o 20 o miles.
Y se debe poder hacer todas las operaciones que se piden sobre los datos
Cuantos elementos se podrán almacenar ¿
Supongamos que el MAXIMO es 5000 pero que se pueden trabajar de 1 a 5000 con la solución que
se genere
Cada uno de las operaciones que se piden es un requerimiento por tanto el problema tiene cerca de
16 requerimientos
Hagamos dos o tres y usted debe hacer los demás como practica
R02 Adicionar nuevos enteros
Descripción
Se deben incluir o adicionar nuevos elementos. Por ejemplo un entero x
Si se tenían n elementos al adicionar uno mas se tendrán n+1
Entrada
El vector o array con n elementos
Resultado
El vector o array con n+1 elementos (el entero x estará de ulitmo)
R06 Contar repeticiones de un entero x
Descripción
Se debe contar cuantas veces se encuentra repetido el numero entero x
Entrada
El vector o array con n elementos y el entero x (que se desea busca y contar)
Resultado
Un entero resultado (con el total de veces que se repite el numero x)
R11 Calcular el promedio
Descripción
Se debe calcular el promedio de todos los números del array
La forma de calcularlo es
Se suman todos los enteros y se divide el total por n (la cantidad de datos en el array)
Entrada
El vector o array con n elementos
Resultado
Un real resultado ( con le promedio)
R12 Encontrar el numero que mas se repite
Descripción
Se debe mirar/buscar/ descubrir una forma de calcular cual es el numeor entero que mas se
repite (se supone que solo hay uno que es el que mas se repite)
Entrada
El vector o array con n elementos
Resultado
Entero r ( r será el numero que mas se repite)
R16 Calcular cuantos números son primos
Descripción
Se debe mirar cada uno de los números del array y determinar si es primo e ir contando los que
sean primos
Entrada
El vector o array con n elementos
Resultado
Un numero entero r (r es la cantidad de números primos)
Observe que solo se hicieron unos cuantos requerimientos .
Haga los otros usted (no haga el R01 esto de hacer constructores es algo que todo objeto o
programa que se cree debe tener , por tanto se enseñara a crearlos y simplemente siempre haga
los constructores de su objeto es parte de la Programacion orientada a Objetos POO
MiVector
- Constante int MAXIMO=5000
- int n
- int []
-
MiVector()
MiVector(int nro)
Adicionar(int x)
int buscarP(int x)
boolean eliminar(int x)
boolean modificar (int p, int x)
int contarepeticiones(int x)
ordenarAsc()
ordenarDesc()
int mayor()
int menor()
double promedio()
int hallarMasrepetido()
desordenar()
imprimir()
invertir()
int contarPrimos()
String toString()
El constructor
Retorna -1 si no lo
encuentra y la posición si lo
encuentra
True si lo elimina false si
no lo elimina
Reemplaza el dato de la
posición p por x.
Aquí se trata de :
ASUMIR que ya se hizo el programa, ya se soluciono el problema, ya existe la clase, se pueden
crear objetos y hacer un programa principal
public static void main(String [] args){
MiVector miv= new MiVector(); // Se crea
miv.poblar(); // se llena aleatoriamente con 20 o 30 numeros enteros
// este método falta se puede incluir en el diagrama de clase
miv.adicionar(14); // se incluye el 14
miv.adicionar(28); // se incluye el 28
miv.adicionar(6); // se incluye el 6
miv.eliminar(28); // se elimina el 28
miv.imprimir(); // se imprimen los datos
miv.ordenarAcs(); // se orden asendentemente
miv.imprimir(); // se imprimen los datos
miv.desOrdenar(); / se desordenan
System.out.prinln(“EL MAS REPETIDO ES “ +miv. hallarMasrepetido());
}
Hasta aquí que se ha logrado:
Se ha analizado el problema y se tiene comrendido lo que se esta pidiendo
Que haga (de que se trata el problema)
Siendo mas exactos también se ha avanzado un poco en la solucion
Se trata aquí de mirar cada método del Objeto (la clase) y determinar cuales son fáciles
Un método faciil es aquel que sin necesidad de hacerlo yo puedo iamaginarme el código en mi
mente, son pocas líneas, y además es claro
Pero si no logro “ver” el algoritmo es mejor hacerlo aquí.
Para iluatrar que se debe ir haciendo y probando paso a paso
Se creara la clase , se hara el método poblar() y se imprimirá
Para ello se requiere
El constructor MiVector()
poblar()
String toString()
E imprimir()
public class MiVector {
public static final int MAXIMO=5000;
private int n;
private int datos[];
public MiVector() {
datos = new int[MAXIMO];
n=(int)(Math.random()*20)+10;
System.out.println(n);
}
public MiVector(int nro) {
datos = new int[MAXIMO];
n=nro;
}
public void poblar(){
for (int i = 0; i < n; i++) {
datos[i]= (int)(Math.random()*20)+10;
}
}
OBSERVEQUE HAY DOS
CONSTRUCTORES
UNO Que establece el
numerode datosen forma
aleatoria
EL OTRO:recibe el numero
de datos comoun parametro
public String toString(){
String r="";
r= " numero de datos n: " + n +"n";
for (int i = 0; i < n; i++) {
r= r+ datos[i]+ ", ";
}
return r;
}
public void imprimir(){
System.out.println(this.toString());
}
public static void main(String [] args){
MiVector miv= new MiVector(); // Se crea
miv.poblar(); // se llena aleatoriamente con 20 o 30 numeros enteros
// este método falta se puede incluir en el diagrama de clase
miv.imprimir(); // se imprimen los datos
}
}
Observe bien
Las propiedades incluyendo la constante esta en amarillo
Los constructores (hay dos ) están en verde
Y los métodos incluyendo el main (de prueba) esta en verde
Correr este programa podría mostrar esto
Algunos algoritmos son fáciles y se usa herramientas o esquemas fáciles para hacerlos otros son
mas compilciados y usaremos el método de los refinamientos sucesivos para hacerlos
Por ejemplo
Adicionar() es facil
Siempre se quiere que el numero adicionado quede de ultimo
public void adicionar (int x){
datos[ n ]=x;
n++;
}
Se incluye en la clase (programa)
Y se prueba en el main
Adicionando el 14, el 28 y el 6
Se ejecuta
Y puede dar esto
Observe que los últimos son 14,28 y 6
Y asi se van haciendo cada uno de los métodos y se va probando PASO A PASO
Con disciplina.
Eso es lo se quiere decir en el Paso 6
Y allí continuaremos poco a poco haciendo cada Metodo y probando Paso a Paso
EL METODO SIGUIENTE de laclase PARA HACERY PROBARes
correspondienteal requerimientoR03
para buscar un enterodadox
se tiene encuentaque
si no se encuentrase dara un -1
si se encuentrase retornarala posicióndonde se encontró
asumiendoque noesFacil esdecirque no se “VE” el códigoo el algoritmo
utilizaremosdoselementosparahacerlo
el diagramade Entrada ProcesoSalida y
refinamientossucesivos
el métodoes
int buscarP(int x) Revise el requerimiento bien
No se colocaque entrael Array porque se dispone de el al seruna propiedaddel Objeto
SI SE LOGRA HACER ESTE DIAGRAMA definiendomuybienlaentrada,definiendomuy bienel
resultado(r) y colocandolaideade recorrery comparar EL METODO YA ESTA CASI RESUELTO
SI LA IDEA NO SE OCURRE ES DECIR NO TENEMOS IDEA DE QUE COLOCARALLI
INTENTE RESOLVERVARIOSEJEMPLOSA MANO Y MUY DESPACIOY HAGA TANTOSCOMO
REQUIERA HASTA QUE SURJA ALGUNA IDEA.
Esa ideaeslo que llamamosel PRIMERREFINAMIENTOo REFINAMIENTO# 1
LOS REFINEMIENTOS SE PUEDEN HACER EN PAPEL y se van descartandoenlamedidaque se
van haciendocadave mejoresymas detallados
Ahoraextractemos del DiagramaEPSel refinamientonumero2
REFINAMIENTO# 2
intbuscar( intx)
Inicio
Enteror=-1
Recorra todosloselementosdel arraydatosde 1 en1
Si uno de losdatos esigual
Coloque r= la posiciondel numero
Y salgase del recorrido
Retorne r
FIN
REFINAMIENTO# 3
intbuscarP( intx)
Inicio
enteror=-1
Para i de 0 a n-1 haga
Si datos [ i ] = X
r= i
salgase del ciclo
finsi
finpara
retorne r
FIN
USO DE LA PRUEBA DE ESCRITORIO
El objetivoesprobarel algoritmoantesde codificarparaversi funcionayno perdertiempo
cuandose haga el programa
Supongamoslossiguientesdatos
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Uy Y sigamosel aglritmosinsturccionporintrucccion yse vancolocandolosvaloresenla tabla
de abajo
Supongamoigualmente que el valorabuscarX es igual a 23 ( n vale 16)
Y se entraal ciclo i vale 0 al iniciarel ciclo n = 16 r = -1
Se comapra datos[ 0 ] con 23 y no esigual , y nose hace nada y se sigue avanzando
Y se repite cni = 1 i=2 yasi sucesivamente hastallegar 9
X i r n
23 0 -1 16
1
2
3
4
5
6
7
8
9
Cuandose llegaa nueve se compara25 con 23 y no sonigualesse pasai a 10
10
Y se compara 23 (el datode laposición10 ) con X (=23 ) y si soniguales se coloca r=i
9 10
Y se sale del ciclo
Y retorna r que vale 10 (la posicion) SIFUNCIONA!!
Conviertiendoel métodoajavaquedaasi:
REFINAMIENTO# 3
intbuscarP( intx)
Inicio
enteror=-1
Para i de 0 a n-1 haga
Si datos [ i ] = X
r= i
salgase del ciclo
finsi
finpara
retorne r
FIN
Y EN JAVA SERIA
intbuscarP( intx)
{
iInt enteror=-1;
for (inti=0;i<n;i++){
if (datos[ i ] == x){
r= i;
break;
}
}
returnr;
}
Revise biencadalíneadel algoritmo(refinamiento#3) y del métodoenjava
Son casi iguales.
Entoncesque sonlos refinamientos sucesivos?
Se modificael mainpara probar
Esta podría ser lasalida
una vezresueltoeste intbuscar(intx) que retorna unint(con laposición) podemos
Hacer este que retornatrue si estay false si noesta
publicbooleanbuscar(intx){
return(buscarP(x)>=0);
}
y pasamosal métodosiguiente
correspondiente al requerimientoR05 el de eliminar R04 esmas difícil y losdifícilesse van
dejandoparalo ultimo.
Es muy fácil
publicbooleanmodificar(intpos,intx){
si se excede laposiciónde losdatosque hay(n)
nose puede (false)
encaso contrario
locambia y retornatrue
}
publicbooleanmodificar(intpos,intx){
if(pos>=n)
returnfalse;
datos[pos]=x;
returntrue;
}
Se incluye enel maini se prueba
Y se continua con losdemásmétodosde laclase
Los demásmétodosse puedenresolverconlaInformacion que se da aquí y las instrucciones
Los demásmétodosse dejancomoejerciciosytallereshágalosyestaráenlavia de aprendera
programar , solucione otrosproblemasusandoel método propuesto yestaráenla viade la
soluciónde problemasconel computadoryaprendiendorealmente aprogramar
peromerecenunaespecial atenciónlosmétodos:
int contarPrimos()
y
int hallarMasrepetido()
estosdosmétodosilustranotrasmas recomendacionesparageneraralgorimtos
especialmentelostips YLAS TECNICAS
Los refinamientossucesivosparageneraralgorimtosyprogramas(métodos)
evaluarvariasideasyelegiruna( la mas practica,fácil,agil?)
el métodoes
intcontarPrimos
inicio
enterocontador=0
retorne contador
fin
Se mete enel mainlas instruccionesparaprobar
NO SE REQUIERE
DE MUCHO CONOCIMIENTONI
MUCHA EXPERIENCIA
PARA ESTABLECER QUE EL METODO
DEBE SER ASIY DEBE TENER UN
CONTADOR DONDE CONTARA OS
PRIMOS Y LO RETORNARA
Refinamiento #1
REFINAMIENTO# 2
intcontarPrimos
inicio
enterocontador=0
se recorrerántodoslosdatosdel array y
se ira mirandosi cada uno esprimo
loesse cuenta
finde la parte que hace el recorrido
retorne contador
fin
REFINAMIENTO# 3
intcontarPrimos
inicio
enterocontador=0
para de i de 0 a n-1 haga
si el datos[i] esunnumeroprimo
cuente (contador++)
finsi
retorne contador
fin
REFINAMIENTO# 4 Y EN JAVA
intcontarPrimos
inicio
enterocontador=0
para de i de 0 a n-1 haga
si esPrimo( datos [ i ] )
publicintcontarPrimos(){
intcontador=0;
for (inti = 0; i < n; i++) {
if (esPrimo(datos[i] ) ) {
contador++;
Es obvioque para sabercuales
son primosse debenmirar
todos
Comose hace un reccorido
de un arrya con varios
datos?
Con unfor
contador ++
finsi
retorne contador
fin
}
}
returncontador;
}
Obviamente la función(método) esPrimo (…) no se ha hecho
Para versi un numeroXesprimo booleanesPrimo(int nro)
Se debe mirarsi tiene algúnnumeroque lodividaque noseani 1 ni el mismo(X)
REFINAMIENTO·#1 y EN JAVA
booleanesPrimo(intnro) {
booleanr=true;
se mirasi hay numeroentre 2 y n-1
que dividael numeroX
si lohay coloque r=false;
y retorne (salgase yretorne false)
}
}
Retorne r;
}
publicbooleanesPrimo(intnro) {
boolean r=true;
for (inti = 2; i < nro;i++) {
if(nro%i==0){
r=false;
break;
}
}
returnr;
}
Se incluyenlosdosmétodosenel programa(clase MiVector)
OBSERVEY RESPONDA
De que depende el numerode repeticiones?
Siguiendo…Se mete enel mainlasinstruccionesparaprobar
Y la salidapuede seresta
El otro métodonoestan fácil y esun ejmploparapensarun poco
La preguntaescomoobtenerle numeroque masse repite??
Pensemosenalgunaidea
que entra
en teoríalos datosdel arrya (nohay que colocarloscomoentrada) son el objeto
y se puedenusarentodoslos métodos
cual esel resutlado? Un enterocouyo valores el del numeromasrepetido
se supone solohayuno.
E P S
IDEA enteror
INICIO
?
FIN
Algunaidea??
Imeginemosunarray (arreglo ) asi n=28
O quizasunomas grande con 500 numerosenteros
Comohace para determinarel numeroque masse repite sinequivocarnos?
Comopodemosverse podría aprovechary observarhastaque finalemente despuésde un
largorato descubramosel 43 o el 48 que estándos vecesnohayotro que se repitatresveces
?
En este ejemplohaydosque se erpitendosvecesperoen nuestroproblemasuponemoque
solohay unoque se repte mas veces
Perocomo lograraveriguarlo? De que forma? Cualmseriael método?
Nuevamentecual eslaidea?
E P S
IDEA enteror
INICIO
?
FIN
Generemos
Por ejemplo que tal esta
Si los ordenamosde menoramayor?
Entoncesquedaríantodoslosigualesjuntosyseriamuy fácil establecerel que masse repite.
Y si son tresmillonesde números.Se ordenanperosonmuchosy visualmenteyonose
podrán“ESTABLECER” losrepetidos (visualemente)
Entoncescomo hacer?s vamo
Que tal nos vamoscontandodesde el primeroycada que el valorcambie dejamosde contary
si la cuentaes mayorque una que ya traimos, nos quedamosconestaultima(el numero,yla
cuenta) y si hasta al final .
Por ejemploeneste
6 11 11 12 13 14 14 14 14 14 19 20 23 24 28 28
Contamos 6 1
11 2 nos quedamoscon11 y 2
12 1
13 1
14 5 nos quedamoscon14 y con 5
19 1
20 1
23 1
24 1
28 2
La respuestaes14 (porque se repite 5veces) esel masrepetido
Aquí ya tenemosunaidea. LlamemoslaOrdenarYcontar
Peroque tal estaotra idea
Que tal si tomamosel primeroel 6 y contamoscuantasvecesesta
Y colocamoseste dato enotro vector asi y lomarcamos
11 23 20 28 12 14 14 13 14 14 19 11 24 14 28 6
marcas
x x x x x x x x
nrosUsados
11 23 20 28 12 14 13
totales
1 1 1 2 1 5 1
0 1 2 3 4 5 6 7 …
Y asi hasta contarlostodossincontar dos veceslosque yaestánmarcados
Y luegohalamosel mayorde array totalesyel que este enla posiciónde ese mayorese es.
Por ejemplo el mayor 5 corresponde ala poicion5 entotal y el numeroque estaenesa
posiciónennrosUsadosesel 14 ese esel numeromasrepetido
Escogemoslaopción1 de ordenar yContar por parecermas simple
No tiene que crearotrosarryas ni marcar ni nada asi que esmas simple
Ya tenemosunaidea
E P S
IDEA enteror
INICIO
Se ordenaenforma ascendente
Se recorre de 0 a n-1 losdatos
Se va contado
Si el numeroque se estaprocesandoes
Igual al anteriorse cuenta
Sino
Hay rompimiento
Se mirasi el contadorde repeticiones
Es mayorque el ultimoque se guardo
Si loes se guarda este contadory el numero
De todasformaspor haberrompimiento
De cambiael contador en1 y
El dato a procesaro a contar
FIN
REFINAMIENTO#2
Entero hallarMasrepetido()
INICIO
Enteror= 0
Ordene losnumerosascendentemente
Declare lasvariablespara contrloar
Una para el contador
Otra para el contador mayor
Una para llevarel datoque se estacontando
para i de 0 a n-1 )
si ( si se trara del mismonumero)
cuente
sino //hayrompimiento
mire si debe guardarel contador porque esmayor
inicialice todoel contador
y el dato a contar
finsi
finpara
r= el dato del contadorcon el valormas alto
retorne r
FIN
REFINAMIENTO#3
Entero hallarMasrepetido()
INICIO
Enteror= 0
ordenar()
EnterodatoEmproceso=datos[0]
EnterodatoMayor=datos[0]
Enterocontador=0
EnterocontadorMayor=0
para i de 0 a n-1 )
si (datos[i]==datoEmproceso)
contador++
sino //hayrompimiento
si (contador>contadorMayor){
contadorMayor=contador
datoMayor=datoEmproceso
finsi
datoEmproceso=datos[i]
contador=1
finsi
finpara
r= datoMayor;
retorne r;
FIN
EL programafinal enjavaquedaasi
publicinthallarMasrepetido(){
int r= 0;
ordenar();
int datoEmproceso=datos[0];
int datoMayor=datos[0];
int contador=0;
int contadorMayor=0;
for (inti = 0; i < n; i++) {
if(datos[i]==datoEmproceso){
contador++;
}
else{ //hayrompimiento
if(contador>contadorMayor){
contadorMayor=contador;
datoMayor=datoEmproceso;
}
datoEmproceso=datos[i];
contador=1;
}
}
r= datoMayor;
returnr;
}
El métodoordenaresmuysimple aprovechanalgunasopcionesyaconstruidasenjava
publicvoidordenar(){
java.util.Arrays.sort(datos,0,n);
}
Este métodopermite ordenarunarray.
Se incluye enlaclase y se prueba
Buenoesoestodo losdemásmétodosse dejanal lectorcomoejerciciosde comohacer
métodos(apliqueloindicadoeneste Articulo)
https://es.wikipedia.org/wiki/Resoluci%C3%B3n_de_problemas_de_programaci%C3%B3n
Este sitioeninternetle muestrayexplicael usode lasestructurasalgorítmicasusadaspara
construiry generarlosalgoritmos :condicionales,ciclos,
https://1buenanuevas.wordpress.com/2011/08/28/3-estructuras-condicionales-if-for-while-
do-while-switch/
http://es.slideshare.net/diegoandresalvarez/04-sentenciasdecontrolcondicionalesyciclos
Estos explicalasinstruccionesenjavacomo se escribensintaxisyejemplosde uso
http://www.ticbeat.com/tecnologias/mejores-metodos-intensivos-para-ser-programador-
profesion-auge/
Se justificaporque aprenderaprogramar enforma rápida.Y como laspersonaspuedenpagar
hasta 12.200 dólarespara aprenderaprogramar El métodoeneste artículo enseñaa
solucionarproblemasygenerarsolucionescon programación
Cómoprogramar enJava, novenaedición. Paul Deitel,harveyDeitel
http://www.fiuxy.net/ti-programacion-webmasters/4191894-como-programar-en-java-deitel-
7-y-9-edicion-pdf.html
se recomiendanestosdoscapítulos
http://www.ehu.eus/~ljrf/AED/2010/practicas/lenguaje_C/StepwiseRefinement_Wirth.pdf
este articuloclásicode withNilausde 1971 explicalatécnicade los refiamientossucsivos
para generar/construri algorimtosesexcelente .Ydefinitivamente lamejordescipcionde
como hacemosalgoritmosennuestramente cuandohacemosprogramas
videosútiles
presentranotrametodologíade soluciónde problemas peropuedenserútilesparaentender
condicionales,ciclosetc..conventanas
https://www.youtube.com/watch?v=X9iOu0-d27A introducciónaalgorimtos
https://www.youtube.com/watch?v=BSQfVoAsd2g estructurassecuenciales
https://www.youtube.com/watch?v=7wgkkWW9LAY condicional simple
https://www.youtube.com/watch?v=nCTysXv-GW0 condicional anidado
https://www.youtube.com/watch?v=siv01IaWPsE el switch
https://www.youtube.com/watch?v=BP9S6Qk4-lc ventanasJFrame
https://www.youtube.com/watch?v=jt2MmPIsJqA ventanasybotonesformularios
https://www.youtube.com/channel/UCVetOa0HbUA9b7OImC-3I5A todoslosvideosuno a
uno
http://www.incanatoit.com/ el códigofuente de losvideos
Por ultimountutorial paraempearde lo masbásico
http://es.slideshare.net/blablalba/fundamentos-de-programacion-en-java-51445745
y este que estaleyendolopuededescargarde

Más contenido relacionado

La actualidad más candente

Unidad 2. modelo entidad relacion
Unidad 2. modelo entidad relacionUnidad 2. modelo entidad relacion
Unidad 2. modelo entidad relacionLuiS YmAY
 
Arquitectura 3 Capas
Arquitectura 3 CapasArquitectura 3 Capas
Arquitectura 3 CapasFani Calle
 
Alfabetos-Lenguajes y Automatas 1
Alfabetos-Lenguajes y Automatas 1Alfabetos-Lenguajes y Automatas 1
Alfabetos-Lenguajes y Automatas 1Osiris Mirerus
 
Bucles de Control Repetitivo Ciclos For
Bucles de Control Repetitivo  Ciclos ForBucles de Control Repetitivo  Ciclos For
Bucles de Control Repetitivo Ciclos ForRichard Robalino
 
Exposicion Busqueda
Exposicion BusquedaExposicion Busqueda
Exposicion BusquedaAngie Suarez
 
Clase4: Transformación desde Expresión regular a Autómata finito determinista
Clase4: Transformación desde Expresión regular a Autómata finito deterministaClase4: Transformación desde Expresión regular a Autómata finito determinista
Clase4: Transformación desde Expresión regular a Autómata finito deterministamvagila
 
Programación 3: clases derivadas y polimorfismo
Programación 3: clases derivadas y polimorfismoProgramación 3: clases derivadas y polimorfismo
Programación 3: clases derivadas y polimorfismoAngel Vázquez Patiño
 
Algebra Relacional
Algebra RelacionalAlgebra Relacional
Algebra RelacionalBlanca Parra
 
Algebra relacional fundamentos de base de datos
Algebra relacional fundamentos de base de datosAlgebra relacional fundamentos de base de datos
Algebra relacional fundamentos de base de datosJosepSalvadorSotoObregon
 
Programación MySQL-Ejercicios
Programación MySQL-EjerciciosProgramación MySQL-Ejercicios
Programación MySQL-Ejerciciostestgrupocomex
 
Modelado Orientado a Objetos
Modelado Orientado a ObjetosModelado Orientado a Objetos
Modelado Orientado a ObjetosRafael Miranda
 
Ejercicio sql tienda informatica (1)
Ejercicio sql tienda informatica (1)Ejercicio sql tienda informatica (1)
Ejercicio sql tienda informatica (1)Jsrfs Montemayor
 

La actualidad más candente (20)

Ejercicio parciall 2
Ejercicio parciall 2Ejercicio parciall 2
Ejercicio parciall 2
 
Unidad 2. modelo entidad relacion
Unidad 2. modelo entidad relacionUnidad 2. modelo entidad relacion
Unidad 2. modelo entidad relacion
 
Arquitectura 3 Capas
Arquitectura 3 CapasArquitectura 3 Capas
Arquitectura 3 Capas
 
Manejo de memoria
Manejo de memoriaManejo de memoria
Manejo de memoria
 
22 ejercicios base de datos
22 ejercicios base de datos 22 ejercicios base de datos
22 ejercicios base de datos
 
Modelo entidad
Modelo entidadModelo entidad
Modelo entidad
 
Alfabetos-Lenguajes y Automatas 1
Alfabetos-Lenguajes y Automatas 1Alfabetos-Lenguajes y Automatas 1
Alfabetos-Lenguajes y Automatas 1
 
Bucles de Control Repetitivo Ciclos For
Bucles de Control Repetitivo  Ciclos ForBucles de Control Repetitivo  Ciclos For
Bucles de Control Repetitivo Ciclos For
 
Modelo entidad relacion
Modelo entidad relacionModelo entidad relacion
Modelo entidad relacion
 
Exposicion Busqueda
Exposicion BusquedaExposicion Busqueda
Exposicion Busqueda
 
Ordenamiento por insercion
Ordenamiento por insercionOrdenamiento por insercion
Ordenamiento por insercion
 
Clase4: Transformación desde Expresión regular a Autómata finito determinista
Clase4: Transformación desde Expresión regular a Autómata finito deterministaClase4: Transformación desde Expresión regular a Autómata finito determinista
Clase4: Transformación desde Expresión regular a Autómata finito determinista
 
Listas doblemente enlazadas
Listas doblemente enlazadasListas doblemente enlazadas
Listas doblemente enlazadas
 
Programación 3: clases derivadas y polimorfismo
Programación 3: clases derivadas y polimorfismoProgramación 3: clases derivadas y polimorfismo
Programación 3: clases derivadas y polimorfismo
 
Unidad 2: Clases y objetos Ejercicio 3
Unidad 2: Clases y objetos Ejercicio 3Unidad 2: Clases y objetos Ejercicio 3
Unidad 2: Clases y objetos Ejercicio 3
 
Algebra Relacional
Algebra RelacionalAlgebra Relacional
Algebra Relacional
 
Algebra relacional fundamentos de base de datos
Algebra relacional fundamentos de base de datosAlgebra relacional fundamentos de base de datos
Algebra relacional fundamentos de base de datos
 
Programación MySQL-Ejercicios
Programación MySQL-EjerciciosProgramación MySQL-Ejercicios
Programación MySQL-Ejercicios
 
Modelado Orientado a Objetos
Modelado Orientado a ObjetosModelado Orientado a Objetos
Modelado Orientado a Objetos
 
Ejercicio sql tienda informatica (1)
Ejercicio sql tienda informatica (1)Ejercicio sql tienda informatica (1)
Ejercicio sql tienda informatica (1)
 

Destacado

Tutorial JPA Parte 1 : CRUD BASICO CON JPA Y SWING en NETBEANS
Tutorial  JPA Parte 1  : CRUD BASICO CON JPA Y SWING en NETBEANSTutorial  JPA Parte 1  : CRUD BASICO CON JPA Y SWING en NETBEANS
Tutorial JPA Parte 1 : CRUD BASICO CON JPA Y SWING en NETBEANSWilliam Diaz S
 
Tutorial de jpa para windows usando net beans y mysql parte 1
Tutorial de jpa para windows usando net beans y mysql parte 1Tutorial de jpa para windows usando net beans y mysql parte 1
Tutorial de jpa para windows usando net beans y mysql parte 1Henry Mendoza Puerta
 
Reportes con crystal reports en asp.net
Reportes con crystal reports en asp.netReportes con crystal reports en asp.net
Reportes con crystal reports en asp.netHenry Mendoza Puerta
 
Java Persistence Api (Jpa)
Java Persistence Api (Jpa)Java Persistence Api (Jpa)
Java Persistence Api (Jpa)Ronald Cuello
 
Cómo descargar presentaciones desde SlideShare
Cómo descargar presentaciones desde SlideShareCómo descargar presentaciones desde SlideShare
Cómo descargar presentaciones desde SlideSharePedro Bermudez Talavera
 

Destacado (11)

JPA en Netbeans
JPA en NetbeansJPA en Netbeans
JPA en Netbeans
 
Tutorial JPA Parte 1 : CRUD BASICO CON JPA Y SWING en NETBEANS
Tutorial  JPA Parte 1  : CRUD BASICO CON JPA Y SWING en NETBEANSTutorial  JPA Parte 1  : CRUD BASICO CON JPA Y SWING en NETBEANS
Tutorial JPA Parte 1 : CRUD BASICO CON JPA Y SWING en NETBEANS
 
Conexion del jpa con mysql
Conexion del jpa con mysqlConexion del jpa con mysql
Conexion del jpa con mysql
 
Tutorial de jpa para windows usando net beans y mysql parte 1
Tutorial de jpa para windows usando net beans y mysql parte 1Tutorial de jpa para windows usando net beans y mysql parte 1
Tutorial de jpa para windows usando net beans y mysql parte 1
 
Reportes con crystal reports en asp.net
Reportes con crystal reports en asp.netReportes con crystal reports en asp.net
Reportes con crystal reports en asp.net
 
Bases de datos nosql
Bases de datos nosqlBases de datos nosql
Bases de datos nosql
 
Componentes en-poo
Componentes en-pooComponentes en-poo
Componentes en-poo
 
Java Persistence Api (Jpa)
Java Persistence Api (Jpa)Java Persistence Api (Jpa)
Java Persistence Api (Jpa)
 
Programacion Orientada a Objetos
Programacion Orientada a ObjetosProgramacion Orientada a Objetos
Programacion Orientada a Objetos
 
Servicio web soap en java con net beans
Servicio web soap en java con net beansServicio web soap en java con net beans
Servicio web soap en java con net beans
 
Cómo descargar presentaciones desde SlideShare
Cómo descargar presentaciones desde SlideShareCómo descargar presentaciones desde SlideShare
Cómo descargar presentaciones desde SlideShare
 

Similar a Metodologia para resolver problemas con Programacion orientada a Objetos

Similar a Metodologia para resolver problemas con Programacion orientada a Objetos (20)

Curso de php practico
Curso de php practicoCurso de php practico
Curso de php practico
 
concepto de estructuras de datos
concepto de estructuras de datosconcepto de estructuras de datos
concepto de estructuras de datos
 
Arreglos
ArreglosArreglos
Arreglos
 
Arreglos en C
Arreglos en CArreglos en C
Arreglos en C
 
jaisan
jaisanjaisan
jaisan
 
Módulo 2
Módulo 2Módulo 2
Módulo 2
 
Res vecmat8
Res vecmat8Res vecmat8
Res vecmat8
 
Resvecmat
ResvecmatResvecmat
Resvecmat
 
Semana03 prog ii
Semana03 prog iiSemana03 prog ii
Semana03 prog ii
 
Apuntes Ped
Apuntes PedApuntes Ped
Apuntes Ped
 
Ejercicios de Lenguaje C #08 Resol.pdf
Ejercicios de Lenguaje C #08 Resol.pdfEjercicios de Lenguaje C #08 Resol.pdf
Ejercicios de Lenguaje C #08 Resol.pdf
 
Suma de imagenes
Suma de imagenesSuma de imagenes
Suma de imagenes
 
P3si
P3siP3si
P3si
 
Clase 6
Clase 6Clase 6
Clase 6
 
Clase6 collections
Clase6 collectionsClase6 collections
Clase6 collections
 
Arreglos, Procedimientos y Funciones
Arreglos, Procedimientos y FuncionesArreglos, Procedimientos y Funciones
Arreglos, Procedimientos y Funciones
 
Ecuaciones Cuadraticas
Ecuaciones CuadraticasEcuaciones Cuadraticas
Ecuaciones Cuadraticas
 
Jflambert lyada - ayudantia matematicas discretas
Jflambert   lyada - ayudantia matematicas discretasJflambert   lyada - ayudantia matematicas discretas
Jflambert lyada - ayudantia matematicas discretas
 
Jflambert lyada - ayudantia ordenamiento y teo maestro
Jflambert   lyada - ayudantia ordenamiento y teo maestroJflambert   lyada - ayudantia ordenamiento y teo maestro
Jflambert lyada - ayudantia ordenamiento y teo maestro
 
Ejercicio
EjercicioEjercicio
Ejercicio
 

Último

LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptxLINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptxdanalikcruz2000
 
c3.hu3.p1.p3.El ser humano como ser histórico.pptx
c3.hu3.p1.p3.El ser humano como ser histórico.pptxc3.hu3.p1.p3.El ser humano como ser histórico.pptx
c3.hu3.p1.p3.El ser humano como ser histórico.pptxMartín Ramírez
 
TRIPTICO-SISTEMA-MUSCULAR. PARA NIÑOS DE PRIMARIA
TRIPTICO-SISTEMA-MUSCULAR. PARA NIÑOS DE PRIMARIATRIPTICO-SISTEMA-MUSCULAR. PARA NIÑOS DE PRIMARIA
TRIPTICO-SISTEMA-MUSCULAR. PARA NIÑOS DE PRIMARIAAbelardoVelaAlbrecht1
 
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADODECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADOJosé Luis Palma
 
programa dia de las madres 10 de mayo para evento
programa dia de las madres 10 de mayo  para eventoprograma dia de las madres 10 de mayo  para evento
programa dia de las madres 10 de mayo para eventoDiegoMtsS
 
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARONARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFAROJosé Luis Palma
 
Fundamentos y Principios de Psicopedagogía..pdf
Fundamentos y Principios de Psicopedagogía..pdfFundamentos y Principios de Psicopedagogía..pdf
Fundamentos y Principios de Psicopedagogía..pdfsamyarrocha1
 
VOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMAL
VOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMALVOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMAL
VOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMALEDUCCUniversidadCatl
 
Procesos Didácticos en Educación Inicial .pptx
Procesos Didácticos en Educación Inicial .pptxProcesos Didácticos en Educación Inicial .pptx
Procesos Didácticos en Educación Inicial .pptxMapyMerma1
 
TEST DE RAVEN es un test conocido para la personalidad.pdf
TEST DE RAVEN es un test conocido para la personalidad.pdfTEST DE RAVEN es un test conocido para la personalidad.pdf
TEST DE RAVEN es un test conocido para la personalidad.pdfDannyTola1
 
Estrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdf
Estrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdfEstrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdf
Estrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdfAlfredoRamirez953210
 
Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.José Luis Palma
 
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...fcastellanos3
 

Último (20)

LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptxLINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
LINEAMIENTOS INICIO DEL AÑO LECTIVO 2024-2025.pptx
 
c3.hu3.p1.p3.El ser humano como ser histórico.pptx
c3.hu3.p1.p3.El ser humano como ser histórico.pptxc3.hu3.p1.p3.El ser humano como ser histórico.pptx
c3.hu3.p1.p3.El ser humano como ser histórico.pptx
 
Earth Day Everyday 2024 54th anniversary
Earth Day Everyday 2024 54th anniversaryEarth Day Everyday 2024 54th anniversary
Earth Day Everyday 2024 54th anniversary
 
TRIPTICO-SISTEMA-MUSCULAR. PARA NIÑOS DE PRIMARIA
TRIPTICO-SISTEMA-MUSCULAR. PARA NIÑOS DE PRIMARIATRIPTICO-SISTEMA-MUSCULAR. PARA NIÑOS DE PRIMARIA
TRIPTICO-SISTEMA-MUSCULAR. PARA NIÑOS DE PRIMARIA
 
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADODECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
 
programa dia de las madres 10 de mayo para evento
programa dia de las madres 10 de mayo  para eventoprograma dia de las madres 10 de mayo  para evento
programa dia de las madres 10 de mayo para evento
 
Tema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdf
Tema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdfTema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdf
Tema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdf
 
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARONARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
 
Fundamentos y Principios de Psicopedagogía..pdf
Fundamentos y Principios de Psicopedagogía..pdfFundamentos y Principios de Psicopedagogía..pdf
Fundamentos y Principios de Psicopedagogía..pdf
 
TL/CNL – 2.ª FASE .
TL/CNL – 2.ª FASE                       .TL/CNL – 2.ª FASE                       .
TL/CNL – 2.ª FASE .
 
Unidad 3 | Teorías de la Comunicación | MCDI
Unidad 3 | Teorías de la Comunicación | MCDIUnidad 3 | Teorías de la Comunicación | MCDI
Unidad 3 | Teorías de la Comunicación | MCDI
 
Power Point: "Defendamos la verdad".pptx
Power Point: "Defendamos la verdad".pptxPower Point: "Defendamos la verdad".pptx
Power Point: "Defendamos la verdad".pptx
 
VOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMAL
VOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMALVOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMAL
VOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMAL
 
Procesos Didácticos en Educación Inicial .pptx
Procesos Didácticos en Educación Inicial .pptxProcesos Didácticos en Educación Inicial .pptx
Procesos Didácticos en Educación Inicial .pptx
 
VISITA À PROTEÇÃO CIVIL _
VISITA À PROTEÇÃO CIVIL                  _VISITA À PROTEÇÃO CIVIL                  _
VISITA À PROTEÇÃO CIVIL _
 
TEST DE RAVEN es un test conocido para la personalidad.pdf
TEST DE RAVEN es un test conocido para la personalidad.pdfTEST DE RAVEN es un test conocido para la personalidad.pdf
TEST DE RAVEN es un test conocido para la personalidad.pdf
 
Estrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdf
Estrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdfEstrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdf
Estrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdf
 
Sesión de clase: Defendamos la verdad.pdf
Sesión de clase: Defendamos la verdad.pdfSesión de clase: Defendamos la verdad.pdf
Sesión de clase: Defendamos la verdad.pdf
 
Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.
 
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
 

Metodologia para resolver problemas con Programacion orientada a Objetos

  • 1. Nota : array es sinonimo de vector o arreglo. Y con arrays de una dimensión Un array es un grupo de datos del mismo tipos alamacdnados en la misma porción de memoria en forma contigua, tienen un mismo nombre y una el array tiene una longitud Se ua para almacenar muchos datos del mismo tipo. La metodología para solucionar problemas usando la programación orientada a Objetos consiste en su esquema mas general en : Se parte de un problema y usando la inteligencia, la imaginación, se empieza a crear un MODELO que permita convertir el problema en un programa de computador que soluciona el problema. El proceso de pensar y hacer modelos se denomina ABSTRACCION eso sucede en nuestra mente y tratamos de escribirlo en le papel. Nota a pesar de lo largo del ejemplo vale la pena leerlo y hacerlo despacio analizando cada aso. Los pasos del método son Paso 1: Realizar Análisis. Establecer requerimientos. Paso 2: Hacer un Modelo del problema Diagrama de clase. Paso 3: Hacer un programa de Prueba (principal, main) Paso 4: Hacer el modelo del problema . Generar los Algorimtos Paso 5: Codificar Hacer el Programa en Java
  • 2. Paso 6: Probar Paso a paso cada Algoritmo y ajustar Uso de las pruebas de Escritorio El proceso es Iterativo y en cada paso se puede devolver al anterior , o dos o tres pasos antes y hacer ajustes. Incuso dede el paso 6 se debe incuir mejoras , cambios a los algirtimos por ejemplo, o adicionar otro método al Diagrama de Clase. Se ilustra el método con un ejemplo Elaborar un programa que permita manejar Arrays de enteros y que permita realizar todas estas operaciones en el Objeto Creado: 1 ) Crear el Objeto (constructor) 2 ) meter (adicionar) nuevos enteros 3) buscar un entero x y decir su posición 4) eliminar un entero del array 5) Modificar un dato en una posición dada 6) contar cuantas veces se repite un numero x 7) ordenar los datos ascendentemente 8) ordenar los datos descendentemente 9) hallar el mayor 10) hallar el menor 11) calcular el promedio 12) hallar el numero que mas se repite suponiendo que solo hay uno que se repite mas. 13) desordenar (aleatoriamente) 14) imprimir los datos 15) invertir los datos 16) determinar cuantos son primos Se usara el métodopropuesto Se debe crear un programa (una clase ) que permita almacenar varios enteros, pueden ser 5 o 6 o 20 o miles. Y se debe poder hacer todas las operaciones que se piden sobre los datos Cuantos elementos se podrán almacenar ¿
  • 3. Supongamos que el MAXIMO es 5000 pero que se pueden trabajar de 1 a 5000 con la solución que se genere Cada uno de las operaciones que se piden es un requerimiento por tanto el problema tiene cerca de 16 requerimientos Hagamos dos o tres y usted debe hacer los demás como practica R02 Adicionar nuevos enteros Descripción Se deben incluir o adicionar nuevos elementos. Por ejemplo un entero x Si se tenían n elementos al adicionar uno mas se tendrán n+1 Entrada El vector o array con n elementos Resultado El vector o array con n+1 elementos (el entero x estará de ulitmo) R06 Contar repeticiones de un entero x Descripción Se debe contar cuantas veces se encuentra repetido el numero entero x Entrada El vector o array con n elementos y el entero x (que se desea busca y contar) Resultado Un entero resultado (con el total de veces que se repite el numero x) R11 Calcular el promedio Descripción Se debe calcular el promedio de todos los números del array La forma de calcularlo es Se suman todos los enteros y se divide el total por n (la cantidad de datos en el array) Entrada El vector o array con n elementos Resultado Un real resultado ( con le promedio) R12 Encontrar el numero que mas se repite Descripción Se debe mirar/buscar/ descubrir una forma de calcular cual es el numeor entero que mas se repite (se supone que solo hay uno que es el que mas se repite) Entrada El vector o array con n elementos Resultado Entero r ( r será el numero que mas se repite)
  • 4. R16 Calcular cuantos números son primos Descripción Se debe mirar cada uno de los números del array y determinar si es primo e ir contando los que sean primos Entrada El vector o array con n elementos Resultado Un numero entero r (r es la cantidad de números primos) Observe que solo se hicieron unos cuantos requerimientos . Haga los otros usted (no haga el R01 esto de hacer constructores es algo que todo objeto o programa que se cree debe tener , por tanto se enseñara a crearlos y simplemente siempre haga los constructores de su objeto es parte de la Programacion orientada a Objetos POO
  • 5. MiVector - Constante int MAXIMO=5000 - int n - int [] - MiVector() MiVector(int nro) Adicionar(int x) int buscarP(int x) boolean eliminar(int x) boolean modificar (int p, int x) int contarepeticiones(int x) ordenarAsc() ordenarDesc() int mayor() int menor() double promedio() int hallarMasrepetido() desordenar() imprimir() invertir() int contarPrimos() String toString() El constructor Retorna -1 si no lo encuentra y la posición si lo encuentra True si lo elimina false si no lo elimina Reemplaza el dato de la posición p por x. Aquí se trata de : ASUMIR que ya se hizo el programa, ya se soluciono el problema, ya existe la clase, se pueden crear objetos y hacer un programa principal public static void main(String [] args){ MiVector miv= new MiVector(); // Se crea miv.poblar(); // se llena aleatoriamente con 20 o 30 numeros enteros
  • 6. // este método falta se puede incluir en el diagrama de clase miv.adicionar(14); // se incluye el 14 miv.adicionar(28); // se incluye el 28 miv.adicionar(6); // se incluye el 6 miv.eliminar(28); // se elimina el 28 miv.imprimir(); // se imprimen los datos miv.ordenarAcs(); // se orden asendentemente miv.imprimir(); // se imprimen los datos miv.desOrdenar(); / se desordenan System.out.prinln(“EL MAS REPETIDO ES “ +miv. hallarMasrepetido()); } Hasta aquí que se ha logrado: Se ha analizado el problema y se tiene comrendido lo que se esta pidiendo Que haga (de que se trata el problema) Siendo mas exactos también se ha avanzado un poco en la solucion Se trata aquí de mirar cada método del Objeto (la clase) y determinar cuales son fáciles Un método faciil es aquel que sin necesidad de hacerlo yo puedo iamaginarme el código en mi mente, son pocas líneas, y además es claro Pero si no logro “ver” el algoritmo es mejor hacerlo aquí. Para iluatrar que se debe ir haciendo y probando paso a paso Se creara la clase , se hara el método poblar() y se imprimirá Para ello se requiere El constructor MiVector() poblar() String toString() E imprimir() public class MiVector { public static final int MAXIMO=5000; private int n; private int datos[]; public MiVector() { datos = new int[MAXIMO]; n=(int)(Math.random()*20)+10; System.out.println(n); } public MiVector(int nro) { datos = new int[MAXIMO]; n=nro; } public void poblar(){ for (int i = 0; i < n; i++) { datos[i]= (int)(Math.random()*20)+10; } } OBSERVEQUE HAY DOS CONSTRUCTORES UNO Que establece el numerode datosen forma aleatoria EL OTRO:recibe el numero de datos comoun parametro
  • 7. public String toString(){ String r=""; r= " numero de datos n: " + n +"n"; for (int i = 0; i < n; i++) { r= r+ datos[i]+ ", "; } return r; } public void imprimir(){ System.out.println(this.toString()); } public static void main(String [] args){ MiVector miv= new MiVector(); // Se crea miv.poblar(); // se llena aleatoriamente con 20 o 30 numeros enteros // este método falta se puede incluir en el diagrama de clase miv.imprimir(); // se imprimen los datos } } Observe bien Las propiedades incluyendo la constante esta en amarillo Los constructores (hay dos ) están en verde Y los métodos incluyendo el main (de prueba) esta en verde Correr este programa podría mostrar esto Algunos algoritmos son fáciles y se usa herramientas o esquemas fáciles para hacerlos otros son mas compilciados y usaremos el método de los refinamientos sucesivos para hacerlos Por ejemplo Adicionar() es facil Siempre se quiere que el numero adicionado quede de ultimo public void adicionar (int x){ datos[ n ]=x; n++; } Se incluye en la clase (programa)
  • 8. Y se prueba en el main Adicionando el 14, el 28 y el 6 Se ejecuta Y puede dar esto Observe que los últimos son 14,28 y 6 Y asi se van haciendo cada uno de los métodos y se va probando PASO A PASO Con disciplina. Eso es lo se quiere decir en el Paso 6 Y allí continuaremos poco a poco haciendo cada Metodo y probando Paso a Paso EL METODO SIGUIENTE de laclase PARA HACERY PROBARes
  • 9. correspondienteal requerimientoR03 para buscar un enterodadox se tiene encuentaque si no se encuentrase dara un -1 si se encuentrase retornarala posicióndonde se encontró asumiendoque noesFacil esdecirque no se “VE” el códigoo el algoritmo utilizaremosdoselementosparahacerlo el diagramade Entrada ProcesoSalida y refinamientossucesivos el métodoes int buscarP(int x) Revise el requerimiento bien No se colocaque entrael Array porque se dispone de el al seruna propiedaddel Objeto SI SE LOGRA HACER ESTE DIAGRAMA definiendomuybienlaentrada,definiendomuy bienel resultado(r) y colocandolaideade recorrery comparar EL METODO YA ESTA CASI RESUELTO SI LA IDEA NO SE OCURRE ES DECIR NO TENEMOS IDEA DE QUE COLOCARALLI INTENTE RESOLVERVARIOSEJEMPLOSA MANO Y MUY DESPACIOY HAGA TANTOSCOMO REQUIERA HASTA QUE SURJA ALGUNA IDEA. Esa ideaeslo que llamamosel PRIMERREFINAMIENTOo REFINAMIENTO# 1
  • 10. LOS REFINEMIENTOS SE PUEDEN HACER EN PAPEL y se van descartandoenlamedidaque se van haciendocadave mejoresymas detallados Ahoraextractemos del DiagramaEPSel refinamientonumero2 REFINAMIENTO# 2 intbuscar( intx) Inicio Enteror=-1 Recorra todosloselementosdel arraydatosde 1 en1 Si uno de losdatos esigual Coloque r= la posiciondel numero Y salgase del recorrido Retorne r FIN REFINAMIENTO# 3 intbuscarP( intx) Inicio enteror=-1 Para i de 0 a n-1 haga Si datos [ i ] = X r= i salgase del ciclo finsi finpara retorne r FIN USO DE LA PRUEBA DE ESCRITORIO El objetivoesprobarel algoritmoantesde codificarparaversi funcionayno perdertiempo cuandose haga el programa Supongamoslossiguientesdatos 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
  • 11. Uy Y sigamosel aglritmosinsturccionporintrucccion yse vancolocandolosvaloresenla tabla de abajo Supongamoigualmente que el valorabuscarX es igual a 23 ( n vale 16) Y se entraal ciclo i vale 0 al iniciarel ciclo n = 16 r = -1 Se comapra datos[ 0 ] con 23 y no esigual , y nose hace nada y se sigue avanzando Y se repite cni = 1 i=2 yasi sucesivamente hastallegar 9 X i r n 23 0 -1 16 1 2 3 4 5 6 7 8 9 Cuandose llegaa nueve se compara25 con 23 y no sonigualesse pasai a 10 10 Y se compara 23 (el datode laposición10 ) con X (=23 ) y si soniguales se coloca r=i 9 10 Y se sale del ciclo Y retorna r que vale 10 (la posicion) SIFUNCIONA!! Conviertiendoel métodoajavaquedaasi: REFINAMIENTO# 3 intbuscarP( intx) Inicio enteror=-1 Para i de 0 a n-1 haga Si datos [ i ] = X r= i salgase del ciclo finsi finpara retorne r FIN Y EN JAVA SERIA intbuscarP( intx) { iInt enteror=-1; for (inti=0;i<n;i++){ if (datos[ i ] == x){ r= i; break; } } returnr; }
  • 12. Revise biencadalíneadel algoritmo(refinamiento#3) y del métodoenjava Son casi iguales. Entoncesque sonlos refinamientos sucesivos? Se modificael mainpara probar Esta podría ser lasalida una vezresueltoeste intbuscar(intx) que retorna unint(con laposición) podemos Hacer este que retornatrue si estay false si noesta publicbooleanbuscar(intx){ return(buscarP(x)>=0); } y pasamosal métodosiguiente
  • 13. correspondiente al requerimientoR05 el de eliminar R04 esmas difícil y losdifícilesse van dejandoparalo ultimo. Es muy fácil publicbooleanmodificar(intpos,intx){ si se excede laposiciónde losdatosque hay(n) nose puede (false) encaso contrario locambia y retornatrue } publicbooleanmodificar(intpos,intx){ if(pos>=n) returnfalse; datos[pos]=x; returntrue; } Se incluye enel maini se prueba
  • 14. Y se continua con losdemásmétodosde laclase Los demásmétodosse puedenresolverconlaInformacion que se da aquí y las instrucciones Los demásmétodosse dejancomoejerciciosytallereshágalosyestaráenlavia de aprendera programar , solucione otrosproblemasusandoel método propuesto yestaráenla viade la soluciónde problemasconel computadoryaprendiendorealmente aprogramar peromerecenunaespecial atenciónlosmétodos: int contarPrimos() y int hallarMasrepetido() estosdosmétodosilustranotrasmas recomendacionesparageneraralgorimtos especialmentelostips YLAS TECNICAS Los refinamientossucesivosparageneraralgorimtosyprogramas(métodos) evaluarvariasideasyelegiruna( la mas practica,fácil,agil?) el métodoes intcontarPrimos inicio enterocontador=0 retorne contador fin Se mete enel mainlas instruccionesparaprobar NO SE REQUIERE DE MUCHO CONOCIMIENTONI MUCHA EXPERIENCIA PARA ESTABLECER QUE EL METODO DEBE SER ASIY DEBE TENER UN CONTADOR DONDE CONTARA OS PRIMOS Y LO RETORNARA Refinamiento #1
  • 15. REFINAMIENTO# 2 intcontarPrimos inicio enterocontador=0 se recorrerántodoslosdatosdel array y se ira mirandosi cada uno esprimo loesse cuenta finde la parte que hace el recorrido retorne contador fin REFINAMIENTO# 3 intcontarPrimos inicio enterocontador=0 para de i de 0 a n-1 haga si el datos[i] esunnumeroprimo cuente (contador++) finsi retorne contador fin REFINAMIENTO# 4 Y EN JAVA intcontarPrimos inicio enterocontador=0 para de i de 0 a n-1 haga si esPrimo( datos [ i ] ) publicintcontarPrimos(){ intcontador=0; for (inti = 0; i < n; i++) { if (esPrimo(datos[i] ) ) { contador++; Es obvioque para sabercuales son primosse debenmirar todos Comose hace un reccorido de un arrya con varios datos? Con unfor
  • 16. contador ++ finsi retorne contador fin } } returncontador; } Obviamente la función(método) esPrimo (…) no se ha hecho Para versi un numeroXesprimo booleanesPrimo(int nro) Se debe mirarsi tiene algúnnumeroque lodividaque noseani 1 ni el mismo(X) REFINAMIENTO·#1 y EN JAVA booleanesPrimo(intnro) { booleanr=true; se mirasi hay numeroentre 2 y n-1 que dividael numeroX si lohay coloque r=false; y retorne (salgase yretorne false) } } Retorne r; } publicbooleanesPrimo(intnro) { boolean r=true; for (inti = 2; i < nro;i++) { if(nro%i==0){ r=false; break; } } returnr; } Se incluyenlosdosmétodosenel programa(clase MiVector) OBSERVEY RESPONDA
  • 17. De que depende el numerode repeticiones? Siguiendo…Se mete enel mainlasinstruccionesparaprobar Y la salidapuede seresta El otro métodonoestan fácil y esun ejmploparapensarun poco La preguntaescomoobtenerle numeroque masse repite?? Pensemosenalgunaidea
  • 18. que entra en teoríalos datosdel arrya (nohay que colocarloscomoentrada) son el objeto y se puedenusarentodoslos métodos cual esel resutlado? Un enterocouyo valores el del numeromasrepetido se supone solohayuno. E P S IDEA enteror INICIO ? FIN Algunaidea?? Imeginemosunarray (arreglo ) asi n=28 O quizasunomas grande con 500 numerosenteros Comohace para determinarel numeroque masse repite sinequivocarnos? Comopodemosverse podría aprovechary observarhastaque finalemente despuésde un largorato descubramosel 43 o el 48 que estándos vecesnohayotro que se repitatresveces ? En este ejemplohaydosque se erpitendosvecesperoen nuestroproblemasuponemoque solohay unoque se repte mas veces Perocomo lograraveriguarlo? De que forma? Cualmseriael método? Nuevamentecual eslaidea? E P S
  • 19. IDEA enteror INICIO ? FIN Generemos Por ejemplo que tal esta Si los ordenamosde menoramayor? Entoncesquedaríantodoslosigualesjuntosyseriamuy fácil establecerel que masse repite. Y si son tresmillonesde números.Se ordenanperosonmuchosy visualmenteyonose podrán“ESTABLECER” losrepetidos (visualemente) Entoncescomo hacer?s vamo Que tal nos vamoscontandodesde el primeroycada que el valorcambie dejamosde contary si la cuentaes mayorque una que ya traimos, nos quedamosconestaultima(el numero,yla cuenta) y si hasta al final . Por ejemploeneste 6 11 11 12 13 14 14 14 14 14 19 20 23 24 28 28 Contamos 6 1 11 2 nos quedamoscon11 y 2 12 1 13 1 14 5 nos quedamoscon14 y con 5 19 1 20 1 23 1 24 1 28 2 La respuestaes14 (porque se repite 5veces) esel masrepetido
  • 20. Aquí ya tenemosunaidea. LlamemoslaOrdenarYcontar Peroque tal estaotra idea Que tal si tomamosel primeroel 6 y contamoscuantasvecesesta Y colocamoseste dato enotro vector asi y lomarcamos 11 23 20 28 12 14 14 13 14 14 19 11 24 14 28 6 marcas x x x x x x x x nrosUsados 11 23 20 28 12 14 13 totales 1 1 1 2 1 5 1 0 1 2 3 4 5 6 7 … Y asi hasta contarlostodossincontar dos veceslosque yaestánmarcados Y luegohalamosel mayorde array totalesyel que este enla posiciónde ese mayorese es. Por ejemplo el mayor 5 corresponde ala poicion5 entotal y el numeroque estaenesa posiciónennrosUsadosesel 14 ese esel numeromasrepetido Escogemoslaopción1 de ordenar yContar por parecermas simple No tiene que crearotrosarryas ni marcar ni nada asi que esmas simple Ya tenemosunaidea E P S IDEA enteror INICIO Se ordenaenforma ascendente Se recorre de 0 a n-1 losdatos
  • 21. Se va contado Si el numeroque se estaprocesandoes Igual al anteriorse cuenta Sino Hay rompimiento Se mirasi el contadorde repeticiones Es mayorque el ultimoque se guardo Si loes se guarda este contadory el numero De todasformaspor haberrompimiento De cambiael contador en1 y El dato a procesaro a contar FIN REFINAMIENTO#2 Entero hallarMasrepetido() INICIO Enteror= 0 Ordene losnumerosascendentemente Declare lasvariablespara contrloar Una para el contador Otra para el contador mayor Una para llevarel datoque se estacontando para i de 0 a n-1 ) si ( si se trara del mismonumero) cuente sino //hayrompimiento mire si debe guardarel contador porque esmayor inicialice todoel contador y el dato a contar finsi finpara
  • 22. r= el dato del contadorcon el valormas alto retorne r FIN REFINAMIENTO#3 Entero hallarMasrepetido() INICIO Enteror= 0 ordenar() EnterodatoEmproceso=datos[0] EnterodatoMayor=datos[0] Enterocontador=0 EnterocontadorMayor=0 para i de 0 a n-1 ) si (datos[i]==datoEmproceso) contador++ sino //hayrompimiento si (contador>contadorMayor){ contadorMayor=contador datoMayor=datoEmproceso finsi datoEmproceso=datos[i] contador=1 finsi finpara r= datoMayor; retorne r; FIN
  • 23. EL programafinal enjavaquedaasi publicinthallarMasrepetido(){ int r= 0; ordenar(); int datoEmproceso=datos[0]; int datoMayor=datos[0]; int contador=0; int contadorMayor=0; for (inti = 0; i < n; i++) { if(datos[i]==datoEmproceso){ contador++; } else{ //hayrompimiento if(contador>contadorMayor){ contadorMayor=contador; datoMayor=datoEmproceso; } datoEmproceso=datos[i]; contador=1; } } r= datoMayor; returnr; } El métodoordenaresmuysimple aprovechanalgunasopcionesyaconstruidasenjava publicvoidordenar(){ java.util.Arrays.sort(datos,0,n); } Este métodopermite ordenarunarray. Se incluye enlaclase y se prueba
  • 24. Buenoesoestodo losdemásmétodosse dejanal lectorcomoejerciciosde comohacer métodos(apliqueloindicadoeneste Articulo) https://es.wikipedia.org/wiki/Resoluci%C3%B3n_de_problemas_de_programaci%C3%B3n Este sitioeninternetle muestrayexplicael usode lasestructurasalgorítmicasusadaspara construiry generarlosalgoritmos :condicionales,ciclos, https://1buenanuevas.wordpress.com/2011/08/28/3-estructuras-condicionales-if-for-while- do-while-switch/ http://es.slideshare.net/diegoandresalvarez/04-sentenciasdecontrolcondicionalesyciclos Estos explicalasinstruccionesenjavacomo se escribensintaxisyejemplosde uso http://www.ticbeat.com/tecnologias/mejores-metodos-intensivos-para-ser-programador- profesion-auge/
  • 25. Se justificaporque aprenderaprogramar enforma rápida.Y como laspersonaspuedenpagar hasta 12.200 dólarespara aprenderaprogramar El métodoeneste artículo enseñaa solucionarproblemasygenerarsolucionescon programación Cómoprogramar enJava, novenaedición. Paul Deitel,harveyDeitel http://www.fiuxy.net/ti-programacion-webmasters/4191894-como-programar-en-java-deitel- 7-y-9-edicion-pdf.html se recomiendanestosdoscapítulos http://www.ehu.eus/~ljrf/AED/2010/practicas/lenguaje_C/StepwiseRefinement_Wirth.pdf este articuloclásicode withNilausde 1971 explicalatécnicade los refiamientossucsivos para generar/construri algorimtosesexcelente .Ydefinitivamente lamejordescipcionde como hacemosalgoritmosennuestramente cuandohacemosprogramas videosútiles presentranotrametodologíade soluciónde problemas peropuedenserútilesparaentender condicionales,ciclosetc..conventanas https://www.youtube.com/watch?v=X9iOu0-d27A introducciónaalgorimtos https://www.youtube.com/watch?v=BSQfVoAsd2g estructurassecuenciales https://www.youtube.com/watch?v=7wgkkWW9LAY condicional simple https://www.youtube.com/watch?v=nCTysXv-GW0 condicional anidado https://www.youtube.com/watch?v=siv01IaWPsE el switch
  • 26. https://www.youtube.com/watch?v=BP9S6Qk4-lc ventanasJFrame https://www.youtube.com/watch?v=jt2MmPIsJqA ventanasybotonesformularios https://www.youtube.com/channel/UCVetOa0HbUA9b7OImC-3I5A todoslosvideosuno a uno http://www.incanatoit.com/ el códigofuente de losvideos Por ultimountutorial paraempearde lo masbásico http://es.slideshare.net/blablalba/fundamentos-de-programacion-en-java-51445745 y este que estaleyendolopuededescargarde