Actualizado el 16 de Junio del 2017 (Publicado el 14 de Enero del 2017)
1.242 visualizaciones desde el 14 de Enero del 2017
352,9 KB
240 paginas
Creado hace 26a (29/09/1998)
CURSO
DE
LENGUAJE "C"
Angel Salas
Centro de Cálculo
Universidad de Zaragoza
Enero - 1991
SALAS, Angel
Curso de Lenguaje "C" / Angel Salas . - Zaragoza :
Secretariado de Publicaciones de la Universidad ,
1991 . - 238 p. ( pag. var. ) ; 30 cm . - (C.C.U.Z. ; 28)
ISBN 84-7733-232-0
CURSO DE LENGUAJE "C"
Angel Salas
Centro de Cálculo
de la Universidad de Zaragoza, 1991.
Edificio de Matemáticas
Ciudad Universitaria
50009 - ZARAGOZA
Tfno: 354100
Edita:
Secretariado de Publicaciones
de la Universidad de Zaragoza
Depósito Legal: Z-416-91
I.S.B.N.: 84-7733-232-0
PRESENTACION
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
léxico: caracteres,
identificadores, palabras reservadas, constantes, cadenas,
vista
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
CONTENIDO
INTRODUCCION
ESTRUCTURA Y FORMATO DEL PROGRAMA.
PANORAMA GENERAL.
ELEMENTOS LEXICOS.
EXPRESIONES Y SENTENCIAS. EXPRESIONES DE
ASIGNACION.
LOS TIPOS DE DATOS. VISION GENERAL.
LOS TIPOS DE DATOS FUNDAMENTALES.
LAS SENTENCIAS DE CONTROL.
LAS FUNCIONES.
LOS TIPOS DE DATOS ESTRUCTURADOS. VISION
GENERAL.
"ARRAYS", CADENAS Y PUNTEROS.
ESTRUCTURAS, UNIONES Y TIPOS DEFINIDOS POR
EL USUARIO.
FUNCIONES PARA MANEJO DE FICHEROS.
ESTRUCTURAS DINAMICAS DE DATOS.
C.00.02
El lenguaje C fue diseñado por Dennis Ritchie, de los Laboratorios 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 Ken
Thompson para producir la versión original de UNIX en 1970.
El lenguaje B se basó en BCPL, lenguaje sin tipos desarrollado por
Martin Richards, en 1967, para programación de sistemas.
Su definición apareció en 1978:
apéndice "C Reference Manual"
del libro "The C programming Language"
de Brian W. Kernighan y Dennis M. Ritchie
(Ed. Prentice-Hall)
En 1983, se publicó otro estándar:
"The C Programming Language-Reference Manual"
(Lab.Bell)
escrito por Dennis M. Ritchie
C.00.03
ES UN LENGUAJE DE NIVEL MEDIO
Combina 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 ESTA FUERTEMENTE ORIENTADO A TIPOS
Tiene 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
(desbordamiento de arrays, ...)
tiempo de ejecución
"Deja hacer" al programador.
C.00.04
ES UN LENGUAJE SEMI-ESTRUCTURADO
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:
Con funciones independientes
Con bloques
• Dispone de las sentencias típicas para construir
estructuras de control:
while
do-while
for
C.00.05
ES UN LENGUAJE PARA PROGRAMADORES
Algunos otros lenguajes están hechos para no-programadores (BASIC,
COBOL, ...)
El 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
• Conjunto reducido de palabras clave
• Estructuración en bloques
• Funciones independientes
• Recursos para el encapsulamiento de datos
Permite alcanzar casi la eficiencia del código ensamblador, junto con la
estructuración propia de lenguajes como ALGOL, MODULA-2.
Se diseñó para la programación de sistemas
Los programas son muy transportables
Actualmente 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 -
ESTRUCTURA Y FORMATO DEL PROGRAMA.
PANORAMA GENERAL.
• El formato de escritura
• Ejemplo de un programa completo
• Los comentarios
• Las sentencias para el pre-procesador
• Las funciones. Definición de una función
• Las declaraciones
• Reglas de alcance
• Las expresiones
• Las sentencias
• La sentencia "if-else"
• La sentencia "for"
• La función "printf"
• La función "scanf"
C.01.01
#include <stdio.h>
main ( )
{
saludo( );
primer_mensaje( );
}
saludo()
{
printf ("Buenos dias\n");
}
primer_mensaje()
{
}
printf("Un programa esta formado ");
printf("por funciones\n");
C.01.02
Los programas se construyen con:
Comentarios.
Ordenes para el preprocesador
de 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; 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 ( )
{
else
}
int n1, n2, menor (int, int);
printf ("Introducir dos enteros:\n");
scanf ("%d%d", &n1, &n2);
if ( n1 == n2 )
printf ("Son iguales \n");
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
LOS COMENTARIOS
Son lineas que ignora el compilador pero sirven para documentar los
programas:
Empiezan 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
LAS SENTENCIAS PARA EL PREPROCESADOR
Son órdenes que el preprocesador interpreta antes de que el código
fuente sea compilado.
El 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 EQ ==
----------
# define cuadrado(x) ( (x) * (x) )
----------
# include <stdio.h>
# include <math.h>
----------
# define PRUEBA 1
...
...
# if PRUEBA
printf("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 función se puede llamar a cualquier otra.
Está permitida la recursividad.
Si no se indica otro tipo, las funciones son de tipo "in
Comentarios de: Curso de Lenguaje C (0)
No hay comentarios