Esto va a ser largo ya que estoy describiendo mi proceso de pensamiento.
Creo que es un problema común que todos enfrentan cuando comienzan a codificar. La codificación es como cualquier otro pasatiempo donde necesitas practicar para dominarlo.
Mi sugerencia es pensar en lo básico, dar pequeños pasos, desarrollar un algoritmo, buscar la sintaxis en Google y conquistarla. Cuando comience a resolver un problema, recogeré un lápiz y un papel; Ni siquiera pensaré en java / python / c. Intentaré resolver las cosas en lugar de pensar en el código.
Revisemos su problema de encontrar un número primo hasta el 1000. A continuación se detalla mi proceso de pensamiento.
- Tengo 13 años y me siento desnutrida. ¿Qué debo hacer para superarme?
- ¿Recibiré una buena respuesta si comienzo un programa de desarrollo de la personalidad que comprende hablar en público, habilidades de comunicación y etiqueta para las edades de 8 a 14 años?
- ¿Cuál es la mejor mentalidad para un CEO efectivo?
- Me pregunto cuánto tiempo le tomará a uno mejorar su idioma de inglés comercial.
- ¿Cuáles son algunas técnicas para mantenerse enfocado en el aula?
- ¿Qué es un número primo? He leído que si algo es solo divisible 1 y eso significa que es un número primo.
- Luego trataré de recoger un pequeño conjunto de datos, por ejemplo, solo consideraré el recuento hasta 7.
- Analicemos:
- 1 no se considera en absoluto.
- 2 es primo porque lo sé.
- ¿Es 3 prime? – Apliquemos nuestra definición de cebador – 3 no es divisible por 2 por lo tanto cebador.
- ¿Es 4 prime? – No es divisible por 2.
- Similarmente 5,6 y 7.
- Vamos a codificarlo ahora hasta el 7.
- si (número == 2) devuelve verdadero;
- si (número == 3) verifique si es divisible por 2 o no;
- si (número == 4) verifique si es divisible por 2/3 o no;
- De manera similar, verifique si 5/6/7 son divisibles por números que aparecieron antes de ellos.
- ¿Puedo ver un patrón aquí? Sí, creo que parece un bucle aquí.
- Déjame tomar el mayor aporte, que es 7 ahora.
- Repetiré hasta 7 y no tengo que considerar 1, por lo tanto, mi bucle es como
for(i = 2; i < 7; i++)
- En este bucle tengo que dividir 7 con todo y si el resto es 0, significa que no es primo, es decir
-
for(i = 2; i < 7; i++) { if(7%i == 0) return false}
- Tengo que hacer este tipo de bucle para todo. Así que puedo reemplazar 7 por n. Oh sí. Así que mi código es
for(i = 2; i < n; i++) { if(n%i == 0) return false}
- Y si para fines de bucle y todavía no he devuelto, eso significa que es un número de cebador.
- Genial, ahora puedo escribir un método que me devolverá si un número dado es un número de cebador o no.
- Dios mío, acabo de resolver mi problema. Tengo un método que me devolverá si un número dado es primo o no. Solo tengo que escribir un bucle que seguirá dando entradas a mis métodos hasta 1000.
- Vamos a escribirlo:
público booleano estático isPrime (int n) {para (int i = 2; i <n; i ++) {si (n% i == 0) devuelve false; } devuelve true; }
vacío estático público principal (Cadena … args) {
para (cuenta int = 2; cuenta <= 1000; cuenta ++) {
if (isPrime (count)) System.out.println (count);}}
- Ahora tengo algo funcionando. ¿Puedo optimizarlo? Sí, eso creo. Vamos a empezar entonces y el proceso continúa.
En resumen lo que hicimos:
- Entendimos el problema.
- Tomamos un pequeño subconjunto del problema.
- Piense a través de una solución.
- Pseudo codifíquelo y comprobé que funciona.
- Manchado un patrón, en su caso.
- Probamos nuestra solución con una sola entrada.
- Probamos nuestra solución con múltiples entradas.
- Y luego generalizamos la solución para resolver nuestro problema.
- Ahora podemos enviar nuestra tarea o aún podemos pensar en ella para una mejor solución.
Por encima del proceso de pensamiento parece lento y tedioso. Pero créame cuando esté en la práctica, realizará todos esos pasos en su cabeza en un minuto.
Espero que ayude.
Feliz codificacion