PDF de programación - C para Sistemas Operativos

Imágen de pdf C para Sistemas Operativos

C para Sistemas Operativosgráfica de visualizaciones

Publicado el 2 de Julio del 2019
2.281 visualizaciones desde el 2 de Julio del 2019
318,7 KB
63 paginas
Creado hace 5a (31/01/2019)
C para Sistemas Operativos
Introducción a los Sistemas Operativos,

2018-2019

Pablo González Nalda

Depto. de Lenguajes y Sistemas Informáticos

1 de febrero de 2019

Modificado el 31 de enero de 2019

Contenidos de la presentación

1 Parte básica de la sintaxis de C

Contenidos

Parte básica de
la sintaxis de C

Control de flujo

Matrices

Cadenas

Subprogramas

Qué es un
puntero

Tipos de
punteros y
tablas

Punteros y
cadenas

Punteros y
estructuras

¿Más
preguntas?

2 Control de flujo

3 Matrices

4 Cadenas

5 Subprogramas

6 Qué es un puntero

7 Tipos de punteros y tablas

8 Punteros y cadenas

9 Punteros y estructuras

2 / 63

1 Parte básica de la sintaxis de C

Contenidos

Parte básica de
la sintaxis de C

Control de flujo

Matrices

Cadenas

Subprogramas

Qué es un
puntero

Tipos de
punteros y
tablas

Punteros y
cadenas

Punteros y
estructuras

¿Más
preguntas?

2 Control de flujo

3 Matrices

4 Cadenas

5 Subprogramas

6 Qué es un puntero

7 Tipos de punteros y tablas

8 Punteros y cadenas

9 Punteros y estructuras

3 / 63

Programa “Hola, muy buenas...”

1 /* Programa simple */

/* Comentario. No pueden anidarse */
#include <stdio.h>

4 main( ) {

printf("Hola, muy buenas...");

}

gcc -o hola hola.c

Contenidos

Parte básica de
la sintaxis de C

Control de flujo

Matrices

Cadenas

Subprogramas

Qué es un
puntero

Tipos de
punteros y
tablas

Punteros y
cadenas

Punteros y
estructuras

¿Más
preguntas?

4 / 63

Variables

#include <stdio.h>

2 main( ) {

/* entero con signo */

/* carácter ASCII */

/* real simple precisión */

int entero;
char caracter;
float real;
entero = 2+2;
caracter = ’a’;
real=6.023E23;
printf("\nResultado: %d\t’ %c’ ",entero, caracter);
printf("\treal %f", real);

5

8

11 }

Contenidos

Parte básica de
la sintaxis de C

Control de flujo

Matrices

Cadenas

Subprogramas

Qué es un
puntero

Tipos de
punteros y
tablas

Punteros y
cadenas

Punteros y
estructuras

¿Más
preguntas?

5 / 63

Constantes

Contenidos

Parte básica de
la sintaxis de C

Control de flujo

1 #include <stdio.h>

#define MAX 50
main( ) {

const int entero=3;
const float PI=3.1415926;
printf("\nResultado: %d, otros %d %d",entero, 66, MAX);
printf("\treal %f", real);

4

7

}

Matrices

Cadenas

Subprogramas

Qué es un
puntero

Tipos de
punteros y
tablas

Punteros y
cadenas

Punteros y
estructuras

¿Más
preguntas?

6 / 63

Control de compilación

1 #include <stdio.h>

#define PRUEBA
main( ) {

4 #ifdef PRUEBA

printf("Prueba");

#else

7

printf("No hay prueba");

#endif
}

Contenidos

Parte básica de
la sintaxis de C

Control de flujo

Matrices

Cadenas

Subprogramas

Qué es un
puntero

Tipos de
punteros y
tablas

Punteros y
cadenas

Punteros y
estructuras

¿Más
preguntas?

7 / 63

Control de compilación

Contenidos

Parte básica de
la sintaxis de C

Control de flujo

Matrices

Cadenas

#include <stdio.h>
main( ) {

3 #ifdef PRUEBA

printf("Prueba");

#else

Subprogramas

6

printf("No hay prueba");

#endif
}

1 gcc -o prueba prueba.c -DPRUEBA

Qué es un
puntero

Tipos de
punteros y
tablas

Punteros y
cadenas

Punteros y
estructuras

¿Más
preguntas?

8 / 63

Dualidad carácter/valor ASCII

#include <stdio.h>

