SlideShare una empresa de Scribd logo
1 de 17
Descargar para leer sin conexión
PR E SE NT A C I O N


     Esta publicación recoge la documentación que se entrega en el Curso de Lenguaje "C"
impartido por el Centro de Cálculo de la Universidad de Zaragoza.

     Contiene una reproducción de todas las transparencias que usa el profesor en sus
exposiciones.

     No es un manual de referencia, sino un material didáctico dirigido a facilitar la
comprensión de los conceptos, elementos y reglas de la construcción de programas con
lenguaje "C".

     En el curso, se explica el lenguaje desde el principio, en términos que presuponen
conocimientos básicos sobre la progamación de computadores. Se estudian, presentando
abundantes ejemplos, todos los aspectos del lenguaje:         tipos de datos, clases de
almacenamiento, operadores, expresiones, sentencias de control, funciones, bibliotecas
estándar.

     Hay una Introducción donde se exponen algunos datos históricos y características
generales del lenguaje.

      En la lección 1, se presenta un panorama general de la estructura de un programa
escrito en C sin profundizar, con el fin de adquirir desde el principio familiaridad con
algunos aspectos importantes. Se habla del formato de escritura, de los comentarios, de las
sentencias para el preprocesador, de la definición de funciones, de las reglas de alcance, de
las expresiones, de la sentencias "if-else" y "for", de las funciones "scanf" y "printf".

     En la lección 2 se tratan los elementos que forman el programa desde el punto de
vista léxico: caracteres, identificadores, palabras reservadas, constantes, cadenas,
operadores, separadores.

      La lección 3 es muy breve. Se trata únicamente el operador de asignación para explicar
la semántica de las expresiones de asignación.

      En la lección 4 se presentan los tipos de datos predefinidos sin entrar a fondo.
También se trata de las clases de almacenamiento y de la inicialización de variables en las
declaraciones.

      En la lección 5 se estudian los tipos fundamentales a fondo y los operadores más
afines.

     La lección 6 se dedica a mostrar todas las sentencias de control.
La lección 7 está dedicada a las funciones. Se estudian todos los aspectos relacionados
con la definición y uso de las funciones. Se explican las reglas de alcance, las clases de
almacenamiento.

     En la lección 8 se muestra un panorama general de los tipos estructurados
predefinidos sin entrar a fondo.

     En la lección 9 se estudian a fondo el tipo "array", las cadenas y la relación con los
punteros. Se presentan algunas funciones de biblioteca para manejar cadenas de caracteres.

       La lección 10 se dedica explicar el tipo "struct", los campos de "bits", las uniones y
los tipos definidos por el usuario.

      En la lección 11 se presentan algunas funciones de biblioteca para leer y escribir en
ficheros: abrir y cerrar fichero, posicionar, leer y escribir un carácter, leer y escribir una
cadena, leer y escribir en binario, leer y escribir con formato.

     En la lección 12 se explican las bases para construir y manejar estructuras de datos
dinámicas. Se estudia el caso de una lista encadenada con disciplina FIFO.
C.00.01




                        C O NT E NI DO



I NT R O DU C C I O N

E ST R UC T UR A Y FO R M A T O DE L PR O G R A M A .
PA NO R A M A G E NE R A L .

E L E M E NT O S L E X I C O S.

E X PR E SI O NE S Y SE NT E NC I A S. E X PR E SI O NE S DE
A SI G NA C I O N.

L O S T I PO S DE DA T O S. V I SI O N G E NE R A L .

L O S T I PO S DE DA T O S FUNDA M E NT A L E S.

L A S SE NT E NC I A S DE C O NT R O L .

L A S FUNC I O NE S.

L O S T I PO S DE DA T O S E ST R UC T UR A DO S. V I SI O N
G E NE R A L .

" A R R A Y S" , C A DE NA S Y PUNT E R O S.

E ST R UC T UR A S, UNI O NE S Y T I PO S DE FI NI DO S PO R
E L USUA R I O .

FUNC I O NE S PA R A M A NE J O DE FI C H E R O S.

E ST R UC T UR A S DI NA M I C A S DE DA T O S.
C.00.02




E l lenguaje C fue diseñado por Dennis R itchie, 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 en
T hompson para producir la versión original de UNIX en 1970.

E l lenguaje B se basó en BC PL , lenguaje sin tipos desarrollado por
M artin R ichards, en 1967, para programación de sistemas.


Su definición apareció en 1978:

         apéndice " C R eference M anual"
         del libro " T he C programming L anguage"
         de Brian W . K ernighan y Dennis M . R itchie
         (E d. Prentice-H all)


