[Linux] "Linux C programación de aprendizaje parada" [lenguaje C] Conseguir Part.1

El concepto básico del programa

  • Y lenguajes de programación
    • Lenguaje C - (compilador) - Lenguaje Ensamblador - (ensamblador) - el lenguaje de máquina (código objeto / código ejecutable)
    • Portátil / plataforma independiente: se refiere a una combinación de la plataforma informática o la arquitectura del sistema operativo, o ambos. Las diferentes plataformas tienen conjunto de instrucciones diferentes, formato de instrucción diferente máquina de reconocimiento
    • Escribir directamente a algunos de ensamblador ordenador o máquina de las instrucciones del programa sólo está disponible en equipos que ejecutan en una variedad de equipo tiene el compilador de C puede compilar el programa C en sus instrucciones de máquina computadora
    • Compilado / lenguaje interpretado: lenguaje interpretado sin código de objeto que genera, ejecutado por un intérprete, línea por línea, traducir y
  • lenguaje natural y lenguaje formal
    • El lenguaje natural es hablado el lenguaje humano, como el chino, Inglés, Francés
    • lenguaje formal para aplicaciones específicas consideradas lenguaje de diseño, tales como símbolos matemáticos, fórmula molecular, lenguajes de programación
    • Hay estricta sintaxis lenguaje formal reglas (sintaxis)
    • Hay reglas acerca de las reglas gramaticales señal (token) y la estructura (estructura) están compuestas de
    • Símbolo: operadores predefinidos, reglas léxicas en símbolos es (, léxico) Regla
    • Estructura: disposición de los símbolos en una gramática estructura regular (gramática) normas
    • De análisis (Parse): frase proceso de análisis de la estructura
    • La diferencia entre el lenguaje natural y lenguaje formal
      • La ambigüedad (ambigüedad): el lenguaje formal de requisitos de diseño para clara, sin ambigüedades, cada declaración tiene un significado claro independientemente del contexto
      • La redundancia (redundancia): Lenguaje Natural para eliminar la ambigüedad de la introducción de la redundancia, redundancia lenguaje poco formal
    • La consistencia significado literal: lenguaje natural completo de la metáfora (metáfora), en forma de lenguaje que es literalmente cierto significado
    • Lecturas recomendadas lenguajes formales (incluyendo programas de ordenador)
      • En la forma de lenguaje natural de la lengua de la compacta, pasar tiempo leyendo
      • La estructura es muy importante, no se lee de arriba a abajo o de izquierda a derecha, pero debe ser resuelto en el cerebro, identificar la Señal, estructura de desglose
      • La atención al detalle, tales como errores de ortografía y errores de símbolos
  • depuración
    • Clasificación de los errores
      • Tiempo de compilación de error: error de sintaxis compilación falla
      • En tiempo de ejecución de error: compilador comprueba que no, pero el error haciendo que el programa se bloquee (tenga en cuenta la distinción entre los dos conceptos de tiempo de compilación y tiempo de ejecución) de tiempo de ejecución
      • Los errores lógicos y errores semánticos: compilar y ejecutar sin problemas, pero no lograron los resultados esperados
    • Consejos programación
      • Programación = Depuración: depuración hasta que el programa es alcanzar gradualmente el resultado deseado
      • Comience siempre desde un programa a pequeña escala para funcionar adecuadamente, hacer que cada pequeño paso cambia inmediatamente de depuración

Constantes, variables y expresiones

  • Definición, asignación, la inicialización
    • Definición: la asignación de un espacio de memoria y darle un nombre, como int hora;
    • Asignación: el valor almacenado en un espacio de memoria, tales como la hora = 11;
    • Inicialización: + asignación definida como int hora = 11;
  • La inicialización es una declaración de definición de la variable especial, no asignación
  • Además del nombre de la variable con el lado izquierdo del signo igual representa la asignación, se sacan los otros casos representa su valor, donde la sustitución
  • La expresión (Expresión) por el operador (el operador) y operandos (el operando) Composición
  • instrucción de asignación es una expresión de
  • Los operadores tienen prioridad (precedencia), como indeseable por paréntesis cálculo de prioridad predeterminado necesita (paréntesis)
  • Los resultados de la provisión de lenguaje C es igual operador se le da el valor del lado izquierdo del signo igual
  • Constantes se pueden asignar a las variables, y pueden ser las variables, los operadores juntos forman expresión
  • La expresión más simple de una sola constante o composición variable
  • Cualquier expresión tiene un valor, una expresión puede ser añadido; No. constituyen declaración de la expresión

