Sie sind auf Seite 1von 54

Algoritmos y

Estructuras
De
Datos
UTN-FRSF | AEDD2014 | Datos y Operadores

1/54

Informtica




Se inicia hace 50 aos, pero se origina hace varios siglos.

HOY: combina aspectos tericos y prcticos de:

Evolucin tecnolgica:

Conjunto de conocimientos cientficos y tcnicos que hacen posible


el tratamiento de la informacin a travs de computadoras.

 Ingeniera,
 Electrnica,
 Teora de la informacin,
 Matemticas,
 Lgica
 Comportamiento humano
1623- 1899

Calculadoras

1876-1946

Calculadoras analgicas

1946-

Computadoras digitales

UTN-FRSF | AEDD2014 | Datos y Operadores

2/54

Informtica algo de historia


1623

Schickard

Calculadora de 6 cifras significativas

1942

Pascal

Calculadora mecnica que suma y resta

1671

Leibniz

Calculadora Universal: +,-,/ y . Propone trabajo en Binario.

1825

Thomas

Cajas registradoras

1822

Babbage

Mquina para el clculo de polinomios

1843

Calculador Mecnico con tarjetas perforadas. Almacena clculos


intermedio y concatena operaciones en forma secuencial.

1890

Hollerith

Primera patente de mquinas calculadoras. Con tarjetas


perforadas de Jaquard (1806). Fund su empresa que luego
origin la International Business Machine (IBM).

1944

Aiken + IBM

Calculador automtico de secuencia controlada. 16 m largo.

1946

Eckert

ENIAC 1comput. electrnica con vlvulas y tubos de vidrio.

1949

Manchester

EDVAC - primer equipo con memoria

1950

Eckert

UNIVAC I - Primera en comercializarse y usar un compilador.


Utilizada en el censo de EEUU (1952).

1980

IBM

Primera PC.

1992

de la| Datos
Worldy Operadores
Wide Web (WWW).
UTN-FRSF | Inicio
AEDD2014

3/34

UTN-FRSF | AEDD2014 | Datos y Operadores

4/54

Arquitectura de computadora

Lenguaje estructurado de propsito general.

UTN-FRSF | AEDD2014 | Datos y Operadores

5/54

Arquitectura de computadora

UTN-FRSF | AEDD2014 | Datos y Operadores

6/54

Memoria Principal
Los datos en ella estn distribuidos en celdas.
La unidad mnima de informacin es el bit.
El mximo conjunto de bits que una computadora es capaz de almacenar se denomina
palabra o byte.
El tamao de la memoria se expresa mediante potencias de 2 debido a que es un
sistema binario.

UTN-FRSF | AEDD2014 | Datos y Operadores

7/54

Codificacin de la Informacin

UTN-FRSF | AEDD2014 | Datos y Operadores

8/54

Lenguajes de Programacin

UTN-FRSF | AEDD2014 | Datos y Operadores

9/54

Lenguaje ensamblador

UTN-FRSF | AEDD2014 | Datos y Operadores

10/54

Lenguajes de alto nivel

UTN-FRSF | AEDD2014 | Datos y Operadores

11/54

Lenguajes de alto nivel

UTN-FRSF | AEDD2014 | Datos y Operadores

12/54

Fases del Desarrollo de Programas

Correccin, eficiencia , claridad

UTN-FRSF | AEDD2014 | Datos y Operadores

13/54

Diseo de Programas

UTN-FRSF | AEDD2014 | Datos y Operadores

14/54

Algorimos

UTN-FRSF | AEDD2014 | Datos y Operadores

15/54

UTN-FRSF | AEDD2014 | Datos y Operadores

16/54

UTN-FRSF | AEDD2014 | Datos y Operadores

17/54

UTN-FRSF | AEDD2014 | Datos y Operadores

18/54

EL LENGUAJE C

DATOS Y
OPERADORES

