Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
4.- Instrucciones de Control parte 1 en C++
#1
En nuestra vida podemos encontrarnos con que, en ocasiones, debemos de elegir una opción de unas cuantas. Para nosotros sería sencillo hacer una u otra cosa, pero para el ordenador es imposible, al menos que nosotros lo programemos de tal forma.

4.1 Sentencia If o condicional

Una condición es una expresión que puede ser verdadera (1) o falsa (0). La condición if le permite tomar una decisión de dos caminos al computador, ejecuta una cosa si la condición es verdadera y otra si esta es falsa.

La sintaxis de la sentencia if es la siguiente:

Código:
if (condición)
{
sentencia 1;
sentencia 2;
......
sentencia n;
}
else
{
sentencia 1;
sentencia 2;
......
sentencia n;
}

En la parte de condición, se puede colocar a evaluar una expresión o incluir directamente un variable del tipo bool.

4.1.1 Operadores relacionales y de igualdad
En C++ contamos con los siguientes operadores que nos sirven para realizar comparaciones. Dichas comparaciones siempre nos devolverán un valor bool.

4.1.1.1 Operadores de Igualdad
El operador == evalúa dos parámetros, y en caso de que estos sean iguales devuelve un valor verdadero (1) caso contrario un valor falso (0).

El operador != es el opuesto del ==. Devolverá verdadero cuando los parámetros sean diferentes, y falso cuando sean iguales.

4.1.1.2 Operadores de Relación.
x>y se lee x es mayor a y. Devuelve un 1 cuando x es mayor a y.
x<y se lee x es menor a y. Es lo contrario al operador anterior.
x>=y se lee x es mayor o igual a y. Devuelve un 1 cuando x es mayor o igual a y.
x<=y se lee x es menor o igual a y. Es lo contrario al operador anterior.

Cita:Error de Común de Programación 4.1.- Olvidar los paréntesis izquierdo y/o derecho de la condición en una instrucción if es un error de sintaxis; los paréntesis son obligatorios.

Error Común de Programación 4.2.- Colocar un punto y coma inmediatamente después del paréntesis derecho de la condición en una instrucción if es, generalmente, un error lógico.

Error Común de Programación 4.3.- Confundir el operador de igualdad (==) con el de asignación (=) puede producir un error lógico o de sintaxis. El operador de igualdad debe leerse como “es igual a”, y el de asignación como “obtiene” u “obtiene el valor de”. Para evitar confusión, algunas personas leen el operador de igualdad como “doble igual” o “igual igual”.

Error Común de Programación 4.4.- Es un error de sintaxis si los operadores ==, !=, >= y <= contienen espacios entre sus símbolos, como en = =, ! =, > = y < =, espectivamente.

Error Común de Programación 4.5.- nvertir los operadores !=, >= y <=, como en =!, => y =<, es un error de sintaxis.


Buena Práctica de Programación 4.1.- Aplique sangría al cuerpo de una instrucción if para hacer que resalte y mejorar la legibilidad del programa.

Buena Práctica de Programación 4.2.- Coloque sólo una instrucción por línea en un programa. Este formato mejora la legibilidad del programa.


4.2 Instrucción de repetición for
Como su nombre lo dice, la instrucción for repetirá varias veces un número de sentencias determinadas por el usuario. Se controla su ejecución de manera numérica, es decir, que se utilizarán parámetros numéricos para saber hasta cuando repetir las instrucciones.

Código:
for (valor inicial;valor máximo;incremento)
{
sentencias;
}

El valor inicial es el valor en el cual comienza el ciclo, este ha de ser un número. El valor máximo es una condición de relación o de igualdad que compara dos valor numéricos. El incremente indica en cuando aumentará el valor inicial del parámetro en cada ciclo.

Cita:Error Común de Programación 4.6.- Debido a que los valores de punto flotante pueden ser aproximados, controlar los ciclos con variables de punto flotante puede producir valores imprecisos del contador y pruebas de terminación imprecisas.

Tip para Prevenir Errores 4.1.- Controle los ciclos de contador con enteros.

Error Común de Programación 4.7.- Utilizar un operador relacional incorrecto o un valor final incorrecto de un contador de ciclo en la condición de continuación de ciclo de una instrucción de repetición puede producir un error por desplazamiento en 1.

Buena Práctica de Programación 4.3.- Utilizar el valor final en la condición de una instrucción while o for con el operador relacional <= nos ayuda a evitar los errores por desplazamiento en 1. Para un ciclo que imprime los valores del 1 al 10, la condición de continuación de ciclo debe ser contador <= 10, en vez de contador < 10 (lo cual produce un error por desplazamiento en uno) o contador <11 (que es correcto). Muchos programadores prefieren el llamado conteo con base cero, en el cual para contar 10 veces, contador se inicializaría en cero y la prueba de continuación de ciclo sería contador < 10.

Error Común de Programación 4.8.- Utilizar comas en vez de los dos signos de punto y coma requeridos en el encabezado de una instrucción for es un error de sintaxis.

Error Común de Programación 4.9.- Cuando se declara la variable de control de una instrucción for en la sección de inicialización del encabezado del si se utiliza la variable de control fuera del cuerpo del for se produce un error de compilación.

Error Común de Protramación 4.10.- Colocar un punto y coma inmediatamente a la derecha del paréntesis derecho del encabezado de un for convierte el cuerpo de ese for en una instrucción vacía. Por lo general esto es un error lógico.

Tip para Prevenir Errores 4.2.- Aunque el valor de la variable de control puede cambiarse en el cuerpo de un ciclo for, evite hacerlo, ya que esta práctica puede llevarlo a cometer errores sutiles.

