Red de conocimiento informático - Conocimiento del nombre de dominio - Me siento muy confundido acerca de cómo aprender bien el lenguaje C....

Me siento muy confundido acerca de cómo aprender bien el lenguaje C....

La "Programación en lenguaje C" es muy rica en contenido. Según nuestro programa de enseñanza actual, el contenido principal de la enseñanza son conocimientos básicos, cuatro diseños estructurales de programas, aplicación de funciones y matrices, y algunos algoritmos simples. Al estudiar, los estudiantes deben concentrarse en dominar estas partes del contenido y dominarlas mediante ejercicios (ejercicios y depuración, etc.). Por supuesto, cuando aprende el lenguaje C por primera vez, puede encontrar algunos problemas que no comprende o que las expresiones son diferentes de las que solía usar para aprender matemáticas (como operadores, etc.). y haz más preguntas sobre cosas que no entiendes, reúne el coraje para aprender. Después de aprender los conocimientos en los siguientes capítulos, los problemas anteriores se resolverán fácilmente. Siento que este aspecto es el que más falta en la mayoría de nosotros. ¡La mayoría de ellos lo son porque no aprendieron bien al principio! Ríndete cuando encuentres dificultades. Una vez, cuando hablé con muchos estudiantes sobre sus problemas, las respuestas fueron que no entendían, no querían escuchar y se dieron por vencidos, ¿asististe a esta clase? La respuesta es no. Ni siquiera he escuchado la clase. Según esto, si no aprendes bien, ¿cómo puedes hablar de aprender bien?

Al aprender el lenguaje C, recuerde siempre "la luz está al frente" y "es difícil comprar y mirar hacia atrás" es una forma importante de aprender conocimientos. Significa que aprender conocimientos es lo más importante. La mejor manera es aprender bien los siguientes conocimientos sin olvidar volver atrás para aclarar los problemas restantes y profundizar la comprensión de los conocimientos anteriores. Esto es lo más difícil de hacer para nuestros estudiantes. pero es el más importante. Por ejemplo: la idea más típica en lenguaje C es la idea de programación estructurada, no importa qué tipo de libro de texto, este método se enfatiza al principio. Es posible que no pueda comprenderlo completamente en este momento, pero cuando lo haga. aprenda esta función y luego regrese y experimente cuidadosamente, no será tan difícil aprender y comprender. Aprender el lenguaje C significa pasar por varias iteraciones antes de poder acumular el conocimiento del lenguaje C que debes dominar.

Entonces, ¿cómo aprendemos a programar en C?

1. Aprenda los operadores y el orden de las operaciones del lenguaje C

Esta es la base para aprender bien la "programación en lenguaje C". Las operaciones del lenguaje C son muy flexibles, las funciones son muy ricas y los tipos de operaciones. son mucho más que otros lenguajes de programación. Otros lenguajes de programación son relativamente concisos en términos de expresiones, como la autosuma, la autoresta, la operación de coma y la operación ternaria, lo que hace que las expresiones sean más concisas. Sin embargo, los principiantes a menudo encuentran que estas expresiones son difíciles de entender. es que la operación La comprensión de los símbolos y el orden de las operaciones es incompleta e incompleta. Cuando muchas operaciones diferentes forman una expresión, es decir, cuando hay varios operadores en una expresión, el orden de los operadores y las reglas de combinación de operadores son muy importantes. En el aprendizaje, siempre que podamos clasificarlos razonablemente y descubrir la diferencia entre ellos y las operaciones que hemos aprendido en matemáticas, no es difícil recordar algunos de estos operadores en el futuro después de comprenderlos. son fáciles de usar y algunos de ellos pueden abandonarse temporalmente y recordarse nuevamente cuando sea necesario.

En primer lugar, debemos dejar claro que los operadores se clasifican según diferentes prioridades. Los operadores en "Programación en lenguaje C" se pueden dividir en 15 prioridades, de mayor a menor. a excepción de los niveles 2, 3 y 14, que son combinaciones de derecha a izquierda, los demás son combinaciones de izquierda a derecha, lo que determina el orden de operaciones de los operadores del mismo nivel. A continuación usamos varios ejemplos para ilustrar:

(1) Hay 3 operadores en esta expresión 5*8/410, que son operadores del mismo nivel, y el orden de las operaciones se combina de izquierda a derecha. Entonces el primer resultado calculado es 5 * 8 = 40, luego dividido por 4, el resultado es 10, y finalmente la operación (resto), por lo que el resultado final de la expresión es 1010 = 0;

. (2) a = 3; b = 5; c = a* b; d =a * b;

