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 02 de Julio del 2019
374 visualizaciones desde el 02 de Julio del 2019
318,7 KB
63 paginas
Creado hace 171d (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
Es necesario revisar y aceptar las políticas de privacidad

Revisar política de publicidad