E n 1983, se publicó otro estándar:

         " T he C     Programming L anguage-R eference             M anual"
         (L ab.Bell)
         escrito por Dennis M . R itchie
C.00.03




               E S UN L E NG UA J E DE NI V E L M E DI O


C ombina elementos de lenguajes de alto nivel (tipos, bloques, ...) con la
funcionalidad de los ensambladores.

Permite manejar los elementos típicos de la programación de sistemas:
                        bits
                        bytes
                        direcciones




        NO E ST A FUE R T E M E NT E O R I E NT A DO A T I PO S


T iene cinco tipos de datos básicos, tipos estructurados y admite
definición 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   ejecución
(desbordamiento de arrays, ...)

" Deja hacer" al programador.
C.00.04




            E S UN L E NG UA J E SE M I -E ST R UC T UR A DO



No es completamente estructurado en bloques porque no permite
declarar procedimientos o funciones dentro de otros procedimientos o
funciones.


Pero tiene algunas características propias de los lenguajes estructurados:

      • Dos formas de estructuración del código:

            C on funciones independientes
            C on bloques

      • Dispone de las sentencias típicas para construir
       estructuras de control:

                              while
                              do-while
                              for
C.00.05




          E S UN L E NG UA J E PA R A PR O G R A M A DO R E S



A lgunos otros lenguajes están hechos para no-programadores (BA SI C ,
C O BO L , ...)

E l lenguaje C está influenciado, diseñado y probado por programadores
profesionales.

Proporciona:

         • Una visión próxima a la máquina
         • Pocas restricciones
         • Pocas pegas
         • C onjunto reducido de palabras clave
         • E structuración en bloques
         • Funciones independientes
         • R ecursos para el encapsulamiento de datos

Permite alcanzar casi la eficiencia del código ensamblador, junto con la
estructuración propia de lenguajes como A L G O L , M O DUL A -2.

Se diseñó para la programación de sistemas

L os programas son muy transportables

A ctualmente se usa para otros propósitos
C.00.06




                    BIBLIOGRAFIA



"The C programming language"
Brian W Kernighan y Dennis M. Ritchie
Ed. Prentice-Hall, segunda edición, 1988.


"Lenguaje C. Introducción a la programación"
Al Kelley e Ira Pohl
Ed. Addison-Wesley, 1987 (edición original, en 1984).


"C estándar. Guía de referencia para programadores"
P.J. Plauger y Jim Brodie
Ed. Anaya Multimedia, 1990 (primera edición en 1989)


"C. Manual de referencia. Segunda edición"
Herbert Schildt
Ed. McGraw-Hill, 1990.


Manual de Referencia de la implementación
que se use.
C.01.00




                             -1-

E ST R UC T UR A Y FO R M A T O DE L PR O G R A M A .
PA NO R A M A G E NE R A L .


          •   E l formato de escritura
          •   E jemplo de un programa completo
          •   L os comentarios
          •   L as sentencias para el pre-procesador
          •   L as funciones. Definición de una función
          •   L as declaraciones
          •   R eglas de alcance
          •   L as expresiones
          •   L as sentencias
          •   L a sentencia " if-else"
          •   L a sentencia " for"
          •   L a función " printf"
          •   L a función " scanf"
C.01.01




#include <stdio.h>

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



saludo()
{
  printf ("Buenos diasn");
}



primer_mensaje()
{
    printf("Un programa esta formado ");
    printf("por funcionesn");
}
C.01.02




L os programas se construyen con:




   C omentarios.


   Ordenes para el preprocesador
   de macros.


   Definiciones de funciones.


   E xpresiones 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; pero
ello 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 <stdio.h>

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: %dn",menor(n1,n2));
}


int menor (int a, int b)
{
      if ( a < b ) return (a );
      else return ( b );
}
C.01.04




                       L O S C O M E NT A R I O S



Son lineas que ignora el compilador pero sirven para documentar los
programas:

                 E mpiezan con: /*

                 terminan con: */

                 pueden abarcar varias lineas

                 no se pueden anidar




           /*
                 ej1.c
                 Indica el menor de dos enteros leidos
           */
           ...
           ...
           ...
           scanf(" % d% d" , & n1, & n2); /*    aqui se leen dos
                                                valores enteros */
           ...
           ...
C.01.05




         L A S SE NT E NC I A S PA R A E L PR E PR O C E SA DO R


