Cómo aprender 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 los conocimientos básicos, la programación de cuatro estructuras, la 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, es posible que encuentre algunas preguntas que no comprenda o que las expresiones sean diferentes de las que solía usar para aprender matemáticas (como operadores, etc.). Y pregunta más y piensa más en las cosas que no entiendes, reúne el coraje para aprender. Después de aprender los conocimientos de este capítulo, los problemas anteriores se resolverán. Siento que este aspecto es lo que a la mayoría de nuestros estudiantes les falta. ¡La mayoría de ellos se debe a que 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, ¿cómo puedes hablar de aprender bien?
Al aprender el lenguaje C, siempre tenga en cuenta "la luz está delante" y "es difícil comprar mucho dinero y mirar hacia atrás". es una forma importante de aprender conocimientos, es decir, la forma más importante de aprender conocimientos es aprender bien los siguientes conocimientos sin olvidar retroceder y aclarar los problemas restantes y profundizar la comprensión del conocimiento anterior. lo más difícil de hacer para nuestros estudiantes, pero es lo 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. Si aprende esta función, puede mirar hacia atrás si la comprende con atención, revisa el pasado y aprende lo nuevo, no será tan difícil de entender. 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 muy amplios. superan a los de 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 Comprensión incompleta e incompleta de los símbolos y el orden de las operaciones. 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 para combinarlos 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 estos operadores. Algunos operadores los recordaremos en el futuro. 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. 1 al 15. Excepto 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) 5*8/4%10 Hay 3 operadores en esta expresión, que son operadores del mismo nivel, y el orden de las operaciones es de izquierda a Bien combinado, 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 10%10 = 0;
(2)a = 3; b = 5; c =++ a* b; d =a + +* b; a la tabla En el orden, ++ se ejecuta primero, luego *, por lo que después de ejecutar ++ a, el valor de a es 4. Dado que ++ es la primera operación, el valor de a es 4 y el valor calculado de C es 4* 5=20 en lugar de 3*5=15 y para d=a+++ *b, dado que a + + *b se divide entre 4, el resultado es 10. *b, debido a que a ++ es una postoperación, el valor de a es 4 y participa en la operación, por lo que el valor de d sigue siendo 20, y a participa en la operación, su valor se incrementa en 1, y su 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, c = b* 5)
En el ejemplo, "," es una palabra del ejemplo. "," es una operación de combinación de coma. La ecuación anterior se llama expresión de coma. Se combina de izquierda a derecha. El valor del resultado de la última expresión es el resultado de la expresión de coma. 40, a El valor es 3, el valor de b es 8 y el valor de c es 40.
(4) a = 5;b = 6;c = a >b?a:b;
a>b?a:b en el ejemplo es una operación ternaria, Su función es realizar primero la operación relacional a>b. 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 debe ser 6. En aplicaciones simples, esta operación se puede utilizar en lugar de declaraciones if...else....
II.Aprende las cuatro estructuras de programa del lenguaje C
(1) Estructura secuencial
La programación de estructura secuencial es la más sencilla, siempre y cuando sigas el orden. de las preguntas Simplemente escriba la declaración correspondiente, y su orden de ejecución es de arriba a abajo.
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 procedimiento correcto es: c = a; a = b = c; ; c = a; b = c; el resultado es a = b = c = 5, lo que no logra el propósito esperado y también es el error más común que cometen los principiantes. La estructura secuencial puede formar de forma independiente 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 del programa es. para ingresar el radio r del círculo y calcular s=3. Sin embargo, en la mayoría de los casos, la estructura secuencial se usa como parte del programa y, junto con otras estructuras, forma un programa complejo, como una estructura de rama. Un programa complejo, como una estructura de rama en una declaración compuesta, una estructura de bucle en un cuerpo 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 juicio primero y luego selección, se puede 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 la secuencia física de 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. Idioma. Ven y haz que el problema sea 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
}
Rama en esta estructura de rama 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 x>=0, su valor absoluto permanece sin cambios, y cuando x<0, su valor absoluto es el recíproco de x. Por lo tanto, el segmento del programa es: if(x<0) x=-x
②if(condition)
{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: Encuentra las raíces de ax^2+bx+c=0
Análisis: Porque cuando b^2-4ac>=0, la ecuación tiene dos raíces reales, de lo contrario (b^2-4ac < 0) Hay dos raíces plurales unidas con dos dedos. El segmento del programa es el siguiente:
d=b*b-4*a*c
if(d>=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.4f\n");
printf("x1 =%8.4f+%8.4f\n 8.4f+%8.4fi\n "r, i
printf("x2=%8.4f-%8.4fi\n); "r,i)
printf("x2=%8.4f-%8.4fi\n "r,i)
p>}
3) Declaración de rama anidada: el formato de la declaración es:
if(condición 1) {rama 1};
else if(condición 2) {rama 2}
else if(condición 3) {rama 3}
......
else if(condición n) {rama n}
else if( condición 3) {branch 3}
else {branch n +1}
El anidamiento de declaraciones de rama puede resolver el problema de múltiples entradas y múltiples salidas, pero después de anidar más de 3 A veces, la estructura de la declaración se vuelve muy complicada, lo cual es extremadamente inconveniente al leer y comprender el programa. Por lo tanto, se recomienda anidar menos de 3 veces. Se pueden anidar más de 3 veces. Utilice las siguientes declaraciones.
④Switch switch declaració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. es if... .else declaración, todas sus ramas están una al lado de la otra. Cuando se ejecuta el programa, comienza a buscar desde la primera rama. Si coincide, sus bloques posteriores se ejecutan. Todas las ramas ejecutadas a continuación están una al lado de la otra. Se ejecuta el primero. Al bifurcar, si hay una coincidencia, se ejecuta el siguiente bloque. Ejecute los bloques de programa posteriores y luego ejecute los bloques de programa de la segunda rama, la tercera rama ... hasta que encuentre la declaración de interrupción, si no hay coincidencia, verifique 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 la ejecución repetida de un determinado algoritmo. Como es la forma más efectiva de programación que aprovecha las fortalezas de la computadora, el lenguaje C proporciona cuatro tipos de bucles, a saber, bucle goto, bucle while, bucle do- while y el lenguaje C proporciona cuatro tipos de bucles, a saber, bucle goto. , 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. Es decir, el cuerpo del bucle do... while se ejecuta al menos una vez, mientras que los bucles while y for no se pueden ejecutar en absoluto. 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 ramas y estructuras secuenciales en los bucles, y también puede haber bucles y estructuras secuenciales en las ramas. tipo de estructura, podemos generalizar Piense en ellos como una especie de 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 del gran problema, por eso la gente suele decir: programa C = función principal + subfunción. 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.
3. Domina algunos algoritmos simples. 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 una comparación a [2] ~a [10], si a [1] es menor que a [2] ~ a [10], no se realizará ningún intercambio, es decir, no se realizará ninguna operación si a [; en a[2]~a[10] 1] es menor que a[1], entonces el más grande (se supone que es a) 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 más pequeño de los 9 números restantes se intercambia con a [2]. En este momento, a [2] almacena el décimo número. Los dos números más pequeños; y así sucesivamente, *** realizó 9 rondas de comparación, de [1] a [10] se almacenaron en orden de pequeño a grande. 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;i<=9;i++)
.for( j=i+1;j<=10;j++)
if(a>a[j]
{temp=a;
a=a[j];