La Red de Conocimientos Pedagógicos - Currículum vitae - ¿Cómo aprender el lenguaje C?

¿Cómo aprender el lenguaje C?

Una breve discusión sobre cómo aprender el lenguaje C

Soy programador de Windows y el lenguaje que uso es c. Sé un poco sobre otros lenguajes, pero no soy bueno en eso. Quizás lo primero que deben hacer los principiantes sea elegir un lenguaje de programación. Por supuesto, esto no es de lo que voy a hablar hoy. Cada idioma tiene sus propias áreas y niveles de especialización. Por supuesto, no estoy relativamente familiarizado con otros lenguajes que no sean C y no hablaré ningún otro lenguaje desde el punto de vista de C. Bueno, al principio, el lenguaje C es uno de los primeros lenguajes informáticos. nació originalmente para Proporcionar un lenguaje de trabajo basado en sistemas UNIX. Sin embargo, cada vez más personas descubren sus ventajas y potencial. c en sí ya está cerca del fondo. Adecuado para desarrollar software de sistemas e incluso sistemas operativos. Personalmente creo que es un lenguaje intermedio entre el lenguaje de alto nivel y el lenguaje ensamblador. El lenguaje C es un lenguaje estructurado (creo que se refiere principalmente a su estructura de control, como if-else while for, etc.) La programación en C ya ha mencionado "de arriba hacia abajo, paso a paso". Las funciones son módulos de funciones atómicas. La modularidad es muy importante para programas grandes. Hay un dicho que dice que "los programas de alta calidad comienzan con la discusión y la comunicación con las personas, y luego con la eficiencia de la ejecución". Por supuesto, personalmente creo que cualquier escritor de programas debería desarrollar una forma de pensar específica y utilizar la forma de pensar del programa para pensar en la implementación del programa. La premisa es tener una comprensión suficiente de la tecnología informática subyacente. De lo contrario, creo que sería difícil incluso estudiar, y todo sería cuestión de pensar. Según los estándares, C debería ser considerado miembro del campamento de idiomas de alto nivel. Sin embargo, muchos programadores que tienen experiencia en el desarrollo del lenguaje C suelen llamar cariñosamente a C un lenguaje informático intermedio entre los lenguajes de bajo nivel y los lenguajes de alto nivel. Por supuesto, no es porque C sea peor que un lenguaje de alto nivel, sino porque C tiene tanto la estructura y la comprensibilidad de un lenguaje de alto nivel como la alta eficiencia de un lenguaje de bajo nivel. Al mismo tiempo, la portabilidad de C también es muy buena. Debe saber que cuanto más cerca del hardware, más dependiente es el lenguaje subyacente del entorno del hardware. Esto es lo que llamamos dependencia del dispositivo. c es muy bueno. Dicho esto, estamos analizando C desde otro ángulo. Por supuesto, cada lenguaje tiene sus propias ventajas y desventajas, y lo mismo ocurre con C. Por ejemplo, desde la perspectiva de los lenguajes de alto nivel y las tecnologías de alto nivel, la mayor desventaja de C es la separación de datos y algoritmos. Por ejemplo, para un programa con miles o incluso decenas de miles de líneas de código, si modifico los datos, por ejemplo, si agrego un campo a la estructura, es posible que deba cambiar todo mi programa, lo que reduce en gran medida la capacidad del programa. La complejidad. La reutilización extiende enormemente el ciclo de desarrollo. Pero desde una perspectiva de bajo nivel, esta también es la ventaja de c. Personalmente creo que al resolver e implementar un pequeño problema, puedes escribir un módulo general para procesar diferentes datos. Por supuesto, por ejemplo, podemos escribir algunos algoritmos de uso común basados ​​​​en la estructura de datos. Mientras desarrollamos, podemos insertar directamente módulos preescritos en nuestros programas. ¿No acorta esto también considerablemente el ciclo de desarrollo? Los principiantes pueden escribir una biblioteca personalizada según sus propias necesidades. Bueno, entendí mal algunas cosas. Señale que la comunicación es muy importante, siempre y cuando mantenga la mente tranquila. A continuación, hablaré sobre el enfoque de esta pregunta, que es cómo aprender el lenguaje C. Esto es para principiantes.

