viernes, 16 de noviembre de 2012

bucles y Excepciones




  Bucles:


El  bucle for se utiliza para repetir un conjunto de sentencias un número de veces fijado de antemano. 

Se necesita una variable contadora, un valor inicial, un valor final y un incremento.
En este código que te pongo a continuación, es un programa que realiza la media de 5 números introducidos por el usuario. Este código esta realizado en c++ y utilizo un bucle while para resolverlo. 

01#include <iostream>
02#include <conio.h>
03
04using namespace std;
05int main(){
06int contador, valor, suma, inicio, final;
07double media;
08inicio = 1;//valor inicial
09final = 5;// valor final
10suma = 0;
11contador = inicio; // contador
12while (contador <= final){ // v_c <= Vfinal
13cout << "Introduce el número " << contador << ": \n";
14cin >> valor;
15suma = suma + valor;
16contador++; // incremento v_c = v_c + 1
17}
18media = suma / (final *1.0);
19cout << "La media es " << media << endl;
20}

La sentencia for permite la construcción de una forma compacta de los ciclos controlados por contador, aumentando la legibilidad del código. Su sintaxis es la siguiente:

for (i=valor inicial; i<=valor final; i++){
sentencias
}

Suponemos que i es una variable entera, tenemos un valor inicial un valor final y un incremento. En lenguaje convencional esto se diría de la siguiente manera: para i igual a valor inicial hasta i menor o igual que valor final, realiza las sentencias luego aumenta i y revisa la condición.

Como ejemplo te voy a poner el programa anterior pero realizado con el blucle for:


01#include <iostream>
02using namespace std;
03int main(){
04int contador, valor, suma, inicio, final;
05double media;
06inicio = 1;
07final = 5;
08suma = 0;
09for (contador=inicio ; contador <= final ; contador++){
10cout << "Introduce el número " << contador << "o: \n";
11cin >> valor;
12suma = suma + valor;
13}
14media = suma / (final*1.0);
15cout << "La media es " << media << endl;
16}

¿De que depende que el bucle se repita 5 veces? Como puedes comprobar las veces que se repite depende del programador. Él decide el valor inicial, el valor final y el operador relacional (según el que pongas variará las veces que se repita el bucle, no es lo mismo < que < = ).

Ejemplo: Programa que escribe 9 veces “hola”
1int i;
2for (i = 1; i <= 9; i++)
3cout << "Hola \n";
Este ejemplo hace lo mismo pero, cambio los valores iniciales y finales y la condición:

1int i;
2for (i = 0; i < 10; i++)
3cout << "Hola \n";

http://cdn.slidesharecdn.com/ss_thumbnails/clase6-excepciones-120531200132-phpapp02-thumbnail-2.jpg?1338512551 Excepciones:

Una excepción es posible error que puede ocurrir debido a una mala entrada por parte del usuario, un mal funcionamiento en el hardware, un argumento inválido para un cálculo matemático, etc. Para remediar esto, el programador debe estar atento y escribir los algoritmos necesarios para evitar a toda costa que un error de excepción pueda hacer que el programa se interrumpa de manera inesperada. C++ soporta una forma más directa y fácil de ver tanto para el programador como para los revisores del código en el manejo de excepciones que su símilar en el C estándar y esta consiste, tratándose del lenguaje C++, en el mecanismo try, throw y catch.

 Palabras reservadas (funciones):

try: bloquea para detectar excepciones.

throw: un manejador para manejar excepciones de throw.

catch: manda el mensaje y ejecuta el programa como si nada.

La lógica del mecanismo mencionado consiste en:
  1. Dentro de un bloque try se pretende evaluar una o más expresiones y si dentro de dicho bloque se produce un algo que no se espera se lanza por medio de throw una excepción, la misma que deberá ser capturada por un catch específico.
  2. Puesto que desde un bloque try pueden ser lanzados diferentes tipos de errores de excepción es que puede haber más de un catch para capturar a cada uno de los mismos.
  3. Si desde un try se lanza una excepción y no existe el mecanismo catch para tratar dicha excepción el programa se interumpirá abruptamente despues de haber pasado por todos los catchs que se hayan definido y de no haber encontrado el adecuado.
  4. Los tipos de excepciones lazados pueden ser de un tipo primitivo tal como: int, float, char, etc. aunque normalmente las exepciones son lanzadas por alguna clase escrita por el usuario o por una clase de las que vienen incluidas con el compilador.

No hay comentarios:

Publicar un comentario