función simple

  • es una función del pecado (Función), sin (pi / 2) es una llamada de función (Función de llamada), pi / 2 es el parámetro (el argumento)
  • Función de llamada sin (pi / 2) es la expresión por parte del operador de llamada de función () y dos operandos, el valor de retorno del valor de la función de la expresión (Valor de retorno)
  • la función del lenguaje C puede tener efectos secundarios (efecto secundario), que es la diferencia fundamental entre éste y las funciones matemáticas en el concepto de
  • La expresión a = b, el valor de retorno es un valor, el valor de un efecto secundario es cambiado
  • Muchas veces estamos preocupados por los efectos secundarios de la función, más que el valor de retorno, como printf (), el valor de retorno es el número real de caracteres impresos, en lugar de imprimir
  • Efecto secundario utilizado en su totalidad para la función se puede definir como el valor de retorno nula
  • Función Prototipo (Prototipo): nombre de la función y el número del tipo de parámetro + + Tipo de retorno
  • Funcionar primera declaración después de su uso
  • Cuando la columna se puede definir una variable con el mismo tipo de una variable, pero no la definición de los parámetros de función, tales como print_time void (int hora, minuto) {}; redacción mal
  • Parámetro (el parámetro) correspondiente a las variables definidas en la función, los corresponde llamada a la función en el proceso de los parámetros de transmisión se define por el valor de las variables de parámetros y argumentos (el argumento) para inicializar
  • Función proporciona una interfaz (interfaz), la función de llamada es el uso de esta interfaz, usando la premisa de que la interfaz debe ser consistente
  • parámetro de la función de cruce no puede utilizar variables globales en lugar de
  • Las variables globales sólo se pueden inicializar con una expresión constante, y las variables locales se pueden inicializar con cualquier tipo de expresión
  • C idioma predeterminado valor inicial de la variable global almacenada en el código objeto compilado, se puede calcular a cabo cuando se compila, tales como las variables globales de inicialización declaración pi doble pi = 3,14 + 0,0016; es pi = acos legales, y dobles ( -1,0); no es legítimo
  • Si la variable global no está definido en el momento de la inicialización, el valor inicial es 0 (o "\ 0" o "0.0", etc.)
  • Las variables locales no se inicializan en la definición, el valor inicial de incertidumbre, primero debe asignar variables locales antes de su uso
  • Las variables locales de espacio de almacenamiento asignado cada llamada a la función, la función devuelve liberados

declaración rama

  • espacio de almacenamiento variables locales se asigna en cada bloque de instrucciones de entrada, un bloque de instrucciones en libertad al salir
  • Declaración del paquete en función de las etapas de: las declaraciones en el cuerpo de la función, la función del parámetro variable en
  • cosa siempre el más cercano si su par más alto
  • Detrás del caso debe ser una expresión constante, similar a las variables globales, debe calcular el valor en tiempo de compilación

La comprensión en profundidad de la función de

  • Definir valor de retorno función equivalente y un tipo de función de retorno de la variable temporal mismo valor, y el uso de este último para inicializar expresión retorno
  • El valor de retorno no es un valor-I, no se puede asignar a ella
  • Al escribir una función con una instrucción de retorno, tener cuidado de comprobar que todas las rutas de código (código de trayecto), en cualquier condición de código inalcanzable llamada Dead Code
  • desarrollo incremental (incremental): medida de lo posible reutilización (reutilización) el código escrito antes, evitar la escritura de código duplicado. El paquete consiste en la reutilización

