Lenguaje de nivel medio : Se considera as porque tiene algo de los dos extremos
adyacentes; caractersticas de los lenguajes de alto nivel, y caractersticas de los
ensambladores. Sin embargo se extraaran caracterstica de los lenguajes de alto nivel
(principalmente la proteccin de mbito y abstraccin) as como el control total del
hardware que se puede tener en un ensamblador.
1
Es portable: Significa que si se tiene cuidado de seguir las normas ANSI, se pueden
escribir cdigos que funcionen en cualquier compilador que se precie de ser compatible con
ANSI; incluso en compiladores de otras plataformas. Esta caracterstica puede ser tambin
limitante, ya que las mejoras particulares que un compilador agregue, no siempre son
aceptadas por otros, lo cual es un factor de peso al desarrollar aplicaciones.
Pocas palabras clave : El Lenguaje C estndar ANSI solo define 32 palabras clave. El
tener menos palabras reservadas que aprender resulta interesante, comparado con otros
lenguajes en los cuales se tiene que aprender al menos un centenar de palabras reservadas.
El inconveniente resulta que estas palabras reservadas no incluyen procesos de E/S, los
cuales se hacen a travs de funciones de la biblioteca estndar.
Es estructurado: Las caractersticas estructuradas de C no son tan amplias como las que
proporcionan lenguajes de alto nivel, que permiten incluso anidar subrutinas. En C solo se
cuentan con subrutinas de tipo funcin, pero estas son flexibles que no es necesario contar
con otro tipo para trabajar en el lenguaje.
palabras
break
default
extern
int
signed
typedef
while
case
do
float
long
sizeof
union
char
double
for
register
static
unsigned
const
else
goto
return
struct
void
Adicionales a estas palabras reservadas cada implementacin de C agrega otras palabras mas. En el
caso de Turbo C, por ejemplo, se tiene las siguientes palabras reservadas.
2
_cs
far
_ds
huge
_es
interrupt
_ss
near
Conocer las palabras reservadas en un lenguaje de programacin evita que estas sean usadas como
identificadores, lo cual no esta permitido.
Lenguaje C distingue entre maysculas y minsculas en sus identificadores; a esta
caracterstica se le llama sensibilidad al contexto (case sensitive).
1.1.4 VARIABLES, DECLARACION E INICIALIZACION
1.1.4.1 Variables.
Una variable es un nombre asignado a una posicin de memoria donde se puede almacenar
un dato el cual puede cambiar durante la ejecucin de un programa. Los programas utilizan
variables para guardar varios tipos de datos durante su ejecucin. De hecho al usar un nombre de
variable en el programa, se esta haciendo referencia al dato que se encuentra guardado ah.
1.1.4.2 Declaracin de variables.
En C, una variable debe ser declarada antes de ser utilizada. Una declaracin de variable le
informa al compilador el nombre de la variable, el tipo de dato que se va a guardar y,
opcionalmente, la inicializa a un valor especfico. Si el programa trata de utilizar una variable que
no ha sido declarada, el compilador genera un error. Una declaracin de variable tiene la forma
siguiente:
Nombre de tipo nombre de variable
Nombre de tipo es una palabra reservada que especifica el tipo base del dato que se manejar con
esa variable.
Nombre de variable es el nombre que se le da a la variable. Se pueden declarar varias variables de
un mismo tipo, separando sus nombres por comas.
Ejemplo: int area, lado, cateto;
float porcentaje, total;
Reglas que se deben tener presente para darle nombre a las variables:
El nombre puede contener letras, dgitos y caracter de subrayado (_) .
El primer caracter del nombre debe ser una letra. Aunque el caracter de subrayado tambin
se acepta como inicial no se recomienda.
1.1.4.4.Tipos de variables
Existen 3 tipos de variables.
1. Las variables locales : Se definen dentro de un bloque de una funcin, al inicio del mismo,
antes de cualquier instruccin ejecutable (esto cambia en C++). Se crean en el stack
temporalmente mientras dure la funcin. Su mbito es solo el cuerpo de la funcin. Toman
1.1.5 CONSTANTES. Las constantes son objetos que no cambian su valor durante la ejecucin de
un programa y se clasifican en constantes literales y constantes simblicas
1.1.5.1 Constantes literales
Tienen la finalidad de declarar un valor fijo en el cdigo del programa, el cual puede ser
almacenado en una variable o puede ser usado como operando de una expresin. A continuacin se
enlistan los tipos de constantes literales.
1.1.5.1.1 Numricas enteras
Las constantes numricas enteras se colocan sin valor fraccional y pueden expresarse en los
siguientes sistemas numricos:
-Decimales P.E.: 9, 16, 3241
-Octales
P.E.: 012=10 dec. 076 =62 dec.
-Hexadecimales
P.E.: 0x12=18 dec. 0x2f=47 dec.
El espacio que ocupa en memoria una constante literal por default es el mismo que ocupara una
variable tipo int.
Sin embargo se puede indicar que se desea que ocupe el espacio de un long poniendo despus del
valor entero una letra L .
Tambin se puede indicar que se desea un entero sin signo si se le agrega despus del valor una
letra U.
1.1.5.1.2 Numricas flotantes.
Las constantes flotantes pueden expresarse en forma decimal o en forma exponencial.
En forma decimal solo se indica: la parte entera, el punto y la parte fraccionaria.
En formato exponencial se indica: la parte entera, el punto, la parte fraccional el letra E y la
potencia.
Ejemplos:
Decimal:
123.4523
exponencial: 1.234523e+2
Por default una constante flotante ocupara el espacio de una variable double. Sin embargo se le
puede poner despus las letras F o L.
F instruye al compilador para que la constante ocupe el espacio de una variable float y L le indica
que ocupe el espacio de una long double.
5
Decimal
Octal.
Hexadecimal.
Significado
Bell
ff
cr
tab. Vertical
signo interrogacin
comilla doble
Carcter
\b
\n
\t
\\
\
\0
Significado
Backspace
cr+lf
tab. Horizontal
diagonal invertida
comilla simple
nulo (terminador de
cadena)
Cabe mencionar que a pesar de poderse asignar valores ASCII en variables, C maneja internamente
todo como nmeros. Es decir se pueden sumar dos constantes caracter, cosa que en otros lenguajes
es incongruente.
Ejemplo:
\14
=
\015 =
\xd =
ff
1.1.5.1.4 Cadenas
Las constantes de cadena, a diferencia de las de carcter, permiten almacenar mas de una
letra. La cadena de caracteres se encierra entre comillas dobles a diferencia de las de carcter que
van entre comillas sencillas.
Se puede usar cualquier caracter del cdigo ASCII dentro de una cadena. Para indicar un caracter
que no se puede poner a travs de teclado se usa la misma convencin vista para constantes
caracter.
C no cuenta con un tipo nativo para manejar cadenas, para hacerlo usa arrays de datos char.
Con lo que sigue siendo valido lo mencionado anteriormente, de que todo se maneja internamente
como nmeros.
Ejemplo
\Tec. de Veracruz\\n
VALORES
Un caracter
Enteros
Flotantes cortos
Flotantes largos
Nulo
RANGO
- 128 a 127
- 32768 a 32767
3.4 E 38 a 3.4 E +38
1.7 E 308 a 1.7 E +308
Sin valor
BITS
8
16
32
64
0
signed.
unsigned.
short.
long.
En la tabla que sigue se puede observar cmo se combinan los modificadores con los diferentes
tipos base y los rangos de valores que nos dan en cada caso.
TIPO
Char
unsigned char
signed short int
unsigned short int
signed long int
unsigned long int
float
double
EQUIVALENCIAS
signed char
signed, short, int, signed short,
signed int, short int
unsigned short, unsigned int
long, signed long
unsigned long
long double
BITS
8
8
16
RANGO
-128 a 127
0 a 255
-32768 A 32767
16
32
32
32
64
0 a 65535
-2,147483648 a 2147483647
0 a 4294967295
3.4 E-38 a 3.4 E+38
1.7 E-308 a
1.7 E+308
3.4 E-4392 a
3.4 E+4392
80
const : permite definir en una zona de memoria en la cual se almacena un valor que no
puede ser modificado. Un uso til de este modificador es el de evitar que una funcin
modifique un parmetro pasado por referencia.
8
volatile
: permite que se defina una variable cuyo valor no ser modificado de forma
explcita (por asignacin, entrada, etc), evitando algn tipo de optimizacin que el
compilador quiera hacer en ella.
Reglas de mbito.- Determinan cual es el alcance de una funcin o variable dependiendo del lugar
donde fue declarada.
Las principales reglas de mbito en C son las siguientes:
1. Un bloque de cdigo puede ser el cuerpo de una funcin, as como una agrupacin de
instrucciones delimitadas por llaves.
2. El cdigo y las variables de una funcin son privados a la misma y solo pueden ser
accesadas a travs del llamado a la funcin.
3. Una funcin solo es conocida del lugar donde fue definida hacia abajo.
Significado
Mas y menos Monarios
multiplicacin, divisin, modulo
incremento en 1
decremento en 1
Ejemplo
+a, -a
a*b, a/b, a%b
a++ (a = a+1)
a-- (a = a - 1)
1.2.1.2 Asignacin
Instruyen al compilador para que guarde en una variable el resultado de una operacin
Operador
=
*=
/=
+=
-=
Significado
Asigna
Multiplica y asigna
Divide y asigna
Suma y asigna
Resta y asigna
Ejemplo
a =3
a *=b (a =a*b)
a /=b (a =a/b)
a +=b, (a = a +b)
a-=b (a=a-b)
1.2.1.3 Relacionales
Instruyen al compilador para que este compare dos o mas expresiones. El resultado es 1 o 0 el cual
se interpreta como cierto o falso
Operador
>
>=
<
<=
==
!=
Significado
Mayor
mayor o igual
Menor
Menor o igual
Igual
Diferente
Ejemplo
a>b
a>=b
a<b
a<= b
a ==b
a!= b
10
Significado
Not
And
Or
Ejemplo
!a, !( a < b )
a&&b, (a<b)&&(b<c)
a||b, (a<b) || (b<c)
Significado
and
or
or exclusivo (xor)
Complemento a uno (not)
Corre bits a la izq. y asigna
Corre bits a la der. y asigna
Ejemplo
a&b
a|b
a^b
!a
a<<=2 (a =a<<2)
a>>=2 (a =a>>2)
Precedencia
1
2
Izq. a Der.
|
Izq. a Der.
&&
Izq. a Der.
||
Izq. a Der.
?:
Der. a Izq.
= += -= *= /= %= &= |=
Der. a Izq.
= <<= >>=
Tipo
Agrupacin
Arit. unarios
Arit. multiplicativos
Arit. Aditivos
Despl. de bits
Relacional
Rel. igualdad
and binario
xor binario
or binario
and lgico
or lgico
Condicional
Asignacin
Precedencia
Mayor
Menor
12
Ejemplo:
char ch;
int i;
float f;
double d;
resultado = ch / i + f
int
* d
double
int
- f
double
double
double
double
double
double
double
13
#include <stdio.h>
main()
{ int x=300;
char ch=300;
float f=30.5;
ch=x;
printf( %d\n,ch);
x=f;
printf( %d\n,x);
f=300/ch;
printf( %f\n,f);
f=ch;
printf( %f\n,ch);
}
/* Caso 1 da 44*/
/* Caso 2 da 30*/
/* Caso 3 da 6.00*/
/* Caso 4 da 40.00*/
En el caso 1 se toman los 8 bits menos significativos, no considerando el byte alto por lo
que los valores que pasen de 128 son truncados.
En el caso 2 se toma solo la parte entera de la variable float.
En los casos 3 da 6.00 en vez de 6.82 como debera, ya que como los dos operadores son
enteros (char e int) el resultado da un divisin entera.
En el caso 4 se convierten del char a flotante.
14
Fuente
char
short int
int
long int
long int
long int
float
double
long double
15
#include <stdio.h>
#include <conio.h>
Las funciones mas comunes son las siguientes:
Funcin:
Accin:
int getche(void);
Libreria:conio.h
Lee un carcter desde el teclado, colocndolo en una variable de tipo entero (char o
int), haciendo eco en pantalla del carcter captado.
Funcin:
Accin:
Funcin:
Accin:
int getchar(void);
Libreria:stdio.h
Lee un carcter desde el teclado, pero espera el retorno de carro para pasarlo al
sistema.
Funcin:
Accin:
int getch(void);
Libreria:conio.h
Lee un carcter al igual que getche, pero no hace eco en pantalla.
Funcin:
Accin:
Funcin:
Accin:
|123.2
|
|
3.24|
|
hola|
|hola
|
16
|1234567|
Formato
Un solo carcter
Decimal
Decimal
Notacin cientfica
Punto decimal flotante
Usa %e o %f la que sea mas corta
Octal
Cadena de caracteres
Decimal sin signo
Hexadecimal
Imprime signo %
Visualiza un puntero
Significado
Lee un carcter nico
Lee un entero decimal
Lee un entero decimal
Lee un num. En flotante.
Lee un num. En flotante
Lee un octal
Lee una cadena
Lee un hexadecimal
Lee un puntero
17
Accin
Pasa la direccin de cont a scanf.
Lee una cadena de caracteres.
Lee dos valores, los cuales se separan por un blanco que puede
ser espacio, tab o cr.
Lee tres valores pero ignora el intermedio
Lee una cadena de solamente 20 caracteres, los restantes se
quedan en el buffer.
Lee tres caracteres no respetando caracteres blancos. Si se lee "X
Y", 'X' va a a, ' ' va a b y 'Y' va a c
Leer dos valores con una t
intermedia, la cual ser ignorada.
18
19
20