4.3 Sentencia Switch u opción múltiple
La sentencia switch nos sirve para tener varios caminos en una condición. Es decir, toma una variable y la evalúa con diferentes parámetros que se le dan. Por lo general, un switch solamente seguirá un camino, aunque a nuestro conveniencia pudiera seguir más de uno. (Leer Apéndice 4).

La sintaxis de la sentencia switch es la siguiente:

Código:
switch (variable)
{
case 1:
{
sentencias;
break;
}
case 2:
{
sentencias;
break;
}
default:
{
sentencias;
break;
}
}

Hay que tener en cuenta que el parámetro del switch, al igual que de los case, pueden ser de cualquier tipo, siempre y cuando los dos son del mismo tipo.

[quote]Erro Común de Programación 4.11.- Olvidar una instrucción break cuando se necesita una en una instrucción switch es un error lógico.

Buena Práctica de Programación 4.4.- Aunque cada case y el caso default en una instrucción switch pueden ocurrir en cualquier orden, es conveniente colocar la etiqueta default. Cuando el caso default se lista al último, no se requiere el break para ese caso. Algunos programadores incluyen este break para mejorar la legibilidad y tener simetría con los demás casos.

[Imagen: 88x31.png]
Artículo publicado con Licencia Creative Commons. (Attribution-NonCommercial-NoDerivs 3.0 Unported (CC BY-NC-ND 3.0))

Si deseas publicarlo en otros sitios tendrás que publicar la licencia, la fuente, y la autoría.

Fuente: Instrucciones de Control parte 1 por Julio Hurtado
WWW
#2
Está bueno el articulo, para retroalimentar un poco te haré una pregunta.

Que ventajas y/o desventajas tienen uno de otro?

Por ejemplo si obtengo una variable por GET y la quiero comparar con otra sería mejor usar:

if (variable == opcion1)

elseif (variable == opcion2)

else (variable == opcion3)

O seria mejor utilizar un switch? Cual seria mejor y por que?
WWW
#3
Yo usaría el switch por una razón muy sencilla.

Como podrás notar en ese ejemplo, cada if/else if hace un llamado a la variable, encambio con el switch solamente llamas a la variable al principio, y utilizas su valor con cada case para compararla.

PD: El else no acepta parámetros, ese último else debería ser else if o else sin parámetros xD
WWW
#4
jeje.. XD si, tienes razón.
WWW
#5
Aunque siempre va a depender de para que lo vas a utilizar.

Por ejemplo, supongamos que tienes que imprimir por la pantalla un tantos asteriscos como valor numérico de una variable. Y luego en la siguiente fila una menos y en la siguiente uno menos, etc.

Yo utilizaría un switch, porque una vez que una condición se cumple y no encuentra un break los otros case simplemente se ejecutan automáticamente.

Código:
switch (a)
{
case 5:
cout<<"*****\n"
case 4:
cout<<"****\n"
case 3:
cout<<"***\n"
case 2:
cout<<"**\n"
case 1:
cout<<"*\n"

Mucho más rápido que con un if else if, escribo menos código. Pues si la variable vale 5 mostrará todo, si vale 2 muestra cese 2 y case 1 y así.

En cambio si necesitas evaluar varias condiciones y según ese resultado hacer algo, ahí usas el if. Todo depende del problema y de como se acomode el programador.
WWW
#6
perdon por mi ignorancia si me equivo, pero es java verdad?
Mi Blog - Edizzon.com

Ultimo Post: Ruby on Rails, The Rails Tutorial, 1ra semana

Edizzon.com - Un blog dedicado a los distintos intereses del mundo del dieseño y desarrollo web, diseño gráfico, el arte de aprender y mas...


#7
(19-05-2012, 08:31 PM)edisson escribió: perdon por mi ignorancia si me equivo, pero es java verdad?

Justo en este tema se me pasó poner que es C++, en el foro donde lo posteo originalmente tengo prefijos y no suelo poner eso en el título.
WWW
#8
para mi switch es la mejor opcion!!
#9
buen aporte muchas grasias


Posibles temas similares...
Tema Autor Respuestas Vistas Último mensaje
  [Tutorial] Trucos con CSS parte I JancoBH 2 339 13-03-2016, 01:00 AM
Último mensaje: JancoBH
  como dominar CSS sin salir del escritorio parte 1 postnix 20 2,112 02-06-2014, 12:33 PM
Último mensaje: piinbook
  50 Herramientas de Diseño Web Gratis! [Parte 3] lukas 2 688 03-07-2013, 09:45 PM
Último mensaje: lukas
  50 Herramientas de Diseño Web Gratis! [Parte 1] lukas 2 443 18-06-2013, 10:59 PM
Último mensaje: fercol
  50 Herramientas de Diseño Web Gratis! [Parte 2] lukas 0 491 18-06-2013, 07:35 PM
Último mensaje: lukas
  Guía de Referencia Rápida de CSS 3 [Parte 1] Static-X 14 2,034 13-04-2013, 11:05 PM
Último mensaje: Infamer
  Manual de lenguaje HTML (Parte III) DiosOne 2 961 01-04-2013, 08:49 PM
Último mensaje: DiosOne
  Manual de lenguaje HTML (Parte II) DiosOne 1 630 01-04-2013, 11:03 AM
Último mensaje: global2013
  Manual de lenguaje HTML (Parte I) DiosOne 1 708 01-04-2013, 11:02 AM
Último mensaje: global2013
  Manual de lenguaje HTML (Parte IV) DiosOne 0 350 28-03-2013, 03:33 PM
Último mensaje: DiosOne



Usuarios navegando en este tema: 1 invitado(s)