Los días en que le enseñó a escribir matrices de código 6

Aprender a escribir programas es en realidad un proceso de práctica constante y, al final, la práctica hace al maestro. Obviamente lo entendió después de mis muchas quejas. Como resultado, su entusiasmo se transformó en diligencia, ya menudo practicaba mucho cuando regresaba a casa, por supuesto, practicaba mucho y había muchos problemas. El otro día estaba acostado en la cama y miraba una serie de televisión tranquilamente. De repente, apareció un mensaje de WeChat en la pantalla del teléfono: "Ayúdame a ver cómo salió algo", seguido de una captura de pantalla del código que ella envió:

uploading.4e448015.gif

Y el error informado durante el tiempo de ejecución:

uploading.4e448015.gif

Después de leer su código, no siento una sonrisa. Un novato es un novato y parece natural cometer tal error. Así que tuve que dejar mi amada serie de televisión y explicarle pacientemente por qué.

"¿Recuerdas el tipo de datos?", Le pregunté.

"Por supuesto", dijo.

"Entonces, ¿sabes dónde te equivocas?", Le pregunté de nuevo.

“¿El tipo de datos es incorrecto?” Trató de encontrar el problema.

"Puedes decirlo", dije, aunque la naturaleza del problema no es así, también se puede resolver en esta dirección, así que dije eso.

"Ya veo", dijo.

Entonces nuestra conversación se detuvo, ella quería cambiar el código.

Efectivamente, envió un mensaje unos minutos después: "Jaja, solo haz una conversión de tipo forzada".

A continuación de esta oración hay una captura de pantalla del programa que envió:

uploading.4e448015.gif

"Es correcto resolver el problema de esta manera, pero no has encontrado el problema esencial", le dije.

"¿Cuál es el problema esencial?", Preguntó.

"¿Por qué no te cuento esto mañana?", Dije, porque finalmente no podía dejar ir mi amada serie de televisión. La intensa y emocionante trama acababa de comenzar. Fue realmente un tormento para mí dejarlo ir. .

"Bueno, entonces descansa temprano", respondió ella.

Aunque leí que estaba un poco triste por esta frase, le respondí: "Bueno, deberías descansar temprano, buenas noches".

Al día siguiente, se olvidó de su infelicidad de anoche y antes de salir del trabajo me llamó alegremente: "Dime rápidamente cuál fue el problema esencial de ayer".

No sé si sufrió de insomnio a causa de esto anoche, pero lo que sí es cierto es que le sacó el apetito con éxito.

"Tu entusiasmo por estudiar es muy alto", le dije con una sonrisa.

"Jeje, creo que la programación es bastante interesante ahora", dijo.

“Es bueno ser interesante y te dará el doble de resultado con la mitad del esfuerzo.” Dije un hecho, ¿no siempre dije que el interés es el mejor maestro?

Ella asintió con la cabeza y estuvo de acuerdo, así que continué: "El problema esencial aquí es que está utilizando el marcador de posición incorrecto".

"¿Marcador de posición? ¿El% .2f?", Preguntó con sospecha.

"Correcto."

"¿Qué hay de malo en eso, no escribiste también de esa manera?"

"Esto se debe a que el objeto que se está formateando es un decimal. Cuando el objeto formateado no es un decimal,% f no se puede usar. Utilice el marcador de posición correspondiente al tipo de datos. Por ejemplo, aquí, el objeto que desea formatear es un integer, luego use% d como marcador de posición ".

"¿En serio? Lo intentaré", dijo mientras cambiaba de programa.

Los procedimientos que cambió:

uploading.4e448015.gif

resultado de la operación:

uploading.4e448015.gif

Al ver que no había errores en el programa, dijo alegremente: "Jaja, de verdad, solo cambia el marcador de posición".

"Entendido, esta es la esencia del problema".

"Bueno, ya veo, ¿otros tipos de datos tienen otros marcadores de posición?"

"Tienes razón. Básicamente puedes conocer todos los marcadores de posición mirando esta tabla", dije, abriendo una tabla en la computadora para mostrarle:

Marcador de posición

Explique 

Ejemplo