Parte temática:

Algunas personas pueden decir: Todavía necesito que enseñes y aprendas. ¿Quién no ha ido a la escuela? De hecho, lo que quiero decir hoy es simplemente analizar y explicar las dificultades en el proceso de aprendizaje del lenguaje C desde la perspectiva de una persona experimentada. Por supuesto, también explicaré cuestiones más específicas (opiniones personales). He estado enfatizando mi opinión personal. Quiero que todos comprendan que puede resultar difícil para todos llegar a una opinión unificada sobre el mismo tema. Espero que seas educado al criticar.

Qué libros deben leer los principiantes:

Antes de aprender el lenguaje C, primero debes elegir un libro de texto. Para los principiantes, personalmente no recomiendo leer libros electrónicos. Es mejor comprar libros en papel para estudiar. Por ejemplo, la famosa "Programación C" es muy buena, especialmente la segunda edición. También lo he leído y es más adecuado para principiantes nacionales. El libro proporciona una explicación completa y sistemática de la estructura gramatical de C. Los elementos del lenguaje que componen C incluyen: tipos de datos, operadores admitidos, identificadores (nombres dados por los programadores de acuerdo con reglas de nomenclatura, utilizados para nombres de variables, nombres de funciones, macros ). Nombre, etc.

), palabras clave (palabras utilizadas por el sistema de compilación para implementar funciones internas de C, como ir a, romper, etc.), etc. Después de leer este libro, básicamente podrá escribir algunos pequeños programas simples, por supuesto programas en DOS. Si desea aprender más sobre C, puede leer el libro "C Traps and Pitfalls". El autor que escribió este libro trabaja en Bell. Es muy competente en C y debería ser considerado un maestro. Si no desea profundizar en C por el momento, no hay problema, porque puede usar C como herramienta de programación en este momento. Todo lo que tienes que hacer es escribir más código para familiarizarte con el lenguaje C. La experiencia importa. "La experiencia es la única manera de comprobar la verdad." Por supuesto, no se habla de ello en papel. Si tiene demasiada experiencia en desarrollo, sabrá que el código que originalmente imaginó en papel o computadora se hará realidad y, eventualmente, encontrará que muchos lugares no son razonables y que antes no podía imaginar. En el proceso de aprender C como principiante, por ejemplo, leerá "Programación en C" para aprender C y deberá completar los ejercicios después de estudiar cada capítulo. Esto es para probar lo que ha aprendido y ver qué tan bien puede aplicarlo. Especialmente el tema de la programación es muy interesante. Si no entiende algo, puede volver a la explicación del libro. Si no puedes explicarlo o aún no lo entiendes, puedes preguntarle a otros y comunicarte con ellos. bbs, QQ o Google hasta que lo averigües. Cuando finalmente resolviste el problema, apuesto a que estabas emocionado o más emocionado. En este momento, el conocimiento ya está en tu cerebro.

Aquí le recomiendo algunos buenos libros sobre el lenguaje C:

Estándares de programación C

Enciclopedia del lenguaje C, cuarta edición (Personalmente, me siento bien al respecto, allí también se mencionan cosas en el estándar c)

c y punteros

Lenguaje de programación C (clásico)

Si desea leer libros electrónicos, lo anterior Los libros son fáciles de encontrar en Google.

Comprensión inicial del lenguaje C;

Para los principiantes, habrá demasiadas preguntas porque su conocimiento es demasiado pequeño. Ahora te explicaré algunas cosas relacionadas con C. El propósito es darle una dirección clara y organizar un plan de estudio. Profesionalmente somos o seremos programadores, y los programadores ciertamente desarrollan programas. Permítanme explicarles la terminología de desarrollo de software:

C, C++, ASM, BASIC y Java son todos lenguajes informáticos. Hay muchos lenguajes informáticos, por lo que no entraré en ellos.