2 main( ) {

char a=’C’,b=’f’, c=’3’;
int x;
x=a-’A’;
printf("\nDistancia: %d",x);
printf("\nValor numérico: %d", c-’0’); /* 51-48 */
a=a+(’a’-’A’);
b=b-32;
printf("\n %c \t %c", a,b); /* resultado */

/* +32 pasa a minúsculas*/

/* Pasa a mayúsculas */

5

8

11 }

Contenidos

Parte básica de
la sintaxis de C

Control de flujo

Matrices

Cadenas

Subprogramas

Qué es un
puntero

Tipos de
punteros y
tablas

Punteros y
cadenas

Punteros y
estructuras

¿Más
preguntas?

9 / 63

Operadores matemáticos

1 a=-b;

a=a+b;
a=c-b;
4 a=c*b;
a=c/b;

Si son enteros, sólo da el cociente de la

división. Si uno de ellos (por lo menos) es real, da la

división con todos los decimales posibles

a=c %b;

Sólo se puede usar con enteros, y da el resto de

la división entera

Contenidos

Parte básica de
la sintaxis de C

Control de flujo

Matrices

Cadenas

Subprogramas

Qué es un
puntero

Tipos de
punteros y
tablas

Punteros y
cadenas

Punteros y
estructuras

¿Más
preguntas?

10 / 63

Abreviaturas

a=a+1; -> a++; o también ++a; (Hay diferencia)
b=b-1; -> b--; o también --b; (Hay diferencia)

3 b = b + c; -> b += c;
b = b - c; -> b -= c;
b = b * c; -> b *= c;
6 b = b / c; -> b /= c;

¡¡Cuidado!!
c=3;

9 b=c+1; -> b tiene 4 y c tiene 3 (d=c+1;

b=c++; -> b tiene 3 y c tiene 4 (d=c; c=c+1;
b=++c; -> b tiene 4 y c tiene 4 (c=c+1; d=c;

b=d;)

b=d;)
b=d;)

Contenidos

Parte básica de
la sintaxis de C

Control de flujo

Matrices

Cadenas

Subprogramas

Qué es un
puntero

Tipos de
punteros y
tablas

Punteros y
cadenas

Punteros y
estructuras

¿Más
preguntas?

11 / 63

Entrada/Salida

1 #include <stdio.h>

4

7

10

13

void main(){
int num;
char car, nombre[10]; /* Cadena de caracteres */
printf("Introduce un numero entero");
scanf(" %d", &num);
printf(" la variable \"car\": ");
fflush(stdin); /* Vacía el búfer del teclado */
scanf(" %c", &car);
fflush(stdin);
printf("\nIntroduce un nombre");
scanf(" %s", nombre);
printf("\n\nEl número es %d, \t y el ", num);
printf("carácter %c.\n", car);
printf("La cadena es %s", nombre);

16 }

Contenidos

Parte básica de
la sintaxis de C

Control de flujo

Matrices

Cadenas

Subprogramas

Qué es un
puntero

Tipos de
punteros y
tablas

Punteros y
cadenas

Punteros y
estructuras

¿Más
preguntas?

12 / 63

Operaciones lógicas con bits

Contenidos

#include <stdio.h>

Parte básica de
la sintaxis de C

Control de flujo

Matrices

Cadenas

Subprogramas

Qué es un
puntero

Tipos de
punteros y
tablas

Punteros y
cadenas

Punteros y
estructuras

¿Más
preguntas?

2 main() {

5

8

11

14

17

}

char dato, mascara=0x01; /* mascara=1 */
int i, cont=0;
scanf(" %c", &dato);
for (i=0; i<8; i++) {

printf(" %d",((dato&mascara)!=0));
if((dato & mascara)!=0) cont++; /* and de bits */
mascara = mascara << 1; /* Desplazamiento de */

}
printf("\nEn ’ %c’ hay %d unos\n", dato,cont);

/* bits a la izq */

& and
| or
~ not
^ xor

>> Desplazamiento a la derecha

<< Desplazamiento a la izquierda

Lo mismo con iguales

&=

|=

^=

<<=

>>=

13 / 63

1 Parte básica de la sintaxis de C

Contenidos

Parte básica de
la sintaxis de C

Control de flujo

Matrices

Cadenas

Subprogramas

Qué es un
puntero

Tipos de
punteros y
tablas

Punteros y
cadenas

Punteros y
estructuras

¿Más
preguntas?

2 Control de flujo

3 Matrices

4 Cadenas

5 Subprogramas

6 Qué es un puntero

7 Tipos de punteros y tablas

8 Punteros y cadenas

9 Punteros y estructuras

14 / 63

Condicionales

1 if (b == 0) {

a=1;

}

