You are on page 1of 82

Universidad Nacional de Ingeniera

CTIC
Curso: Lenguaje C++

Prof.: Lic. Csar Martn Cruz Salazar


Bibliografa

Programacin en C Metodologa, Algoritmos y Estructura de Datos.


Luis Joyanes Aguilar. Ignacio Zahonero Martnez
The C Programming Language. Kernighan & Ritchie. Segunda
Edicin.
Programacin en Lenguaje C. Rommel Romero Navarrete. Agosto
2008
Lenguaje C. Enrique Vicente Bonet Esteban
The C Language. Stephen A. Edwards
Brief Introduction to the C Programming Language. Fred Kuhns
http://blog.espol.edu.ec/programando/tipos-de-datos-en-el-lenguaje-c/
Curso de programacin en C. Miquel A. Garcies.

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 1


Historia del lenguaje C
Desarrollado entre 1969 y 1973 junto con el sistema operativo Unix.
Desarrollado principalmente por Dennis Ritchie en
Bell Laboratories sobre una computadora
DEC PDP-11.
Diseado para la programacin de :
Sistemas operativos

Programas de utilidad

Compiladores

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 2


Historia del lenguaje C
C evoluciona de B, que fue diseado por Ken Thompson, y usado para
crear versiones tempranas del sistema operativo UNIX en Bell
Laboratories en 1970 sobre una computadora DEC PDP-7.
B evolucion a partir de BCPL(Basic Combined Programming
Language) diseado por Martin Richards (Cambridge) en 1967.

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 3


Historia del lenguaje C

Mquina original (DEC PDP-11)


era muy pequea de 24K bytes de
memoria, de las cuales 12K se
utilizaron para el sistema operativo.

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 3


Historia del lenguaje C
Ante la necesidad de ser estandarizados. En 1983, el comit
tcnico X3J11 fue creado bajo el American National Standards
Institute (ANSI) Comisin de Informtica y Procesamiento de la
Informacin (X3) para proporcionar una definicin inequvoca y
independiente de la mquina y se aprob luego de 6 aos en
1989, llamado ANSI C.

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 5


Historia del lenguaje C++
C++ es un lenguaje de programacin diseado a mediados de
los aos 1980 por Bjarne Stroustrup en los mismos laboratorios
de AT&T Bell. La intencin de su creacin fue el extender al
lenguaje C mecanismos que permiten la manipulacin de
objetos. Al C++ se le considera un lenguaje hbrido. El estndar
de C++ se pudo terminar de definir en 1998 cuando se
incluyeron en 1995 algunas bibliotecas de funciones al lenguaje
C.

El nombre C++ fue propuesto por Rick Mascitti en el ao 1983,


cuando el lenguaje fue utilizado por primera vez fuera de un
laboratorio cientfico.

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 6


Ejemplo de un Programa

#include <iostream>
using namespace std;

int main()
{
cout << "Hola mundo" << endl;
return 0;
}

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 7


Anlisis de las partes constitutivas
del Programa
Un programa en C++ se compone de una o ms funciones. Una
de las funciones debe ser obligatoriamente main. Una funcin
en C++ es un grupo de instrucciones que realizan una o ms
acciones. Un programa contendr una serie de directivas
#include que permitirn incluir en el mismo, archivos de
cabecera que a su vez constarn de funciones y datos
predefinidos en ellos.

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 8


Anlisis de las partes constitutivas
del Programa
En este caso se le dice al compilador que busque e interprete
todos los elementos definidos en el archivo que acompaa la
directiva (iostream).
Para evitar sobrescribir los elementos ya definidos al ponerles
igual nombre, se crearon los espacios de nombres o namespace,
en este caso hay un espacio de nombres llamado std.

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 9


Anlisis de las partes constitutivas
del Programa
Al incluir la sentencia using namespace std le estamos diciendo al
compilador que usaremos el espacio de nombres std por lo que
no tendremos que incluirlo cuando usemos elementos de este
espacio de nombres, como pueden ser los objetos cout y cin,
que representan el flujo de salida estndar (tpicamente la
pantalla o una ventana de texto) y el flujo de entrada estndar
(tpicamente el teclado).

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 10


Anlisis de las partes constitutivas
del Programa

El smbolo << se conoce como operador de insercin, y grosso


