SlideShare une entreprise Scribd logo
1  sur  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

Contenu connexe

Tendances

Representacion del Conocimiento Inteligencia Artificial
Representacion del Conocimiento Inteligencia ArtificialRepresentacion del Conocimiento Inteligencia Artificial
Representacion del Conocimiento Inteligencia Artificialjorgeescalona2387
 
1. introduccion a la programación orientada a objeto (poo)
1.  introduccion a la programación orientada a objeto (poo)1.  introduccion a la programación orientada a objeto (poo)
1. introduccion a la programación orientada a objeto (poo)Roberto Rojas
 
Poo 3 herencia
Poo 3 herenciaPoo 3 herencia
Poo 3 herenciajlmanmons
 
Memoria dinamica
Memoria dinamicaMemoria dinamica
Memoria dinamicagusolis93
 
Herencia y Polimorfismo
Herencia y PolimorfismoHerencia y Polimorfismo
Herencia y Polimorfismonestor_moren
 
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
 
Pilas como estructura de datos..
Pilas como estructura de datos..Pilas como estructura de datos..
Pilas como estructura de datos..NANO-06
 
Normalizaciòn
NormalizaciònNormalizaciòn
Normalizaciònomarzon
 

Tendances (20)

Polimorfismo en Java
Polimorfismo en JavaPolimorfismo en Java
Polimorfismo en Java
 
Representacion del Conocimiento Inteligencia Artificial
Representacion del Conocimiento Inteligencia ArtificialRepresentacion del Conocimiento Inteligencia Artificial
Representacion del Conocimiento Inteligencia Artificial
 
1. introduccion a la programación orientada a objeto (poo)
1.  introduccion a la programación orientada a objeto (poo)1.  introduccion a la programación orientada a objeto (poo)
1. introduccion a la programación orientada a objeto (poo)
 
Poo 3 herencia
Poo 3 herenciaPoo 3 herencia
Poo 3 herencia
 
Memoria dinamica
Memoria dinamicaMemoria dinamica
Memoria dinamica
 
Pilas y colas
Pilas y colasPilas y colas
Pilas y colas
 
6 Curso de POO en Java - clases y objetos
6  Curso de POO en Java - clases y objetos6  Curso de POO en Java - clases y objetos
6 Curso de POO en Java - clases y objetos
 
Funciones recursivas
Funciones recursivasFunciones recursivas
Funciones recursivas
 
Expresiones regulares
Expresiones regularesExpresiones regulares
Expresiones regulares
 
Uml clase 04_uml_clases
Uml clase 04_uml_clasesUml clase 04_uml_clases
Uml clase 04_uml_clases
 
Conceptos poo (presentación1)
Conceptos poo (presentación1)Conceptos poo (presentación1)
Conceptos poo (presentación1)
 
Herencia y Polimorfismo
Herencia y PolimorfismoHerencia y Polimorfismo
Herencia y Polimorfismo
 
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
 
Programación 3: listas enlazadas
Programación 3: listas enlazadasProgramación 3: listas enlazadas
Programación 3: listas enlazadas
 
JAVA Interfaz gráfica (GUI)
JAVA Interfaz gráfica (GUI)JAVA Interfaz gráfica (GUI)
JAVA Interfaz gráfica (GUI)
 
Pilas como estructura de datos..
Pilas como estructura de datos..Pilas como estructura de datos..
Pilas como estructura de datos..
 
Recursividad directa e indirecta
Recursividad directa e indirectaRecursividad directa e indirecta
Recursividad directa e indirecta
 
Programación 3: colas
Programación 3: colasProgramación 3: colas
Programación 3: colas
 
Normalizaciòn
NormalizaciònNormalizaciòn
Normalizaciòn
 
Listas,pilas y colas Estructura de Datos
Listas,pilas y colas Estructura de DatosListas,pilas y colas Estructura de Datos
Listas,pilas y colas Estructura de Datos
 

En vedette

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
 

