Sei sulla pagina 1di 43

Operadores y expresiones en C++

Operadores aritmticos
Operadores de incremento y decremento
Operadores relacionales
Operadores lgicos
Estructuras de flujo de control
Secuenciales
Condicionales
Repetitivas
Funciones

Los programas en C++ constan de


datos, sentencias de programas (if,
while, ) y expresiones.
Una expresin es una sucesin de operandos
y operadores debidamente relacionados que
especifican un clculo, ejemplo:

Operador Binario
5 + 10
Operandos
Otro tipo de operador es el unitario que acta
sobre un nico valor. Como por ejemplo el
valor de -10 .

Los operadores aritmticos sirven para


realizar operaciones aritmticas bsicas.
Operador Tipos enteros
Suma
+
Resta
Multiplicacin
*

Tipos reales
Suma
Resta
Multiplicacin

Ejemplo
x+y
bc
y*z

Divisin entera:
cociente

Divisin en
coma flotante

b / 10

Divisin entera:
resto

No permitida

a%5

Al evaluar una expresin


construida en C++, hay que
considerar
el
orden
de
prioridad de los operadores.
El orden de prioridad es el orden en que la
computadora ejecuta los operadores
aritmticos, que se encuentran en una sola
lnea de instruccin.
Orden de Prioridad
1
2

Operadores
*, /, %
+, -

El cuadro anterior indica que tiene mayor


prioridad los operadores *, / y %, en relacin
a los operadores + y -.

Los operadores que


tienen mayor prioridad
son
los
que
se
ejecutan primero.
Es importante resaltar que los
parntesis se pueden usar para
cambiar el orden usual de evaluacin
de una expresin.
En ausencia de los parntesis, los
operadores aritmticos contiguos que
tienen la misma prioridad, se ejecutan
de izquierda a derecha.

Cul es el resultado de la siguiente expresin:

10 + (8 - 4) * (10 * (12 + 6) / 6) ?
10 + (8 - 4) * (10 * (12 + 6) / 6)
10 + (8 - 4) * (10 * 18 / 6)
10 + 4 * (10 * 18 / 6)
10 + 4 * (180 / 6)
10 + 4 * 30
10 + 120
130

Smbolo

Uso

a=b

*=
/=
%=
+=
-=

Descripcin

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

Sentencia no
abreviada
a=b
a=a*b
a=a/b
a=a%b
a=a+b
a=a-b

El lenguaje C++ incorpora los operadores de


incremento ++ y decremento -Estos operadores unitarios suman o restan 1
(uno), respectivamente, al valor de una variable.
Tienen la propiedad de que pueden utilizarse
como sufijo o prefijo.

El
resultado
de
la
expresin puede ser
distinto
dependiendo
del contexto que se
maneje.

Incremento
++n
n += 1
n = n +1

Decremento
--n
n -= 1
n = n -1

Si los operadores +
+ -- estn de
prefijos, la
operacin de
incremento o
decremento se
efecta antes de la
operacin de
asignacin.
Si los operadores ++ -- estn de
sufijos, la asignacin se efecta en
primer lugar y el incremento o
decremento a continuacin.

Ejemplo del operador de incremento


int a = 1, b;
b = ++a;
a vale 2

// b vale 2 y

Cul es el valor de a y de b?
int a = 1, b;
b = a++
a vale 2

// b vale 1 y

Son aquellos operadores que comprueban una


relacin entre dos operandos.
Se usan normalmente en sentencias de
seleccin (if) y de iteracin (while, do-while
y for), para construir condiciones simples.
Cuando se utilizan los operadores relacionales
en una expresin, la evaluacin del operador
produce un cero (0), o un uno (1).

El cero (0) lo devuelve para una


condicin falsa y el uno (1) lo
devuelve para una condicin
verdadera.
Ejemplo: a = 7 > 3, la variable
a toma el valor de 1.

Operador

Significado

Uso

Ejemplo

==

Igual a

a == b

'A' == ' C'


falso

!=

No igual a

a != b

2 != 4
verdadero

>

Mayor que

a>b

7>9
falso

<

Menor que

a<b

'a' < 'd'


verdadero

>=

Mayor o
igual que

a >= b

'A' >= 'a'


falso

<=

Menor o
igual que

a <= b

4 <= 1
falso

Los operadores lgicos relacionan expresiones lgicas,