modo est enviando a cout lo que queremos mostrar por
pantalla para que lo pinte, en este caso la cadena "Hola
mundo".
return 0; La intruccin return determina que es lo que se
devolver de la funcin main().

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 11


Identificadores
Un identificador es una secuencia de caracteres, letras, dgitos y
subrayados(_) (El primer carcter debe ser una letra mayscula o
minscula). Nombre nico que simplemente hace referencia a las
posiciones de memoria, que pueden contener valores (datos).

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 12


Identificadores
El lenguaje C es sensible a las maysculas. Por consiguiente, C
reconoce como distintos los identificadores BETA, beta y BeTa. Un
consejo que puede servir de posible regla es:
1. Escribir identificadores de variables en letras minsculas.
2. Constantes en maysculas.
3. Funciones con tipo de letra mixto: mayscula/minscula
Los identificadores no pueden ser palabras reservadas, tales como
if, switch o else.

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 13


Identificadores
Ejemplos: nombres de variables

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 14


Palabras Reservadas Lenguaje C++
El lenguaje C++ posee un nmero de palabras reservadas que
define el standard ANSI-C. Estas palabras reservadas pueden verse
en la tabla siguiente:

and auto break case char const continue default


bitand do double else enum extern float for
and_equ goto if int long register return short

asm signed sizeof static struct switch typedef union


bitor match class delete unsigned void volatile while

export false friend inline mutable namespa new not


ce
not_equ operator or or_equ private protected public this

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 15


Tipos de datos en Lenguaje C++
Los tipos de datos son:

enteros: (nmeros completos y sus negativos), tipos short,


int, long.
reales: nmeros decimales, tipos float, double o long double.
caracteres: letras, dgitos, smbolos y signos de puntuacin,
tipo char.

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 16


Tipos de datos en Lenguaje C++

char, int, float y double son palabras reservadas, o ms


especficamente, especificadores de tipos. Cada tipo de dato tiene
su propia lista de atributos que definen las caractersticas del tipo y
pueden variar de una mquina a otra.

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 17


Tipos de datos
Tipo Descripcin Tamao Rango de valores
char Carcter (normalmente 8 bits) [-128 , 127]
Unsigned Carcter (normalmente 8 bits) [0 , 255]
char
short Entero corto con signo (normalmente 16 bits) [-32768 , 32767]
int Entero con signo (depende de la [-32768 , 32767] o [-
implementacin) 2147483647 , 2147483648]
unsigned Entero sin signo (depende de la [0 , 65535] o
implementacin) [0 , 4294967295]
long Entero largo con signo (normalmente 32 bits) [-2147483647 , 2147483648]
float Flotante simple (normalmente 32 bits) [-3.4E+38 , -3.4E-38], 0 ,
[3.4E-38 , 3.4E+38]
double Flotante doble (normalmente 64 bits) [-1.7E+308 , -1.7E-308], 0
,[1.7E-308 , 1.7E+308]
long Flotante doble largo (normalmente 80 bits) [-3.4E-4932 , -1.1E+4932], 0
double ,[3.4E-4932 , 1.1E+4932]

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 18


Modificadores de tipos de datos
Los tipos char, int y double tienen variaciones o modificadores de
tipos de datos, tales como short, long, signed y unsigned, para
permitir un uso ms eficiente de los tipos de datos. Existe el tipo
adicional enum (constante de enumeracin). Estos cuatro
modificadores de tipo, los cuales se aplican sobre los tipos de
datos anteriormente citados. Los modificadores de tipo permiten
cambiar el tamao, etc., de los tipos de datos anteriormente
especificados. Estos modificadores, que sintcticamente
anteceden a la declaracin del tipo de dato, son:

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 19


Modificadores de tipos de datos
Modificador Tipos de actuacin Descripcin

signed char int Con signo (por defecto)


unsigned char int Sin signo
long int double Largo
short int Corto

Tabla 2: Modificadores de los tipos de datos.


