Pensar en C++ (Volumen 1) - Grupo ARCO

Pensar en C++ (Volumen 1) - Grupo ARCO Pensar en C++ (Volumen 1) - Grupo ARCO

arco.esi.uclm.es
from arco.esi.uclm.es More from this publisher
13.01.2015 Views

✐ ✐ ✐ “Volumen1” — 2012/1/12 — 13:52 — page 74 — #112 ✐ Capítulo 3. C en C++ 3.2.9. Recursividad La recursividad es una técnica de programación interesante y a veces útil, en donde se llama a la función desde el cuerpo de la propia función. Por supuesto, si eso es todo lo que hace, se estaría llamando a la función hasta que se acabase la memoria de ejecución, de modo que debe existir una manera de «escaparse» de la llamada recursiva. En el siguiente ejemplo, esta «escapada» se consigue simplemente indicando que la recursión sólo continuará hasta que cat exceda Z: 2 //: C03:CatsInHats.cpp // Simple demonstration of recursion #include using namespace std; void removeHat(char cat) { for(char c = ’A’; c < cat; c++) cout

✐ ✐ ✐ “Volumen1” — 2012/1/12 — 13:52 — page 75 — #113 ✐ 3.3. Introducción a los operadores 3.3.1. Precedencia La precedencia de operadores define el orden en el que se evalúa una expresión con varios operadores diferentes. C y C++ tienen reglas específicas para determinar el orden de evaluación. Lo más fácil de recordar es que la multiplicación y la división se ejecutan antes que la suma y la resta. Luego, si una expresión no es transparente al programador que la escribe, probablemente tampoco lo será para nadie que lea el código, de modo que se deben usar paréntesis para hacer explícito el orden de la evaluación. Por ejemplo: A = X + Y - 2/2 + Z; Tiene un significado muy distinto de la misma expresión pero con un configuración de paréntesis particular: A = X + (Y - 2)/(2 + Z); (Intente evaluar el resultado con X =1, Y = 2, y Z = 3.) 3.3.2. Auto incremento y decremento C, y por tanto C++, está lleno de atajos. Los atajos pueden hacer el código mucho mas fácil de escribir, y a veces más difícil de leer. Quizás los diseñadores del lenguaje C pensaron que sería más fácil entender un trozo de código complicado si los ojos no tienen que leer una larga línea de letras. Los operadores de auto-incremento y auto-decremento son de los mejores atajos. Se utilizan a menudo para modificar las variables que controlan el número de veces que se ejecuta un bucle. El operador de auto-decremento es -- que significa «decrementar de a una unidad». El operador de auto-incremento es ++ que significa «incrementar de a una unidad». Si es un entero, por ejemplo, la expresión ++A es equivalente a (A = A + 1). Los operadores de auto-incremento y auto-decremento producen el valor de la variable como resultado. Si el operador aparece antes de la variable (p.ej, ++A), la operación se ejecuta primero y después se produce el valor resultante. Si el operador aparece a continuación de la variable (p.ej, A++), primero se produce el valor actual, y luego se realiza la operación. Por ejemplo: //: C03:AutoIncrement.cpp // Shows use of auto-increment // and auto-decrement operators. #include using namespace std; int main() { int i = 0; int j = 0; cout

✐<br />

✐<br />

✐<br />

“Volum<strong>en</strong>1” — 2012/1/12 — 13:52 — page 74 — #112<br />

✐<br />

Capítulo 3. C <strong>en</strong> <strong>C++</strong><br />

3.2.9. Recursividad<br />

La recursividad es una técnica de programación interesante y a veces útil, <strong>en</strong><br />

donde se llama a la función desde el cuerpo de la propia función. Por supuesto, si<br />

eso es todo lo que hace, se estaría llamando a la función hasta que se acabase la<br />

memoria de ejecución, de modo que debe existir una manera de «escaparse» de la<br />

llamada recursiva. En el sigui<strong>en</strong>te ejemplo, esta «escapada» se consigue simplem<strong>en</strong>te<br />

indicando que la recursión sólo continuará hasta que cat exceda Z: 2<br />

//: C03:CatsInHats.cpp<br />

// Simple demonstration of recursion<br />

#include <br />

using namespace std;<br />

void removeHat(char cat) {<br />

for(char c = ’A’; c < cat; c++)<br />

cout

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!