dando como salida a su vez nuevas expresiones lgicas,
que al ser evaluados pueden devolver un valor verdadero
(cualquier valor distinto de 0), o (un valor falso (0))
Operador
Operacin lgica
Ejemplo
Negacin
! operando
! (x >= y)
(!, not)
not operando
not (x >= y)
m < n && i > j
Y lgica
operando1 && operando 2

(&&, and)
operando1 and operando 2
m < n and i > j
a = 10 || n != 5
O lgica
operando1 || operando 2

(||, or)
operando1 or operando 2
a = 10 or n != 5
El operador ! tiene prioridad mas alta que &&, que a su
vez tiene mayor prioridad que el ||.
El operador ! se evala de derecha a izquierda
Al evaluar una expresin que contiene operadores lgicos
contiguos de igual prioridad, pero sin parntesis que
permitan cambiar el orden de ejecucin, se cumple, que
ambos operadores && y || se evalan de izquierda a

Los operadores aritmticos tienen prioridad sobre los


operadores relacionales, y los operadores relacionales
tienen prioridad sobre los operadores lgicos, excepto
los operadores ! (negacin lgica) y ,+ (menos y mas
unitario) que tienen prioridad sobre todos los dems.

>

&&

Las estructuras bsicas son:

Secuenciales
Condicionales
Repetitivas

La ejecucin comienza con la primera


sentencia y luego se ejecutan las dems,
una tras otra, hasta llegar al final del
bloque.
El bloque de sentencias se define por el
carcter llave de apertura ( { ) para marcar
el inicio del mismo, y el carcter llave de
cierre
( } ) para marcar el final, como se
muestra a continuacin:
{
sentencia1;
sentencia2;

sentencian;
}

Formato 1
La sentencia if permite decidir, a partir del
resultado de evaluar una expresin lgica, si
se ejecuta o no una sentencia o un bloque de
sentencias, segn sea el caso.

if (expresin_lgica)
sentencia;
Ejemplo:

if (expresin_lgica)
{
sentencia1;
:::
sentencian;
}

if (num1 % num2 == 0)
cout << num1 << " es divisible por "
<< num2;

Formato 2

Este
formato
permite
ejecutar una sentencia o un
bloque
de
sentencias
(segn sea el caso) cuando
se evala una expresin
lgica, ya sea que el
resultado sea verdadero o
falso.
if (expresin_lgica)
sentencia1;
else
sentencia2;

if expresin_lgica)
{
sentencia1;
:::
sentencian;
}
else
{
sentencia1;
:::
sentencian;
}

Ejemplo Formato 2

if (annos > 3)
{
aumento = sueldo_base * 0.30;
bono = 3000 * nroh;
}
else
{
aumento = sueldo_base * 0.15;
bono = 1000 * nroh;
}
sueldo_neto = sueldo_base + aumento + bono;

Formato 3
Este formato
muestra como se
puede utilizar la
sentencia if para
implementar
decisiones que
impliquen varias
alternativas.

if (expresin_lgica)
sentencia1;
else
if (expresin_lgica)
sentencia2;
else
:::
if (expresin_lgica)
sentencia3;
else
sentencian;

Ejemplo Formato 3

if (numero1 == numero2)
cadena = "Los dos nmeros son iguales";
else
if (numero1 > numero2)
cadena = "El 1er nmero es mayor que el 2do";
else
cadena = "El 1er nmero es menor que el 2do";

La sentencia
switch es una
sentencia de C++
que se utiliza
para seleccionar
una alternativa
entre varias
disponibles y
tiene el siguiente
formato:

switch (expresion)
{
case etiqueta1 : sentencia1;
:::
break;
case etiqueta2 : sentencia2;
:::
break;
:::
case etiquetaN : sentencian;
:::
break;
default : sentenciad; :::
}

En el siguiente
ejemplo se evala el
dato que contiene
edo_civil y
dependiendo de su
valor, se guarda un
mensaje como una
cadena de
caracteres.

string mensaje;
char edo_civil;
:: /* de alguna manera
edo_civil toma un valor */
switch (edo_civil)
{
case 'S': case 's':
mensaje = "SOLTERO";
break;
case 'C': case 'c':
mensaje = "CASADO";
break;
case 'D': case 'd':
case 'V': case 'v':

default:
mensaje = "Estado Invalido";
}

La estructura repetitiva permite que una o


