Está en la página 1de 14

INTRODUCCIN.

QUE ES UN LENGUAJE DE PROGRAMACIN.


RESPUESTA: ES UN CONJUNTO DE PALABRAS ESPECIFICAS , QUE PERMITEN
ESCRIBIR UN PROGRAMA, STAS TIENEN CIERTAS NORMAS DE CODIFICACIN
QUE DEBEN RESPETARSE.
LAS COMPUTADORAS PARA REALIZAR TODAS SUS FUNCIONES PROCESAN LA
INFORMACION EN FORMA DE 1S Y 0S (LENGUAJE MAQUINA). A PARTIR DE ESTO
FUNCIONAN LOS PROGRAMAS QUE CONOCEMOS TALES CMO: WORD, EXCEL,
POWERPOINT, COREL DRAW, INTERNET EXPLORER Y DEMS APLICACIONES QUE
SE EJECUTAN EN EL ENTORNO DE WINDOWS.
EL PROCESO DE DESARROLLO DE UN PROGRAMA TIENE EL SIGUIENTE ORDEN:
1.- CODIFICACIN: EN ESTA PARTE SE UTILIZA UN EDITOR DE TEXTO PLANO,
PARA ESCRIBIR LO QUE REALIZAR EL PROGRAMA, AL RESULTADO FINAL DE
ESTE ARCHIVO SE LE CONOCE COMO ARCHIVO FUENTE
2.-COMPILACIN: EL COMPILADOR LEE EL ARCHIVO FUENTE Y TRADUCE TODAS
LAS LINEAS DE CODIGO A LENGUAJE MAQUINA, Y SI NO EXISTE ERROR EL
RESULTADO FINAL ES LA CREACION DEL ARCHIVO OBJETO
3.- ENLAZADOR: EL ENLAZADOR (LINKER) ENLAZA EL ARCHIVO OBJETO CON LAS
LIBRERIAS Y/O CON OTROS ARCHIVOS OBJETO, PARA TENER COMO RESULTADO
LA CREACION DEL ARCHIVO EJECUTABLE.
TIPOS DE LENGUAJES DE PROGRAMACIN.
EXISTEN DIFERENTES LENGUAJES DE PROGRAMACIN EN LA ACTUALIDAD
LENGUAJE MAQUINA: BASADO EN CODIGOS DE INSTRUCCIN HEXADECIMALES,
ESTE TIPO DE LENGUAJE ES UTILIZADO POR LOS FABRICANTES DE HARDWARE.
LENGUAJE DE BAJO NIVEL: UTILIZA INSTRUCCIONES MNEMONICAS QUE
PERMITEN PROGRAMAR CON CIERTO NIVEL DE ABSTRACCIN, ES CONOCIDA
COMO LENGUAJE ENSAMBLADOR Y EST ORIENTADA A DISPOSITIVOS.
LENGUAJE DE ALTO NIVEL: LAS INSTRUCCIONES QUE UTILIZA STE TIPO DE
LENGUAJE, SON MUY SIMILARES AL IDIOMA INGLES, EN UN LENGUAJE DE ALTO
NIVEL EL COMPILADOR CONVIERTE EL LENGUAJE DE ALTO NIVEL, A LENGUAJE
MAQUINA. LAS NORMAS APLICADAS A TODOS LOS FABRICANTES DE SOFTWARE
PROGRAMADO EN LENGUAJE ANSI C, PERMITE LA CARACTERISTICA DE
PORTABILIDAD.

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

1.3 TIPOS DE DATOS Y MODIFICADORES: DECLARACIONES Y DEFINICIONES.


Nombre
char

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

Valor booleano. Puede tomar dos valores:


verdadero ofalso.
Nmero de punto flotante.
De punto flotante de doble precisin.
Long de punto flotante de doble precisin.

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

3.4e +/- 38 (7 digitos)


1.7e +/- 308 (15 digitos)

8bytes

1.7e +/- 308 (15 digitos)

Tipo

bits

Intervalo

char

-128 a 127

unsigned char

0 a 255

signed char

-128 a 127

int

16

-32 768 a 32 767

unsigned int

16

0 a 65535

signed int

16

igual que int

short int

-128 a 127

unsigned short int

0 a 255

signed short int

igual que short int

long int

32

-2 147 483 648 a 2147 483 647

signed long int

32

-2 147 483 648 a 2 147 483 647

unsigned long int

32

0 a 4 294 967 296

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.

TAL COMO ERA DE ESPERARSE LOS OPERADORES ARITMTICOS, MOSTRADOS