UTN-FRSF | AEDD2014 | Datos y Operadores

19/54

Lenguaje C (C++)




Lenguaje estructurado de propsito general.

Nace en 1978, se estandariza en 1983 (ANSI C),y hoy es utilizado


en la industria del soft. Ha evolucionado en otros lenguajes : C++
(P.O.O.), C# (programacin distribuida y soporte de Internet).

Ventajas:
 Flexible, con funciones de biblioteca de uso general.
 Se emplea para desarrollar S.O., compiladores, aplicaciones de
comunicaciones.
 Portable, se puede llevar a otras computadoras con poca
modificacin.
 Posee velocidad de ejecucin.

No est asociado a ningn S.O. ni a ninguna arquitectura (LP de


sistemas por excelencia).

UTN-FRSF | AEDD2014 | Datos y Operadores

20/54

Lenguaje C
 C es un LP muy utilizado en la elaboracin de software.
 Ventajas en velocidad de ejecucin y consumo de memoria.
Hay que brindar ms detalles e informacin explcita
En general resultan programas largos

Se aumenta la posibilidad de cometer errores

UTN-FRSF | AEDD2014 | Datos y Operadores

21/54

C++ lenguaje compilado


En C++ tenemos:

- lee
- analiza
- bibliotecas del
compilador

UTN-FRSF | AEDD2014 | Datos y Operadores

Prog Ejecutable

22/34

C++: Lenguaje compilado


 Antes

de poder ejecutar el programa que escribimos, tenemos


que compilar el cdigo fuente (archivo.cpp) con un compilador de
C++.
 El compilador lee y analiza todo el programa. Si no hay errores lo
traduce a cdigo de mquina; sino muestra los errores detectados.
 Los compiladores se pueden llamar habitualmente desde la lnea
de comandos, aunque nosotros usaremos un entorno de
programacin (IDE) que nos facilita la tarea.

Zinjai

Prog fuente

Compilador C++

UTN-FRSF | AEDD2014 | Datos y Operadores

23/34

Compilacin y Ejecucin de un Programa

El algoritmo debe escribirse mediante un programa editor y


almacenarse en disco (archivo de programa), convirtindose
en programa fuente.

El programa fuente se traduce a lenguaje mquina. Esto lo


realiza el compilador con el sistema operativo.

Si en compilacin hay errores (errores de compilacin), se


vuelve a editar el programa, se corrigen los errores y se
compila de nuevo. Si no hay errores se obtiene el programa
objeto (no es ejecutable).

Luego hay que realizar un montaje o enlace (link), que es una


combinacin del programa objeto con las bibliotecas del
compilador. Esto produce un programa ejecutable.

El ejecutable se puede ejecutar o correr (run). Si no hay


errores de ejecucin, se obtendr la salida del programa.

UTN-FRSF | AEDD2014 | Datos y Operadores

24/54

Estructura de un programa en C++





Un programa en C++ se compone de una o ms funciones.


 La funcin main es obligatoria.
El prog. contendr una serie de directivas que permitirn incluir archivos de
cabecera (libreras) que a su vez contienen funciones y datos predefinidos.
# include <xxxx.h>
# define

Directivas del preprocesador


Macros del preprocesador

Declaraciones globales:
Prototipos de funciones
Variables comunes a todas las funciones del programa
Funcin principal:
int main ( )
{
- Declaraciones locales
- Sentencias
}
Definiciones de otras funciones:
tipo1 func1 (.. )
{
..
}
UTN-FRSF | AEDD2014 | Datos y Operadores

25/54

Estructura de un programa en C++

/* Programa de prueba para mostrar sintaxis de C++ */


#include <iostream.h>
/* Este programa muestra en pantalla un mensaje de bienvenida */
int main( )
{
cout << Bienvenido al curso de AEDD empleando C++! " << endl;
return 0;

/* Indica que el prog termin exitosamente */

} /* Fin de la funcin main */