Para c = a*b, según el orden indicado en la tabla, ejecute primero, luego *, así que ejecute Después de a, el valor de a es 4.

Debido a que es la primera operación, el valor de a es 4, por lo que el valor de C es 4*5=20 en lugar de 3*5=15 y para d =a *b, porque a *b se divide entre 4; el resultado es 10. *b, debido a que a es una posoperación, el valor de a es 4 y participa en la operación, por lo que el valor de d sigue siendo 20. Después de que a participa en la operación, su valor aumenta en 1 y el valor es 5. Después de ejecutar este ejemplo, el valor de a es 5, el valor de b es 5, el valor de c es 20 y el valor de d también es 20;

(3) (a = 3, b = 5, b = a y c = b* 5)

El "," en el ejemplo es una operación de combinación de coma. La ecuación anterior se llama expresión de coma. el resultado de la última expresión El valor es el resultado de la expresión de coma, por lo que el resultado de la expresión de coma anterior es 40, el valor de a es 3, el valor de b es 8 y el valor de c es 40.

(4) a = 5; b = 6; c = a gt; b?a: b;

agt; b?a: b en el ejemplo es una operación trinocular. , su función es realizar primero la parte agt; b de la operación de relación. Si el resultado es verdadero, entonces tome el valor de a después del signo de interrogación; de lo contrario, tome el valor de b después de los dos puntos, por lo que el valor de c debería ser. ser 6. En aplicaciones simples, esta operación se puede utilizar en lugar de declaraciones if...else....

II.Aprende las cuatro estructuras de programas del lenguaje C

(1) Estructura secuencial

La programación de estructura secuencial es la más sencilla, siempre que la sigas. El problema Simplemente escriba las declaraciones correspondientes en orden. Su orden de ejecución es de arriba hacia abajo y secuencial.

Por ejemplo; a=3, b=5, ahora intercambiando los valores de a y b, este problema es como intercambiar dos tazas de agua, de las cuales la tercera taza es por supuesto agua. Si la tercera copa es c, entonces el programa correcto es: c = a; a = b = c; c = a; b = c; el resultado es a = b = c = 5, esto no logrará el propósito esperado y también es el error más común que cometen los principiantes. La estructura secuencial se puede utilizar de forma independiente para formar un programa simple y completo. Un programa común de entrada, cálculo y salida de tres pasos es la estructura secuencial. Por ejemplo, para calcular el área de un círculo, la secuencia de declaraciones de. el programa consiste en ingresar el radio r del círculo y calcular s = 3, pero la mayoría de las veces, las estructuras secuenciales se utilizan como parte del programa y, junto con otras estructuras, forman programas complejos, como las estructuras de rama. Un programa complejo, como declaraciones compuestas en estructuras de rama, cuerpos de bucle en estructuras de bucle, etc.

(2) Rama

Los programas secuenciales pueden resolver problemas de cálculo y salida, pero no pueden emitir juicios ni elecciones. Para problemas que requieren primero juicio y luego elección, se debe utilizar una estructura de ramificación. La ejecución de la estructura de rama selecciona la ruta de ejecución en función de ciertas condiciones, en lugar de seguir estrictamente el orden físico de las declaraciones. La clave del método de programación de estructura de bifurcación es construir condiciones de bifurcación apropiadas, analizar el flujo del programa y seleccionar declaraciones de bifurcación apropiadas en función de diferentes flujos de programa. La estructura de rama es adecuada para cálculos con juicios condicionales, como comparaciones lógicas o comparaciones relacionales. El diseño de dichos programas a menudo requiere dibujar primero el diagrama de flujo del programa y luego escribir el programa fuente de acuerdo con el flujo del programa. Abrir el lenguaje para hacer el problema simple y fácil de entender. Un diagrama de flujo de un programa es un diagrama de flujo de ejecución de un programa elaborado en base al análisis de resolución de problemas.

No se deje confundir por el anidamiento de ramas cuando aprenda la estructura de las ramas, siempre que dibuje el diagrama de flujo correctamente y aclare las funciones que debe realizar cada rama, la estructura anidada no es difícil. El anidamiento no es más que ramas y declaraciones que contienen ramas. No es un conocimiento nuevo, siempre que comprenda claramente las ramas dobles, el anidamiento de ramas no es difícil. A continuación presento varias estructuras de ramas básicas.

①if (condición)

{

Rama

}