varias sentencias se ejecuten un nmero
determinado de veces. Tambin conocidas
como bucles, ciclos o lazos.
La sentencia o grupo de sentencias que se
repiten se llaman cuerpo del bucle.
Cada repeticin del cuerpo del bucle se llama
iteracin del bucle.

En C++ se dispone de las


sentencias: while, do ..
while y for, para construir
los bucles o estructuras
repetitivas.

Un bucle while tiene una condicin del bucle


(expresin lgica) que controla la secuencia de
repeticin. La ejecucin de la(s) sentencia(s) se
repite mientras la condicin del bucle permanece
verdadera y termina cuando es falsa.
Sintaxis:

Es una expresin lgica o


booleana

while (condicin)
{
sentencia 1;
sentencia 2; Cuerpo del
Bucle
:::
sentencia n;
}

while (condicin)
sentencia;
Primero se
chequea la
condicin y luego
se ejecuta
sentencia(s)
Ciclo Pre test
(0..n veces)

Bucle controlado con


contador

Ejemplo de un bucle o estructura


repetitiva, que permite mostrar por
pantalla los nmeros enteros del 1 al 100.
int cont = 1; // Inicializa cont
while (cont <= 100) // Control del bucle
{
cout << cont << endl; /* Imprime el contenido
de cont */
++cont; /* Incrementa cont, cuando llegue
a 100 se saldr del bucle */
}

Bucle controlado con valor


centinela
Ejemplo que lee varias notas (no se saben cuentas) las
acumula y cuenta dentro del bucle. Usa un valor centinela
(-1) como ltimo dato para salirse del ciclo y por ltimo se
calcula e imprime el promedio de notas.
float nota, suma = 0,
int cont = 0;
const int CENTINELA = -1;
cout<<"Ingrese la nota (-1) para finalizar : ";
cin>>nota;
while (nota != CENTINELA)
{
suma += nota;
++cont;
cout<<"Ingrese la nota (-1) para finalizar : ";
cin>>nota;
}
cout << "El promedio de notas es : "
<< suma/cont << endl;

Bucle controlado preguntando al


usuario
si desea
la continuacin
del ciclo
Es el usuario
el que tiene
la potestad de continuar
o no con el
bucle, respondiendo a una pregunta que se le hace, relacionada
con el control del mismo. A continuacin se ilustra esta tcnica
con el ejemplo anterior.
float nota, suma = 0;
int resp, cont = 0;
cout<<"Existe alguna nota (1)SI (2)NO : ";
cin>>resp;
while (resp == 1)
{
cout<<"Ingrese la nota : ";
cin>>nota;
suma += nota;
++cont;
cout<<"Existe alguna nota (1)SI (2)NO : ";
cin>>resp;
}
cout << "El promedio de notas es : "
<< suma/cont << endl;

La sentencia do-while se utiliza para especificar


un bucle condicional que se ejecuta al menos
una vez. Si la condicin es verdadera, entonces
se repite la ejecucin de la(s) sentencia(s), este
proceso contina hasta que la condicin sea
do
falsa.
sentencia;
Sintaxis:
while
do
(condicin)
{
Primero se ejecuta
1;sentencia
sentencia(s) y luego
2;sentencia Cuerpo
n;sentencia

}
while
(condicin)

del Bucle

se chequea la
condicin
Ciclo Post test
(1..n veces)

float nota, suma = 0;


int resp, cont = 0;
do
{
cout<<"Ingrese la nota : ";
cin>>nota;
suma += nota;
++cont;
cout<<"Existe alguna nota (1)SI (2)NO : ";
cin>>resp;
}
while (resp == 1);
cout << "El promedio de notas es : "
<< suma/cont << endl;

Si conocemos exactamente la cantidad de veces


que necesitamos repetir un conjunto de
sentencias, entonces podemos usar un bucle for.
La sentencia for es un mtodo para ejecutar un
bloque de sentencias un nmero fijo de veces.
Sintaxis:
Expresin lgica que
Inicializa la variable de
control del bucle

determina si las sentencias


se han de ejecutar, solo
ocurre si el resultado de
evaluar la condicin es
verdadera

for (inicializacion; condicion iteracin;


incremento)
{
Incrementa o Decrementa la
conjunto de sentencias
variable de control del bucle
}

Ejemplo, donde se suman los 10 primeros


nmeros enteros y se imprime el resultado
obtenido.
int suma = 0;
for (int n = 1; n <=10; n++)
suma += n;
cout << "La suma de los primeros 10 numeros es:
<< suma << endl;