% s

Tipo de cadena

"mingrisoft"

%C

Tipo de caracter

'metro'

%segundo

Tipo booleano

cierto

%re

Tipo entero (decimal)

99

%X

Tipo entero (hexadecimal)

FF

% O

Tipo entero (octal)

77

%F

Tipo de punto flotante

99,99

%un

Tipo de punto flotante hexadecimal

FF.35AE

%mi

Tipo de índice

9.38e + 5

%gramo

Tipo de punto flotante general (el más corto de los tipos f y e)

 

% h

Código hash

 

%%

Tipo de porcentaje

%norte

Nueva línea

 

% tx

Tipo de fecha y hora (x representa un carácter de conversión de fecha y hora diferente

 

Miró detenidamente los marcadores de posición uno por uno. Por último, volvió la cabeza, me miró y dijo: "Una cosa que no entiendo del todo es que el marcador de posición% .2f no está en esta tabla. ¿Es una variante de %¿F?"

"Has descubierto esto. Eres realmente inteligente. Tienes razón. El marcador de posición% .2f se cambia del marcador de posición% f. La razón de este cambio es porque queremos obtener un número de cadena con 2 lugares decimales. Si no Si realiza un cambio de este tipo en el marcador de posición, entonces, ¿cuántos lugares decimales en el número formateado obtendrá un número de cadena con muchos lugares decimales, que obviamente no es lo que queremos. De nuevo. Por ejemplo, si queremos formatear un número entero deje que ocupe 4 dígitos. Si hay menos de 4 dígitos, llénelo con 0, entonces el marcador de posición será% 04d. ”Después de hablar sobre esto, hice una pausa y la miré con ojos interrogantes.

Ella pensó por un momento y dijo: "Probablemente lo entiendo. Entonces debe haber algunas reglas para hacer estos cambios. ¿Cómo es?"

“Primero hablemos de la composición del marcador de posición.” Como dije, encontré una hoja de papel y escribí la composición del marcador de posición.

 

Formato de marcador de posición para tipos generales, tipos de caracteres y tipos numéricos:

% [índice $] [identificación] [ancho mínimo] [. precisión] carácter de conversión

Formato de marcador de posición para tipos de fecha y hora:

% [índice $] [identificación] [ancho mínimo] carácter de conversión

Formato de marcador de posición que no corresponde al parámetro:

% [Identificación] [Ancho mínimo] Carácter de conversión

Donde índice representa el valor de la posición en la lista de parámetros

 

Ella me miró cuidadosamente mientras terminaba de escribir, y luego me miró confundida.

"En primer lugar, no es necesario decir%. Cada marcador de posición comienza con%, y no es necesario decir más sobre los caracteres de conversión al final, que son las f, d, s, etc. que se ven en el tabla. El siguiente índice $ se utiliza para determinar qué marcador de posición representa el primer parámetro ".

Hablando de esto, me detuve y volví la cabeza para mirarla, y vi más signos de interrogación en sus ojos. Entonces dije: "Veamos un ejemplo".

uploading.4e448015.gif

Compila y ejecuta:

uploading.4e448015.gif

"Ja, entiendo, cuando hay múltiples parámetros, de esta manera, puedes controlar la posición de cada parámetro en la cadena", dijo emocionada después de ver este ejemplo.

"Eres muy inteligente", le dije: "El próximo logo, veamos un reloj".

Logo

sentido

-

Alinear a la izquierda dentro del ancho mínimo, no se puede usar con la marca 0

0

Si la longitud del contenido es menor que el ancho mínimo, rellénelo con 0 a la izquierda

#

Para octal y hexadecimal, agregue un 0 antes de octal y agregue 0x antes de hexadecimal

+

El resultado siempre contiene un signo + o

Espacio

Agregue un espacio antes del número positivo, agregue un signo antes del número negativo

,

Usar solo con decimal, usar y separar cada 3 dígitos

(

Si el resultado es negativo, se incluye entre paréntesis y no se muestra ningún signo

"Este reloj es fácil de entender, ¿no?", Le pregunté después de que miró el reloj con atención.

"Bueno, todavía es un poco poco intuitivo. Escribamos algunos ejemplos y echemos un vistazo", dijo tomando la computadora y comenzó a escribir el código.

uploading.4e448015.gif

Compila y ejecuta:

uploading.4e448015.gif

"Jaja, es muy intuitivo de un vistazo". Después de ejecutar el programa, comparó el código del programa, los resultados de salida y la tabla que le mostré.

Abrí la boca y estaba a punto de decir algo, y luego la escuché decir: "Está bien, he aprendido el formato de esta cadena. Puedes hablar de otras cosas".

"¿Realmente lo dominaste?", Pregunté.

"Por supuesto, ¿no he escrito el programa sin verlo?", Preguntó ella con confianza.

“Bueno, parece que realmente ha dominado el formato de cadenas.” Creo que con su inteligencia, debería haberlo dominado realmente.

"Sin embargo, hay otro punto. El formateo de esta cadena también se puede utilizar en otros lugares, como aplicar directamente el formato de cadena en la salida estándar". De repente recordé este punto de conocimiento, así que le dije.

“¿En serio? Escribe un ejemplo y verás.” Dijo, parece haber dominado el verdadero significado de aprender a programar, es decir, mirar más ejemplos y escribir más ejemplos.

"Está bien", respondí, ya que la diosa tiene órdenes, naturalmente tomé la computadora y escribí un ejemplo.

uploading.4e448015.gif

Compila y ejecuta:

uploading.4e448015.gif

"Eso es, es muy simple", dijo después de leer el ejemplo que escribí.

"Es muy simple, solo cambia println por printf. Pero si no hablo de eso, no lo sabes. Entonces, jovencito, todavía tienes mucho que aprender", pretendí decir en un tono serio.

"Oye, no te he visto con algunos ojos, en realidad tienes docenas de años" Me miró seriamente durante varios segundos y dijo.

"¿Qué quieres decir? ¿Estoy envejeciendo?" Me toqué la cara y dije.

"¿No? ¿Entonces por qué estás hablando como un anciano?", Dijo.

Solo entonces comprendí que se estaba burlando de mí por hablar pretenciosamente. No pude evitar reírme al pensar en esto. Ella realmente es la que no sufre en absoluto.

"Bueno, no hablemos de esto, aprendamos contenido nuevo" Cambié rápidamente de tema.

"¿Qué estás estudiando hoy?", Preguntó, con los ojos llenos de expectación.

"Matriz", dije.

Ella no habló, pero me miró con los ojos parpadeando, queriendo decir: "Vamos, estoy escuchando con atención".

Entonces continué: "Una matriz es una combinación de un conjunto de datos".

Ella todavía me miraba con sus ojos en movimiento sin decir una palabra, pero leí dos palabras de sus ojos: "Tonterías".

Dije una tontería, así que dejé de hablar, pero caí en la contemplación.

Es posible que se haya acostumbrado a pensar así por mí, por lo que todavía no hablaba, por lo que apareció de nuevo un cuadro congelado, pero esta vez me estaba mirando, y me estaba mirando descaradamente.

Estaba avergonzado por ella, así que dije: "Primero practicas el formateo de cadenas, pienso en cómo enseñarte matrices".

"Está bien", dijo, luego tomó la computadora portátil y escribió el código.

De esta manera, logré que el objeto que miraba de mí a ella, pero no tuviera la mente para apreciar su belleza, en ese momento estaba pensando en cómo explicarle claramente la matriz.

"Si hay 10 números enteros y ahora desea encontrar el número más pequeño entre ellos, ¿cómo escribiría el programa?" Finalmente, se me ocurrió este ejemplo de encontrar el número más pequeño para comenzar a enseñar matrices.

Dejó de escribir en el teclado, inclinó la cabeza y pensó: "Primero defina una variable y asígnele el primer número entero, y luego compare esta variable con otros números enteros sucesivamente. Si la variable es mayor que el número entero actualmente comparado Si es large, asigna el número entero actualmente comparado a la variable, y así sucesivamente, después de comparar con todos los números enteros, el valor final de la variable es el número entero más pequeño requerido ".

No esperaba que pudiera establecer claramente el algoritmo, lo que me sorprendió un poco, pero cuando lo pensé, era muy inteligente y, junto con el estudio diligente en estos días, no es sorprendente pensar en un algoritmo tan simple. . Arriba.

"Es muy bueno. Escríbelo y verás", le dije.

“No hay problema.” Dijo que había creado un nuevo archivo, y luego tocó rápidamente el teclado con las manos.

Después de unos minutos, sus pensamientos se expresaron en forma de código de programa:

uploading.4e448015.gif

Compila y ejecuta:

uploading.4e448015.gif

"Jaja, perfecto", dijo emocionada al ver los resultados de la operación.

Pero miré su mano y dije: "¿Mi mano está cansada después de escribir tanto código?"

“¿Manos?” Levantó las manos, lo miró y dijo: “Parece que le duele un poco”.

"Jaja", sonreí, "quiero decir 1,000 cuentas, tal vez tu mano sea inútil".

"¡No te rías!" Ella fingió estar enojada, luego dijo en voz baja: "Debes tener una mejor manera. Dime rápido".

"Es hora de que aparezca nuestra matriz de protagonistas hoy". Dije: "Déjame cambiar el código".

El código que cambié:

uploading.4e448015.gif

Compila y ejecuta:

uploading.4e448015.gif

"Para que no tengas que escribir sobre calambres", le dije.

"Esto es mucho más conciso", asintió con seriedad.

"Esta es la función de las matrices. Podemos formar matrices del mismo tipo de datos en orden y luego usar los datos en la matriz agregando subíndices al nombre de la matriz". Dije una teoría pura y la miré, esperando que ella me entendería, dijo.

Ella obviamente no entendió lo que estaba diciendo, inclinó la cabeza y pensó.

"¿Es el subíndice el número entre corchetes?", Preguntó después de pensar un rato.

"Sí, eso es correcto". Dije, "debido a que los datos se almacenan en orden en la matriz, el subíndice en realidad indica la posición de los datos en la matriz. Cabe señalar que el subíndice en la matriz comienza desde 0 Es decir es decir, la posición de los primeros datos es 0, la posición de los segundos datos es 1, y así sucesivamente ".

"Entonces, en el ejemplo que escribió, a = nums [0] es tomar los primeros datos en el arreglo nums, es decir, asignar 12 a la variable a, ¿no es así?" Después de escuchar mi explicación, se apresuró a decirle el significado de una línea de código en este programa.

No pude evitar lanzar miradas de aprobación, ella era muy inteligente, podía ver a través.

"Tienes razón. Parece que ya has aprendido las matrices. Entonces puedes explicar cómo escribí este programa." No creo que necesite hablar más sobre eso. Básicamente ha dominado el conocimiento de las matrices ".

"Bueno, lo intentaré, tienes que corregirme si cometes un error", dijo.

"Está bien, entonces comienza tu actuación", le prometí.

"Una matriz se puede considerar como una variable, por lo que debe declararse como una variable. La forma de declarar una matriz es: tipo de datos [] nombre de la matriz". Ella lo pensó y dijo, después de verme asentir, continuó , "Matriz Utilice la forma de 'nuevo tipo de datos {elemento1, elemento2, elemento3 ...}' que se creará. Luego, si necesita obtener un valor de la matriz, utilice la forma de 'tipo de datos [subíndice]' para obtener el número de serie especificado El valor del elemento, supongo que la responsabilidad del elemento de la matriz también es asignar el elemento con el subíndice, así: nombre de la matriz [subíndice] = un valor del mismo tipo ".

"Básicamente tienes razón", la miré con aprobación, "pero hay algunos puntos que debo agregar. 1. Hay otra forma de declaración de matriz, que consiste en poner los corchetes al final, como: nombre de matriz de tipo de datos []. 2. La inicialización de la matriz no especifica el valor específico, sino solo el tamaño de la matriz, así: nuevo tipo de datos [longitud], donde la longitud puede ser una constante o una variable, Por ejemplo: new int [3] o new [n], donde n es una variable. 3. Si la declaración y la inicialización se escriben juntas, se pueden omitir los caracteres 'nuevo tipo de datos', como: tipo de datos [] Array name = {element1, element2, element3 ...}, por lo que el ejemplo de ahora se puede escribir como: int [] nums = {12,1,23,13,34,5, -10,12,90,32 , 23, 34545, -12}. 4. Además de la matriz unidimensional mencionada aquí, también puede haber matrices multidimensionales. Las matrices multidimensionales pueden entenderse como matrices de matrices, es decir, el tipo de datos es una matriz. Por lo tanto, no necesito dar más detalles sobre matrices multidimensionales, deberías adivinar cómo se usa ".

"Bueno", lo pensó y dijo, "Supongo que la declaración de una matriz multidimensional debería verse así: tipo de datos [] [] ... nombre de la matriz, y su inicialización puede ser así: { { {} { }. ..} { {} {} ...} ...}. Por ejemplo, una matriz bidimensional debería verse así: int [] [] nums = { {1,2}, {3,4 }} o int nums [] [] = new int [2] [3]. "

"Eso es demasiado", ya no me sorprende su inteligencia, "eres tan inteligente".

"Jaja, por supuesto", sonrió feliz.

"Entonces, ahora que ha aprendido las matrices, escriba un ejemplo para divertirnos".

"Está bien, entonces tienes una pregunta y la escribiré".

"Entonces hagamos un ejemplo de clasificación. Si hay cinco estudiantes, sus elevaciones son 1 metro, 1,5 metros, 1,2 metros, 0,9 metros y 1,4 metros. Ahora necesitamos aumentar la altura de los cinco estudiantes de menor a mayor". Poner en orden."

“Está bien, quiero decir, depende de mí.” Como ella dijo, tomó la computadora y comenzó a escribir código.

Pero su mano golpeó el teclado por un momento y luego se detuvo. Parecía haber sobrestimado sus habilidades, volvió la cabeza y me miró con una cara triste, y dijo: "¿Cómo escribo así?"

"Jaja, ¿no?", Me reí de repente.

"No te rías, solo dime cómo escribir".

"Si tienes un problema, no escribas código tan pronto como aparezcas". Cogí un lápiz y papel, "Primero resolvamos nuestras ideas y luego escribamos el código".

Ella miró con extrañeza el lápiz y el papel en mi mano y no habló. Tuve que dibujar cinco personitas en el papel mientras decía: "Mira, si hay cinco estudiantes frente a ti, ¿cómo te irías? ¿ellos?"

"Primero encontraré el más corto y lo colocaré en la primera posición", dijo, señalando al villano en el papel, "y luego colocaré el segundo más corto en la segunda posición, y así sucesivamente, hasta que se arregle la posición". .. "

"Muy bien, déjame traducirlo para ti. Primero buscas hacia atrás desde la primera posición para encontrar el más pequeño, luego lo mueves a la primera posición, y luego buscas hacia atrás desde la segunda posición para encontrar El más pequeño se coloca en el segundo posición, y así sucesivamente, hasta que se clasifique el orden ".

"Eso es", dijo, y luego de repente se echó a reír después de pensar en ello: "Jaja, sé cómo escribir programas".

"Entonces empieza a escribir".

El programa que ella escribió:

uploading.4e448015.gif

Compila y ejecuta:

uploading.4e448015.gif

“Jaja, he resuelto un problema tan difícil, ¿sigo siendo bastante bueno?” Después de que el programa se ejecutó correctamente, sonrió y me dijo.

"Bueno, eres la mejor estudiante que he tomado", le respondí con una sonrisa.

"Jaja, ¿es fácil traer a un estudiante excelente como yo?"

"en efecto."

"Sin embargo, no importa qué tan buen estudiante tenga hambre, no puede aprender bien, así que detengámonos aquí hoy".

"En este caso, ¿por qué no te invito a una barbacoa?"

“Está bien, está bien.” Casi se levantó de un salto emocionada.

 

 

 

 

 

 

Supongo que te gusta

Origin blog.csdn.net/m0_46455711/article/details/105676283
Recomendado
Clasificación