Ramas en esta estructura de ramas El cuerpo puede ser una declaración, en cuyo caso "{ }" se puede omitir, o pueden ser varias declaraciones, es decir, una declaración compuesta. Tiene dos rutas de bifurcación para elegir. Una es ejecutar el cuerpo de la bifurcación cuando la condición es verdadera; de lo contrario, el cuerpo de la bifurcación se omite y no se ejecuta. Por ejemplo: para calcular el valor absoluto de x, de acuerdo con la definición de valor absoluto, sabemos que cuando xgt;=0, su valor absoluto permanece sin cambios, y cuando xlt;0, su valor absoluto es el signo inverso de x. Por tanto, el segmento del programa es: if (xlt; 0) x=-x

②if (condición)

{branch1}

else

{branch2 }

Esta es una estructura de rama típica. Si la condición es verdadera, se ejecuta la rama 1; de lo contrario, se ejecuta la rama 2. La rama 1 y la rama 2 pueden ser una o más declaraciones. Por ejemplo, encuentre las raíces de ax^2 bx c=0

Análisis: Porque cuando b^2-4acgt;=0, la ecuación tiene dos raíces reales, de lo contrario (b^2-4aclt;0 ) Hay dos raíces plurales unidas con dos dedos. El segmento del programa es el siguiente:

d=b*b-4*a*c;

if(dgt;=0)

{x1= (-b sqrt(d))/2a;

x1=(-b-sqrt(d))/2a;

printf("x1=8.4f, x2=8.4 f\n ", x1, x2);

}

else

{r=-b/(2*a);

i =sqrt(-d)/(2*a);

printf("x1=8.4f 8.4fi\n "r,i);

printf(" x2=8.4 f-8.4fi\n "r, i)

}

3) Declaración de rama anidada: El formato de la declaración es:

if(condición 1) {rama 1};

si no(condición 2) {rama 2}

si no(condición 3) {rama 3}

.. .. ..

else if(condición n) {branch n}

else {branch n 1}

Las declaraciones de rama anidadas pueden resolver el problema de múltiples entradas y salidas Problema, pero si hay más de 3 nidos, la estructura de la declaración se vuelve muy complicada, lo cual es extremadamente inconveniente para leer y comprender el programa. Se recomienda que el anidamiento sea dentro de 3. Si hay más de 3. , puede utilizar la siguiente declaración.

④Switch switch instrucción: esta declaración también es una declaración de selección de múltiples ramas. El bloque que se ejecuta depende de la configuración del interruptor, es decir, cómo el valor de la expresión coincide con la expresión constante. A diferencia de la declaración if... else, todas sus ramas están una al lado de la otra. Al ejecutar el programa, la búsqueda comienza desde la primera rama. Si hay una coincidencia, se ejecutan los siguientes bloques, luego se ejecuta el programa y luego. se ejecuta la primera rama. Si hay una coincidencia, el programa ejecutará bloques de programa posteriores y luego ejecutará la segunda rama, la tercera rama... hasta que encuentre una declaración de interrupción, si no coincide, encontrará si la siguiente rama coincide; Al aplicar esta declaración, se debe prestar especial atención al establecimiento razonable de las condiciones de conmutación y a la aplicación razonable de las declaraciones de desconexión.

(3) Estructura de bucle:

La estructura de bucle puede reducir la carga de trabajo de la escritura repetida del programa fuente y se utiliza para describir el problema de ejecutar repetidamente un determinado algoritmo. La forma más eficaz de programación es la estructura del programa que aprovecha los puntos fuertes de la computadora. El lenguaje C proporciona cuatro tipos de bucles, a saber, goto loop, while loop, do- while y el lenguaje C proporciona cuatro tipos de bucles, a saber, goto loop. bucle while, bucle do- while y bucle for. Estos cuatro tipos de bucles se pueden utilizar para solucionar el mismo problema. En general, pueden reemplazarse entre sí. Sin embargo, generalmente no se recomienda el uso de bucles goto porque cambiar a la fuerza el orden del programa a menudo provocará errores imprevistos. Durante el aprendizaje, aprendemos principalmente tres tipos de bucles: while, do... while y for. El objetivo de aprender las tres estructuras de bucles de uso común es aclarar sus similitudes y diferencias para que puedan usarse en diferentes situaciones. Es necesario comprender el formato y el orden de ejecución de estos tres bucles después de tener una comprensión profunda del flujo. gráfico de cada bucle, cómo usar sustituciones, como usar el bucle while como ejemplo, y reescribir un programa usando declaraciones for para comprender mejor su función. Se debe prestar especial atención al hecho de que el cuerpo del bucle debe contener declaraciones que tienden a terminar (es decir, cambios en el valor de la variable del bucle), de lo contrario puede convertirse en un bucle infinito, que es un error común cometido por los principiantes.