Una funcin contiene una o ms


sentencias que realizan una tarea
especfica.
Pueden retornar o no un valor y ser
llamadas desde cualquier parte de un
programa.
La funcin tiene un nombre, y cuando
el control de la ejecucin del programa
consigue este nombre, inmediatamente
es ejecutada, y se dice que la funcin
fue invocada o llamada. Una vez que
termina la ejecucin de la funcin
(finaliz con su tarea), el control de
ejecucin es devuelto al punto desde el
cual la funcin fue llamada.

Las funciones pueden tener


parmetros
(son
datos
del
exterior que la funcin necesita
para poder realizar su tarea).
Estos parmetros se suministran
a la funcin cuando esta es
invocada.
En la programacin orientada a
objetos, las funciones se utilizan
para definir los mtodos de las
clases.

Parmetros
Una funcin no puede ser
formales o
invocada (llamada) si no ha sido
ficticios
declarada
previamente.
La
(opcionales)
declaracin de una funcin,
llamada tambin prototipo de la
funcin
tiene
el
siguiente
tipo_de_retorno
nombre_funcin (tipo param1, tipo param2,
formato:

,tipo paramn);
tipo_de_retorno: tipo del valor devuelto por la
funcin, puede ser de un tipo predefinido del C++, de un
tipo definido por el usuario, o de tipo void que indica
que no retorna ningn valor.
nombre_funcin: cualquier identificador vlido.
tipo param1, tipo param2 ... tipo paramn: tipos de
valores que se le deben suministrar a la funcin para que
haga su trabajo; estos valores se conocen como
parmetros. Algunas funciones no los requieren.

Los parmetros de una funcin pueden ser por valor


y por referencia, o puede no tener parmetros.

Parmetros por valor (copia del


dato): En C++ el paso por valor
significa, que cuando el control pasa a
la funcin, los valores de los
parmetros en la llamada, se copian en
los parmetros formales o ficticios de
la funcin. Si en las instrucciones que
contiene la funcin, se cambia el valor
de un parmetro que fue pasado por
valor, el cambio solo se refleja en la
funcin y no tiene efecto fuera de esta.

Parmetros por referencia (dato original): Cuando


se necesita que un parmetro pasado a la funcin, sea
modificado por alguna de las instrucciones que esta
contiene y su valor sea devuelto al punto donde fue
invocada la funcin, se debe pasar el parmetro por
referencia.
Para declarar un parmetro como paso por
referencia, el smbolo & debe preceder al nombre del
parmetro.

La definicin de una funcin le indica al compilador como


sta trabaja. Incluye el encabezado y el cuerpo de la funcin.
El encabezado es igual al prototipo de la funcin, pero sin el
punto y coma.
El cuerpo describe lo que hace la funcin y va encerrado
entre llaves. La definicin de una funcin tiene el siguiente
formato:

tipo_de_retorno nombre_funcin (tipo param1,


tipo param2,

tipo
paramn)
{
acciones //cuerpo de la funcin
}
Si una funcin tiene un tipo de retorno, sta lo devuelve
utilizando la sentencia return que normalmente aparece
al final.
Una funcin puede tener ms de una sentencia return.

A continuacin se muestra la definicin de la


funcin LeerNombrePersona()
string LeerNombrePersona()
{
string nom;
// variable local de la funcin
cout << "Ingrese nombre de la persona";
cin.sync();
/* limpia el Buffer antes de leer
el string nom*/
getline(cin,nom); // lee nom de tipo string
return nom;
// retorna la variable nom
}

Las funciones para poder ser ejecutadas han de ser


llamadas o invocadas. Una funcin se invoca por su
nombre, y se le debe suministrar valores a cada uno
de los parmetros incluidos en su definicin (si los
tiene).
Una funcin que es llamada, recibe el control del
programa y comienza a ejecutarse desde el principio
(primera instruccin) y cuando termina (se alcanza
una sentencia return o la llave de cierre ( } ))
el control del programa vuelve y retorna al punto
desde el cual la funcin fue llamada.

A continuacin se muestra como


invocar la funcin LeerNombrePersona
definida anteriormente.
string nombre;

/*declaracin de la variable
que recibir lo que retorna
la funcin*/
nombre = LeerNombrePersona(); /*llamada
de la
funcin*/

Potrebbero piacerti anche