Curso de lenguaje c prev

  • View
    226

  • Download
    2

Embed Size (px)

Transcript

  • PRE SE NT AC ION

    Esta publicacin recoge la documentacin que se entrega en el Curso de Lenguaje "C"impartido por el Centro de Clculo de la Universidad de Zaragoza.

    Contiene una reproduccin de todas las transparencias que usa el profesor en susexposiciones.

    No es un manual de referencia, sino un material didctico dirigido a facilitar lacomprensin de los conceptos, elementos y reglas de la construccin de programas conlenguaje "C".

    En el curso, se explica el lenguaje desde el principio, en trminos que presuponenconocimientos bsicos sobre la progamacin de computadores. Se estudian, presentandoabundantes ejemplos, todos los aspectos del lenguaje: tipos de datos, clases dealmacenamiento, operadores, expresiones, sentencias de control, funciones, bibliotecasestndar.

    Hay una Introduccin donde se exponen algunos datos histricos y caractersticasgenerales del lenguaje.

    En la leccin 1, se presenta un panorama general de la estructura de un programaescrito en C sin profundizar, con el fin de adquirir desde el principio familiaridad conalgunos aspectos importantes. Se habla del formato de escritura, de los comentarios, de lassentencias para el preprocesador, de la definicin de funciones, de las reglas de alcance, delas expresiones, de la sentencias "if-else" y "for", de las funciones "scanf" y "printf".

    En la leccin 2 se tratan los elementos que forman el programa desde el punto devista lxico: caracteres, identificadores, palabras reservadas, constantes, cadenas,operadores, separadores.

    La leccin 3 es muy breve. Se trata nicamente el operador de asignacin para explicarla semntica de las expresiones de asignacin.

    En la leccin 4 se presentan los tipos de datos predefinidos sin entrar a fondo.Tambin se trata de las clases de almacenamiento y de la inicializacin de variables en lasdeclaraciones.

    En la leccin 5 se estudian los tipos fundamentales a fondo y los operadores msafines.

    La leccin 6 se dedica a mostrar todas las sentencias de control.

  • La leccin 7 est dedicada a las funciones. Se estudian todos los aspectos relacionadoscon la definicin y uso de las funciones. Se explican las reglas de alcance, las clases dealmacenamiento.

    En la leccin 8 se muestra un panorama general de los tipos estructuradospredefinidos sin entrar a fondo.

    En la leccin 9 se estudian a fondo el tipo "array", las cadenas y la relacin con lospunteros. Se presentan algunas funciones de biblioteca para manejar cadenas de caracteres.

    La leccin 10 se dedica explicar el tipo "struct", los campos de "bits", las uniones ylos tipos definidos por el usuario.

    En la leccin 11 se presentan algunas funciones de biblioteca para leer y escribir enficheros: abrir y cerrar fichero, posicionar, leer y escribir un carcter, leer y escribir unacadena, leer y escribir en binario, leer y escribir con formato.

    En la leccin 12 se explican las bases para construir y manejar estructuras de datosdinmicas. Se estudia el caso de una lista encadenada con disciplina FIFO.

  • C.00.01

    C ONT E NIDO

    INT RODUC C IONE ST RUC T URA Y FORM AT O DE L PROG RAM A.PANORAM A G E NE RAL .EL E M ENT OS L E XIC OS.E XPRE SIONE S Y SE NT E NC IAS. E XPRE SIONE S DEASIG NAC ION.L OS T IPOS DE DAT OS. V ISION G E NE RAL .L OS T IPOS DE DAT OS FUNDAM E NT AL E S.L AS SENT ENC IAS DE C ONT ROL .L AS FUNC IONE S.L OS T IPOS DE DAT OS E ST RUC T URADOS. V ISION GENERAL ." ARRAY S" , C ADE NAS Y PUNT E ROS.E ST RUC T URAS, UNIONE S Y T IPOS DE FINIDOS PORE L USUARIO.FUNC IONE S PARA M ANE J O DE FIC HE ROS.E ST RUC T URAS DINAM IC AS DE DAT OS.

  • C.00.02

    El lenguaje C fue diseado por Dennis Ritchie, de los L aboratorios Bell,y se instal en un PDP-11 en 1972.

    Se dise para ser el lenguaje de los sistemas operativos UNIX.Se cre para superar las limitaciones del lenguaje B, utilizado por K enThompson para producir la versin original de UNIX en 1970.E l lenguaje B se bas en BCPL , lenguaje sin tipos desarrollado porM artin Richards, en 1967, para programacin de sistemas.

    Su definicin apareci en 1978:apndice "C Reference M anual"del libro "The C programming L anguage"de Brian W. K ernighan y Dennis M . R itchie(Ed. Prentice-Hall)

    En 1983, se public otro estndar:"The C Programming L anguage-Reference M anual"(L ab.Bell)escrito por Dennis M . Ritchie

  • C.00.03

    ES UN L ENGUAJ E DE NIVEL M EDIO

    Combina elementos de lenguajes de alto nivel (tipos, bloques, ...) con lafuncionalidad de los ensambladores.Permite manejar los elementos tpicos de la programacin de sistemas: bitsbytesdirecciones

    NO E ST A FUE RT E M E NT E ORIE NT ADO A T IPOS

    Tiene cinco tipos de datos bsicos, tipos estructurados y admitedefinicin de tipos por el usuario.Pero permite casi todas las conversiones (p.ej. se pueden mezclar los tipos" int" y " char" en casi todas las expresiones).No hace comprobaciones de error en tiempo de ejecucin(desbordamiento de arrays, ...)"Deja hacer" al programador.

  • C.00.04

    E S UN L E NG UAJ E SE M I-E ST RUC T URADO

    No es completamente estructurado en bloques porque no permitedeclarar procedimientos o funciones dentro de otros procedimientos ofunciones.

    Pero tiene algunas caractersticas propias de los lenguajes estructurados: Dos formas de estructuracin del cdigo:

    Con funciones independientesC on bloques Dispone de las sentencias tpicas para construir estructuras de control:

    whiledo-whilefor

  • C.00.05

    E S UN L E NG UAJ E PARA PROG RAM ADORE S

    Algunos otros lenguajes estn hechos para no-programadores (BASIC ,C OBOL , ...)E l lenguaje C est influenciado, diseado y probado por programadoresprofesionales.Proporciona:

    Una visin prxima a la mquina Pocas restricciones Pocas pegas Conjunto reducido de palabras clave Estructuracin en bloques Funciones independientes Recursos para el encapsulamiento de datosPermite alcanzar casi la eficiencia del cdigo ensamblador, junto con laestructuracin propia de lenguajes como AL GOL , M ODUL A-2.Se dise para la programacin de sistemasL os programas son muy transportablesActualmente se usa para otros propsitos

  • C.00.06

    BIBLIOGRAFIA

    "The C programming language"Brian W Kernighan y Dennis M. RitchieEd. Prentice-Hall, segunda edicin, 1988.

    "Lenguaje C. Introduccin a la programacin"Al Kelley e Ira PohlEd. Addison-Wesley, 1987 (edicin original, en 1984).

    "C estndar. Gua de referencia para programadores"P.J. Plauger y Jim BrodieEd. Anaya Multimedia, 1990 (primera edicin en 1989)

    "C. Manual de referencia. Segunda edicin"Herbert SchildtEd. McGraw-Hill, 1990.

    Manual de Referencia de la implementacinque se use.

  • C.01.00

    - 1 -E ST RUC T URA Y FORM AT O DE L PROG RAM A.PANORAM A G E NE RAL .

    El formato de escritura E jemplo de un programa completo L os comentarios L as sentencias para el pre-procesador L as funciones. Definicin de una funcin L as declaraciones Reglas de alcance L as expresiones L as sentencias L a sentencia " if-else" L a sentencia " for" L a funcin " printf" L a funcin " scanf"

  • C.01.01

    #include

    main ( ){ saludo( ); primer_mensaje( );}

    saludo(){ printf ("Buenos dias\n");}

    primer_mensaje(){ printf("Un programa esta formado ");

    printf("por funciones\n");}

  • C.01.02

    L os programas se construyen con:

    Comentarios.

    Ordenes para el preprocesadorde macros.

    Definiciones de funciones.

    Expresiones formadas con constantes, variables,funciones y operadores.

    Sentencias.

  • C.01.03

    EL FORMATO DE ESCRITURA ES MUY FLEXIBLE:

    Las constantes, identificadores y palabras clave deben separarse; peroello puede hacerse con :

    - espacios en blanco- marcas de tabulador- marcas de salto de linea- comentarios

    /* ej1.c Indica el menor de dos enteros leidos*/

    #include

    void main ( ){

    int n1, n2, menor (int, int);printf ("Introducir dos enteros:\n");scanf ("%d%d", &n1, &n2);if ( n1 == n2 )

    printf ("Son iguales \n");else

    printf ("El menor es: %d\n",menor(n1,n2));}

    int menor (int a, int b){

    if ( a < b ) return (a );else return ( b );

    }

  • C.01.04

    L OS C OM E NT AR IOS

    Son lineas que ignora el compilador pero sirven para documentar losprogramas:Empiezan con: /*

    terminan con: */ pueden abarcar varias lineas

    no se pueden anidar

    /* ej1.cIndica el menor de dos enteros leidos*/.........scanf(" % d% d" , & n1, & n2); /* aqui se leen dosvalores enteros */......

  • C.01.05

    L AS SE NT E NC IAS PARA E L PRE PROC E SADOR

    Son rdenes que el preprocesador interpreta antes de que el cdigofuente sea compilado.E l preprocesador produce un programa escrito en C que es lo que secompila despus.

    Deben empezar con el smbolo " # " en laprimera columna.

    # define PI 3.1416# define EQ ==----------# define cuadrado(x) ( (x) * (x) )----------# include # include ----------# define PRUEBA 1......# if PRUEBAprintf(" prueba: x = % d\n" , x);# endif----------# ifdef UNO......# else......# endif( cc -DUNO fn.c )----------# ifndef----------

  • C.01.06

    LAS FUNCIONES

    Un programa esta formado por funciones.

    No se pueden definir anidadas.

    Desde una funcin se puede llamar a cualquier otra.

    Est permitida la recursividad.

    Si no se indica otro tipo, las funciones son de tipo "int" pordefecto

    El mecanismo de paso es por valor.

    DEVUELVEN UN VALOR.

    La funcin "main"

    Todo programa debe contener una funcin llamada "main".

    Es la invocada desde el sistema operativo cuando comienza laejecucin del programa.

    Tambin devuelve un valor al medio de llamada.

  • C.01.