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", ¬a);
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", ¬a);
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
Comentarios de: C para Sistemas Operativos (0)
No hay comentarios