Introducción al lenguaje C - ELAI-UPM

Anuncio
Decimal
Lección 2
Introducción al lenguaje C
Binario
Hexadecimal
Octal
0
0000
0
0
1
0001
1
1
2
0010
2
2
3
0011
3
3
4
0100
4
4
5
0101
5
5
6
0110
6
6
7
0111
7
7
8
1000
8
10
9
1001
9
11
10
1010
A
12
11
1011
B
13
12
1100
C
14
13
1101
D
15
14
1110
E
16
15
1111
F
17
Equivalencia entre decimal, binario, hexadecimal y octal.
1
2
Código ASCII (American Standard Code for Information Interchange)
PALABRAS CLAVE O RESERVADAS
Ejemplo: Estándar de 7 bits (128 caracteres)
95 caracteres imprimibles (del 32 al 126)
32
33
!
auto
44
,
56
8
68
D
80
P
92
\
104
h
116
t
45
-
57
9
69
E
81
Q
93
]
105
i
117
u
double
int
struct
break
else
long
switch
enum
register
typedef
34
"
46
.
58
:
70
F
82
R
94
^
106
j
118
v
case
35
#
47
/
59
;
71
G
83
S
95
_
107
k
119
w
char
extern
return
union
36
$
48
0
60
<
72
H
84
T
96
`
108
l
120
x
const
float
short
unsigned
37
%
49
1
61
=
73
I
85
U
97
a
109
m
121
y
38
&
50
2
62
>
74
J
86
V
98
b
110
n
122
z
continue
for
signed
void
{
default
goto
sizeof
volatile
do
if
static
while
39
'
51
3
63
?
75
K
87
W
99
c
111
o
123
40
(
52
4
64
@
41
)
53
5
65
A
76
L
88
X
100
d
112
p
124
|
77
M
89
Y
101
e
113
q
125
}
42
*
54
6
66
B
43
+
55
7
67
C
78
N
90
Z
102
f
114
r
126
~
79
O
91
[
103
g
115
s
3
4
IDENTIFICADORES
¿Qué identificadores son válidos?
Son los nombres que se pueden dar a elementos del programa.
Reglas para formar identificadores:
1.
Soy un identificador
2.
Yo_también
3.
1_primero
4.
_dato1
5.
V_=IxR
6.
automovil
7.
auto
8.
ejemplo:
- Sólo se pueden utilizar los siguientes caracteres:
ƒ Letras:
a-z o A-Z (la eñe no vale)
ƒ Números:
0-9
ƒ Carácter de subrayado: _
- Primer carácter: letra o carácter de subrayado (nunca un número).
- Tienen que ser distintos de las palabras clave.
- Las mayúsculas y las minúsculas son diferentes para el
compilador. Pepe, pepe y PEPE son identificadores distintos.
5
6
2.7 OPERADORES
SECUENCIAS DE ESCAPE
2.7.1 ARITMÉTICOS
Una secuencia de escape está formada por el carácter barra invertida \
seguida de una letra o una combinación de dígitos.
Operador
Secuencia
\n
\t
\b
\r
\f
\a
\’
\”
\\
\ooo
\xhh
Definición
Retorno de carro y salto de línea
Tabulador horizontal
Retroceso (“backspace”)
Retorno de carro sin salto de línea
Alimentación de página para impresora
Pitido
Comilla simple
Comilla doble
Barra invertida (“backslash”)
Carácter ASCII (o es un dígito octal)
Carácter ASCII (h es un dígito hexadecimal)
Operación
+
Suma
-
Resta
*
Multiplicación
/
División
%
Módulo (o resto) de una división de números enteros.
Prioridad (o precedencia) de las operaciones:
1º. Paréntesis () (evaluados de más internos a más externos)
2º. Multiplicación *, división / y módulo %.
3º. Suma + y resta -.
Asociatividad de izquierda a derecha.
7
8
2.7.3 INCREMENTALES
2.7.2 RELACIONALES
- Se aplican a un solo operando, generalmente una variable entera.
- Los operandos son datos numéricos de un tipo básico (int, float, etc.).
Operador
- El resultado de la operación es un valor booleano: verdadero o falso (1 ó 0).
Operador
Operación
Operación
++
Incremento de una unidad.
--
Decremento de una unidad.
<
¿Primer operando menor que el segundo?
>
¿Primer operando mayor que el segundo?
<=
¿Primer operando menor o igual que el segundo?
Operación
>=
¿Primer operando mayor o igual que el segundo?
x++
Post-incremento
!=
¿Primer operando distinto del segundo?
++x
Pre-incremento
==
¿Primer operando igual que el segundo?
x--
Post-decremento
--x
Pre-decremento.
- Dependiendo de la posición respecto del operando podemos distinguir:
Significado
9
10
2.7.5 OPERADORES DE BITS
2.7.4 LÓGICOS
- Los operandos son booleanos (1 ó 0).
- Las operaciones se realizan sobre los bits de operandos enteros.
- Un operando puede ser un variable o una constante numérica, en cuyo
caso se evaluará como:
Operador
Operación
Verdadero, si su valor es distinto de 0.
&
AND
Falso, si su valor es igual a 0.
|
OR
^
XOR
- El resultado de la operación es un valor booleano: verdadero o falso (1 ó 0).
Operador Operación
&&
AND
||
OR
!
NOT
Resultado
Verdadero
Falso
Verdadero
Falso
Verdadero
Falso
Condición
Si ambos operandos son verdaderos.
Si uno de los operandos es falso.
Si uno de los operandos es verdadero.
Si ambos operandos son falsos.
Si el operando es falso.
Si el operando es verdadero.
11
<<
Desplazamiento a la izquierda rellenando con ceros
por la derecha
>>
Desplazamiento a la derecha rellenando con el bit de
signo por la izquierda
~
NOT (complemento a 1)
12
2.7.6 ASIGNACIÓN
2.7.7 OTROS OPERADORES
- Asignan el valor de la expresión situada a la derecha del operador al
operando situado a su izquierda.
Operador condicional ? :
- El valor de la expresión se convierte al tipo de datos del operando.
- Sintaxis:
Operador
Ejemplo
Operando1 ? Operando2 : Operando3
- Resultado de la operación:
Significado
=
x=0
Asignación simple
Operando 1 (booleano)
Resultado de la operación
*=
x*=y
x=x*y
Verdadero
Operando2
/=
x/=3
x=x/3
Falso
Operando3
%=
x%=2
x=x%2
+=
x+=y
x=x+y
-=
x-=2
x=x-2
<<=
x<<=1
x=x<<1
>>=
x>>=2
x=x>>2
&=
x&=z
x=x&z
|=
x|=y
x=x|y
^=
x^=y
x=x^y
- Ejemplo:
int x = 5, y = 10, z = 0;
z = (x > y) ? x : y ;
//z = 10
z = (x != y) ? x : y ;
/* z = 5 */
13
14
Operador sizeof (“tamaño de”)
- Proporciona el tamaño de su operando en bytes.
- Sintaxis:
sizeof (operando)
- Operando: identificador o tipo de una variable
Conversión forzada (o explícita) de tipo
- Ejemplo:
int x, y;
y = sizeof (x);
y = sizeof (int);
y = sizeof (char);
- Convierte una expresión a un tipo de datos.
- Sintaxis:
(tipo) expresión
- Ejemplo:
/* y = 4 */
/* y = 4 */
//y=1
float a=3.0;
Operadores para tipos de datos avanzados (capítulo 4)
double b=4.0;
a=b;
// El compilador da un aviso (warning)
a=(float)b;
// Mejor
Operador
15
Uso
[]
Acceso a la componente de un vector o
de una cadena de caracteres.
.
Acceso al miembro de una estructura.
16
Operadores para punteros (capítulo 5)
2.7.8 PRIORIDAD Y ORDEN DE EVALUACIÓN
Operador & (“dirección de”)
Operadores
Asociatividad
- Obtiene la dirección de memoria en la que está almacenado su operando.
( ) [ ] . ->
Izquierda a derecha
- ~ ! ++ -- (tipo) * & sizeof
Derecha a izquierda
* / %
Izquierda a derecha
+ -
Izquierda a derecha
<< >>
Izquierda a derecha
< <= > >=
Izquierda a derecha
== !=
Izquierda a derecha
&
Izquierda a derecha
^
Izquierda a derecha
|
Izquierda a derecha
&&
Izquierda a derecha
||
Izquierda a derecha
?:
Derecha a izquierda
= *= /= %= += -= <<= >>= &= |= ^=
Derecha a izquierda
- Sintaxis:
&operando
- Ejemplo:
int x=5, *p; // La variable p es un puntero.
p=&x;
// A p se le asigna la dirección de memoria de x
// y se dice que p “apunta” a x.
Operador * (“indirección”)
- Proporciona el contenido de una dirección de memoria a partir de su puntero.
- Sintaxis:
*nombre_del_puntero
- Ejemplo:
int x=5, y=0, *p;
p=&x;
y=*puntero;
// p apunta a x.
// y = 5
17
18
Descargar