Estrategias para resolver un problema de programación I: estudio de casos (CU00117A)

Resumen: Entrega nº16 del curso Bases de la programación Nivel I.
Codificación aprenderaprogramar.com: CU00117A

 

 
ESTRATEGIAS DE RESOLUCIÓN

La estrategia de aproximación al método es algo libre. Proponemos plantear varios casos con cifras concretas, resolverlos sobre papel y tratar de ver relaciones numéricas o encadenamiento de procesos que determinan el paso a paso.

 

1º)   Planteamos varios casos. ¿Qué número n de valores cogemos? No hay respuesta fija: debemos huir de los valores que puedan suponerse especiales o no genéricos así como de valores que den lugar a procesos demasiado largos. En nuestro caso:

 

  n =1, 2 ó 3
-->
Se consideran no representativos del caso genérico
  n =4, 5 ó 6
-->
Se consideran aceptables
  n =7, 8 ó 9
-->
Se consideran aceptables tendiendo a largos
  n > 9
-->
Se consideran demasiados valores

  

 
De forma intuitiva desconfiamos de n = 4 y cogemos n = 5 ¿Cuántos casos cogemos? Igualmente no hay respuesta fija. Serán los necesarios o los que creamos convenientes. En esta ocasión, elegiremos estos cuatro casos:
 
Caso 1
33
88
57
22
15
Caso 2
18
16
13
11
44
  
Caso 3
215
31
7
12
66
Caso 4
15
22
33
15
6
 
 
 
La elección de casos se hace buscando:
 
· Representatividad de situaciones.
· Circunstancias especiales conocidas.
· Sencillez.
 
 
Representatividad de situaciones en relación a buscar situaciones variantes (p. ej. series ascendentes, series descendentes).
 
Circunstancias especiales conocidas: podemos introducir alguna para hallar una mecánica que se adapte a ellas (p. ej. presencia de ceros, etc.). Inicialmente elegiremos pocas (menor o igual a un 25 % de casos).
 
Sencillez: estamos en un primer paso y no nos complicamos la vida (p. ej. empezar con números enteros positivos). En algunas ocasiones, la mecánica para resolver casos sencillos permite resolverlos todos (o casi todos). Se trataría de un método fuerte. En otras ocasiones el método es débil o incapaz de resolver determinado tipo de casos o circunstancias especiales, por lo que hay que seguir trabajando en él para reforzarlo.
 
De las series elegidas podríamos decir lo siguiente:
 
 
Representatividad
Circunstancias especiales
Sencillez
Caso 1
· Número   mayor    en una
posición intermedia
No
Caso 2
· Serie descendente excepto último número
· Número mayor en extremo derecho
No
Caso 3
· Número mayor en extremo izquierdo
No
Caso 4
· Número mayor en posición intermedia
 Dos valores son iguales
  
 
2º)   Tanteamos un método. A cada uno de los casos trataremos de aplicarle un mismo método a partir de una idea. En este caso la idea va a ser: “Considero al primer número como orden 1. A partir de ahí, cojo el segundo número y lo comparo con orden 1. Si es mayor orden 2 pasa a ser orden 1 y orden 1 pasa a ser el valor. Si es menor orden 2 es el valor. El proceso se repite, de forma que vamos comparando e intercalando donde proceda”. Aplicaremos el método y trataremos de dejar reflejo de los pasos seguidos como esquema gráfico, de cálculo o de encadenamiento de acciones.
 
 
Caso 1
33
88
57
22
15

  

Paso 1) o(1) = v(1)
  o(1) = 33


 

Paso 2) o(1) > v(2) ? -> No -> o(2) = o(1); o(1) = v(2)
  o(1) = 88 o(2) = 33 o(1) = 88


 

Paso 3) o(1) > v(3) ? -> Sí -> o(2) > v(3) ? -> No -> o(3) = o(2) ; o(2) = v(3)
  88 > 57 33 > 57 o(3) = 33 o(2) = 57


 

Paso 4) o(1) > v(4) ? -> Sí -> o(2) > v(4) ? -> Sí -> o(3) > v(4) ? -> Sí -> o(4) = v(4)
  88 > 22 57 > 22 33 > 22 o(4) = 22


 

Paso 5) o(1) > v(5) ? -> Sí -> o(2) > v(5) ? -> Sí -> o(3) > v(5) ? -> Sí -> o(4) > v(5) ? -> Sí -> o(5) = v(5)
  88 > 15 57 > 15 33 > 15 22 > 15 o(5) = 15

 

 