bucle

  • Y la diferencia entre las dos formas de ciclos recursivos: recursivamente por las relaciones de recursión (!! tales como N = n * (n-1)), el bucle de fórmula se expande (por ejemplo, n = n * (n-1) * (n-2! ) ... 3 * 2 * 1). fórmula de expansión más fácil de entender, pero no puede expandirse cuando la fórmula es demasiado complicado, incluso recursiva más intuitivo
  • La recursividad se asigna todo el proceso y liberar una gran cantidad de variables, pero todas las variables sólo se asignan en tiempo de inicialización, no hay ningún valor de cualquier cambio de variable se produjo, y el ciclo se repite mediante la asignación de varias variables para lograr sus objetivos
  • función recursiva llamados ideas de programación (programación funcional), la idea se llama ciclo de programación imperativa (programación imperativa)
  • Qué hacer Descripción recursiva (declarativa), describir el paso del ciclo específico a paso cómo hacerlo (Imperativo)
  • Funcional de programación "función" es similar al concepto de funciones matemáticas, es de ningún efecto secundario, modo imperativo a un número variable de cambios puede causar problemas, como el impacto de código seguro para subprocesos, debe ser de una manera "coherente" múltiples tareas
  • do / while para añadir un punto y coma después de la sentencia while
  • ++ i: parámetros de paso, el valor de retorno (parámetro 1), efecto secundario: valor de la variable i 1
  • i ++: parámetros de paso, el valor de retorno (parámetro), efecto secundario: valor de la variable i 1
  • Goto: salto incondicional, saltar a una etiqueta sólo puede estar a la misma función, pero no puede saltar a otra función en
  • goto sólo para funciones que manejan el final de la función de error en cualquier lugar se ha producido una condición de error puede saltar inmediatamente a la final, la función regresa después del tratamiento

estructura

  • Abstracción de datos: análogo a "factor común extracto", ab + ac = a (b + c), si un izquierda cambiaron, dos factores deben ser modificados, siempre y cuando el derecho de cambiar un factor
  • Cualquier combinación de tales sistemas puede ser complejo, de modo que la complejidad del sistema y el resumen es controlable, cualquier cambio limitados a un cierto nivel, y no afectará a la totalidad del sistema
  • Todos los problemas de la informática pueden ser resueltos por otro nivel de indirección (abstracción) - Butler Lampson
  • Mediante el almacenamiento de una pluralidad de espaciado que muestra el formato de almacenamiento de la estructura de capa de abstracción y una función de operación compleja complex_struct superior
  • tipo de enumeración: una estructura permite para recibir diferentes tipos de entrada, tales como enum coordinate_type {RECTANGULAR, POLAR}; complex_struct struct {t enum coordinate_type; doble a, b;};, mediante la definición de un identificador de tipo de datos, tal cartesiano y polar datos de coordenadas se pueden adaptar a la complex_struct cuerpo estructural

colección

  • Array (Array) es un tipo de datos complejo, una serie del mismo tipo de elemento de Composición (Element)
  • Uso array gama subíndice no puede exceder la longitud de la matriz, C compilador no comprueba error límites de matriz
  • Y una variedad de diferentes estructuras: la matriz no se puede asignar el uno al otro, no en función de los parámetros o valores de retorno
  • Cuando se usa el nombre de la matriz no rvalue, convertido automáticamente en un puntero que apunta al primer elemento de la matriz
  • Utilizar la biblioteca estándar de C para obtener un número aleatorio es realmente un número pseudo-aleatorio (Pseudorandom), pero se ve muy aleatoria, y el resultado es el mismo para cada ejecución
  • Obtener un número indeterminado de otras maneras como semilla, y luego genera un número pseudo-aleatorio sobre esta base, como srand (time (NULL)); (número de segundos 01 de enero 1970 00:00:00 drama de tiempo actual)
  • Usando el rand () para generar un número pseudo-aleatorio, la stdlib.h archivo de cabecera, el valor de retorno es un entero entre 0 y RAND_MAX, RAND_MAX es una constante definida en el archivo de cabecera, si desea definir el número de disponible proceso aleatorio% dentro de un cierto rango, la int x = rand (% 10); (número aleatorio en el 0 a 9)
  • definir el proceso de la etapa pre-procesamiento, evita hardcoded (Duro de codificación) (resumen Del mismo modo, para evitar un gran rango de propagación cambios locales)