EN LA TABLA SIGUIENTE, COMPRENDEN LAS CUATRO OPERACIONES BASICAS,
SUMA, RESTA, MULTIPLICACIN Y DIVISIN, CON UN AGREGADO, EL OPERADOR
MDULO.
SIMBOL
EJEMPL ORDEN DE
DESCRIPCION
O
O
EVALUACION
+

SUMA

a+b

RESTA

a-b

MULTIPLICACI
a*b
ON

DIVISION

a/b

MODULO

a%b

SIGNO

-a

EL OPERADOR MDULO (%) SE UTILIZA PARA CALCULAR EL RESTO DEL


COCIENTE ENTRE DOS ENTEROS, Y NO PUEDE SER APLICADO A VARIABLES DEL
TIPO FLOAT DOUBLE.
SI EN UNA OPERACIN EXISTEN VARIOS OPERADORES, PRIMERO SE
EVALUARN LOS DE MULTIPLICACIN, DIVISIN Y MDULO Y LUEGO LOS DE
SUMA Y RESTA. LA PRECEDENCIA DE LOS TRES PRIMEROS ES LA MISMA, POR LO
QUE SI HAY VARIOS DE ELLOS, SE COMENZAR A EVALUAR A AQUEL QUE QUEDE
MS A LA IZQUIERDA. LO MISMO OCURRE CON LA SUMA Y LA RESTA.
PARA EVITAR ERRORES EN LOS CLCULOS SE PUEDEN USAR PARNTESIS, SIN
LIMITACIN DE ANIDAMIENTO, LOS QUE FUERZAN A REALIZAR PRIMERO LAS
OPERACIONES INCLUIDAS EN ELLOS.
SE PUEDE OBSERVAR QUE NO EXISTEN OPERADORES DE POTENCIACIN,
RADICACIN, LOGARITMACIN, ETC, YA QUE EN EL LENGUAJE C TODAS ESTAS
OPERACIONES ( Y MUCHAS OTRAS ) SE REALIZAN POR MEDIO DE LLAMADAS A
FUNCIONES.
EL LTIMO DE LOS OPERADORES ARITMTICOS ES EL DE SIGNO. NO DEBE
CONFUNDIRSE CON EL SIMBOLO DE RESTA, YA QUE ESTE ES UN OPERADOR
UNITARIO QUE OPERA SOBRE UNA NICA VARIABLE CAMBIANDO EL SIGNO DE SU
CONTENIDO NUMRICO. OBVIAMENTE NO EXISTE EL OPERADOR + UNITARIO, YA
QUE SU OPERACIN SERA DEJAR EL SIGNO DE LA VARIABLE, LO QUE SE
CONSIGUE SIMPLEMENTE POR OMISIN DEL SIGNO.

1.4.2 OPERADORES RELACIONALES.


TODAS LAS OPERACIONES RELACIONALES DAN SLO DOS POSIBLES
RESULTADOS: VERDADERO FALSO. EN EL LENGUAJE C, FALSO QUEDA
REPRESENTADO POR UN VALOR ENTERO NULO (CERO) Y VERDADERO POR
CUALQUIER NMERO DISTINTO DE CERO EN LA TABLA 5 SE ENCUENTRA LA
DESCRIPCIN DE LOS MISMOS.
SIMBOL
EJEMPL ORDEN DE
DESCRIPCION
O
O
EVALUACION
<

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

UNO DE LOS ERRORES MS COMUNES ES CONFUNDIR EL OPERADOR


RELACIONAL IGUAL QUE (= =) CON EL DE ASIGNACION IGUAL A (=). LA EXPRESIN
A=B COPIA EL VALOR DE B EN A, MIENTRAS QUE A = = B RETORNA UN CERO, SI A
ES DISTINTO DE B UN NMERO DISTINTO DE CERO SI SON IGUALES.
LOS OPERADORES RELACIONALES TIENE MENOR PRECEDENCIA QUE LOS
ARITMTICOS, DE FORMA QUE A < B + C SE INTERPRETA COMO A < (B + C), PERO
AUNQUE SEA SUPERFLUO RECOMENDAMOS EL USO DE PARNTESIS A FIN DE
AUMENTAR LA LEGILIBILIDAD DEL TEXTO.
CUANDO SE COMPARAN DOS VARIABLES TIPO CHAR EL RESULTADO DE LA
OPERACIN
DEPENDER DE LA COMPARACIN DE LOS VALORES ASCII DE LOS CARACTERES
CONTENIDOS EN ELLAS. ASI EL CARACTER A (ASCII 97) SER MAYOR QUE EL A
(ASCII 65 ) QUE EL 9 (ASCII 57).