Resultado final:
o(1) = 88
 
o(2) = 57
 
o(3) = 33
 
o(4) = 22
 
o(5) = 15

 

 

 

Caso 2
18
16
13
11
44

 

Paso 1) o(1) = v(1)
  o(1) = 18

 

 

 

Paso 2) o(1) > v(2) ? -> Sí -> o(2) = v(2)
  18 > 16 o(2) = 16



 

 

Paso 3) o(1) > v(3) ? -> Sí -> o(2) > v(3) ? -> Sí -> o(3) = v(3)
  18 > 13 16 > 13 o(3) = 13



 

 

Paso 4) o(1) > v(4) ? -> Sí -> o(2) > v(4) ? -> Sí -> o(3) > v(4) ? -> Sí -> o(4) = v(4)
  18 > 11 16 > 11 13 > 11 o(4) = 11



 

 

Paso 5) o(1) > v(5) ? -> No -> o(5) = o(4) ; o(4) = o(3) ; o(3) = o(2) ; o(2) = o(1) ; o(1) = v(5)
  18 > 44 o(5) = 11 o(4) = 13 o(3) = 16 o(2) = 18 o(1) = 44

 

 

 
   
Resultado final:
o(1) = 44
 
o(2) = 18
 
o(3) = 16
 
o(4) = 13
 
o(5) = 11

 

 

 

Caso 3
215
31
7
12
66

 

Paso 1) o(1) = v(1)
  o(1) = 215


 

Paso 2) o(1) > v(2) ? -> Sí -> o(2) = v(2)
  215 > 31 o(2) = 31


 

Paso 3) o(1) > v(3) ? -> Sí -> o(2) > v(3) ? -> Sí -> o(3) = v(3)
  215 > 7 31 > 7 o(3) = 7


 

Paso 4) o(1) > v(4) ? -> Sí -> o(2) > v(4) ? -> Sí -> o(3) > v(4) ? -> No -> o(4) = o(3) ; o(3) = v(4)
  215 > 12 31 > 12 7 > 12 o(4) = 7 o(3) = 12


 

Paso 5) o(1) > v(5) ? -> Sí -> o(2) > v(5) ? -> No -> o(5) = o(4) ; o(4) = o(3) ; o(3) = o(2) ; o(2) = v(5)
  215 > 66 31 > 66 o(5) = 7 o(4) = 12 o(3) = 31 o(2) = 66

 

 
 
 
Resultado final:
o(1) = 215
 
o(2) = 66
 
o(3) = 31
 
o(4) = 12
 
o(5) = 7

 

 

 

Caso 4
15
22
33
15
6

 

 

 

 

 

 

Para acceder a la información general sobre este curso y al listado completo de entregas pulsa en este link:  Ver curso completo.

Para  hacer un comentario o consulta utiliza los foros aprenderaprogramar.com, abiertos a cualquier persona independientemente de su nivel de conocimiento.

Donar o colaborar

Este sitio se mantiene abierto gracias al apoyo de muchas personas. Si crees que merece la pena apoyar económicamente este sitio web puedes realizar una donación o colaborar. Contacta con nosotros.

¿Puedo yo aprender?

Seas o no del área informática, si quieres aprender a programar te ofrecemos una solución guiada y personalizada: realizar un curso tutorizado on-line. Con este tipo de curso, podrás aprender a programar de forma ágil y amena.

Acceder a detalles y precios de los cursos tutorizados on-line

Política sobre cookies

Utilizamos cookies propias y de terceros para ofrecerte una mejor experiencia y servicio, de acuerdo a tus hábitos de navegación.

Si continúas navegando, consideramos que aceptas su uso. Puedes obtener más información en nuestra Política de Cookies.

En Facebook!

Ahora puedes seguirnos en Facebook. Noticias, novedades y mucho más ¡Te esperamos!

RANKING APR2+

Ranking de lenguajes y entornos de programación aprenderaprogramar.com
 

JULIO - AGOSTO 2017

1. Java / J2EE
2. Entornos Oracle
3. Entornos SQL Server
4. JavaScript, jQuery
5. .NET, C#
6. HTML, CSS
7. Android, iOS
8. Php, MySql


Acceder a detalles sobre el ranking de programación aprenderaprogramar.com

FOROS APR2+

Pregunta, responde, consulta, lee, intercambia...

Participa!!! Entra en los foros aprenderaprogramar.com.

             Copyright 2006-2017 aprenderaprogramar.com                La web abierta a cualquier persona interesada en la programación