UTN-FRSF | AEDD2014 | Datos y Operadores

26/54

Directivas del preprocesador




Preprocesador: editor de texto inteligente que procesa directivas que son


instrucciones al compilador antes que se compile el programa principal. Son
instrucciones al compilador, no sentencias de C++, por ello no terminan en ;.
Generalmente se escriben al principio.

Las 2 directivas ms usuales son:


#include: indica al compilador que lea del disco el archivo fuente (de texto ASCII)
que sigue, y su contenido lo inserte en esa posicin.
Los archivos tienen cdigo fuente diseado por el usuario con el formato
(<nombre.c>) o son archivos de sistema especiales, denominados archivos de
cabecera, que residen en el compilador: iostream.h: para operaciones de E/S;
string.h: para operaciones con cadenas (Ej: #include <iostream.h>).
El nombre del archivo puede darse con formato <nombre.h> (si se encuentra en el
directorio por defecto) o path nombre.h si est en otro directorio (Ej: #include
D:\Mis programas\Prueba.h).
#define: indica al compilador que defina un tem de datos u operacin (Ej:
#define PI 3.141) sustituir PI por el valor 3.141 cada vez que aparezca en el prog.
UTN-FRSF | AEDD2014 | Datos y Operadores

27/54

Funcin main y funciones del usuario










Funcin main: es el punto de entrada del programa. Hay una sola por prog.
Funcin en C++: subprograma que devuelve un nico valor, un conjunto de
valores, o realiza alguna tarea especfica.
La main() de programas extensos generalmente consta de llamadas a otras
funciones:
int main( )
{
obtenerDatos ( );
calcular ( );
mostrarDatos ( );
return 0;
}

Las variables y constantes globales se declaran fuera de las funciones,


generalmente antes del main().
Las variables y constantes locales se declaran en la cabecera o cuerpo de
cada bloque de funcin.
Las funciones de usuario requieren declaracin o prototipo (valor de
retorno, nombre y lista de parmetros).Se invocan escribiendo su nombre y
los parmetros que pueda tener. Con la llamada se pasa a ejecutar el cdigo
de la funcin llamada y al finalizar retorna el control a la funcin llamadora.
UTN-FRSF | AEDD2014 | Datos y Operadores

28/54

Funcin main y funciones del usuario










/* Ejemplo de llamadas a funciones*/

Funcin main: es el punto de entrada del programa. Hay una sola por prog.
#include <iostream.h>
Funcin en C++: subprograma que devuelve un nico valor, un conjunto de
valores o realiza alguna tarea especfica
void obtenerDatos ( );
La main de programas extensos generalmente
de llamadas a otras
void calcular consta
( );
funciones:
void mostrarDatos ( );
int main( )
{
obtenerDatos ( );
calcular ( );
mostrarDatos ( );
return 0;
}

int main( )
{
obtenerDatos ( );
calcular ( );
mostrarDatos ( );
return 0;
Las variables y constantes globales
se declaran fuera de las funciones,
}

generalmente antes del main


voidlocales
obtenerDatos
()
Las variables y constantes
se declaran
en la cabecera o cuerpo de
{
cada bloque de funcin
cout << " Ingrese los datos << endl;
Las funciones de usuario requieren declaracin o prototipo (valor de

retorno, nombre y lista de parmetros).Se invocan por su nombre y los


}
parmetros que pueda tener. Con la llamada se pasa a ejecutar el cdigo de

la funcin llamada y al finalizar retorna el control a la funcin llamadora.


UTN-FRSF | AEDD2014 | Datos y Operadores

29/54

Creacin y ejecucin de un programa

Etapas de la creacin de un programa:

Definir el programa
Definir directivas del preprocesador
Definir declaraciones globales
Crear main ()
Crear el cuerpo del programa
Crear las propias funciones definidas por el usuario
Utilizar comentarios adecuados
Almacenar en disco con nombre.cpp
Compilar, enlazar, ejecutar y comprobar el programa
Estas etapas pueden realizarse en un IDE (entorno integrado de
desarrollo)
UTN-FRSF | AEDD2014 | Datos y Operadores

30/54

Depuracin de un programa
Se denomina as al proceso de encontrar errores. Los errores pueden ser:

Errores de Sintaxis: Se violan las reglas de gramtica del lenguaje (Ej: punto y
coma despus de la cabecera, omisin de ; al final de sentencia, olvido de
smbolos apareados (corchetes, parntesis, /*..).

Errores Lgicos: Errores del programador en el diseo del algoritmo y posterior


programa. No los detecta el compilador. Se detectan con cuidadoso anlisis de
los resultados (testing). Se puede necesitar un depurador (debugger).
Ej: desbordamientos aritmticos o empleo de variables sin asignacin de valor
desde el programa.

Errores de Regresin: Se introducen accidentalmente cuando se intenta


corregir un error lgico.

Errores de Ejecucin se presentan despus que el programa fue compilado, y


cuando est en ejecucin.

Los compiladores emiten mensajes de error o de advertencia. Los mensajes


de error del compilador suelen deberse a errores de sintaxis y pueden ser:
 Fatales: no puede realizar la compilacin.
 De Sintaxis: avisa y termina.
 Advertencia (warning): indican condiciones legtimas pero sospechosas.
UTN-FRSF | AEDD2014 | Datos y Operadores

31/54

Pruebas


Los Errores de Ejecucin se presentan despus que el programa fue


compilado, y cuando est en ejecucin.

El compilador puede no emitir ningn mensaje de error durante la ejecucin,


y eso no garantiza que el programa sea correcto pues solo indica si un
programa se escribi bien sintcticamente. No indica si el programa hace lo
que se desea que haga (eficaz).

Para determinar si un programa tiene un error lgico, se debe ejecutar


utilizando datos de muestra y comprobar la salida (prueba testing).
Esta prueba se ejecuta con diferentes entradas preparadas y seleccionadas
preferentemente por personas diferentes al programador.

Si se ha determinado que el programa tiene un error lgico y no se lo


encuentra fcilmente, para localizarlo se debe realizar la ejecucin paso a
paso, seguir la traza. Algunos compiladores tienen un depurador
(debugger) incorporado con el editor.

Mxima de Dijkstra (cientfico holands): Las pruebas slo muestran la


presencia de errores, no su ausencia. No se puede probar que un
programa es correcto (exacto), slo se puede mostrar que es incorrecto.
UTN-FRSF | AEDD2014 | Datos y Operadores

32/54

Elementos de C++
Tokens (elementos lxicos de los programas):

Identificadores: Secuencia de caracteres, letras, dgitos y subrayado (guin


bajo).
El primero debe ser una letra.
Son sensibles a las maysculas.
Pueden ser extensos, pero son significativos los 32 primeros caracteres.
No pueden ser palabras reservadas.
Ej: nombre-cliente

dni

Mayor-item

fechaInicio

Palabras reservadas: tienen un significado especial para el lenguaje.


Ej: void
for
char
enum





Comentarios: //, /*----*/


Signos de puntuacin y separadores: ;, \, &, ||, ..
Archivos de cabecera: stdio.h, math.h, string.h.

UTN-FRSF | AEDD2014 | Datos y Operadores

33/54

Tipos de Datos en C++


C++ tiene pocos
tipos de datos
predefinidos,
pero tiene
capacidad para
crear datos
propios.
Los Tipos de
datos simples o
bsicos de C++
son:
- booleanos,
- enteros,
- reales (nmeros
de coma flotante),
- caracteres

Especificador Ejemplo
de Tipo

Tamao
(Bytes)

Rango de valores a
almacenar

char

-128..127

bool

false

false true

int

124

-215 .. 215

unsigned int

2389

0 .. 216-1

long

678245

-231 .. 231-1

unsigned long

41235734

0 .. 232-1

float

10.5

3.4*10 (-38) .. 3.4*10 (+38)


Precisin:7 dgitos

double

0.00045

1.7*10 (-308) .. 1.7*10 (308)


Precisin:15 dgitos

long double

1e-8

12

3.4*10 (-4932) .. 1.1*10 (4932)


Precisin:19 dgitos

UTN-FRSF | AEDD2014 | Datos y Operadores

34/34

Ms sobre tipos de datos


 En C++ los tipos numricos escalares dependen del nmero de cifras
o precisin almacenada y del rango de valores que puede tomar un
valor.
 Nos centraremos en: int, unsigned int, float, char y unsigned char.

UTN-FRSF | AEDD2014 | Datos y Operadores

35/34





Variables
Variable: posicin de la memoria con nombre, donde se almacena un valor
de un cierto tipo.
En C++ toda variable debe declararse antes de ser usada , dndole un
nombre (identificador) y asignndole un tipo.
Declaracin de variables:
<tipo de dato> <nombre de variable> = <valor inicial-expresin>
El valor inicial o expresin es opcional, pero debe ser vlido (del tipo).
En lugar de una variable puede indicarse una lista de variables separadas por
comas.
La declaracin debe situarse al principio de un bloque (antes de utilizarlo).
La declaracin reserva espacio de memoria para almacenamiento y en caso de
tener el = se proporciona un valor inicial.

Es posible acceder a cualquier variable declarada, pero si no se ha


INICIALIZADO, referir al valor (suciedad) que tiene almacenado el espacio
de memoria.
Ejemplos de declaraciones de variables:
int suma = 0;
char valor;
int dni, edad, contador;
UTN-FRSF | AEDD2014 | Datos y Operadores

36/54

Constantes
C tiene 3 tipos de constantes:
 Constantes literales: se escriben directamente en el texto. Pueden ser:




Constantes enteras: 121334, 1860L (long), 0773 (octal), 0XFF3 (hexadecimal)


Constantes de coma flotante: 23.4, 24. , .87, 1.2E-7,
Constantes caracteres: Los caracteres se encierran entre comillas simples:
a, Z, \n, \f, \a (secuencias o cdigos de escape): nueva lnea, salto de
pgina, alarma.
Constantes cadena: es cadena, z Las cadenas se encierran entre comillas
dobles y se representan por una secuencia de caracteres, ms un carcter
nulo al final insertado automticamente por el compilador.

Constantes definidas: son nombres (identificadores) asociados a valores


literales constantes. Se definen mediante: #define <nombre> <valor>
Ej: #define PI 3.141592
(Ojo, no terminan con ;)
Constantes declaradas: son como una variable pero su valor no puede ser
modificado: const <tipo-dato> <nombre-constante> = <valor-constante>;
Ej: const int Meses = 12;
const int Semana = 7;
UTN-FRSF | AEDD2014 | Datos y Operadores

37/54

Duracin de las variables




mbito o alcance de una variable: zona del programa en la que la


variable est activa (se puede utilizar):

VARIABLES
GLOBALES

Se declaran al
principio, fuera
de las funciones

Se pueden utilizar
en la totalidad del
programa

La memoria
asignada
permanece
durante toda la
ejecucin

Cuidado con los


efectos
colaterales (una
funcin cualquiera
la puede cambiar)

VARIABLES
LOCALES

Son definidas en
el interior de una
funcin o bloque

Son visibles dentro


de la func. o bloque
Su nombre puede
no ser nico.

No existen en
memoria hasta
que no se ejecute
la funcin o
bloque (ahorran
memoria)

Se las llama
automticas (se
crean
automticamente
y se destruyen
cuando se sale
del bloque)

VARIABLES
DINAMICAS

Pueden definirse
como las locales
o las globales

La visibilidad es
como las locales o
globales segn
donde se declaren

Se crean slo tras


su peticin (no
automticamente)
y se liberan
cuando no se las
necesita ms.

Se manejan a
travs de
punteros

UTN-FRSF | AEDD2014 | Datos y Operadores

38/34

Duracin de las variables: Ejemplo


#include <iostream.h>
int a, b, c;

/* variables globales */

#include <iostream.h>
int main ( )
{

int main ( )

int a, b, c, suma;

/* variables locales */

cout <<endl <<" Ingrese el numero 1: " ;


int suma;

/* variable local */

cin >> a;

cout << " Ingrese tres valores: " << endl;

cout <<endl << " Ingrese el numero 2: " ;

cin >> a >> b >> c ;

cin >> b;

suma = a + b + c;

cout <<endl <<" Ingrese el numero 3: " ;

cout << endl;


cout << " La suma de los valores
ingresados es : " ;

cin >> c;
suma = a + b + c;
cout << endl << endl << " La suma de los
valores ingresados es : " << suma;

cout << suma;

return 0;

return 0;

UTN-FRSF | AEDD2014 | Datos y Operadores

39/54

Expresiones

UTN-FRSF | AEDD2014 | Datos y Operadores

40/54

Precedencia de Operadores

UTN-FRSF | AEDD2014 | Datos y Operadores

41/54

Salidas




Los datos de salida se pueden dirigir a diversos dispositivos: pantalla,


impresora, archivos. El estndar de salida (stdout) es la pantalla.
En el archivo iostream.h estn definidas macros, constantes, variables
y funciones para la salida.
La funcin cout transforma a ASCII los datos que estn en
representacin binaria y los deriva a pantalla.
cout << cadena;
cout << dato;
cout << endl;
Los datos pueden ser expresiones, variables, constantes.
Para dar formato a las salidas:
 setprecision(int p): Fija la precisin de la salida.
 setw(int w): Fija el ancho de la salida.
 setfill(int f): Fija el carcter de relleno.

UTN-FRSF | AEDD2014 | Datos y Operadores

42/54

Manipuladores de Salidas

Para dar formato a las salidas:





setprecision(int p): Permite determinar el nmero de dgitos que


tiene que mostrar la escritura de un real.
setw(int w): Permite fijar el nmero de caracteres que tiene que
ocupar la salida.
setfill(int f): Permite fijar el carcter que tiene que rellenar una
salida cuando sta es inferior al ancho que se ha determinado.

Estos manipuladores no estn definidos en la biblioteca iostream sino


que pertenecen a otra biblioteca llamada iomanip que incluiremos en
los programas que los usen.
Ejemplo:

2.98

UTN-FRSF | AEDD2014 | Datos y Operadores

43/54

Manipuladores de Salidas

Para dar formato a las salidas:

La anchura por defecto es 0,


esto es se mostrar con el mnimo
de caracteres posibles.
Despus de una llamada a setw y
la siguiente salida por pantalla, se
vuelve a poner en 0.

UTN-FRSF | AEDD2014 | Datos y Operadores

44/54

Entradas




Los datos de entrada pueden tener diversas fuentes: teclado,


archivos,... El estndar de entrada (stdin) es el teclado.
En el archivo iostream.h estn definidas funciones para la entrada
La funcin cin permite la entrada.
cin >> var1 >> var2 .

Entrada de cadena de caracteres:


cin.get (< var-char>)
cin.get (<cadena de caracteres, tamao>)
cin.getline (<cadena de caracteres, tamao, delimitador>)

UTN-FRSF | AEDD2014 | Datos y Operadores

45/54

Operador de Asignacin
Asignacin:





Variable = expresin

Expresin: es un elemento de un prog que retorna un valor. Puede


ser una constante, una variable o una frmula que se ha evaluado,
cuyo resultado se puede asignar a la variable de la izquierda.
Ejemplos: a = 3*z + sum(x) ;
a = 3;
a = b;
La asignacin destruye el valor anterior. As, si se ejecuta: a=b;
b=a; luego de estas dos acciones no se ha intercambiado el valor
de a y b.
La asignacin puede tener notaciones abreviadas:
a = b = c = 56
a *= 3 (almacena en a el valor de a*3  a = a*3)

UTN-FRSF | AEDD2014 | Datos y Operadores

46/54

Operadores Aritmticos





Sirven para realizar operaciones aritmticas bsicas.

Operadores de incrementacin y decrementacin:

Pueden ser: binarios (+, -, *, / , % ) y unarios (+,-)


Siguen las reglas algebraicas tpicas de jerarqua y prioridad.
Se pueden usar parntesis (balanceados) para forzar otra prioridad o para
clarificar.

Son ++ y --.
Suman o restan 1 a su argumento.
Ej:
++m o m++ es igual que m = m + 1
-- x o x--

es igual que x = x - 1

En expresiones, cuando se utilizan como prefijos primero realizan la


operacin y luego hacen la asignacin. Como sufijos se invierte el
orden.
Ej:
int a = 8, b;

b = ++a;

b vale 9 y a vale 9

int a = 8, b;

b = a++;

b vale 8 y a vale 9

UTN-FRSF | AEDD2014 | Datos y Operadores

47/54

Operadores Relacionales









Son: ==, !=, <,>,>=,<=

Ejemplos de expresiones relacionales vlidas:

Forma de utilizacin: Exp1 operador-relacional Exp2


Las expresiones y el operador deben ser compatibles.
Sirven para comprobar una condicin.
Devuelven 0 (condicin falsa) o 1 (condicin verdadera).
Los caracteres se comparan utilizando el cdigo ASCII.
La comparacin alfabtica de cadenas debe hacerse con la funcin
strcmp (cad1, cad2).

b * b > 5 * c;

inicial != A;

medida == 12.6;

a < B ;

UTN-FRSF | AEDD2014 | Datos y Operadores

48/54

Operadores Lgicos





O tambin llamados operadores booleanos, son:


! (not)
&& (and)
|| (or)
Las evaluaciones se corresponden con el lgebra de Boole y
con sus prioridades.
Se trabaja con evaluacin en cortocircuito: se evala el
operando de la izquierda y si ste determina en forma unvoca la
expresin, el de la derecha no se evala.
el operando de la izquierda es falso,
Ej: x=0; if ((x>0) && (log (x) <8)) . Como
la expresin es falsa  no se evala el
operando de la derecha.
Utilidades:
Ahorrar tiempo en la evaluacin de condiciones complejas
n es 0 entonces la expresin n != 0 es
Evitar errores: (n!=0) && ( x < 1.0/ n) Si
falsa  la 2da expresin no se evala.
Los resultados de expresiones booleanas se pueden almacenar
en variables mediante asignacin:
int edad, MayorEdad;
Cuando edad > 18 asigna 1 a MayorEdad,
sino le asigna 0.
MayorEdad = (edad > 18);
UTN-FRSF | AEDD2014 | Datos y Operadores

49/54

Otros Operadores


Condicional: operador ternario que devuelve un resultado cuyo valor


depende de la condicin comprobada:
expC ? expV: expF;
Ej: (sueldo >2500) ? (incremento = 0.5) : (incremento = 0.8)

Coma: permite combinar dos o ms expresiones separadas por comas en


una misma lnea, realizndose de izquierda a derecha.
Ej:
int j=0, k=23;
j++, k++;
k= (i=10, i+8)

Especiales: ( ) para llamada a funciones, encerrando los argumentos, y [ ]


para dimensionar arreglos.
Ej:
ObtenerDatos ();
/* llama a la funcin ObtenerDatos */
double v[12];
/* define un array de 12 elementos */

Sizeof: proporciona el tamao en bytes de un tipo de dato o variable :


sizeof (nombre_variable) Ej: sizeof (a)
sizeof (tipo_dato)
Ej: sizeof (int)
sizeof (expresin)
Ej: sizeof (a + b)
UTN-FRSF | AEDD2014 | Datos y Operadores

50/54

Conversin de tipos y Prioridades





Frecuentemente se necesita convertir un valor de un tipo a otro, sin cambiar


el valor que representa.
Se hace conversiones automticas:





Cuando se asigna un valor de un tipo a una variable de otro tipo.


Cuando se combinan tipos mixtos en expresiones.
Cuando se pasan argumentos a funciones.
Conversin implcita (automtica): cuando los tipos bsicos estn
mezclados en asignaciones y expresiones.
Los datos de tipos ms bajos se convierten a datos de tipo ms alto.
Ej:
int i = 12;
double x = 4;
x = x + i;
x = i / 5;

/* el valor de i se convierte en double antes de la suma * /


/* primero se hace una divisin entera i / 5 == 2, luego el 2 se
convierte a tipo double: 2.0 y se asigna a x */

Promocin integral: int, unsigned int, long, unsigned long, float, double
El tipo que viene primero en esta lista se convierte al que viene segundo. Por
ejemplo, si los tipos operandos son int y long, el operando int se convierte en long.
UTN-FRSF | AEDD2014 | Datos y Operadores

51/54

Conversin de tipos y Prioridades

Conversin explcita: cuando se fuerza la conversin con un


operador de molde (cast):
Formato: (tipo_nombre) valor
Ej:

(float) i;
(int) 3.4;
precio = (int) 16.77 + (int) 23.99
Los operadores C++ respetan reglas de prioridad
(precedencia) y de asociatividad

UTN-FRSF | AEDD2014 | Datos y Operadores

52/54

Ejemplo 1
/* Ingresar 3 nros y mostrar promedio y valores absolutos */
#include <iostream>
#include <iomanip>
using namespace std;
int main ( )
{
int n1, n2, n3;
/* Ingreso de los datos */
cout << endl << " Ingrese el numero 1: ";
cin >> n1;
cout << endl << " Ingrese el numero 2: ";
cin >> n2;
cout << endl << " Ingrese el numero 3: ";
cin >> n3;
/* Impresin de resultados */
cout << endl << endl << "El promedio de los valores ingresados es : "
<< setprecision(3) << setw(10) << ((float)(n1 +n2+n3)/3) << endl ;
cout << endl << "Los valores absolutos de los numeros ingresados son: " ;
cout << endl << " El valor absoluto del numero 1 es : " << (n1>=0 ? n1 : -n1);
cout << endl << " El valor absoluto del numero 2 es : " << (n2>=0 ? n2 : -n2);
cout << endl << " El valor absoluto del numero 3 es : " << (n3>=0 ? n3 : -n3) << endl;
return 0; }
UTN-FRSF | AEDD2014 | Datos y Operadores

53/54

Ejemplo 2
/* Ingresar 3 reales e indicar si pueden ser lados de un triangulo */
#include <iostream.h>
#include <iomanip>
using namespace std;
int main ( )
{
float n1, n2, n3;
/* Ingreso de los datos */
cout << endl << Ingrese el numero 1:;
cin >> n1;
cout << endl << Ingrese el numero 2:;
cin >> n2;
cout << endl << Ingrese el numero 3:;
cin >> n3;
/* Evaluacin e impresin */
cout << endl << endl;
cout << " Las medidas " ;
cout << ((n1*n1+n2*n2==n3*n3) || (n1*n1+n3*n3 == n2*n2) || (n2*n2+n3*n3 == 1*n1)
? "si": "no);
cout << " corresponden a los lados de un triangulo" << endl;
return 0; }
UTN-FRSF | AEDD2014 | Datos y Operadores

54/54