Fundamentos de programación en C - Por Nacho · PDF fileFundamentos de...

download Fundamentos de programación en C - Por Nacho · PDF fileFundamentos de programación en C, por Nacho Cabanes Revisión 0.90– Página 2 Contenido 0. Conceptos básicos sobre programación

If you can't read please download the document

Transcript of Fundamentos de programación en C - Por Nacho · PDF fileFundamentos de...

  • Fundamentos de programacin en C, por Nacho Cabanes

    Revisin 0.90 Pgina 1

    Fundamentos de programacin en C

    Este texto pretende ser una introduccin a la programacin de ordenadores en lenguaje C. Se ha revisado con la intencin que su nivel sea el razonable para una asignatura de Fundamentos de programacin o similar, aunque quiz algunos centros (especialmente universitarios) exijan un nivel ms alto que el que se cubre. Est organizado de una forma ligeramente distinta a los libros de texto convencionales, procurando incluir ejercicios prcticos lo antes posible, para evitar que un exceso de teora en los primeros temas haga el texto pesado de seguir. Aun as, este texto no pretende sustituir a un profesor, sino servir de apoyo para que los alumnos no pierdan tiempo en tomar apuntes. Pero es trabajo del profesor aclarar las dudas que surjan y proponer muchos ms ejercicios que los que figuran aqu. Este texto ha sido escrito por Nacho Cabanes. Si quiere conseguir la ltima versin, estar en mi pgina web:

    www.nachocabanes.com Este texto es de libre distribucin (gratis). Se puede distribuir a otras personas libremente, siempre y cuando no se modifique. Este texto se distribuye "tal cual", sin garanta de ningn tipo, implcita ni explcita. Aun as, mi intencin es que resulte til, as que le rogara que me comunique cualquier error que encuentre. Para cualquier sugerencia, no dude en contactar conmigo a travs de mi web. Revisin actual: 0.90

  • Fundamentos de programacin en C, por Nacho Cabanes

    Revisin 0.90 Pgina 2

    Contenido

    0. Conceptos bsicos sobre programacin _______________________________________________ 6

    0.1. Lenguajes de alto nivel y de bajo nivel.____________________________________________ 6

    0.2. Ensambladores, compiladores e intrpretes ________________________________________ 7

    0.3. Pseudocdigo_________________________________________________________________ 8

    1. Toma de contacto con C ___________________________________________________________ 10

    1.1 Escribir un texto en C _________________________________________________________ 11 1.1.1. Cmo probar este programa en Linux __________________________________________ 12 1.1.2. Cmo probar este programa en Windows _______________________________________ 14

    1.2. Mostrar nmeros enteros en pantalla ____________________________________________ 15

    1.3. Operaciones aritmticas bsicas ________________________________________________ 16 1.3.1. Orden de prioridad de los operadores __________________________________________ 16 1.3.2. Introduccin a los problemas de desbordamiento _________________________________ 17

    1.4. Introduccin a las variables: int ________________________________________________ 17 1.4.1. Definicin de variables: nmeros enteros _______________________________________ 17 1.4.2. Asignacin de valores ______________________________________________________ 17 1.4.3. Mostrar el valor de una variable en pantalla _____________________________________ 18

    1.5. Identificadores_______________________________________________________________ 19

    1.6. Comentarios ________________________________________________________________ 20

    1.7. Datos por el usuario: scanf_____________________________________________________ 21

    2. Tipos de datos bsicos_____________________________________________________________ 22

    2.1. Tipo de datos entero __________________________________________________________ 22 2.1.1. Tipos de enteros: signed/unsigned, short/long____________________________________ 22 2.1.2. Problemtica: asignaciones y tamao de los nmeros; distintos espacios ocupados segn el

    sistema _______________________________________________________________________ 23 2.1.3. Unidades de medida empleadas en informtica (1): bytes, kilobytes, megabytes...________ 24 2.1.4. Unidades de medida empleadas en informtica (2): los bits _________________________ 25 2.1.5. Sistemas de numeracin: 1- Sistema binario _____________________________________ 26 2.1.6. Sistemas de numeracin: 2- Sistema octal _______________________________________ 28 2.1.7. Sistemas de numeracin: 3- Sistema hexadecimal_________________________________ 29 2.1.8. Formato de constantes enteras: oct, hex_________________________________________ 31 2.1.9. Representacin interna de los enteros __________________________________________ 32 2.1.10. Incremento y decremento___________________________________________________ 34 2.1.11. Operaciones abreviadas: +=_________________________________________________ 35 2.1.12. Modificadores de acceso: const, volatile _______________________________________ 35

    2.2. Tipo de datos real ____________________________________________________________ 36 2.2.1. Simple y doble precisin ____________________________________________________ 36 2.2.2. Mostrar en pantalla nmeros reales ____________________________________________ 36

    2.3. Operador de tamao: sizeof____________________________________________________ 38

    2.4. Operador de molde: (tipo) operando_____________________________________________ 39

    2.5. Tipo de datos carcter ________________________________________________________ 40 2.5.1. Secuencias de escape: \n y otras. ______________________________________________ 41 2.5.2. Introduccin a las dificultades de las cadenas de texto _____________________________ 41

    3. Estructuras de control_____________________________________________________________ 42

    3.1. Estructuras alternativas _______________________________________________________ 42 3.1.1. if_______________________________________________________________________ 42 3.1.2. if y sentencias compuestas ___________________________________________________ 43 3.1.3. Operadores relacionales: =, ==, !=____________________________________ 43 3.1.4. if-else ___________________________________________________________________ 44

  • Fundamentos de programacin en C, por Nacho Cabanes

    Revisin 0.90 Pgina 3

    3.1.5. Operadores lgicos: &&, ||, ! _________________________________________________ 46 3.1.6. Cmo funciona realmente la condicin en un if_________________________________ 46 3.1.7. El peligro de la asignacin en un if __________________________________________ 47 3.1.8. Introduccin a los diagramas de flujo __________________________________________ 50 3.1.9. Operador condicional: ?_____________________________________________________ 52 3.1.10. switch__________________________________________________________________ 53

    3.2. Estructuras repetitivas ________________________________________________________ 54 3.2.1. while ___________________________________________________________________ 54 3.2.2. do ... while _______________________________________________________________ 55 3.2.3. for______________________________________________________________________ 56

    3.3. Sentencia break: termina el bucle _______________________________________________ 59

    3.4. Sentencia continue: fuerza la siguiente iteracin ___________________________________ 60

    3.5. Sentencia goto _______________________________________________________________ 62

    3.6. Ms sobre diagramas de flujo. Diagramas de Chapin. ______________________________ 63

    3.7. Recomendacin de uso de los distintos tipos de bucle _______________________________ 65

    4. Entrada/salida bsica_____________________________________________________________ 67

    4.1. printf ______________________________________________________________________ 67

    4.2. scanf _______________________________________________________________________ 69

    4.3. putchar_____________________________________________________________________ 70

    4.4. getchar _____________________________________________________________________ 71

    5. Arrays y estructuras _____________________________________________________________ 73

    5.1. Conceptos bsicos sobre tablas _________________________________________________ 73 5.1.1. Definicin de una tabla y acceso a los datos _____________________________________ 73 5.1.2. Valor inicial de una tabla ____________________________________________________ 74 5.1.3. Recorriendo los elementos de una tabla_________________________________________ 74

    5.2. Cadenas de caracteres ________________________________________________________ 75 5.2.1. Definicin. Lectura desde teclado _____________________________________________ 75 5.2.2. Cmo acceder a las letras que forman una cadena_________________________________ 76 5.2.3. Longitud de la cadena. ______________________________________________________ 77 5.2.4. Entrada/salida para cadenas: gets, puts _________________________________________ 78 5.2.5. Asignando a una cadena el valor de otra: strcpy, strncpy; strcat ______________________ 78 5.2.6. Comparando cadenas: strcmp ________________________________________________ 80 5.2.7. Otras funciones de cadenas: sprintf, sscanf, strstr, ______________________________ 82 5.2.8. Valor inicial de una cadena de texto ___________________________________________ 83

    5.3. Tablas bidimensionales________________________________________________________ 84

    5.4. Arrays indeterminados. _______________________________________________________ 85

    5.5. Estructuras _________________________________________________________________ 85 5.5.1. Definicin y acceso a los datos _______________________________________________ 85 5.5.2. Arrays de estructuras _______________________________________________________ 87 5.5.3. Estructuras anidadas________________________________________________________ 87

    5.6 Ejemplo completo ____________________________________________________________ 88

    5.7 Ordenaciones simples _________________________________________________________ 92

    6. Man