En vedette (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
 

Similaire à Metodologia para resolver problemas con Programacion orientada a Objetos

Similaire à 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
 

Dernier

OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VSOCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VSYadi Campos
 
Registro Auxiliar - Primaria 2024 (1).pptx
Registro Auxiliar - Primaria  2024 (1).pptxRegistro Auxiliar - Primaria  2024 (1).pptx
Registro Auxiliar - Primaria 2024 (1).pptxFelicitasAsuncionDia
 
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfSELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfAngélica Soledad Vega Ramírez
 
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdfCurso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdfFrancisco158360
 
Estrategias de enseñanza-aprendizaje virtual.pptx
Estrategias de enseñanza-aprendizaje virtual.pptxEstrategias de enseñanza-aprendizaje virtual.pptx
Estrategias de enseñanza-aprendizaje virtual.pptxdkmeza
 
Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Lourdes Feria
 
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdfEjercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdfMaritzaRetamozoVera
 
Criterios ESG: fundamentos, aplicaciones y beneficios
Criterios ESG: fundamentos, aplicaciones y beneficiosCriterios ESG: fundamentos, aplicaciones y beneficios
Criterios ESG: fundamentos, aplicaciones y beneficiosJonathanCovena1
 
Programacion Anual Matemática4 MPG 2024 Ccesa007.pdf
Programacion Anual Matemática4    MPG 2024  Ccesa007.pdfProgramacion Anual Matemática4    MPG 2024  Ccesa007.pdf
Programacion Anual Matemática4 MPG 2024 Ccesa007.pdfDemetrio Ccesa Rayme
 
ORGANIZACIÓN SOCIAL INCA EN EL TAHUANTINSUYO.pptx
ORGANIZACIÓN SOCIAL INCA EN EL TAHUANTINSUYO.pptxORGANIZACIÓN SOCIAL INCA EN EL TAHUANTINSUYO.pptx
ORGANIZACIÓN SOCIAL INCA EN EL TAHUANTINSUYO.pptxnandoapperscabanilla
 
Qué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativaQué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativaDecaunlz
 
plande accion dl aula de innovación pedagogica 2024.pdf
plande accion dl aula de innovación pedagogica 2024.pdfplande accion dl aula de innovación pedagogica 2024.pdf
plande accion dl aula de innovación pedagogica 2024.pdfenelcielosiempre
 
origen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioorigen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioELIASAURELIOCHAVEZCA1
 
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICABIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICAÁngel Encinas
 
AFICHE EL MANIERISMO HISTORIA DE LA ARQUITECTURA II
AFICHE EL MANIERISMO HISTORIA DE LA ARQUITECTURA IIAFICHE EL MANIERISMO HISTORIA DE LA ARQUITECTURA II
AFICHE EL MANIERISMO HISTORIA DE LA ARQUITECTURA IIIsauraImbrondone
 
Valoración Crítica de EEEM Feco2023 FFUCV
Valoración Crítica de EEEM Feco2023 FFUCVValoración Crítica de EEEM Feco2023 FFUCV
Valoración Crítica de EEEM Feco2023 FFUCVGiustinoAdesso1
 
La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...JonathanCovena1
 
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...JAVIER SOLIS NOYOLA
 
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxzulyvero07
 

Dernier (20)

OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VSOCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
 
Registro Auxiliar - Primaria 2024 (1).pptx
Registro Auxiliar - Primaria  2024 (1).pptxRegistro Auxiliar - Primaria  2024 (1).pptx
Registro Auxiliar - Primaria 2024 (1).pptx
 
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfSELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
 
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdfCurso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdf
 
Estrategias de enseñanza-aprendizaje virtual.pptx
Estrategias de enseñanza-aprendizaje virtual.pptxEstrategias de enseñanza-aprendizaje virtual.pptx
Estrategias de enseñanza-aprendizaje virtual.pptx
 
Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...
 
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdfEjercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
 
Criterios ESG: fundamentos, aplicaciones y beneficios
Criterios ESG: fundamentos, aplicaciones y beneficiosCriterios ESG: fundamentos, aplicaciones y beneficios
Criterios ESG: fundamentos, aplicaciones y beneficios
 
Programacion Anual Matemática4 MPG 2024 Ccesa007.pdf
Programacion Anual Matemática4    MPG 2024  Ccesa007.pdfProgramacion Anual Matemática4    MPG 2024  Ccesa007.pdf
Programacion Anual Matemática4 MPG 2024 Ccesa007.pdf
 
Presentacion Metodología de Enseñanza Multigrado
Presentacion Metodología de Enseñanza MultigradoPresentacion Metodología de Enseñanza Multigrado
Presentacion Metodología de Enseñanza Multigrado
 
ORGANIZACIÓN SOCIAL INCA EN EL TAHUANTINSUYO.pptx
ORGANIZACIÓN SOCIAL INCA EN EL TAHUANTINSUYO.pptxORGANIZACIÓN SOCIAL INCA EN EL TAHUANTINSUYO.pptx
ORGANIZACIÓN SOCIAL INCA EN EL TAHUANTINSUYO.pptx
 
Qué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativaQué es la Inteligencia artificial generativa
Qué es la Inteligencia artificial generativa
 
plande accion dl aula de innovación pedagogica 2024.pdf
plande accion dl aula de innovación pedagogica 2024.pdfplande accion dl aula de innovación pedagogica 2024.pdf
plande accion dl aula de innovación pedagogica 2024.pdf
 
origen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioorigen y desarrollo del ensayo literario
origen y desarrollo del ensayo literario
 
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICABIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
 
AFICHE EL MANIERISMO HISTORIA DE LA ARQUITECTURA II
AFICHE EL MANIERISMO HISTORIA DE LA ARQUITECTURA IIAFICHE EL MANIERISMO HISTORIA DE LA ARQUITECTURA II
AFICHE EL MANIERISMO HISTORIA DE LA ARQUITECTURA II
 
Valoración Crítica de EEEM Feco2023 FFUCV
Valoración Crítica de EEEM Feco2023 FFUCVValoración Crítica de EEEM Feco2023 FFUCV
Valoración Crítica de EEEM Feco2023 FFUCV
 
La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...
 
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
LABERINTOS DE DISCIPLINAS DEL PENTATLÓN OLÍMPICO MODERNO. Por JAVIER SOLIS NO...
 
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
 

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