Visual C, Visual Basic, un entorno de desarrollo desarrollado por Microsoft. El entorno de desarrollo incluye: compilador y funciones de biblioteca (cada compilador de lenguaje C admite bibliotecas estándar y también expandirá sus propias bibliotecas, por lo que muchos programadores que han implementado funciones de biblioteca tienen que cambiar a diferentes entornos de desarrollo después de comparar, si no No lo use al principio, encontrará muchos problemas). Algunas plantillas de recursos, etc. La visión es visión, seguida del lenguaje. Visual C admite los lenguajes C y C y determina qué núcleo del compilador usar según la extensión del archivo.

¿Qué son "orientado a objetos" y "orientado a procesos"? De hecho, son dos ideas de programación completamente diferentes. C es un lenguaje orientado a procedimientos, mientras que C es un lenguaje orientado a objetos. Existe algo llamado "clase" en los lenguajes orientados a objetos. No existe tal cosa en el lenguaje C. Un objeto es una instancia derivada de una clase y una clase es como una plantilla.

¿Qué es el SDK? SDK es un kit de desarrollo de software. Se refiere a una amplia gama. En términos generales, le pertenece todo lo que pueda estar relacionado con el proceso de desarrollo de software, como archivos de biblioteca, materiales de referencia y funciones de interfaz.

DDK es un kit de desarrollo de controladores de dispositivos.

Turbo C: Este es un exquisito compilador de lenguaje C.

Teóricamente cualquier lenguaje puede ejecutarse en cualquier sistema operativo, siempre que el sistema operativo lo soporte, que es lo que llamamos interfaz de programación de aplicaciones, como por ejemplo ventana API (interfaz de programación de aplicaciones). De hecho, las funciones de interfaz definidas por Microsoft se utilizan para implementar algunas funciones internas de Windows.

Los términos de descripción de algunos objetos son diferentes en diferentes plataformas. Por ejemplo, "llamar" en Windows a menudo se llama "llamar" y "regresar" se llama "regresar".

¿Qué es un algoritmo? Primero, sólo necesita saber que un algoritmo es en realidad un fragmento de código que opera con datos específicos. También puedes considerarlo como un término general para los métodos y pasos seguidos para resolver un problema. Para los programas básicos de C, en realidad se componen de datos y algoritmos.

¿Qué es la "estructura de datos"? Si desea una explicación sistemática, necesita un libro sobre "Estructura de datos". En pocas palabras, es la forma en que los datos que el programa procesará se almacenan y organizan en la memoria, que se divide en estructura física y estructura lógica. La estructura lógica es la imagen cerebral que obtenemos después de la abstracción.

¿Qué es una "biblioteca de funciones"? Se almacenan en forma de archivos, que son un conjunto de funciones predefinidas que nuestros programas pueden llamar directamente. Por supuesto, la premisa es incluir su archivo de encabezado (la declaración prototipo de la función de biblioteca). Estas funciones están compuestas. Durante el proceso de conexión estática. También hay una biblioteca en Windows llamada biblioteca de vínculos dinámicos (DLL).

GUI: Es decir, “interfaz gráfica de usuario”, que es la que vemos en Windows. Existe en el área de visualización en forma de barras de menú, barras de desplazamiento y ventanas.

GDI: Interfaz de dispositivo gráfico Desde la perspectiva de un programador, GDI en realidad se compone de cientos de funciones, formularios de datos y algunas estructuras de datos relacionadas.

Todo el proceso de aprendizaje del lenguaje C:

Piensa detenidamente. De hecho, para aprender el lenguaje C, primero debe aprender la sintaxis básica del lenguaje C, es decir, aprender los componentes del lenguaje C. Aprende parte por parte. Los conocimientos deben consolidarse poco a poco. Supongo que aprendes el lenguaje C leyendo "Programación en C". Creo que primero deberías echar un vistazo más de cerca a la programación en C. De esta manera, debería poder tener una comprensión general clara de todo el libro y de la estructura general del lenguaje C. No creas que aprender es solo leer un libro. Deberías aprender a tomar notas. En el proceso de tomar notas, en realidad estás aprendiendo, desde analizar, comprender, resumir conocimientos hasta escribirlos según tu propia forma de pensar. Todo el proceso consiste en abstraer el conocimiento del libro en su propia cabeza. Personalmente, siento que el efecto de aprendizaje es muy bueno. Si no lo entiende, simplemente pregunte. Comuníquese más con los demás, piense más y piense más cuando encuentre problemas. Realmente no puedes entender cuál es el problema. Pregúntale a los demás ahora. Si no entiendes, no preguntes a los demás directamente. Eso no te servirá de mucho. De hecho, tienes que aprender a elaborar un plan de estudios que se adapte a ti. Hice una estimación aproximada. Si puedes pasar 4 horas en silencio todos los días y estudiar seriamente, deberías poder dominar el lenguaje C en 30 días. De hecho, pasas la mayor parte de tu tiempo de estudio leyendo libros en lugar de mirar la computadora. Antes de depurar su código, escriba el código central en papel y analícelo: el módulo del programa (puede ser una función o varias funciones) se implementa mediante varias funciones y la interfaz está encapsulada. ¿Qué estructura de datos es más adecuada? La clave está en el algoritmo. Es una buena idea minimizar la cantidad de líneas de código antes de publicar el programa final. No piense sólo en escribir más código. Demasiado código es una carga para el programa. Puede descargar un archivo (chm, un ejemplo clásico de lenguaje C) en línea, que probablemente contenga cientos de ejemplos clásicos. Cada ejemplo es una aplicación típica de una parte del lenguaje C. Tómese el tiempo para estudiar todo el código de ejemplo en este archivo; será mejor que mejore el código usted mismo. Resuélvelo a tu manera. En el futuro, descubrirá que cuando escriba algunas aplicaciones, a menudo tendrá algunos algoritmos. Implicará el ejemplo que mencioné antes. Finalmente, creo que usted mismo puede escribir funciones estándar en lenguaje C, como strcpy(); strlen(); strcat();

Dificultades para aprender el lenguaje C:

Ahora debería hablar de un enlace clave. Muchos internautas dicen que aprender el lenguaje C es difícil. Creo que algunas partes de C son más complicadas y difíciles de entender. Por supuesto, una vez que tengas una amplia experiencia en desarrollo, esto ya no será un problema.

A continuación, explicaré personalmente lo que creo que es difícil de aprender al aprender C. Si es incorrecto, indíquelo:

La apariencia de los punteros:

Creo que muchos principiantes Es difícil aprender esto sobre los punteros en un capítulo, por lo que utilizaré mis propias ideas para explicar los tipos de datos especiales de los punteros.

Las variables básicas pueden no ser difíciles de entender para todos, porque las variables básicas almacenan constantes del mismo tipo. De hecho, un puntero también es una variable. Sin embargo, esta variable es un poco diferente de la variable básica. Y luego preguntas: ¿Cuál es la diferencia? Déjame decirte, para que lo entiendas simplemente, las variables ordinarias en realidad almacenan constantes del mismo tipo, mientras que las variables de puntero almacenan "la primera dirección de variables del mismo tipo". ¿Puedes entender esto? Una explicación muy sencilla, pero sin perder la esencia. Esto es cierto. Si no comprende "la primera dirección de una variable del mismo tipo", puedo darle una descripción vívida:

Variable flotante; //Declarar una variable de tipo número real de precisión simple.

En este momento, el compilador ha asignado espacio de memoria a la variable y la estructura es la siguiente:

__________

|1001

|-

|1002

|-

|1003

| |1004

| -

Esta es la estructura de almacenamiento de variables. El punto flotante en el bit 16 ocupa 4 bytes y la dirección de memoria está codificada linealmente. No es difícil ver que la primera dirección de Variable es la dirección de su primera celda, 1001. Bien, continúa leyendo:

Punto flotante * puntero = amp variable //Declara un puntero a una variable.

_________

|1001 |Esta es la estructura de memoria del puntero.