4 else {

a=2;

}

7 a = (b==0 ? 1 : 2 );

Contenidos

Parte básica de
la sintaxis de C

Control de flujo

Matrices

Cadenas

Subprogramas

Qué es un
puntero

Tipos de
punteros y
tablas

Punteros y
cadenas

Punteros y
estructuras

¿Más
preguntas?

15 / 63

Operaciones condicionales

<

2 <=
==
!=

5 >

>=
||
8 &&

menor que

menor o igual que

igual (dos iguales)

distinto de
mayor que

mayor o igual que

uno u otro, o los dos

(or lógico)

uno y otro

(and lógico)

!( expresión)

no es cierto, no ocurre ese algo (not lógico

)

Contenidos

Parte básica de
la sintaxis de C

Control de flujo

Matrices

Cadenas

Subprogramas

Qué es un
puntero

Tipos de
punteros y
tablas

Punteros y
cadenas

Punteros y
estructuras

¿Más
preguntas?

16 / 63

Ejemplo de condicionales: if

Contenidos

Parte básica de
la sintaxis de C

Control de flujo

Matrices

Cadenas

Subprogramas

Qué es un
puntero

Tipos de
punteros y
tablas

Punteros y
cadenas

Punteros y
estructuras

¿Más
preguntas?

/*
#include <stdio.h>

if anidados adecuados para switch.C */

3 int nota;

void main() {

printf("Dame tu nota ");
scanf(" %d", &nota);
if(nota==0||nota==1||nota==2|| nota==3 ||nota==4) {

printf("\nLo siento, has suspendido \n");
printf("Si intentas otra, apruebas\n\n");

}
else if (nota==5 || nota==6)

printf("\nUn aprobado \n");

else if (nota==7 || nota==8)

printf("\nUn notable, muy bien \n");

else if (nota==9)

printf("\nSobresaliente \n");

else if (nota==10) printf("\nFelicidades, un 10 \n");
else if (nota==11) {

printf("\n Menos lobos... \n");
printf("\n¿Qué nota es ésa? \n");

} else printf("\n¿Qué nota es ésa? \n");
getch(); /* para el programa hasta pulsar una tecla*/

17 / 63

6

9

12

15

18

21

}

Ejemplo de condicionales: switch

Contenidos

Parte básica de
la sintaxis de C

Control de flujo

Matrices

Cadenas

Subprogramas

Qué es un
puntero

Tipos de
punteros y
tablas

Punteros y
cadenas

Punteros y
estructuras

¿Más
preguntas?

1 #include <stdio.h>

int nota;
void main(){

printf("Dame tu nota "); scanf(" %d", &nota);
switch(nota){

case 0: case 1: case 2: case 3:case 4:
printf("\nLo siento, has suspendido \n");
printf("Si intentas otra vez, apruebas\n\n");
break;
case 5:case 6: printf("\nUn aprobado \n"); break;
case 7:
case 8:
printf("\nUn notable, muy bien \n");
break;
case 10:
printf("\nFelicidades, un 10 \n");
case 9: printf("\nSobresaliente \n"); break;
case 11:
printf("\n Menos lobos... \n");
default:
printf("\n¿Qué nota es ésa? \n");

} /* fin switch */
getch(); /* para el programa hasta pulsar tecla*/

18 / 63

4

7

10

13

16

19

22

}

Ejemplo de iterativas

#include <stdio.h>
void main() {

char sn;
int n=10;
do {

printf("\n¿seguimos?(S/N)");
fflush(stdin);
scanf(" %c", &sn);

} while (sn==’s’ || sn==’S’);

while (n>0) {

printf("\t %d,",n);
n--;

}
printf("\t %d.",n);

}

Contenidos

Parte básica de
la sintaxis de C

Control de flujo

Matrices

Cadenas

Subprogramas

Qué es un
puntero

Tipos de
punteros y
tablas

Punteros y
cadenas

Punteros y
estructuras

¿Más
preguntas?

3

6

9

12

15

19 / 63

Ejemplo de iterativas: for

Contenidos

Parte básica de
la sintaxis de C

Control de flujo

Matrices

Cadenas

Subprogramas

2

5

8

for (cont=1; cont<=10; cont=cont+1)

printf("\n¡Hola!");

// Para imprimir los múltiplos de 7 menores de 500:
for (cont=7; cont<500; cont=cont+7)

printf("\n %d",cont);

// Y si queremos una cuenta atrás:
for
  • Links de descarga
http://lwp-l.com/pdf16209

Comentarios de: C para Sistemas Operativos (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