cadena

  • Puede ser visto como un elemento de matriz de cadenas es carácter, y al final de un carácter "\ 0" indica el final de la cadena. Cadena es de sólo lectura, no se puede modificar
  • Haciendo el valor derecho de uso, convierten automáticamente en un puntero que apunta al primer elemento
  • Cuando la cadena de inicialización, puede designar la longitud de la matriz, y dejar que el compilador calcula automáticamente
  • programación impulsada por los datos (Programación controlada por datos): programación lo más importante es elegir la estructura de datos derecho de organizar la información, los procesos de control y algoritmos siendo seguido, siempre y cuando se selecciona la estructura de datos correcta, el código es fácil de entender y mantener lo natural

Estilo de código

  • Código es principalmente para escribir en los carteles, sino también usar la máquina para realizar la forma en que
  • Linux kernel CodingStyle
    • Reflejar la jerarquía por corrugado bloques de instrucciones (Tab)
    • if / else, mientras que, para otros bloques pueden adoptar la Declaración de declaración, y {} bloque de instrucciones debe ser escrito con las palabras clave separadas por un espacio, en lugar de una línea separada
    • Las funciones definidas en una línea separada} y {
    • interruptor y un bloque de instrucciones en el caso, por omisión grabar alineado
    • Cada código lógico por una línea en blanco entre párrafos separados
    • Paquetes de acuerdo con la correlación, la función separada por una línea vacía
  • nota
    • toda la parte superior del archivo de origen Nota: nombre de archivo, autor, historial de versiones
    • función NOTA: Las funciones de función, parámetros, valores de retorno, código de error
    • Declaración Nota: escrito en el lado de la declaración
    • Código corto Notas: Escribir entre los códigos correctos, y el código separadas por un espacio al menos, todo el archivo de origen está alineado verticalmente preferentemente anotaciones correctas
    • Notas a funcionar dentro de lo menos posible sólo muestra, qué código puede hacer, en lugar de cómo hacerlo (siempre y cuando el código es claro, cómo hacerlo está claro, de lo contrario la legibilidad del código es pobre)
    • estructura compleja, definiciones de macros y definiciones de variables necesitan comentario
  • variable
    • Claridad, podemos completar todos fáciles de entender palabras y abreviaturas
    • Variables, tipos de función utilizando minúsculas subrayadas constantes (macros y enumerar) All-mayúscula subrayada
    • La notación húngara con precaución, no Pinyin
  • función
    • Hacer una cosa a una función
    • nivel de función de sangrado interna de no más de cuatro capas
    • No escriba función demasiado largo
    • función de ejecución es llevar a cabo una acción, nombres de funciones deben normalmente contienen un verbo
    • No hay muchas variables locales
  • guión de la herramienta: el código se puede formatear en un cierto estilo

gDB

  • Puesta en marcha pasos: análisis del fenómeno -> asumir las razones equivocadas -> generar nuevas hipótesis de prueba fenómenos
  • la ejecución de un solo paso y el seguimiento de las llamadas a funciones
  • Punto de interrupción (Breakpoint)
  • Punto de observación (Watchpoint): una unidad de almacenamiento no sabe dónde se altere
  • error de segmento: violación de acceso se produce si una función, no puede producir un fallo de segmentación segmento inmediata generado un error cuando la función devuelve

Ordenar y Buscar

  • El método de determinación de bucle de corrección de lazo invariante
    • Antes de realizar la primera condición determinación es positivo el bucle
    • Si el "N-1 después del primer ciclo para determinar la condición es verdadera," se establece la premisa, se puede demostrar que los N ciclos después de la primera evaluación de condición sigue siendo cierto
    • Después de todo el ciclo para determinar la condición es verdadera, entonces el algoritmo correctamente

Pilas y colas

  • El almacenamiento de datos, el método de acceso determina un problema que resolver el problema de qué algoritmos se pueden utilizar, al mismo tiempo, debemos diseñar el algoritmo de estructuras de datos adecuadas de diseño para apoyar este algoritmo
  • Pila - LIFO - primero en profundidad de búsqueda (DFS) - retroceso (Backtrack)
  • Cola - First In First Out (FIFO) - búsqueda primero en anchura (BFS)

 

referencia

http://docs.linuxtone.org/ebooks/C&CPP/c/

Supongo que te gusta

Origin www.cnblogs.com/cxc1357/p/12356222.html
Recomendado
Clasificación