|_______|

Nuestro programa se puede ejecutar así:

Variable = 1.0;

Asignando un valor a una variable directamente Se llama acceso directo.

También puedes hacer esto:

*Pointer = 1.0;

También puedes asignar valores a través de variables de puntero. El * al frente es un símbolo de operación indirecta, lo que significa encontrar la unidad de memoria identificada por la dirección de almacenamiento interno del puntero, es decir, la variable. En este momento, la asignación se logra mediante acceso indirecto. Se puede describir así:

_ _ _ _ _ _ _(apuntando a la variable)_ _ _ _ _ _ _ _

|Puntero|- variable

p>

- -

Lo anterior debería ser la descripción básica de la implementación del puntero. Muchos programadores excelentes dicen que los punteros son la esencia del lenguaje C. De hecho, muchos programadores excelentes dependen en gran medida de los punteros cuando escriben programas porque son convenientes. De hecho, los objetos a los que acceden los punteros son ilimitados, siempre que conozcamos la dirección de memoria. Por lo tanto, los punteros no son seguros. Utilice punteros lo menos posible al desarrollar programas de red. Veamos punteros en matrices.

Puntero en matrices:

Una breve explicación de las matrices. La estructura de matriz se usa ampliamente en C. De hecho, la matriz más utilizada es la de tipo char, que se usa principalmente. para operaciones con cadenas. De hecho, una matriz es una "colección limitada de variables del mismo tipo". Creo que esto debería ser fácil de entender. La matriz ocupa celdas de memoria contiguas (con direcciones contiguas) en la memoria para almacenar cada elemento de la matriz. La matriz es una ubicación de memoria preasignada de una longitud específica. para elementos de matriz. No admite la asignación de memoria dinámica. Para determinar de forma única la matriz en la memoria, se necesitan dos identificadores: la dirección de entrada (nombre de la función) y la marca de fin ("\0"). Algunos lenguajes como C no admiten etiquetas finales para cadenas, por lo que deben declarar otra variable para identificar el subíndice del elemento final. Este nombre de matriz es en realidad la primera unidad de este grupo de unidades de almacenamiento. Su dirección es la dirección de entrada de toda la matriz. En este momento, debe comprender que el nombre de la matriz es un puntero y no hay problema en comprenderlo. De hecho, no está permitido cambiar la dirección del nombre de la matriz durante la operación específica y no cumple con los requisitos reales. Por lo tanto, podemos entender que el nombre de la matriz es un puntero constante (puntero constante).

Podemos hacer esto:

int array[10];

int * pointer;

Pointer = array

for(I; = 0; Ilt10; i)

Pointer = = I;

El código anterior debería estar bien. Los punteros del mismo tipo están perfectamente calificados para la tarea de nombres de matrices. No hay ningún problema, funciona bien. Por supuesto, podemos escribir código como este:

keep

for(I = 0; ilt10; i)

Pointer = I;

Reemplazar con

for(I = 0; ilt10; i, puntero)

*Pointer = I;

Lo siento, no puedo recuerde Borrar, la operación del puntero es la dirección 1 o retroceder la posición de un elemento. Si es la dirección 1, el código anterior se cambiará a:

for(I = 0; ilt10; i, pointer sizeof(int))

*pointer = I;

p>

Es más conveniente si el tipo de matriz es char, porque la cadena tiene una marca de fin (' \0 ') después del elemento final. El siguiente es un código simple que utiliza punteros char:

char * my_strcpy(char * dst, const char * src)

{

char * cp = dst

while(* cp = * src); //Preste atención a la precedencia y combinación de operadores.

Return (Horario de verano); //Devuelve el puntero recién pasado.

}

El código anterior implementa la función de transferir caracteres para copiar. ¿No es el código muy conciso? Si no es necesario mover bloques de memoria, la operación de clasificación se puede implementar intercambiando punteros (direcciones de memoria), y su eficiencia debe ser muy objetiva. Agregar: asegúrese de que el puntero en sí y la variable a la que apunta el puntero no sean una unidad.