Son órdenes que el preprocesador interpreta antes de que el código
fuente sea compilado.
E l preprocesador produce un programa escrito en C que es lo que se
compila después.


           Deben empezar con el símbolo " # " en la
           primera columna.



              # define PI 3.1416
              # define E Q ==
              ----------
              # define cuadrado(x) ( (x) * (x) )
              ----------
              # include <stdio.h>
              # include <math.h>
              ----------
              # define PR UE BA 1
              ...
              ...
              # if PR UE BA
              printf(" prueba: x = % dn" , 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 función se puede llamar a cualquier otra.

Está permitida la   recursividad .

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

El mecanismo de paso es   por valor.
DEVUELVEN UN VALOR.




                     La función "main"

Todo programa debe contener una función llamada "main".

Es la invocada desde el sistema operativo cuando comienza la
ejecución del programa.

También devuelve un valor al medio de llamada.
C.01.07




                         DE FI NI C I O N DE UNA FUNC I O N



E ncabezamiento . . . . . . . . . . . .        tipo nombre (p1, p2, p3)

Declaración de parámetros . . . . .            tipo p1, p2, p3;

                                                     {
C uerpo con:          Declaraciones . . . . . .      tipo v1, v2, v3;

                      Sentencias . . . . . .               sentencia
                                                           ...
                                                           sentencia

                                                     }



                  int menor(a, b)
                  int a, b;
                  {
                     if ( a<b ) return( a );
                     else return( b );
                  }

Más contenido relacionado

La actualidad más candente

Curso de lenguaje C
Curso de lenguaje CCurso de lenguaje C
Curso de lenguaje Crcc1964
 
Unidad 3
Unidad 3Unidad 3
Unidad 3tf94
 
Generalidades de la programacion
Generalidades de la programacionGeneralidades de la programacion
Generalidades de la programacionDiego Rojas
 
Introduccion al lenguaje c
Introduccion al lenguaje cIntroduccion al lenguaje c
Introduccion al lenguaje cvictdiazm
 
Compiladores y analizador léxico
Compiladores y analizador léxicoCompiladores y analizador léxico
Compiladores y analizador léxicokatherine133
 
Manual de Programación c/c++ Ricky Bonilla
Manual de Programación c/c++ Ricky BonillaManual de Programación c/c++ Ricky Bonilla
Manual de Programación c/c++ Ricky BonillaEstudiantes ISI_UCA
 
Lenguaje c completo 6 g x revisar x los estudiantes
Lenguaje c completo 6 g x revisar x los estudiantesLenguaje c completo 6 g x revisar x los estudiantes
Lenguaje c completo 6 g x revisar x los estudiantesJhon Jairo C Q
 
Tutorial de visual c++
Tutorial de visual c++Tutorial de visual c++
Tutorial de visual c++oscar020615
 

La actualidad más candente (17)

Lenguaje c
Lenguaje cLenguaje c
Lenguaje c
 
Cppbasico
CppbasicoCppbasico
Cppbasico
 
Curso de lenguaje C
Curso de lenguaje CCurso de lenguaje C
Curso de lenguaje C
 
Unidad 3
Unidad 3Unidad 3
Unidad 3
 
Lenguaje de programación C
Lenguaje de programación CLenguaje de programación C
Lenguaje de programación C
 
PROGRAMACION EN C
PROGRAMACION EN CPROGRAMACION EN C
PROGRAMACION EN C
 
Generalidades de la programacion
Generalidades de la programacionGeneralidades de la programacion
Generalidades de la programacion
 
Programazion
ProgramazionProgramazion
Programazion
 
Manual C/C++ Jason Martinez
Manual C/C++ Jason MartinezManual C/C++ Jason Martinez
Manual C/C++ Jason Martinez
 
Clase 4
Clase 4Clase 4
Clase 4
 
Introduccion al lenguaje c
Introduccion al lenguaje cIntroduccion al lenguaje c
Introduccion al lenguaje c
 
Compiladores y analizador léxico
Compiladores y analizador léxicoCompiladores y analizador léxico
Compiladores y analizador léxico
 
Compiladores
CompiladoresCompiladores
Compiladores
 
Manual de Programación c/c++ Ricky Bonilla
Manual de Programación c/c++ Ricky BonillaManual de Programación c/c++ Ricky Bonilla
Manual de Programación c/c++ Ricky Bonilla
 
Lenguaje c completo 6 g x revisar x los estudiantes
Lenguaje c completo 6 g x revisar x los estudiantesLenguaje c completo 6 g x revisar x los estudiantes
Lenguaje c completo 6 g x revisar x los estudiantes
 
ENSAYO SOBRE EL LENGUAJE C
ENSAYO SOBRE EL LENGUAJE C ENSAYO SOBRE EL LENGUAJE C
ENSAYO SOBRE EL LENGUAJE C
 
Tutorial de visual c++
Tutorial de visual c++Tutorial de visual c++
Tutorial de visual c++
 

Destacado

Curso de introducción a c++ para programadores en c prev
Curso de introducción a c++ para programadores en c prevCurso de introducción a c++ para programadores en c prev
Curso de introducción a c++ para programadores en c prevjtk1
 
Programación orientada a objetos con c++ prev
Programación orientada a objetos con c++ prevProgramación orientada a objetos con c++ prev
Programación orientada a objetos con c++ prevjtk1
 
Ud1 6 fundamentos_lenguaje_c_pic
Ud1 6 fundamentos_lenguaje_c_picUd1 6 fundamentos_lenguaje_c_pic
Ud1 6 fundamentos_lenguaje_c_picarnadillo
 
Introducción a la codificación en lenguaje C
Introducción a la codificación en lenguaje CIntroducción a la codificación en lenguaje C
Introducción a la codificación en lenguaje CCarlos Pes
 
Curso de lenguaje c para microcontroladores pic dia 1(2)(2)(2)(2)(2)(2)
Curso de lenguaje c para microcontroladores pic dia 1(2)(2)(2)(2)(2)(2)Curso de lenguaje c para microcontroladores pic dia 1(2)(2)(2)(2)(2)(2)
Curso de lenguaje c para microcontroladores pic dia 1(2)(2)(2)(2)(2)(2)Franz Amaya
 
Microcontroladores pic, diseño práctico de aplicaciones 2da parte 16 f87x
Microcontroladores pic, diseño práctico de aplicaciones 2da parte 16 f87xMicrocontroladores pic, diseño práctico de aplicaciones 2da parte 16 f87x
Microcontroladores pic, diseño práctico de aplicaciones 2da parte 16 f87xMiguel Angel Corona Lòpez
 
Fundamentos de programacion
Fundamentos de programacionFundamentos de programacion
Fundamentos de programacionVale
 
Ejemplos de algoritmos en C básicos (aprendiendo a programar)
Ejemplos de algoritmos en C básicos (aprendiendo a programar)Ejemplos de algoritmos en C básicos (aprendiendo a programar)
Ejemplos de algoritmos en C básicos (aprendiendo a programar)Kiim Kerrigan
 
Analisis y diseño de algoritmos
Analisis y diseño de algoritmosAnalisis y diseño de algoritmos
Analisis y diseño de algoritmosYulyana López
 
Ejemplos Para Dev C++
Ejemplos Para Dev C++Ejemplos Para Dev C++
Ejemplos Para Dev C++cemayoral
 
Slidshare
SlidshareSlidshare
Slidsharemapaz91
 

Destacado (13)

Curso de introducción a c++ para programadores en c prev
Curso de introducción a c++ para programadores en c prevCurso de introducción a c++ para programadores en c prev
Curso de introducción a c++ para programadores en c prev
 
Programación orientada a objetos con c++ prev
Programación orientada a objetos con c++ prevProgramación orientada a objetos con c++ prev
Programación orientada a objetos con c++ prev
 
Aprendiendo Lenguaje C
Aprendiendo Lenguaje CAprendiendo Lenguaje C
Aprendiendo Lenguaje C
 
Ud1 6 fundamentos_lenguaje_c_pic
Ud1 6 fundamentos_lenguaje_c_picUd1 6 fundamentos_lenguaje_c_pic
Ud1 6 fundamentos_lenguaje_c_pic
 
Introducción a la codificación en lenguaje C
Introducción a la codificación en lenguaje CIntroducción a la codificación en lenguaje C
Introducción a la codificación en lenguaje C
 
Curso de-mcu-proteus
Curso de-mcu-proteusCurso de-mcu-proteus
Curso de-mcu-proteus
 
Curso de lenguaje c para microcontroladores pic dia 1(2)(2)(2)(2)(2)(2)
Curso de lenguaje c para microcontroladores pic dia 1(2)(2)(2)(2)(2)(2)Curso de lenguaje c para microcontroladores pic dia 1(2)(2)(2)(2)(2)(2)
Curso de lenguaje c para microcontroladores pic dia 1(2)(2)(2)(2)(2)(2)
 
Microcontroladores pic, diseño práctico de aplicaciones 2da parte 16 f87x
Microcontroladores pic, diseño práctico de aplicaciones 2da parte 16 f87xMicrocontroladores pic, diseño práctico de aplicaciones 2da parte 16 f87x
Microcontroladores pic, diseño práctico de aplicaciones 2da parte 16 f87x
 
Fundamentos de programacion
Fundamentos de programacionFundamentos de programacion
Fundamentos de programacion
 
Ejemplos de algoritmos en C básicos (aprendiendo a programar)
Ejemplos de algoritmos en C básicos (aprendiendo a programar)Ejemplos de algoritmos en C básicos (aprendiendo a programar)
Ejemplos de algoritmos en C básicos (aprendiendo a programar)
 
Analisis y diseño de algoritmos
Analisis y diseño de algoritmosAnalisis y diseño de algoritmos
Analisis y diseño de algoritmos
 
Ejemplos Para Dev C++
Ejemplos Para Dev C++Ejemplos Para Dev C++
Ejemplos Para Dev C++
 
Slidshare
SlidshareSlidshare
Slidshare
 

Similar a Curso Lenguaje C

Curso de lenguaje c angel salas
Curso de lenguaje c   angel salasCurso de lenguaje c   angel salas
Curso de lenguaje c angel salasvictdiazm
 
Lenguajes de programación parte i.4
Lenguajes de programación parte i.4Lenguajes de programación parte i.4
Lenguajes de programación parte i.4Marquina, Santiago
 
Cuestionario
CuestionarioCuestionario
Cuestionariotacubomx
 
LENGUAJE en C
LENGUAJE en CLENGUAJE en C
LENGUAJE en CDaniel bg
 
Lenguaje de la programación orientada a objetos c#
Lenguaje de la programación orientada a objetos c#Lenguaje de la programación orientada a objetos c#
Lenguaje de la programación orientada a objetos c#Juan Carlos Prieto
 
Clase 1_Unidad II (2).pdf
Clase 1_Unidad II  (2).pdfClase 1_Unidad II  (2).pdf
Clase 1_Unidad II (2).pdfamacias7983
 
Lenguaje de programación C - Cleibery.
Lenguaje de programación C - Cleibery.Lenguaje de programación C - Cleibery.
Lenguaje de programación C - Cleibery.cleiberylobo
 
manual básico de programación en c
manual básico de programación en c manual básico de programación en c
manual básico de programación en c Liz O
 
C ++ Estatutos ciclos
C ++ Estatutos ciclosC ++ Estatutos ciclos
C ++ Estatutos ciclosernest1960
 

Similar a Curso Lenguaje C (20)

introduccion a C
introduccion a Cintroduccion a C
introduccion a C
 
Cursode c
Cursode cCursode c
Cursode c
 
Cursode c
Cursode cCursode c
Cursode c
 
Tutorial C
Tutorial CTutorial C
Tutorial C
 
Curso de lenguaje c angel salas
Curso de lenguaje c   angel salasCurso de lenguaje c   angel salas
Curso de lenguaje c angel salas
 
Lenguajes de programación parte i.4
Lenguajes de programación parte i.4Lenguajes de programación parte i.4
Lenguajes de programación parte i.4
 
Cuestionario
CuestionarioCuestionario
Cuestionario
 
LENGUAJE en C
LENGUAJE en CLENGUAJE en C
LENGUAJE en C
 
Lenguaje de la programación orientada a objetos c#
Lenguaje de la programación orientada a objetos c#Lenguaje de la programación orientada a objetos c#
Lenguaje de la programación orientada a objetos c#
 
Clase 1_Unidad II (2).pdf
Clase 1_Unidad II  (2).pdfClase 1_Unidad II  (2).pdf
Clase 1_Unidad II (2).pdf
 
Unidad 2
Unidad 2Unidad 2
Unidad 2
 
Lenguaje de programación C - Cleibery.
Lenguaje de programación C - Cleibery.Lenguaje de programación C - Cleibery.
Lenguaje de programación C - Cleibery.
 
Lenguaje c 1
Lenguaje c 1Lenguaje c 1
Lenguaje c 1
 
Clase 1 Programación II
Clase 1 Programación IIClase 1 Programación II
Clase 1 Programación II
 
manual básico de programación en c
manual básico de programación en c manual básico de programación en c
manual básico de programación en c
 
Unidad 2
Unidad 2Unidad 2
Unidad 2
 
Lenguaje de programacion mike alvarado
Lenguaje de programacion mike alvaradoLenguaje de programacion mike alvarado
Lenguaje de programacion mike alvarado
 
C ++ Estatutos ciclos
C ++ Estatutos ciclosC ++ Estatutos ciclos
C ++ Estatutos ciclos
 
Manual c# 1 o@sis 2017
Manual c# 1 o@sis 2017Manual c# 1 o@sis 2017
Manual c# 1 o@sis 2017
 
Lenguaje c
Lenguaje cLenguaje c
Lenguaje c
 

Más de jtk1

Actividad modulo1
Actividad modulo1Actividad modulo1
Actividad modulo1jtk1
 
Java schaum pre
Java schaum preJava schaum pre
Java schaum prejtk1
 
Programar java 2pre
Programar java 2preProgramar java 2pre
Programar java 2prejtk1
 
Serlets java pre
Serlets java preSerlets java pre
Serlets java prejtk1
 
Portada java 2
Portada java 2Portada java 2
Portada java 2jtk1
 
Piensa en java per
Piensa en java perPiensa en java per
Piensa en java perjtk1
 
Lenguaje de programacion java prev
Lenguaje de programacion java prevLenguaje de programacion java prev
Lenguaje de programacion java prevjtk1
 
Java kaime conpre
Java kaime conpreJava kaime conpre
Java kaime conprejtk1
 
Java jedi prev
Java jedi prevJava jedi prev
Java jedi prevjtk1
 
Java j2me prev
Java j2me prevJava j2me prev
Java j2me prevjtk1
 
Java ferca
Java fercaJava ferca
Java fercajtk1
 
Java desde 0 pre
Java desde 0 preJava desde 0 pre
Java desde 0 prejtk1
 
Java basico 2
Java basico 2Java basico 2
Java basico 2jtk1
 
Java angel estevan pre
Java angel estevan preJava angel estevan pre
Java angel estevan prejtk1
 
Java 3dpre
Java 3dpreJava 3dpre
Java 3dprejtk1
 
Java 2d
Java 2dJava 2d
Java 2djtk1
 
Introduc java pre
Introduc java preIntroduc java pre
Introduc java prejtk1
 
Guia de iniciación en java prev
Guia de iniciación en java prevGuia de iniciación en java prev
Guia de iniciación en java prevjtk1
 
Aprende java como si estuviera en primero pre
Aprende java como si estuviera en primero preAprende java como si estuviera en primero pre
Aprende java como si estuviera en primero prejtk1
 
52 ejercicios resueltos en pseudocodigoprev
52 ejercicios resueltos en pseudocodigoprev52 ejercicios resueltos en pseudocodigoprev
52 ejercicios resueltos en pseudocodigoprevjtk1
 

Más de jtk1 (20)

Actividad modulo1
Actividad modulo1Actividad modulo1
Actividad modulo1
 
Java schaum pre
Java schaum preJava schaum pre
Java schaum pre
 
Programar java 2pre
Programar java 2preProgramar java 2pre
Programar java 2pre
 
Serlets java pre
Serlets java preSerlets java pre
Serlets java pre
 
Portada java 2
Portada java 2Portada java 2
Portada java 2
 
Piensa en java per
Piensa en java perPiensa en java per
Piensa en java per
 
Lenguaje de programacion java prev
Lenguaje de programacion java prevLenguaje de programacion java prev
Lenguaje de programacion java prev
 
Java kaime conpre
Java kaime conpreJava kaime conpre
Java kaime conpre
 
Java jedi prev
Java jedi prevJava jedi prev
Java jedi prev
 
Java j2me prev
Java j2me prevJava j2me prev
Java j2me prev
 
Java ferca
Java fercaJava ferca
Java ferca
 
Java desde 0 pre
Java desde 0 preJava desde 0 pre
Java desde 0 pre
 
Java basico 2
Java basico 2Java basico 2
Java basico 2
 
Java angel estevan pre
Java angel estevan preJava angel estevan pre
Java angel estevan pre
 
Java 3dpre
Java 3dpreJava 3dpre
Java 3dpre
 
Java 2d
Java 2dJava 2d
Java 2d
 
Introduc java pre
Introduc java preIntroduc java pre
Introduc java pre
 
Guia de iniciación en java prev
Guia de iniciación en java prevGuia de iniciación en java prev
Guia de iniciación en java prev
 
Aprende java como si estuviera en primero pre
Aprende java como si estuviera en primero preAprende java como si estuviera en primero pre
Aprende java como si estuviera en primero pre
 
52 ejercicios resueltos en pseudocodigoprev
52 ejercicios resueltos en pseudocodigoprev52 ejercicios resueltos en pseudocodigoprev
52 ejercicios resueltos en pseudocodigoprev
 

Curso Lenguaje C

  • 1.
  • 2. PR E SE NT A C I O N Esta publicación recoge la documentación que se entrega en el Curso de Lenguaje "C" impartido por el Centro de Cálculo de la Universidad de Zaragoza. Contiene una reproducción de todas las transparencias que usa el profesor en sus exposiciones. No es un manual de referencia, sino un material didáctico dirigido a facilitar la comprensión de los conceptos, elementos y reglas de la construcción de programas con lenguaje "C". En el curso, se explica el lenguaje desde el principio, en términos que presuponen conocimientos básicos sobre la progamación de computadores. Se estudian, presentando abundantes ejemplos, todos los aspectos del lenguaje: tipos de datos, clases de almacenamiento, operadores, expresiones, sentencias de control, funciones, bibliotecas estándar. Hay una Introducción donde se exponen algunos datos históricos y características generales del lenguaje. En la lección 1, se presenta un panorama general de la estructura de un programa escrito en C sin profundizar, con el fin de adquirir desde el principio familiaridad con algunos aspectos importantes. Se habla del formato de escritura, de los comentarios, de las sentencias para el preprocesador, de la definición de funciones, de las reglas de alcance, de las expresiones, de la sentencias "if-else" y "for", de las funciones "scanf" y "printf". En la lección 2 se tratan los elementos que forman el programa desde el punto de vista léxico: caracteres, identificadores, palabras reservadas, constantes, cadenas, operadores, separadores. La lección 3 es muy breve. Se trata únicamente el operador de asignación para explicar la semántica de las expresiones de asignación. En la lección 4 se presentan los tipos de datos predefinidos sin entrar a fondo. También se trata de las clases de almacenamiento y de la inicialización de variables en las declaraciones. En la lección 5 se estudian los tipos fundamentales a fondo y los operadores más afines. La lección 6 se dedica a mostrar todas las sentencias de control.
  • 3. La lección 7 está dedicada a las funciones. Se estudian todos los aspectos relacionados con la definición y uso de las funciones. Se explican las reglas de alcance, las clases de almacenamiento. En la lección 8 se muestra un panorama general de los tipos estructurados predefinidos sin entrar a fondo. En la lección 9 se estudian a fondo el tipo "array", las cadenas y la relación con los punteros. Se presentan algunas funciones de biblioteca para manejar cadenas de caracteres. La lección 10 se dedica explicar el tipo "struct", los campos de "bits", las uniones y los tipos definidos por el usuario. En la lección 11 se presentan algunas funciones de biblioteca para leer y escribir en ficheros: abrir y cerrar fichero, posicionar, leer y escribir un carácter, leer y escribir una cadena, leer y escribir en binario, leer y escribir con formato. En la lección 12 se explican las bases para construir y manejar estructuras de datos dinámicas. Se estudia el caso de una lista encadenada con disciplina FIFO.
  • 4. C.00.01 C O NT E NI DO I NT R O DU C C I O N E ST R UC T UR A Y FO R M A T O DE L PR O G R A M A . PA NO R A M A G E NE R A L . E L E M E NT O S L E X I C O S. E X PR E SI O NE S Y SE NT E NC I A S. E X PR E SI O NE S DE A SI G NA C I O N. L O S T I PO S DE DA T O S. V I SI O N G E NE R A L . L O S T I PO S DE DA T O S FUNDA M E NT A L E S. L A S SE NT E NC I A S DE C O NT R O L . L A S FUNC I O NE S. L O S T I PO S DE DA T O S E ST R UC T UR A DO S. V I SI O N G E NE R A L . " A R R A Y S" , C A DE NA S Y PUNT E R O S. E ST R UC T UR A S, UNI O NE S Y T I PO S DE FI NI DO S PO R E L USUA R I O . FUNC I O NE S PA R A M A NE J O DE FI C H E R O S. E ST R UC T UR A S DI NA M I C A S DE DA T O S.
  • 5. C.00.02 E l lenguaje C fue diseñado por Dennis R itchie, 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 en T hompson para producir la versión original de UNIX en 1970. E l lenguaje B se basó en BC PL , lenguaje sin tipos desarrollado por M artin R ichards, en 1967, para programación de sistemas. Su definición apareció en 1978: apéndice " C R eference M anual" del libro " T he C programming L anguage" de Brian W . K ernighan y Dennis M . R itchie (E d. Prentice-H all) E n 1983, se publicó otro estándar: " T he C Programming L anguage-R eference M anual" (L ab.Bell) escrito por Dennis M . R itchie
  • 6. C.00.03 E S UN L E NG UA J E DE NI V E L M E DI O C ombina elementos de lenguajes de alto nivel (tipos, bloques, ...) con la funcionalidad de los ensambladores. Permite manejar los elementos típicos de la programación de sistemas: bits bytes direcciones NO E ST A FUE R T E M E NT E O R I E NT A DO A T I PO S T iene cinco tipos de datos básicos, tipos estructurados y admite definición 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 ejecución (desbordamiento de arrays, ...) " Deja hacer" al programador.
  • 7. C.00.04 E S UN L E NG UA J E SE M I -E ST R UC T UR A DO No es completamente estructurado en bloques porque no permite declarar procedimientos o funciones dentro de otros procedimientos o funciones. Pero tiene algunas características propias de los lenguajes estructurados: • Dos formas de estructuración del código: C on funciones independientes C on bloques • Dispone de las sentencias típicas para construir estructuras de control: while do-while for
  • 8. C.00.05 E S UN L E NG UA J E PA R A PR O G R A M A DO R E S A lgunos otros lenguajes están hechos para no-programadores (BA SI C , C O BO L , ...) E l lenguaje C está influenciado, diseñado y probado por programadores profesionales. Proporciona: • Una visión próxima a la máquina • Pocas restricciones • Pocas pegas • C onjunto reducido de palabras clave • E structuración en bloques • Funciones independientes • R ecursos para el encapsulamiento de datos Permite alcanzar casi la eficiencia del código ensamblador, junto con la estructuración propia de lenguajes como A L G O L , M O DUL A -2. Se diseñó para la programación de sistemas L os programas son muy transportables A ctualmente se usa para otros propósitos
  • 9. C.00.06 BIBLIOGRAFIA "The C programming language" Brian W Kernighan y Dennis M. Ritchie Ed. Prentice-Hall, segunda edición, 1988. "Lenguaje C. Introducción a la programación" Al Kelley e Ira Pohl Ed. Addison-Wesley, 1987 (edición original, en 1984). "C estándar. Guía de referencia para programadores" P.J. Plauger y Jim Brodie Ed. Anaya Multimedia, 1990 (primera edición en 1989) "C. Manual de referencia. Segunda edición" Herbert Schildt Ed. McGraw-Hill, 1990. Manual de Referencia de la implementación que se use.
  • 10. C.01.00 -1- E ST R UC T UR A Y FO R M A T O DE L PR O G R A M A . PA NO R A M A G E NE R A L . • E l formato de escritura • E jemplo de un programa completo • L os comentarios • L as sentencias para el pre-procesador • L as funciones. Definición de una función • L as declaraciones • R eglas de alcance • L as expresiones • L as sentencias • L a sentencia " if-else" • L a sentencia " for" • L a función " printf" • L a función " scanf"
  • 11. C.01.01 #include <stdio.h> main ( ) { saludo( ); primer_mensaje( ); } saludo() { printf ("Buenos diasn"); } primer_mensaje() { printf("Un programa esta formado "); printf("por funcionesn"); }
  • 12. C.01.02 L os programas se construyen con: C omentarios. Ordenes para el preprocesador de macros. Definiciones de funciones. E xpresiones formadas con constantes, variables, funciones y operadores. Sentencias.
  • 13. C.01.03 EL FORMATO DE ESCRITURA ES MUY FLEXIBLE: Las constantes, identificadores y palabras clave deben separarse; pero ello 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 <stdio.h> 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: %dn",menor(n1,n2)); } int menor (int a, int b) { if ( a < b ) return (a ); else return ( b ); }
  • 14. C.01.04 L O S C O M E NT A R I O S Son lineas que ignora el compilador pero sirven para documentar los programas: E mpiezan con: /* terminan con: */ pueden abarcar varias lineas no se pueden anidar /* ej1.c Indica el menor de dos enteros leidos */ ... ... ... scanf(" % d% d" , & n1, & n2); /* aqui se leen dos valores enteros */ ... ...
  • 15. C.01.05 L A S SE NT E NC I A S PA R A E L PR E PR O C E SA DO R Son órdenes que el preprocesador interpreta antes de que el código fuente sea compilado. E l preprocesador produce un programa escrito en C que es lo que se compila después. Deben empezar con el símbolo " # " en la primera columna. # define PI 3.1416 # define E Q == ---------- # define cuadrado(x) ( (x) * (x) ) ---------- # include <stdio.h> # include <math.h> ---------- # define PR UE BA 1 ... ... # if PR UE BA printf(" prueba: x = % dn" , x); # endif ---------- # ifdef UNO ... ... # else ... ... # endif ( cc -DUNO fn.c ) ---------- # ifndef ----------
  • 16. C.01.06 LAS FUNCIONES Un programa esta formado por funciones. No se pueden definir anidadas. Desde una función se puede llamar a cualquier otra. Está permitida la recursividad . Si no se indica otro tipo, las funciones son de tipo "int" por defecto El mecanismo de paso es por valor. DEVUELVEN UN VALOR. La función "main" Todo programa debe contener una función llamada "main". Es la invocada desde el sistema operativo cuando comienza la ejecución del programa. También devuelve un valor al medio de llamada.
  • 17. C.01.07 DE FI NI C I O N DE UNA FUNC I O N E ncabezamiento . . . . . . . . . . . . tipo nombre (p1, p2, p3) Declaración de parámetros . . . . . tipo p1, p2, p3; { C uerpo con: Declaraciones . . . . . . tipo v1, v2, v3; Sentencias . . . . . . sentencia ... sentencia } int menor(a, b) int a, b; { if ( a<b ) return( a ); else return( b ); }