Después de conocer estos tres tipos de bucles, debes aclarar sus similitudes y diferencias: en los bucles while y do... while, la operación de inicialización de las variables del bucle debe realizarse antes del cuerpo del bucle, mientras que el El bucle for generalmente se realiza en la instrucción 1; tanto el bucle while como el for primero juzgan la expresión y luego ejecutan el cuerpo del bucle, y en el bucle do... while, la operación de inicialización de la variable del bucle debe realizarse antes del bucle. cuerpo, mientras que en el bucle do... while, la inicialización de las variables del bucle debe realizarse antes del cuerpo del bucle. ... El bucle while ejecuta primero el cuerpo del bucle y luego evalúa la expresión. En otras palabras, el cuerpo del bucle do... while se ejecuta al menos una vez, mientras que los bucles while y for no pueden ejecutarse una vez. También debe tenerse en cuenta que estos tres tipos de bucles pueden usar la instrucción break para saltar del bucle y la instrucción continue para finalizar el bucle, mientras que los bucles goto e if no se pueden controlar mediante instrucciones break y continue.

Las estructuras secuenciales, las estructuras de rama y las estructuras de bucle no están aisladas entre sí. Puede haber estructuras de rama y estructuras secuenciales en un bucle, y estructuras de bucle y estructuras secuenciales en una rama, de hecho, no importa; de la estructura, podemos tratarlos aproximadamente como una declaración. En el proceso de programación real, estas tres estructuras a menudo se combinan para implementar varios algoritmos y diseñar los programas correspondientes. Sin embargo, si desea programar para resolver un problema más grande, el programa escrito suele ser muy largo y tiene muchas estructuras repetitivas, lo que resulta en The. la legibilidad es pobre y difícil de entender. La forma de resolver este problema es diseñar el programa C en una estructura modular.

(4) Estructura modular del programa

La estructura modular del programa del lenguaje C se implementa mediante funciones, es decir, el programa C complejo se divide en varios módulos y cada módulo está escrito. como una función C, y luego la función principal llama a la función y la subfunción llama a la función para realizar la escritura del programa C de problemas a gran escala, por lo que la gente suele decir: programa C = subfunción de la función principal. Debido a esto, se debe prestar especial atención a la comprensión y aplicación de definiciones de funciones, llamadas, valores de retorno, etc., y se deben consolidar mediante la depuración.

Tres. Domina algunos algoritmos simples

De hecho, gran parte del trabajo de programación es analizar el problema, encontrar una manera de resolverlo y luego escribir el código en el lenguaje de programación correspondiente. Esto requiere dominar los algoritmos. Según nuestro programa de estudios de "Programación en lenguaje C", solo debemos dominar algunos algoritmos simples. Después de dominar estos algoritmos básicos, será fácil completar el análisis del problema.

Como el método de intercambio de dos números, el método de comparación de tres números, el método de clasificación por selección y el método de clasificación por burbujas, esto requiere que tengamos claro el significado intrínseco de estos algoritmos. Entre ellos, la dificultad del método de clasificación por selección y la clasificación por burbujas. El método es un poco grande, pero siempre que comprenda el proceso específico de clasificación, no es difícil comprender el código. Por ejemplo, el método de selección se utiliza para ordenar 10 números enteros diferentes (de pequeño a grande). La idea de ordenar mediante el método de selección es: hay 10 elementos a [1] ~ a [10] y a [). 1] y comparación a[2] ~a[10], si a[1] es menor que a[2]~a[10], no se realiza ningún intercambio, es decir, no se realiza ninguna operación si a[1] está en a; [2]~a[10] ] es más pequeño que el más grande (se supone que es a[i]), se intercambia con a[1] y el más pequeño entre los 10 se almacena en a[1]. En la segunda ronda, se compara a [2] con a [3] ~ a [10], y el a [i] más pequeño entre los 9 números restantes se intercambia con a [2]. a[2] El segundo número más pequeño entre los números; y así sucesivamente, *** ha realizado 9 rondas de comparaciones, y a[1] a a[10] se han almacenado en orden de menor a mayor. Es decir, en cada ronda se debe encontrar el más pequeño de los números restantes. El código es el siguiente:

for(i=1; ilt; =9; i )

.

for( j=i 1;jlt;=10;j)

if(a[i]gt;a[j]

{temp=a[i] ;

a[i] =a[j];

a[j]=temp;

}

Conclusión: Cuándo Entendemos lo anterior En este sentido, siempre que los estudiantes puedan superar su miedo a las dificultades y su disgusto por aprender, escuchar atentamente en clase y practicar y depurar con cuidado, el lenguaje C en realidad no es difícil de aprender.