Es por ello, que podemos declarar variables como:
unsigned char a;
long double b;
short int i;
Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 20
Modificadores de tipos de datos
Es posible, adems, aplicar dos modificadores seguidos a un
mismo tipo de datos, as, es posible definir una variable de tipo
unsigned long int (entero largo sin signo). El rango de valores
que permite cada variable depende del sistema operativo sobre
el cual se trabaje (MS-DOS, Windows95/98/NT/2000,
UNIX/Linux). De forma general, los sistemas operativos de 16
bits (MS-DOS, Windows 16 bits) poseen un rango, los de 32 bits
(Windows 32 bits, UNIX/Linux) otro y los de 64 bits(Windows 64
bits, UNIX/Linux) tambin otro.

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 21


Constantes
Las constantes se refieren a los valores fijos que el programa no
puede alterar. En C existen cuatro tipos de constantes:
constantes literales,
constantes definidas,
constantes enumeradas,
constantes declaradas.

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 22


Constantes
Algunos ejemplos de constantes son:
Tipo de dato Constantes de ejemplo

char a 9 'Q'

int 1 -34 21000

long int -34 67856L 456

short int 10 -12 1500

Unsigned int 45600U 345 3

float 12.45 4.34e-3 -2.8e9

Double -34.657 2.2e-7 1.0e100

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 23


Constantes

Las constantes literales son las ms usuales; toman valores tales


como 45.32564, 222 o bien "Introduzca sus datos" que se escriben
directamente en el texto del programa. Las constantes definidas
son identificadores que se asocian con valores literales constantes y
que toman determinados nombres.

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 24


Constantes
Las constantes declaradas son como variables: sus valores se
almacenan en memoria, pero no se pueden modificar. Las
constantes enumeradas permiten asociar un identificador, tal
como Color, con una secuencia de otros nombres, tales como Azul ,
Verde, Rojo y Amarillo.

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 25


Constantes
Constantes literales
Las constantes literales o constantes, en general, se clasifican
tambin en cuatro grupos, cada uno de los cuales puede ser de
cualquiera de los tipos:

constantes enteras,
constantes caracteres,
constantes de coma flotante,
constantes de cadena.

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 26


Constantes
Constantes enteras
La escritura de constantes enteras requiere seguir unas
determinadas reglas:
No utilizar nunca comas ni otros signos de puntuacin en
nmeros enteros o completos.
123456 en lugar de 123.456
Para forzar un valor al tipo long, terminar con una letra L o l. Por
ejemplo,
1024 es un tipo entero 1024 I, es un tipo largo ( long )

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 27


Constantes

Constantes enteras
Para forzar un valor al tipo unsigned, terminarlo con una letra
mayscula U. Por ejemplo, 4352U.
Para representar un entero en octal (base 8), ste debe de estar
precedido de 0.

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 28