1.4.3 OPERADORES LOGICOS


HAY TRES OPERADORES QUE REALIZAN LAS CONECTIVIDADES LGICAS Y (AND),
O (OR) Y NEGACION (NOT) Y ESTN DESCRIPTOS EN LA TABLA.
SIMBOL
DESCRIPCION EJEMPLO
O

ORDEN DE
EVALUACION

&&

Y (AND)

(a>b) && (c <


10
d)

||

O (OR)

(a>b) || (c < d) 11

NEGACION
(NOT)

!(a>b)

LOS RESULTADOS DE LA OPERACIONES LGICAS SIEMPRE ADOPTAN LOS


VALORES CIERTO FALSO. LA EVALUACIN DE LAS OPERACIONES LGICAS SE
REALIZA DE IZQUIERDA A DERECHA Y SE INTERRUMPE CUANDO SE HA
ASEGURADO EL RESULTADO.
1.4.4 EL OPERADOR NEGACION.
INVIERTE EL SENTIDO LGICO DE LAS OPERACIONES, AS SER
!( a >> b )
!( 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

++

incremento ++i i++ 1

--

decremento --i i--

.1.4.5 OPERADORES DE ASIGNACION


En principio puede resultar algo futil gastar papel en describir al operador IGUAL A ( = ) ,
sin embargo es necesario remarcar ciertas caractersticas del mismo .
Anteriormente definimos a una asignacin como la copia del resultado de una expresin
( rvalue ) sobre otra ( lvalue ) , esto implica que dicho lvalue debe tener LUGAR (es decir
poseer una posicin de memoria ) para alojar dicho valor .
Es por lo tanto vlido escribir
a = 17 ;
pero no es aceptado , en cambio
17 = a ;

/* 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

Vemos de la tabla anterior que aparece otro operador denominado ASIGNACION


CONDICIONAL . El significado del mismo es el siguiente :
lvalue = ( operacin relacional logica ) ? (rvalue 1) : (rvalue 2) ;
de acuerdo al resultado de la operacin condicional se asignar a lvalue el valor de rvalue
1 2 . Si aquella es CIERTA ser lvalue = rvalue 1 y si diera FALSO , lvalue = rvalue 2 .
Por ejemplo, si quisiramos asignar a c el menor de los valores a b , bastar con escribir
:
c=(a<b)?a:b;
1.4.6 OPERADORES DE MANEJO DE BITS

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.

&

Y AND (bit a bit)

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

Describiremos mediante unos pocos ejemplos la operatoria de manejo de bits.


Analicemos primero como funciona el operador Y, tambin llamado BITWISE AND , las
reglas para la operacin son las dadas en la TABLA 10 .
REGLAS PARA LA OPERACION Y (BITWISE AND)
bit a & bit b = bit c
0

& 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

Para las mismas variables anteriores obtendremos :


0 1 0 1 0 1 1 1 87 57
Analizando ahora la O EXCLUSIVA ( EXOR ) tendremos :
TABLA 12 REGLAS PARA LA OPERACION O EXCLUSIVA ( EXOR )
bit a ^ bit b = bit c
0

^ 0

=0

^ 1

=1

^ 0

=1

^ 1

=0

Para las mismas variables anteriores obtendremos :


0 0 0 1 0 0 1 0

18

12

Veamos ahora las operaciones de desplazamiento , la sentencia


c = a << b
implica asignarle a c, el valor de a con sus bits corridos a la izquierda en b lugares , los
bits que van "saliendo" por la izquierda , se desechan ; y los bits que van quedando libres
a la derecha se completan con cero .
Se procede de la misma manera para el corrimiento a la derecha >>.
El operador COMPLEMENTO A UNO es del tipo unitario , es decir que realiza una
operacin sobre una nica variable , y su efecto es dar a la variable un valor igual a restar
de ( -1 ) el valor que traa . Quizs es ms visible decir que este operador cambia los bits
en 1 de la variable en 0 y viceversa.
TABLA 13 PRECEDENCIA DE LOS OPERADORES
PRECEDEN
OPERADORES
CIA

ASOCIATIVID
AD

()[] -> .

izq. a derecha

sizeof (tipo) ! ~ ++ -- signo*


derecha a izq.
&

*/%

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.

NOTA: en el rengln de los operadores de precedencia cero hemos agregado ub

1.5 EXPRESIONES: PRECEDENCIA, ORDEN Y EVALUACION.


1.6 PROPOSICIONES.