Publicado el 14 de Agosto del 2019
786 visualizaciones desde el 14 de Agosto del 2019
375,1 KB
85 paginas
SISTEMAS OPERATIVOS
Introducción al Lenguaje C
ADVERTENCIA
2
¨ Este material es un simple guión de la clase: no son
los apuntes de la asignatura.
¨ El conocimiento exclusivo de este material no
garantiza que el alumno pueda alcanzar los
objetivos de la asignatura.
¨ Se recomienda que el alumno utilice los materiales
complementarios propuestos.
Sistemas Operativos - Introducción a C
Bibliografía
3
¨ Problemas resueltos de programación en C
F. García, J. Carretero, A. Calderón, J. Fernández, J.
M. Pérez.
Thomson, 2003.
ISBN: 84-9732-102-2.
¨ El lenguaje de programación C. Diseño e
implementación de programas
J. Carretero, F. García, J. Fernández, A. Calderón
Prentice Hall, 2001
Sistemas Operativos - Introducción a C
Origen
4
¨ 1969-1973: Dennis Ritchie.
¨ 1973: Núcleo de UNIX se rescribe en C.
¨ 1983-1989: Estándar ANSI C. à ANSI C
¨ 1990: Estándar ISO 9899:1990. à C90
¨ 1999: Estándar ISO/IEC 9899:19999. à C99
Sistemas Operativos - Introducción a C
Características de C (I)
5
¨ Lenguaje de propósito general ampliamente utilizado.
¨ Presenta características de bajo nivel:
¤ C trabaja con la misma clase de objetos que la mayoría de los computadores
(caracteres, números y direcciones)
¨ Estrechamente asociado con el sistema operativo UNIX:
¤ UNIX y su software fueron escritos en C
¨ Es un lenguaje adecuado para programación de sistemas por su utilidad en
la escritura de sistemas operativos.
¨ Es adecuado también para cualquier otro tipo de aplicación.
ARCOS @ UC3M
Características de C (II)
6
¨ Lenguaje pequeño
¤ sólo ofrece sentencias de control sencillas y funciones.
¨ No ofrece mecanismos de E/S (entrada/salida)
¤ Todos los mecanismos de alto nivel se encuentran fuera del lenguaje y se ofrecen
como funciones de biblioteca (ej. stdio.h)
¨ Programas portables
¤ pueden ejecutarse sin cambios en multitud de computadores.
¨ Permite programación estructurada y diseño modular.
ARCOS @ UC3M
Palabras reservadas en C (C99)
7
auto
break
case
char
const
continue
default
do
double
else
enum
extern
float
for
goto
if
inline
int
long
register
return
short
signed
sizeof
static
struct
switch
typedef
union
unsigned
void
volatile
while
_Bool
_Complex
_Imaginary
Sistemas Operativos - Introducción a C
¿Por qué aprender C si ya sé Java?
8
¨ Lenguaje de alto nivel y de bajo nivel.
¤ Interacción con el sistema operativo y controladores de
dispositivos
¨ Mayor y mejor control de mecanismos de bajo nivel.
¤ P. ej.: asignación de memoria.
¨ Mejor rendimiento que Java en muchos casos.
¨ Java oculta muchos detalles necesarios para la interacción
con el sistema operativo.
¨ Existe mucho código en C (o C++).
¨ Para ser “multilingüe”
Sistemas Operativos - Introducción a C
¿Qué se usa ahí fuera?
9
¨ Sistemas Operativos:
¨ GUI
¤ Windows: C/C++
¤ Linux: C
¤ MacOS: C/C++
¤ Solaris: C
¤ HP-UX: C
¤ Google Chrome OS: C/C++
¨ Sistemas Operativos para
móviles:
¤ Symbian: C++
¤ Google Android: C
¤ RIM Blackberry: C++
¤ Microsoft Windows UI: C++
¤ Apple Aqua: C++
¤ Gnome: C/C++
¤ KDE: C++
¨ Buscadores Desktop:
¤ Google Desktop: C++
¤ Microsoft Win Desktop: C++
¤ Beagle: C++
Sistemas Operativos - Introducción a C
¿Qué se usa ahí fuera?
10
¨ Ofimática:
¤ Microsoft Office: C++
¤ Sun Open Office: C/Java
¤ Corel Office: C/C++
¤ Adobe: C++
¨ Bases de datos:
¤ Oracle: C/C++. Java
¤ MySQL: C++
¤ IBM DB2: C/C++
¤ SQL Server: C++
¤ IBM Informix: C/C++
¤ SAP DB: C++
¨ Servidores Web:
¤ Apache: C/C++
¤ Microsoft IIS: C++
¨ Navegadores:
¤ Internet Explorer: C++
¤ Mozilla: C++
¤ Safari: C++
¤ Google Chrome: C++
¤ Sun Hot Java: Java
¤ Opera: C++
¤ Mosaic: C
¨ Motores 3D:
¤ DirectX: C++
¤ OpenGL: C
¤ OGRE 3D: C++
Sistemas Operativos - Introducción a C
Desventajas
11
¨ C es más antiguo que Java.
¨ C no es orientado a objetos.
¨ C no es un lenguaje fuertemente tipado.
¤ Es bastante permisivo con la conversión de datos.
¨ El lenguaje es portable, pero muchas bibliotecas son dependientes de la
plataforma.
¨ La gestión de recursos no es automática.
¤ Hay que devolver todo lo que se coge (por ej. la memoria)
¨ Se puede llegar a escribir código incomprensible.
¨ Sin una programación metódica puede ser propenso a errores difíciles de
encontrar.
¨ La versatilidad de C permite crear programas difíciles de leer.
Sistemas Operativos - Introducción a C
Ejemplo de código C
12
#define _ -F<00||--F-OO--;
int F=00,OO=00;
main(){F_OO();printf("%1.3fn",4.*-F/OO/OO);}F_OO()
{
_-_-_-_
_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_
_-_-_-_
}
ARCOS @ UC3M
Modelo de compilación de C
13
Sistemas Operativos - Introducción a C
Compilación vs. interpretación
14
¨ Cuando se compila un programa en Java:
¤ Se genera una representación intermedia bytecode.
¤ Para ejecutar el programa, la máquina virtual debe
interpretar cada instrucción del bytecode y traducir juego
de instrucciones del procesador.
¨ Cuando se compila un programa en C:
¤ Se genera un archivo ejecutable con instrucciones máquina.
¤ Para ejecutar el programa no hace falta máquina virtual.
¤ Para llevarlo a otra plataforma hay que volver a compilar.
Sistemas Operativos - Introducción a C
Utilización de bibliotecas
15
¨ En C no existe el concepto de paquete Java ni hay
clausula import.
¤ Las bibliotecas estándar se enlazan por defecto.
¤ Hay que incluir en el programa la declaración de los
tipos de datos y funciones que se usan.
¤ La directiva #include copia el texto de un archivo un el
punto de inclusión.
n #include <archivo.h> à Inclusión de biblioteca del sistema.
n #include “archivo.h” à Inclusión de biblioteca del usuario.
Sistemas Operativos - Introducción a C
Hola mundo
16
hola.c
/* Inclusión de archivos */
#include <stdio.h>
/* Función principal */
int main (int argc,char **argv)
{
/* Impresión por pantalla y salida del programa*/
printf("Hola mundo\n");
return 0;
}
compilador
Programa ejecutable
Sistemas Operativos - Introducción a C
El programa principal
17
¨ Un programa C tiene una única función main() que
actúa de programa principal.
¤ main devuelve un número entero.
n 0 à Todo fue OK
n No 0 à Ha habido un error
Sistemas Operativos - Introducción a C
Impresión
18
¨ La función de biblioteca printf() permite imprimir
textos en la pantalla.
¤ Se encuentra declarada en el archivo de cabecera
<stdio.h>
¤ Hay que incluirla como fichero de cabecera
¨ En general, para cualquier función de cabecera que
usemos en nuestros programas:
¤ incluir la biblioteca (o librería) donde se encuentra
implementada
Sistemas Operativos - Introducción a C
La función scanf()
19
¨ Permite leer datos del usuario.
¨ La función devuelve el número de datos que se han leído
correctamente.
¨ Formato:
¤ scanf(formato, argumentos);
¨ Especificadores de formato igual que printf().
¨ Ejemplos:
scanf("%f", &numero);
scanf("%c", &letra);
scanf("%f %d %c", &real, &entero, &letra);
scanf("%ld", &entero_largo);
¨ Importante el operador &.
Sistemas Operativos - Introducción a C
Especificadores de formato
20
¨ Carácter
¨ d, i
¨ u
¨ o
¨ x,X
¨ f
¨ e, E
¨ g, G
¨ c
¨ s
¨ %
¨ p
¨ ld,lu,lx,lo
Argumentos
entero
entero
entero
entero
real
real
carácter
cadena de caracteres
void
entero
Resultado
entero decimal con signo
entero decimal sin signo
entero octal sin signo
entero hexadecimal sin signo
real con punto y con signo
notación exponencial con signo
un carácter
cadena de caracteres
imprime %
Dependiente implementación
entero largo
Sistemas Operativos - Introducción a C
Compilación
21
¨ Se puede utilizar cualquier compilador ANSI C.
¨ En clases y prácticas vamos a usar gcc.
¨ Alternativas:
¤ Linux/Unix: Suele estar instalado.
¤ Windows: Cygwin
¨ Ejemplos:
¤ 1)
¤ 2)
Sistemas Operativos - Introducción a C
Errores
22
¨ Cuando se obtienen muchos errores de compilación
unos dependen de otros.
¤ gcc devuelve el número de línea donde aparece el
error y una descripción
¤ Arreglar en orden (primero el primer error) y volver a
compilar.
¨ Si hay advertencias (warnings) pero no errores, gcc
genera un ejecutable.
¤ Peligroso. Un programa correcto no debe tener
“warnings”.
Sistemas Operativos - Introducción a C
Errores comunes
23
¨ Problemas con las mayúsculas y minúsculas.
¨ Omisión del punto y coma.
¨ Comentarios incompletos.
¨ Comentarios anidados.
¨ Uso de variables no declaradas.
Sistemas Operativos - Introducción a C
Comentarios
24
¨ Cualquier secuencia entre /* y */.
¨ Los comentarios del tipo // no son válidos en ANSI
C.
¨ No se pueden anidar comentarios.
Sistemas Operativos - Introducción a C
Tipos de datos numéricos
25
¨ Numéricos enteros:
¤ char à 1 byte
¤ int à 1 palabra (típico 4 bytes)
¤ short, long, long long
¤ Se admiten prefijos unsigned y signed.
¤ Por defecto, todos son con signo.
¨ Numéricos reales:
¤ float à Simple precisión.
¤ double à Doble precisión.
Sistemas Operativos - Introducción a C
En C no hay booleanos (C90)
26
¨ Se utilizan valores de los tipos numéricos enteros.
¨ Interpretación:
¤ 0 à Falso
¤ Cualquier otro valor (típicamente 1)à Cierto
¨ Cuidado:
#include <stdio.h>
int main() {
int x, y;
x=1;
y=2;
if (x=y) { printf("Iguales\n"); }
return 0;
/* cierto */
/* cierto */
}
Sistemas Operativos - Introducción a C
Esto es una
asignación y NO
una comparación!
Declaración de variables
27
¨ Una declaración asocia un tipo de datos determinado a una o
Comentarios de: Introducción al lenguaje C (0)
No hay comentarios