PDF de programación - Introducción al lenguaje C

<<>>
Imágen de pdf Introducción al lenguaje C

Introducción al lenguaje Cgráfica de visualizaciones

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
  • Links de descarga
http://lwp-l.com/pdf16456

Comentarios de: Introducción al lenguaje C (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad