You are on page 1of 14

MOTOR FINO

1
objetivos

• Utilizar los operadores de incremento, decremento y asignación.


• Aprender a usar las instrucciones de repetición fwhile para ejecutar instrucciones repetidas cuantas
veces en una aplicación.
• Conocer los fundamentos de la repetición controlada por un contador.
• Conocer los fundamentos de la repetición controlada por un centinela.

2
índice

operadores de asignación
operadores incrementales y decrementales
instrucciones de repetición
Instrucción de repetición while
Sintaxis while

3
operadores de
asignación

■ C++ cuenta con varios operadores de


asignación para abreviar las expresiones
de asignación.
■ Por ejemplo, la instrucción
– c = c + 3;
puede abreviarse mediante el operador de
asignación de suma, +=, de la siguiente
manera:
– c += 3;

Una operación de asignación asigna el valor del operando derecho a la ubicación de


almacenamiento designada por el operando izquierdo. Es el operador de asignación.
Este aparece con un signo igual (=). Cambia el valor de la variable que está a la
izquierda por un literal o el resultado de la expresión que se encuentra a la derecha.
Por consiguiente, el operando izquierdo de una operación de asignación debe ser un
valor L modificable. Después de la asignación, una expresión de asignación tiene el
valor del operando izquierdo, pero no es un valor L.

Los operadores de asignación de C++ pueden transformar y asignar valores en una


única operación. En la asignación, el tipo del valor derecho se convierte al tipo del
valor izquierdo, y el valor se almacena en el operando izquierdo después de que haya
ocurrido la asignación.

Veamos un ejemplo de una instrucción tonta, que en realidad no hace nada.

algo = algo;

La variable algo toma el valor de algo; todo queda como antes. Ahora aumentemos el
valor de la variable en 10 unidades.

4
algo = algo + 10;

Aquí la variable toma el valor que tenía mas 10 unidades. Existe una forma de
simplificar la notación anterior. Es la siguiente:

algo += 10; // equivalente a algo = algo + 10

Se juntaron el operador de suma con el de asignación. Este atajo se puede realizar


para otras operaciones además de la suma. Es útil cuando la operación contiene
como primer operando al valor de la misma variable en la que se almacena el
resultado.

Hay un tipo de error que los programadores de C++, sin importar su experiencia,
tienden a cometer con tanta frecuencia que creemos requiere una mención
separada. Ese error es el de intercambiar accidentalmente los operadores ==
(igualdad) y = (asignación). Lo que hace a estos intercambios tan peligrosos es el
hecho de que por lo general no producen errores sintácticos. En lugar de ello, las
instrucciones con estos errores tienden a compilarse correctamente y el programa se
ejecuta hasta completarse, generando a menudo resultados incorrectos a través de
errores lógicos en tiempo de ejecución.

Hay dos aspectos de C++ que contribuyen a estos problemas. Uno de ellos establece
que cualquier expresión que produce un valor se puede utilizar en la porción
correspondiente a la decisión de cualquier instrucción de control. Si el valor de la
expresión es cero, se trata como false, y si el valor es distinto de cero, se trata como
true. El segundo establece que las asignaciones producen un valor, a saber, el valor
asignado a la variable del lado izquierdo del operador de asignación. Por ejemplo,
suponga que tratamos de escribir:

if ( codigoPago == 4 )
cout << "Obtuvo un bono!" << endl;

pero accidentalmente escribimos

if ( codigoPago = 4 )
cout << "Obtuvo un bono!" << endl;

La primera instrucción if otorga apropiadamente un bono a la persona cuyo


codigoPago sea igual a 4. La segunda instrucción if (la del error) evalúa la expresión
de asignación en la condición if a la constante 4. Cualquier valor distinto de cero se
interpreta como true, por lo que la condición en esta instrucción if es siempre true, y

4
la persona siempre recibe un bono sin importar cual sea el código de pago! Aun peor,
!el código de pago se ha modificado, cuando se supone que sólo debía examinarse!

4
operadores
incrementales y
decrementales
■ Además de los operadores de asignación
aritméticos, C++ proporciona dos
operadores unarios para sumar 1, o restar
1, al valor de una variable numérica.

■ Estos operadores son el operador de


incremento unario, ++, y el operador de
decremento unario, --

■ A un operador de incremento o decremento


que se coloca antes de una variable se le
llama operador de preincremento o
predecremento, respectivamente. A un
operador de incremento o decremento que
se coloca despues de una variable se le
llama operador de postincremento o
postdecremento, respectivamente.

A diferencia de los operadores binarios (lógicos), los operadores unarios de incremento y decremento
deben colocarse enseguida de sus operandos, sin espacios entre ellos

Los Operadores de incremento y decremento son operadores unarios que agregan o


sustraen uno de sus operandos, respectivamente. Son normalmente implementados
en lenguajes de programación imperativos. En lenguajes tipo C es normal tener 2
versiones (pre- y post-) de cada operador con semántica ligeramente diferente.

En lenguajes tipo C++, el operador de incremento es escrito como ++ y el de


decremento como --.

El operador de incremento aumenta el valor de su operando en 1. El operando debe


ser un tipo de dato aritmético o puntero, y debe hacer referencia a un objeto
modificable. Similarmente, el operador de decremento disminuye el valor de su
operando en 1. El valor de los punteros se incrementa (o disminuye) por una
cantidad que hace que apunte al siguiente (o anterior) elemento adyacente en
memoria.
En lenguajes que admiten ambas versiones de los operadores, los operadores de pre-
incremento y pre-decremento aumentan (o disminuyen) sus operandos en 1, y el
valor de la expresión es el resultado del incremento (o decremento). En contraste, los
los operadores de post-incremento y post-decremento incrementan (o decrementan)
el valor de sus operandos en 1, pero el valor de la expresión es el valor original de su
operando antes del incremento (o decremento). En lenguajes donde el

5
incremento/decremento no es una expresión (Ej.: Go), sólo se necesita una versión
(en el caso de Go, solo post operadores).
Dado que el operador de incremento/decremento modifica su operando, el uso de
más de una vez dentro de la misma expresión puede producir resultados no
definidos. Por ejemplo, en expresiones tales como x − ++x, no está claro en qué orden
se deben realizar la resta y el operador de incremento. Situaciones como esta son
aun peores cuando se aplican optimizaciones por el compilador, lo que podría dar
lugar a un orden de ejecución de operaciones diferente de lo que pretende el
programador.

Se define como operación unaria aquella operación matemática, que sólo necesita el
operador y un único operando (argumento) para que se pueda calcular un valor.

5
instrucciones de
repetición
■ C++ cuenta con tres instrucciones de repetición (también
llamadas instrucciones de ciclo o ciclos) que permiten a los
programas ejecutar instrucciones en forma repetida, siempre
y cuando una condición (llamada la condición de
continuación del ciclo) siga siendo verdadera.
■ Se le conoce como bucle o ciclo, estructuras de control
iterativas o de repetición. Se debe colocar especial énfasis
en evitar ciclos infinitos ya que provocarán un error lógico
que puede llevar a “quedar colgado” o “congelado” el
programa.
■ Las instrucciones de repetition se implementan con las
instrucciones while, do...while y for.
■ En el momento en que la declaración se vuelve falsa, el
control sobre el programa es cambiado a la línea que sigue
inmediantemante después del ciclo.
■ Estas se pueden anidar, entre ellas mismas, o bien con
estructuras de selección o viceversa

Un bucle o ciclo, en programación, es una sentencia que ejecuta repetidas veces un


trozo de código, hasta que la condición asignada a dicho bucle deja de cumplirse. Los
tres bucles más utilizados en programación son el bucle while, el bucle for y el bucle
do-while.

Algunos lenguajes de programación tienen sentencias que permiten "escapar" de los


bucles sin llegar a la condición de fin, como el break y continue.

Las estructuras de repetición, también llamadas bucles o ciclos, permiten ejecutar la


misma instrucción cero, una o múltiples veces. Además de la instrucción a ejecutar,
tienen una sección de control. Esta sección de control, en conjunto con el cuerpo del
ciclo, se encarga de ejecutar tres tareas necesarias para el correcto funcionamiento
de la estructura: inicialización, comprobación y actualización. La inicialización
consiste en establecer un estado que será modificado progresivamente hasta llegar a
la condición de terminación. La comprobación consiste en comparar el estado inicial
con el estado final deseado para determinar si se debe finalizar la ejecución del ciclo.
Finalmente, la actualización consiste en modificar el estado inicial de forma que
avance progresivamente hacia el estado final y permita que eventualmente la
ejecución termine.

6
Existen muchos tipos de estructuras de repetición y cambian significativamente entre
ellas dependiendo del lenguaje de programación pero se pueden clasificar en dos
tipos de estructuras principales: estructuras controladas por una condición y
estructuras controladas por un contador.

6
instrucción de repetición while
■ Una instrucción de repetición repite una
acción mientras cierta condición sea
verdadera.
■ es un ciclo repetitivo basado en los
resultados de una expresión lógica
■ la instrucción de repetición Mientras
(while) constituye el cuerpo de esta
estructura, el cual puede ser una sola
instrucción o un bloque. En algún
momento, la condición se hará falsa. En
este punto la repetición terminará y se
ejecutará la primera instrucción que esté
después de la instrucción de repetición.
■ Si no tenemos una declaración que
eventualmente evalúe a falso, el bucle
continuaría su ejecución indefinidamente.

El bucle while o bucle mientras es un ciclo repetitivo basado en los resultados de


expresión lógica; se encuentra en la mayoría de los lenguajes de programación
estructurados. El propósito es repetir un bloque de código mientras una condición se
mantenga verdadera.

Condición
La condición ha de ser una sentencia que devuelva un valor booleano, y esta puede
ser el valor booleano sí, verdadero (true) si la condición se cumple, o falso si esta no
se cumple (false). También puede contener el nombre de una variable booleana, y el
valor de la expresión dependerá de su contenido. Se debe tener en cuenta que
además de las variables también puede haber llamadas a funciones que devuelvan un
valor.

Secuencias de Comparación
La forma más obvia tal vez, y la más usada sin duda, son las sentencias comparativas,
que usan los operandos igual, diferente, menor o igual, mayor o igual, menor y
mayor. En el caso del lenguaje C++, se utilizan los siguientes símbolos para
representar las comparaciones anteriores: ==, !=, <=, >=, <, >,

7
sintaxis while
■ La condición puede ser controlada por un contador o
por un centinela.
■ A la repetición controlada por contador se le llama
comúnmente repetición definida, ya que el número de
repeticiones se conoce antes de que el ciclo empiece
a ejecutarse. Un contador es una variable que se
utiliza para contar.
■ A la repetición controlada por centinela a menudo se le
llama repetición indefinida, ya que el número de
repeticiones no se conoce antes de que comience la
ejecución del ciclo. El centinela es un valor especial
denominado valor de señal, valor de prueba o valor de
bandera para indicar el fin del bucle.

Es conveniente siempre inicializar las variables que se utilicen como


contadores.
Utilizar un centinela que a la vez es un valor de datos permitido puede
conllevar a errores lógicos.

La mayor parte de los programas incluyen repeticiones o ciclos. Un ciclo es un grupo


de instrucciones que la computadora ejecuta en forma repetida en
tanto se conserve verdadera alguna condición de continuación del ciclo. Hemos
analizado dos procedimientos de repetición:

• repetición controlada por contador


• repetición controlada por centinela

La repetición controlada por contador se denomina a veces repetición definida


porque con anticipación se sabe con exactitud cuantas veces se ejecutara el
ciclo. La repetición controlada por centinela a veces se denomina repetición
indefinida porque no se sabe con an cipación cuantas veces se ejecutar á el ciclo.

En la repetición controlada por contador se utiliza una variable de control para contar
el numero de repeticiones. La variable de control es incrementada
(normalmente en 1) cada vez que se ejecuta el grupo de instrucciones dentro de la
repetición. Cuando el valor de la variable de control indica que se ha
ejecutado el numero correcto de repeticiones se termina el ciclo y la computadora
continua ejecutando el enunciado siguiente al de la estructura de repetición.

8
Los valores centinela se utilizan para controlar la repetición cuando:

• El número preciso de repeticiones no es conocido con anticipación, y


• El ciclo incluye enunciados que deben obtener datos cada vez que este se ejecuta.

El valor centinela indica ”fin de datos”. El centinela es introducido una vez que al
programa se le han proporcionado todos los datos. Los centinelas deben ser un valor
diferente a los valores que toman los datos.

La Repetición Controlada por Contador


La repetición controlada por contador requiere:
1. El nombre de una variable de control (o contador del ciclo).
2. El valor inicial de la variable de control.
3. El incremento (o decremento) con el cual, cada vez que se termine un ciclo la
variable de control ser ́a modificada.
4. La condición que compruebe la existencia del valor final de la variable de control.

8
9

You might also like