Curso de C++ (Página 6 ejemplos)

pagina006 Principal pagina007

Ejemplos capítulos 1 a 6

Veamos algunos ejemplos que utilicen los que ya sabemos de C++.

Pero antes introduciremos, sin explicarlo en profundidad, un elemento que nos permitirá que nuestros programas se comuniquen con nosotros.. Se trata de la salida estándar, "cout". Este elemento nos permite enviar a la pantalla cualquier variable o constante, incluidos literales. Lo veremos más detalladamente en un capítulo dedicado a él, de momento sólo nos interesa cómo usarlo para mostrar cadenas de caracteres y variables.

Nota: en realidad "cout" es un objeto de la clase "ostream_withassign", pero los conceptos de clase y objeto quedarán mucho más claros en capítulos posteriores.

El uso es muy simple:

#include <iostream.h>

cout << <variable|constante> [<< <variable|constante>...];

Por ejemplo:

#include <iostream.h>

int a;
a = 32;
cout << "la variable a vale " << a; 

Una constante muy útil es "endl", que hará que la siguiente salida se imprima en una nueva línea.

cout << "hola" << endl;

La línea "#include <iostream.h>" es necesaria porque las funciones que permiten el acceso a "cout" están en una librería externa. Con este elemento ya podemos incluir algunos ejemplos. Te aconsejo que intentes resolver los ejemplos antes de ver la solución, o al menos piensa unos minutos sobre ellos.

Ejemplo 1

Primero haremos uno fácil. Escribir un programa que muestre una lista de números del 1 al 20, indicando a la derecha de cada uno si es divisible por 3 o no.

// Este programa muestra una lista de números, indicando para cada uno
// si es o no múltipo de 3.
// 11/09/2000 Salvador Pozo

#include <iostream.h> // librería para uso de cout

int main() // función principal
{
   int i; // variable para bucle

   for(i = 1; i <= 20; i++) // bucle for de 1 a 20
   { 
      cout << i; // muestra el número
      if(i % 3 == 0) cout << " es múltiplo de 3"; // el resto de dividir por 3 es 0
      else cout << " no es múltiplo de 3"; // o no lo es
      cout << endl; // cambio de línea
   } 
}

El enunciado es el típico de un problema que puede ser solucionado con un bucle "for". Observa el uso de los comentarios, y acostúmbrate a incluirlos en todos tus programas. Acostúmbrate también a escribir el código al mismo tiempo que los comentarios. Si lo dejas para cuando has terminado el código, probablemente sea demasiado tarde, y la mayoría de las veces no lo harás. ;-)

También es una buena costumbre incluir al principio del programa un comentario extenso que incluya el enunciado del problema, añadiendo también el nombre del autor y la fecha en que se escribió. Además, cuando hagas revisiones, actualizaciones o correcciones deberías incluir una explicación de cada una de ellas y la fecha en que se hicieron.

Una buena documentación te ahorrará mucho tiempo y te evitará muchos dolores de cabeza.

Ejemplo 2

Escribir el programa anterior, pero usando una función para verificar si el número es divisible por tres, y un bucle de tipo "while".

// Este programa muestra una lista de números, indicando para cada uno
// si es o no múltipo de 3.
// 11/09/2000 Salvador Pozo

#include <iostream.h> // librería para uso de cout

// Prototipos:
bool MultiploDeTres(int n);

int main() // función principal
{
   int i = 1; // variable para bucle

   while(i <= 20) // bucle hasta i igual a 20
   { 
      cout << i; // muestra el número
      if(MultiploDeTres(i)) cout << " es múltiplo de 3"; // el numero es múltiplo de 3
      else cout << " no es múltiplo de 3"; // o no lo es
      cout << endl; // cambio de línea
      i++;
   } 
}

// Función que devuelve verdadero si el parámetro 'n' en 
// múltiplo de tres y falso si no lo es
bool MultiploDeTres(int n)
{
   if(n % 3) return false; else return true;
}

Comprueba cómo hemos declarado el prototipo de la función "MultiploDeTres". Además, al declarar la variable i le hemos dado un valor inicial 1. Observa que al incluir la función, con el nombre adecuado, el código queda mucho más legible, de hecho prácticamente sobra el comentario. Por último, fíjate en que la definición de la función va precedida de un comentario que explica lo que hace. Esto también es muy recomendable.

Ejemplo 3

Escribir un programa que muestre una salida de 20 líneas de este tipo:

1

1 2 1 2 3 1 2 3 4 ...

// Este programa muestra una lista de números
// de este tipo:
// 1
// 1 2
// 1 2 3
// ...

// 11/09/2000 Salvador Pozo

#include <iostream.h> // librería para uso de cout

int main() // función principal
{
   int i, j; // variables para bucles

   for(i = 1; i <= 20; i++) // bucle hasta i igual a 20
   {
      for(j = 1; j <= i; j++) // bucle desde 1 a i
         cout << i << " "; // muestra el número
      cout << endl; // cambio de línea
   }
}

Este ejemplo ilustra el uso de bucles anidados. El bucle interior, que usa "j" como variable toma valores entre 1 e "i". El bucle exterior incluye, además del bucle interior, la orden de cambio de línea, de no ser así, la salida no tendría la forma deseada. Además, después de cada número se imprime un espacio en blanco, de otro modo los números aparecerían amontonados.

Ejemplo 4

Escribir un programa que muestre una salida con la siguiente secuencia numérica:

1, 5, 3, 7, 5, 9, 7, ..., 23

La secuencia debe detenerse al llegar al 23.

El enunciado es rebuscado, pero ilustra el uso de los bucles "do...while".

La secuencia se obtiene partiendo de 1 y sumando y restando 4 y 2, alternativamente. Veamos cómo resolverlo:

#include <iostream.h>; // librería para uso de cout 

int main() // función principal 
{ 
   int i = 1; // variable para bucles 
   bool sumar = true; // Siguiente operación es sumar o restar
   bool terminado = false; // Se ha alcanzado la condición de fin 

   do { // Hacer
      cout << i; // muestra el valor en pantalla
      terminado = (i == 23); // Actualiza condición de fin
      if(terminado) cout << "."; else cout << ", "; // Puntuación, separadores
      if(sumar) i += 4; else i -= 2; // Calcula siguiente elemento
      sumar = !sumar; // Cambia la siguiente operación
   } while(!terminado); // ... mientras no se termine
   cout << endl; // Cambio de línea
}

pagina006 Principal pagina007