HISTORIA DE LENGUAJE C.
EL LENGUAJE DE PROGRAMACION C NACI ENTRE LOS AOS DE 1969 A 1973 A
LA PAR DE DEL SISTEMA OPERATIVO UNIX EN LA BELL TELEPHONES EN
CONJUNTO CON EL MIT Y GENERAL ELECTRIC, ES DERIVADO DEL LENGUAJE
BCPL Y FUE DESARROLLADO POR KEMP THOMPSON Y DENNIS RITCHIE. EN 1980
ES ESTANDARIZADO POR EL COMIT ANSI X3J11.
1. CONCEPTOS BASICOS DE PROGRAMACIN C.
EL LENGUAJE DE PROGRAMACION C ES UN LENGUAJE DE TIPO ESTRUCTURADO,
ES DECIR QUE TIENE UN DISEO MODULAR, LOS MODULOS SON DISEADOS EN
MODO DESCENDENTE Y CADA MODULO SE CODIFICA UTILIZANDO LAS TRES
ESTRUCTURAS DE CONTROL BASICAS: SECUENCIA, SELECCIN Y REPETICIN.
1.1 COMPONENTES BASICOS DE UN PROGRAMA EN LENGUAJE C: FUNCIONES Y
VARIABLES.
TODO PROGRAMA ESCRITO EN LENGUAJE C TIENE UNA FUNCION PRINCIPAL
(MAIN), ESTA FUNCION REALIZA LLLAMADAS A OTRAS FUNCIONES LAS CUALES
ESTN FUERA DE ELLA, TAMBIEN REALIZA LLAMADAS A FUNCIONES QUE ESTAN
INCLUIDAS EN LAS LIBRERIAS.
/* --> Para realizar comentarios largos se usa /* al principio y */ al final
ING. HECTOR MIGUEL RAMIREZ PEREZ PROGRAMA V1.0
VARIABLES GLOBALES Y LOCALES.
*/
//Directivas del Preprocesador --> Para realizar comentarios breves utiliza doble
diagonal //
#include<iostream.h>
#include<conio.h>
//Declaracion de Variables Globales --> Estas variables puede ser utilizadas por cualquier
funcion
//Declaracion de Funciones --> Aqu se inicializan las funciones a utilizar en la funcin
main
void funcion1();
void main(){
//Declaracion de Variables Locales --> Estas variables solo puede ser utilizada por la
funcion main
funcion1();//Llamada a funcion1 que est fuera de la funcin principal main
getch(); //Llamada a funcin incluida en la librera conio.h para esperar a que se pulse una
tecla
}
void funcion1(){
//Declaracion de Variables Locales Estas variables solo puede ser utilizada en funcin 1
cout<<Esta es la uncin 1<<endl; // Llamada a instruccin salida de datos en pantalla
incluida
}
//en la libreria iostream.h
1.2 REGLAS DE FORMACION DE IDENTIFICADORES.
a) DEBEN INICIAR CON UNA LETRA SIMBOLO DE SUBRAYADO.
b) DESPUES DE INICIAR CON UNA LETRA SE PUEDE UTILIZAR CUALQUIER
NUMERO DE CARACTERES MAXIMO 32 CARACTERES DEL SIGUIENTE
CONJUNTO: A-Z, a-z , _ , 0-9
EL NUMERO MAXIMO DE CARACTERES PUEDE SER CONFIGURADO.
c) EL SIMBOLO DE GUION BAJO AL INICIO DE USA PARA DESIGNAR
IDENTIFICADORES EXTERNOS.
d) LAS PALABRAS RESERVADAS NO PUEDEN SER USADAS COMO NOMBRES
DE IDENTIFICADORES Y ESTAS PALABRAS SON:
e)
auto
break
case
char
const
continue
default
do
double
else
enum
extern
float
for
goto
if
int
long
register
return
short
signed
sizeof
static
struct
switch
typedef
union
unsigned
void
volatile
while
struct
static
const
enum
bool
catch
class
delete
friend
inline
new
namespace
operator
private
protected
public
tempate
this
throw
try
template
Descripcin
Carcter o entero pequeo.
short int
Entero corto.
(short)
Tamao*
1byte
2bytes
int
Entero.
4bytes
long int
(long)
Entero largo.
4bytes
bool
float
double
long
double
Rango de valores*
con signo: -128 to 127
sin signo: 0 a 255
con signo: -32768 a 32767
sin signo: 0 a 65535
con signo: -2147483648 a
2147483647
sin signo: 0 a 4294967295
con signo: -2147483648 a
2147483647
sin signo: 0 a 4294967295
1byte
true o false
4bytes
8bytes
8bytes
Tipo
bits
Intervalo
char
-128 a 127
unsigned char
0 a 255
signed char
-128 a 127
int
16
unsigned int
16
0 a 65535
signed int
16
short int
-128 a 127
0 a 255
long int
32
32
32
float
32
3.4E-38 a 3.4E+38
double
64
1.7E-308 a 1.7E+308
long double
128
3.4E-4932 a 3.4E+4932
(aprox. 24 dgitos de precisin)
1.4 OPERADORES.
1.4.1OPERADORES ARITMETICOS.
SUMA
a+b
RESTA
a-b
MULTIPLICACI
a*b
ON
DIVISION
a/b
MODULO
a%b
SIGNO
-a
menor que
(a < b)
>
mayor que
(a >b)
<=
menor o igual
que
(a < = b) 5
>=
mayor o igual
que
( a >>= b
5
)
==
igual que
( a = = b) 6
!=
distinto que
( a != b) 6
ORDEN DE
EVALUACION
&&
Y (AND)
||
O (OR)
(a>b) || (c < d) 11
NEGACION
(NOT)
!(a>b)
equivale a
"
"
(a<b)
( a != b )
etc.
EN ALGUNAS OPERACIONES SUELE USRSELO DE UNA MANERA QUE SE PRESTA
A CONFUSIN, POR EJEMPLO: ( !I ) DONDE I ES UN ENTERO. ESTO DAR UN
RESULTADO CIERTO SI I TIENE UN VALOR 0 Y UN RESULTADO FALSO SI I ES
DISTINTO DE CERO.
OPERADORES DE INCREMENTO Y DECREMENTO
LOS OPERADORES DE INCREMENTO Y DECREMENTO SON SLO DOS Y ESTN
DESCRIPTOS EN LA TABLA
SIMBOL DESCRIPCI EJEMPL ORDEN DE
O
ON
O
EVALUACION
++
--
/* incorrecto */
ya que la constante numrica 17 no posee una ubicacin de memoria donde alojar al valor
de a .
Aunque parezca un poco extrao al principio las asignaciones , al igual que las otras
operaciones , dan un resultado que puede asignarse a su vez a otra expresin .
De la misma forma que (a + b) es evaluada y su resultado puedo copiarlo en otra
variable : c = (a + b) ; una asignacin (a = b) da como resultado el valor de b , por lo que
es lcito escribir
c=(a=b);
Debido a que las asignaciones se evalan de derecha a izquierda , los parntesis son
superfluos , y podr escribirse entonces :
c = a = b = 17 ;
con lo que las tres variables resultarn iguales al valor de la contante .
El hecho de que estas operaciones se realicen de derecha a izquierda tambin permite
realizar instrucciones del tipo :
a = a + 17 ;
significando esto que al valor que TENIA anteriormente a , se le suma la constante y
LUEGO se copia el resultado en la variable .
Como este ltimo tipo de operaciones es por dems comn , existe en C un pseudocdigo
, con el fn de abreviarlas .
Asi una operacin artmetica o de bit cualquiera (simbolizada por OP )
a = (a) OP (b) ;
puede escribirse en forma abreviada como :
a OP= b ;
Por ejemplo
a += b ;
/* equivale : a = a + b */
a -= b ;
/* equivale : a = a - b */
a *= b ;
/* equivale : a = a * b */
a /= b ;
/* equivale : a = a / b */
a %= b ;
/* equivale : a = a % b */
Ntese que el pseudooperador debe escribirse con los dos smbolos seguidos , por
ejemplo += , y no ser aceptado +(espacio) = .
Los operadores de asignacin estan resumidos en la TABLA 8 .
OPERADORES DE ASIGNACION
SIMBOL DESCRIPCIO
ORDEN DE
EJEMPLO
O
N
EVALUACION
=
igual a
a=b
13
op=
pseudocodigo a += b
13
=?:
asig.condicion a = (c>b)?
al
d:e
12
Estos operadores muestran una de las armas ms potentes del lenguaje C , la de poder
manipulear INTERNAMENTE , es decir bit a bit , las variables .
Debemos anticipar que estos operadores slo se aplican a variables del tipo char , short ,
int y long y NO pueden ser usados con float double ,
Sabemos que las computadoras guardan los datos organizados en forma digital , en bytes
, formado por nmeros binarios de 8 bits y como se vi anteriormente cuando se analiz
el tamao de las variables , un char ocupar un byte de 8 bits , mientras que los short e int
se forman con dos bytes ( 16 bits ) y los long por cuatro bytes ( 32 bits ).
Para el manejo de dichos bits , contamos con los operadores descriptos en la TABLA 9 .
SIMBOL
DESCRIPCION
O
EJEMPL ORDEN DE
O
EVAL.
&
a&b
O OR INCLUSIVA
a|b
O OR EXCLUSIVA
a^b
<<
ROTACION A LA
IZQUIER
a << b
>>
ROTACION A LA
DERECHA
a >> b
COMPLEMENTO A
UNO
~a
& 0
=0
& 1
=0
& 0
=0
& 1
=1
Si suponemos tener dos variables del tipo char, una de ella de valor 85 (hex. 55 ), otra de
valor 71 (hex. 47) y realizamos el AND a nivel bits de ellas, obtendremos :
bits
decimal
0 1 0 1 0 1 0 1
&
85
&
0 1 0 0 0 1 1 1
------------------------0 1 0 0 0 1 0 1
hexadecimal
55
&
71
------69
47
------45
Ntese que la operacin es del tipo lgico entre bits, por lo que los resultados numricos
tienen poco ningn significado y slo se han puesto con el fin de ejemplificar .
De la misma manera para la operacion O INCLUSIVA, cuyas reglas se dan en la TABLA
11, ser:
TABLA 11 REGLAS PARA LA OPERACION O INCLUSIVA (BITWISE OR )
bit a | bit b = bit c
0
| 0
=0
| 1
=1
| 0
=1
| 1
=1
^ 0
=0
^ 1
=1
^ 0
=1
^ 1
=0
18
12
ASOCIATIVID
AD
()[] -> .
izq. a derecha
*/%
izq. a derecha
+-
izq. a derecha
>
izq. a derecha
>=
izq. a derecha
== !=
izq. a derecha
&
izq. a derecha
izq. a derecha
izq. a derecha
10
&&
izq. a derecha
11
||
izq. a derecha
12
?:
derecha a izq.
13
= += -= *= etc
derecha a izq.