Constantes
Constantes enteras
Formato decimal 123
Formato octal 0777 (estn precedidas de la cifra 0)
Para representar un entero en hexadecimal (base 16), este
debe de estar precedido de 0x.
Formato hexadecimal 0xFF3A (estn precedidas de 0x")
Se pueden combinar sufijos L( l ) , que significa long (largo), o
bien U (u) , que significa unsigned (sin signo).
3456UL

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 29


Constantes
Constantes reales
Una constante flotante representa un nmero real; siempre tienen
signo y representan aproximaciones en lugar de valores exactos.
82.347 .63 83. 47e-4 1.25E7 61.e+4
La notacin cientfica se representa con un exponente positivo o
negativo.
2.5E4 equivale a 25000
5.435E-3 equivale a 0.005435
Existen tres tipos de constantes:
Float 4 bytes
double 8 bytes
long double 10 bytes

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 30


Constantes
Constantes carcter
Una constante carcter (char) es un carcter del cdigo ASCII
encerrado entre apstrofes.
'A' 'b' 'C'
Adems de los caracteres ASCII estndar, una constante carcter
soporta caracteres especiales que no se pueden representar
utilizando su teclado, como, por ejemplo, los cdigos ASCII altos y
las secuencias de escape.

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 31


Constantes
. Constantes carcter
As, por ejemplo, el carcter sigma () -cdigo ASCII 228, hex E4-
se representa mediante el prefijo \x y el nmero hexadecimal del
cdigo ASCII. Por ejemplo,
char sigma = '\xE4';
Este mtodo se utiliza para almacenar o imprimir cualquier
carcter de la tabla ASCII por su nmero hexadecimal.

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 32


Constantes
Las constantes de caracteres de barra invertida se usan para introducir
caracteres que es imposible introducir por el teclado (tales como retorno
de carro, etc.). Estas son:
Cdigo de escape Significado
\n nueva lnea
\r retorno de carro
\t tabulacin
\v tabulacin vertical
\a alerta (pitido sonoro)
\b retroceso de espacio
\f avance de pgina
\\ barra inclinada inversa
\ comilla simple
\ doble comilla
\? signo de interrogacin
\000 nmero octal
\xhh nmero hexadecimal
Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 33
Constantes
Constantes cadena
Una constante cadena (tambin llamada literal cadena o
simplemente cadena) es una secuencia de caracteres
encerrados entre dobles comillas. Algunos ejemplos de
constantes de cadena son:
8765432
"28 de julio 1821"

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 34


Constantes
. Constantes cadena
"esto es una cadena de caracteres"
Se puede escribir una cadena en varias lneas, terminando
cada lnea con \
"esto es una cadena de caracteres\
que tiene dos lneas"

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 35


Constantes
Constantes cadena
En memoria, las cadenas se representan por una serie de
caracteres ASCII ms un 0 o nulo. El carcter nulo marca el final de
la cadena y se inserta automticamente por el compilador C++ al
final de las constantes de cadenas. Para representar valores nulos,
se define el smbolo NULL como una constante en diversos
archivos de cabecera (normalmente stdef.h, stdio.h, stdlib.h y
string.h). Para utilizar NULL en un programa, incluya uno o ms de
estos archivos en lugar de definir NULL con una lnea tal como
#define NULL 0.

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 36


Constantes
Constantes definidas (simblicas)
Las constantes pueden recibir nombres simblicos mediante la
directiva #define.
#define PI 3.141592
#define VALOR 106
C++ utiliza 3.141592 y 106 cuando se encuentra las constantes
simblicas PI y VALOR. Las lneas anteriores no son sentencias y,
por ello, no terminan en punto y coma.
cout << El valor es <<VALOR <<endl;
Escribe en pantalla la constante que corresponde a VALOR.

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 37


Constantes
Constantes enumeradas
Las constantes enumeradas permiten crear listas de elementos
afines. Un ejemplo tpico es una constante enumerada de lista de
colores, que se puede declarar como:
enum Colores {Rojo, Naranja, Amarillo, Verde, Azul, Violeta};
Cuando se procesa esta sentencia, el compilador asigna un valor
que comienza en 0 a cada elemento enumerado; as, Rojo equivale
a 0, Naranja a 1, etc.
Otro ejemplo puede ser:
enum Boolean { False, True };
que asignar al elemento False el valor 0 y a True el valor 1.

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 38


Constantes
Constantes declaradas const
const permite dar nombres simblicos a constantes a modo de
otros lenguajes, como Pascal. El formato general para crear una
constante es:
const tipo nombre = valor;
Si se omite tipo, C++ utiliza int (entero por defecto)

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 39


Constantes
Constantes declaradas const
const int Meses=12; /* Meses es constante simblica */
const char CARACTER='@';
const int OCTAL=0233;
const char CADENA[ ] ="Curso de C" ;
C++ soporta el calificador de tipo variable const. Especifica que el
valor de una variable no se puede modificar durante el programa.
Cualquier intento de modificar el valor de la variable definida con
const producir un mensaje de error.

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 40


Constantes
Constantes declaradas volatile
La palabra reservada volatile acta como const, pero su valor
puede ser modificado no slo por el propio programa, sino tambin
por el hardware o por el software del sistema. Las variables
voltiles, sin embargo, no se pueden guardar en registros, como es
el caso de las variables normales.

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 41


Variables
En C++ una variable es una posicin con nombre en memoria
donde se almacena un valor de un cierto tipo de dato. Las
variables pueden almacenar todo tipo de datos: cadenas,
nmeros y estructuras.
Toda variable utilizada en un programa debe ser declarada
previamente. La definicin en C++ debe situarse al principio del
bloque, antes de toda sentencia ejecutable. Una definicin
reserva un espacio de almacenamiento en memoria. El
procedimiento para definir una variable es escribir el tipo de dato,
el identificador o nombre y, en ocasiones, el valor inicial que
tomar. Por ejemplo,
char Respuesta;

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 42


Variables
Significa que se reserva espacio en memoria para Respuesta, en
este caso, un carcter ocupa un solo byte.
El nombre de una variable ha de ser un identificador vlido.
Ejemplo:
char x;
char y=e;

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 43


Variables
Una declaracin de una variable es una sentencia que
proporciona informacin de la variable al compilador C++. Su
sintaxis es:
tipo variable
tipo es el nombre de un tipo de dato conocido por el C++.
variable es un identificador (nombre) vlido en C.
Ejemplos :
long dNumero;
double HorasAcumuladas;
float HorasPorSemana;

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 44


Variables
Es preciso declarar las variables antes de utilizarlas. Se puede
declarar una variable al principio de un archivo o bloque de
cdigo al principio de una funcin.
#include <iostream>
/* variable al principio del archivo */
using namespace std;
int Numero;
int main()
{
cout << Cual es su numero favorito?<<endl ;
cin>> Numero;
return 0;
}
Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 45
Variables
/*Variable al principio de una funcin.
Al principio de la funcin main()*/

int main()
{
int i;
int j;

}

/*Variable al principio de un bloque.


Al principio de un bloque for*/
...
Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 46
Variables
int main()
{
int i;
for(i=0; i<9; i++)
{
double suma;
...
}

}

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 47


Inicializacin de Variables
Algunas veces se utiliza un valor denominado valor inicial, a una
variable cuando se declara. El formato general de una declaracin
de inicializacin es:
tipo nombre-variable = expresin
expresin es cualquier expresin vlida cuyo valor es del mismo
tipo que tipo.
Ejemplos:
char respuesta = 'S';
int contador = 1;
float peso = 156.45;
int anyo = 1993;

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 48


Duracin de una Variable
Dependiendo del lugar donde se definan las variables de C, stas
se pueden utilizar en la totalidad del programa, dentro de una
funcin o pueden existir slo temporalmente dentro de un bloque
de una funcin. La zona de un programa en la que una variable
est activa se denomina, normalmente, mbito o alcance
(scope).
Los tipos bsicos de variables en C son:
variables locales;

variables globales;

variables dinmicas.

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 49


Variables Locales
Las variables locales son aqullas definidas en el interior de una
funcin y son visibles slo en esa funcin especfica.
Las reglas por las que se rigen las variables locales son:
1 . En el interior de una funcin, una variable local no puede ser
modificada por ninguna sentencia externa a la funcin.

2. Los nombres de las variables locales no son nicos. Dos, tres o


ms funciones pueden definir variables de nombre valor. Cada
variable es distinta y pertenece a la funcin en que est declarada.

3. Las variables locales de las funciones no existen en memoria


hasta que se ejecuta la funcin.

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 50


Variables Locales
#include <iostream>
using namespace std;
int main()
{
int a, b, c, suma; /*variables locales */
cout<<"Ingrese numeros a sumar: ";
cin>>a;
cin>>b;
cin>>c;
suma = a + b + c;
cout<<"La suma es: ";
cout<<suma;
return 0;
}Lic. Martn Cruz S. Lenguaje C++ - CTIC. UNI 51
Variables Globales

Las variables globales son variables que se declaran fuera de la


funcin y por defecto son visibles a cualquier funcin, incluyendo
main() .

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 52


Variables Globales

Todas las variables locales desaparecen cuando termina su bloque.


Una variable global es visible desde el punto en que se define hasta
el final del programa (archivo fuente).
La memoria asignada a una variable global permanece asignada a
travs de la ejecucin del programa, tomando espacio vlido segn
se utilice. Por esta razn, se debe evitar utilizar muchas variables
globales dentro de un programa.

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 53


Operadores y Expresiones
Los programas C constan de datos, sentencias de programas y
expresiones. Una expresin es, normalmente, una ecuacin
matemtica, tal como 9 + 6. En esta expresin, el smbolo ms (+)
es el operador de suma, y los nmeros 9 y 6 se llaman
operandos. Cuando se utiliza el + entre nmeros (o variables) se
denomina operador binario, debido a que el operador + suma dos
nmeros. Otro tipo de operador de C es el operador unitario
(unario), que acta sobre un nico valor. Si la variable x contiene
el valor 8, -x es el valor -8. El signo menos (-) es el operador
unitario menos.

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 54


Operadores y Expresiones
C soporta un conjunto potente de operadores unarios, binarios y de
otros tipos.
Sintaxis
variable = expresin
variable : identificador vlido C declarado como variable.
expresin una constante, otra variable a la que se ha asignado
previamente un valor.

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 55


Operador de Asignacin
El operador = asigna el valor de la expresin derecha a la
variable situada a su izquierda.
codigo = 8393;
fahrenheit = 117.456;
coordX = 47;
coordY = 86;
Este operador es asociativo por la derecha, eso permite realizar
asignaciones mltiples. As,
a = b = c = 45;
equivale a
a = (b = (c = 45));
o dicho de otro modo, a las variables a, b y c se asigna el valor 45.

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 56


Operador de Asignacin
Esta propiedad permite inicializar varias variables con una
sola sentencia
int a, b, c;
a = b = c = 13; /* se asigna 13 a las variables a, b y c */

Smbolo Uso Descripcin


= a=b Asigna el valor de b a a
*= a*=b Multiplica a por b y asigna el resultado a la variable a
(a=a*b)
/= a/=b Divide a entre b y asigna el resultado a la variable a (a=a/b)
%= a%=b Fija a al resto de a/b (a=resto de a/b)
+= a+=b Suma b y a y lo asigna a la variable a (a=a + b)
-= a-=b Resta b de a y asigna el resultado a la variable a (a=a - b)

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 57


Operador de Asignacin

C proporciona un operador abreviado de asignacin ( * = ) , que


realiza una asignacin equivalente,
i *= 10; equivale a i = i * 10;

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 58


Operadores Aritmticos
Los operadores aritmticos C++ siguen las reglas algebraicas
tpicas de jerarqua o prioridad.
Considere la expresin :
9+10*6
La multiplicacin se realiza antes que la suma. Por consiguiente,
la expresin anterior equivale a:
9 + (10*6)
En C++ las expresiones interiores a parntesis se evalan
primero; a continuacin, seguidos por los operadores de
multiplicacin, divisin, resto, suma y resta.

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 59


Operadores Aritmticos
Operador Tipos enteros Tipos reales Ejemplo
+ Suma Suma x+y
- Resta Resta b-c
* Producto Producto x*y
/ Divisin entera: cociente Divisin en b/9
coma flotante
% Divisin entera: resto b%8

Operadores de Incrementacin y Decrementacin


Los operadores ++ y --, denominados de incrementacin y
decrementacin, suman o restan 1 a su argumento,
respectivamente, cada vez que se aplican a una variable.

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 60


Operadores Aritmticos
Operadores de Incrementacin y Decrementacin

Incrementacin Decrementacin
++n --n
n+ = 1 n- = 1
n=n+1 n=n-1

n = 8;
m = ++n; / * incrementa n en 1, 9, y lo asigna a m * /
n = 9;
printf( n = %d,--n); /*decrementa n en 1, 8, y lo pasa a printf() * /
n = 8;
m = n++; / * asigna n(8) a m, despus incrementa n en 1 (9) */
n = 9;
printf( n = %d,n--); / * pasa n(9) a printf(), despus decrementa n * /
Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 61
Operadores Aritmticos
Operadores de Incrementacin y Decrementacin
Si los operadores ++ y -- estn de prefijos, la operacin de incremento
o decremento se efecta antes que la operacin de asignacin; si los
operadores ++ y -- estn de sufijos, la asignacin se efecta en primer
lugar y la incrementacin o decrementacin a continuacin.
Ejemplo:
#include <stdio.h>
main()
{
int n=8,m;
m=++n;
n=9;
printf( n = %d\n,--n);//decrementa n en 1, 8 y luego printf(()
n=8;
m=n++;
n=9;
printf( n = %d\n,n--);//asigna 9 a n y printf(), luego decrementa
return 0;
}
Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 62
Operadores Relacionales
Operadores tales como >= y == que comprueban una relacin
entre dos operandos se llaman operadores relacionales y se
utilizan en expresiones de la forma:

expresin, operador-relacional expresin


expresin, y expresin expresiones compatibles C
operador-relacional un operador de la tabla que se
muestra ms arriba

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 63


Operadores Relacionales
Los operadores relacionales se usan normalmente en sentencias
de seleccin (if) o de iteracin (while, for), que sirven para
comprobar una condicin. Utilizando operadores relacionales se
realizan operaciones de igualdad, desigualdad y diferencias
relativas. La siguiente Tabla muestra los operadores relacionales
que se pueden aplicar a operandos de cualquier tipo de dato
estndar: char, int, float, double, etc.
Cuando se utilizan los operadores en una expresin, el operador
relacional produce un 0, o un 1, dependiendo del resultado de la
condicin. 0 se devuelve para una condicin falsa, y 1 se devuelve
para una condicin verdadera.

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 64


Operadores Relacionales
Operador Significado Ejemplo
== Igual a a == b
!= No igual a a != b
> Mayor que a>b
< Menor que a<b
>= Mayor o igual que a >= b
<= Menor o igual que a <= b

Tabla. Operadores relacionales de C

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 65


Operadores Lgicos
Adems de los operadores matemticos, C tiene tambin
operadores lgicos. Estos operadores se utilizan con
expresiones para devolver un valor verdadero (cualquier entero
distinto de cero) o un valor falso (0). Los operadores lgicos se
denominan tambin operadores booleanos.

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 66


Operadores Lgicos
Los operadores lgicos de C son: not (!) , and (&&) y or (II) . El
operador lgico ! (not, no) produce falso (cero) si su operando
es verdadero (distinto de cero) y viceversa. El operador lgico
&& (and, y) produce verdadero slo si ambos operandos son
verdadero (no cero); si cualquiera de los operandos es falso
produce falso. El operador lgico II (or, o) produce verdadero si
cualquiera de los operandos es verdadero (distinto de cero) y
produce falso slo si ambos operandos son falsos. La Tabla
siguiente muestra los operadores lgicos de C.

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 67


Operadores Lgicos
Operador Operacin lgica Ejemplo
Negacin (!) No lgica !(z >= w)
Y lgica (&&) operando_1 && operando_2 r < s && j > k
O lgica (||) Operando_1 || operando_2 r = 5 || s != 10

Ejemplo:
Las sentencias de asignacin siguientes asignan valores cero o uno a los
dos tipos de variables int, rango y es-letra . La variable rango es 1 ( true )
si el valor de n est en el rango -100 a 100; la variable es-letra es 1
(verdadera) si car es una letra mayscula o minscula.

a. rango = (n > -100) && (n < 100);


b. es-letra = (( 'A'<= car) && (car <= 'Z ')) II (('a'<= car) && (car <= 'z'));

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 68


Operadores de Manipulacin de Bits
Los operadores de manipulacin o tratamiento de bits (bitwise)
ejecutan operaciones lgicas sobre cada uno de los bits de los
operandos. Estas operaciones son comparables en eficiencia y
en velocidad a sus equivalentes en lenguaje ensamblador.
Cada operador de manipulacin de bits realiza una operacin
lgica bit a bit sobre datos internos.

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 69


Operadores de Manipulacin de Bits
Los operadores de manipulacin de bits se aplican slo a
variables y constantes char, int y long, y no a datos en coma
flotante. Dado que los nmeros binarios constan de 1s y 0s
(denominados bits), estos 1 y 0 se manipulan para producir el
resultado deseado para cada uno de los operadores.

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 70


Operadores de Manipulacin de Bits
Operador Operacin
& Y (AND) lgica bit a bit
| O (OR) lgica (inclusiva) bit a bit
^ O (XOR) lgica (exclusiva) bit a bit
(OR exclusive)
~ Complemento a uno
<< Desplazamiento de bits a la izquierda
>> Desplazamiento de bits a la derecha

Tabla. Operadores lgicos bit a bit


Ejemplo :
(^) 83 0x53 = 0101 001 1
204 0xCC = 1100 1100
83^204 = 1001 1111 = 0x9F
Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 71
Operadores de Asignacin
adicionales
AI igual que los operadores aritmticos, los operadores de
asignacin abreviados estn disponibles tambin para
operadores de manipulacin de bits. Estos operadores se
muestran en la Tabla.
Smbolo Uso Descripcin
<<= a <<= b Desplaza a a la izquierda b bits y asigna el resultado a
a.
>>= a >> b Desplaza a a la derecha b bits y asigna el resultado a
a.
&= a &= b Asigna a a el valor a&b(AND)
^= a ^= b Establece a a a^b(OR exclusivo)
|= a |= b Establece a a a|b(OR)
Tabla. Operadores de asignacin adicionales.
Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 72
Operador Condicional
Las sentencias:
if (a > b)
z = a;
else
z = b;
calcula en z el mximo de a y b. El operador conditional, con el
operador ternario ?:, suministra un modo alternativo para escribir
esto y construcciones similares.

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 73


Operador Condicional
Al ser un operador ternario requiere tres operandos. El formato del
operador condicional es:
expr1 ? expr2 : expr3
Se evala primero la expresin expr1 y su valor (cero = falso,
distinto de cero = verdadero) determina cul es la expresin a
ejecutar; si la condicin es verdadera se ejecuta expr2 y si es falsa
se ejecuta expr3.

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 74


Operador Condicional

De este modo para fijar z al mximo de a y b,


z = (a > b) ? a : b; /* z = max(a, b) */

Ejemplo 1:
/*escribe x, y escribe el carcter fin de lnea(\n) si x%5(resto 5)
es 0, en caso contrario un tabulador(\t) * /

printf("%d %c", x, x%5 ?'\t':'\n');

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 75


El operador sizeof
Con frecuencia su programa necesita conocer el tamao en bytes
de un tipo de dato o variable. C proporciona el operador sizeof,
que toma un argumento, bien un tipo de dato o bien el nombre de
una variable (escalar, array, registro, etc.). El formato del operador
es :
sizeof (nombre-variable)
sizeof ( tipo-dato )
sizeof(expresin)

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 76


El operador sizeof
Si se supone que el tipo int consta de cuatro bytes y el tipo double
consta de ocho bytes, las siguientes expresiones proporcionarn
los valores 4 y 8 respectivamente
sizeof (unsigned int)
sizeof(double).
Este operador se puede aplicar tambin a expresiones.
printf("La expresin a + b ocupa %d bytes ",sizeof (a + b));

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 77


El operador sizeof
Ejercicio:
Suponga que se desea conocer el tamao, en bytes, de variables de
coma-flotante y de doble precisin de su computadora. El siguiente
programa realiza esta tarea:

/ * Imprime el tamao de valores de coma flotante y double * /


#include <stdio.h>
int main()
{
printf(El tamao de variables de coma flotante es %d \n, sizeof(float));
printf(El tamao de variables de doble precisin es %d \n, sizeof(double));
return 0;
}
Compilando este programa bajo C, el programa produce :
El tamao de variables de coma flotante es: 4
El tamao de variables de doble precisin es: 8
Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 78
Reglas de prioridad y asociatividad
La prioridad de operadores determina el orden en el que se aplican los
operadores a un valor.
Si dos operadores se aplican al mismo operando, el operador
con mayor prioridad se aplica primero.
Todos los operadores del mismo grupo tienen igual prioridad y
asociatividad.
La asociatividad izquierda-derecha significa aplicar el operador
ms a la izquierda primero, y en la asociatividad derecha-
izquierda se aplica primero el operador ms a la derecha.
Los parntesis tienen la mxima prioridad.

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 79


Reglas de prioridad y asociatividad
A. La Prioridad: La expresin "2 * 3 + 4" podra interpretarse como "(2 *
3) + 4" o como "2 * (3 + 4)". Para resolver la ambigedad, cada operador
tiene asignado un valor de prioridad (un entero entre 0 y 9). En una
situacin como la anterior, se comparan los valores de prioridad y se
utiliza primero el operador con mayor prioridad (el (+) y el (*) tienen
asignados 6 y 7, respectivamente, por lo cual se realizara primero la
multiplicacin). B. La Asociatividad: La regla anterior resolva
ambigedades cuando los smbolos de operador tienen distintos valores
de prioridad, sin embargo, la expresin "1 - 2 - 3" puede ser tratada como
"(1 - 2) - 3" resultando -4 o como "1 - (2 - 3)" resultando 2. Para resolverlo,
a cada operador se le puede definir una regla de asociatividad. Por
ejemplo, el smbolo (-) se puede decir que es: asociativo a la izquierda: si
la expresin "x-y-z" se toma como "(x-y)-z" asociativo a la derecha: si la
expresin "x-y-z" se toma como "x-(y-z).

Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 80


Reglas de prioridad y asociatividad

Tabla. Prioridad y Asociatividad de los Operadores


Lic. C. Martn Cruz Salazar Lenguaje C++ - CTIC. UNI 81

You might also like