Webmaster Workers utiliza cookies. Lea nuestra Política de Privacidad para obtener más información. Para eliminar este mensaje, haga clic en el siguiente botón: Acepto el uso de cookies


Estructuras condicionales anidadas





Decimos que una estructura condicional es anidada cuando por la rama del verdadero o el falso de una estructura condicional hay otra estructura condicional.


diagrama flujo estructura condicional anidada


El diagrama de flujo que se presenta contiene dos estructuras condicionales. La principal se trata de una estructura condicional compuesta y la segunda es una estructura condicional simple y está contenida por la rama del falso de la primer estructura.

Es común que se presenten estructuras condicionales anidadas aún más complejas.



Problema:


Confeccionar un programa que pida por teclado tres notas de un alumno, calcule el promedio e imprima alguno de estos mensajes:

Si el promedio es >=7 mostrar "Promocionado".

Si el promedio es >=4 y <7 mostrar "Regular".

Si el promedio es <4 mostrar "Reprobado".


Diagrama de flujo:


problema estructuras condicionales anidades


Analicemos el siguiente diagrama. Se ingresan tres valores por teclado que representan las notas de un alumno, se obtiene el promedio sumando los tres valores y dividiendo por 3 dicho resultado (Tener en cuenta que si el resultado es un valor real solo se almacena la parte entera).

Primeramente preguntamos si el promedio es superior o igual a 7, en caso afirmativo va por la rama del verdadero de la estructura condicional mostramos un mensaje que indica "Promocionado" (con comillas indicamos un texto que debe imprimirse en pantalla).

En caso que la condición nos de falso, por la rama del falso aparece otra estructura condicional, porque todavía debemos averiguar si el promedio del alumno es superior o igual a cuatro o inferior a cuatro.

Estamos en presencia de dos estructuras condicionales compuestas.



Programa:



using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace EstructuraCondicionalAnidada1
{
class Program
{
static void Main(string[] args)
{
int nota1,nota2,nota3;
string linea;
Console.Write("Ingrese primer nota:");
linea = Console.ReadLine();
nota1=int.Parse(linea);
Console.Write("Ingrese segunda nota:");
linea = Console.ReadLine();
nota2 = int.Parse(linea);
Console.Write("Ingrese tercer nota:");
linea = Console.ReadLine();
nota3 = int.Parse(linea);
int promedio=(nota1 + nota2 + nota3) / 3;
if (promedio>=7)
{
Console.Write("Promocionado");
}
else
{
if (promedio>=4)
{
Console.Write("Regular");
}
else
{
Console.Write("Reprobado");
}
}
Console.ReadKey();
}
}
}


Codifiquemos y ejecutemos este programa. Al correr el programa deberá solicitar por teclado la carga de tres notas y mostrarnos un mensaje según el promedio de las mismas.

Podemos definir un conjunto de variables del mismo tipo en una misma línea:


int nota1,nota2,nota3;

Esto no es obligatorio pero a veces, por estar relacionadas, conviene.

A la codificación del if anidado podemos observarla por el else del primer if.

Para no tener problemas (olvidarnos) con las llaves de apertura y cerrado podemos ver la siguiente regla:

Cada vértice representa una llave de apertura y una de cierre:


llaves en los if en C#



Problemas propuestos




  1. Se cargan por teclado tres números distintos. Mostrar por pantalla el mayor de ellos.


  2. Se ingresa por teclado un valor entero, mostrar una leyenda que indique si el número es positivo, nulo o negativo.


  3. Confeccionar un programa que permita cargar un número entero positivo de hasta tres cifras y muestre un mensaje indicando si tiene 1, 2, o 3 cifras. Mostrar un mensaje de error si el número de cifras es mayor.


  4. Un postulante a un empleo, realiza un test de capacitación, se obtuvo la siguiente información: cantidad total de preguntas que se le realizaron y la cantidad de preguntas que contestó correctamente. Se pide confeccionar un programa que ingrese los dos datos por teclado e informe el nivel del mismo según el porcentaje de respuestas correctas que ha obtenido, y sabiendo que:


    Nivel máximo: Porcentaje>=90%.
    Nivel medio: Porcentaje>=75% y <90%.
    Nivel regular: Porcentaje>=50% y <75%.
    Fuera de nivel: Porcentaje<50%.




Solución

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace EstructuraCondicionalAnidada2
{
class Program
{
static void Main(string[] args)
{
int num1,num2,num3;
string linea;
Console.Write("Ingrese primer valor:");
linea = Console.ReadLine();
num1=int.Parse(linea);
Console.Write("Ingrese segunda valor:");
linea = Console.ReadLine();
num2 = int.Parse(linea);
Console.Write("Ingrese tercer valor:");
linea = Console.ReadLine();
num3 = int.Parse(linea);
if (num1>num2)
{
if (num1>num3)
{
Console.Write(num1);
}
else
{
Console.Write(num3);
}
}
else
{
if (num2>num3)
{
Console.Write(num2);
}
else
{
Console.Write(num3);
}
}
Console.ReadKey();
}
}
}




using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace EstructuraCondicionalAnidada3
{
class Program
{
static void Main(string[] args)
{
int num;
string linea;
Console.Write("Ingrese un valor:");
linea = Console.ReadLine();
num=int.Parse(linea);
if (num==0)
{
Console.Write("Se ingresó el cero");
}
else
{
if (num>0)
{
Console.Write("Se ingresó un valor positivo");
}
else
{
Console.Write("Se ingresó un valor negativo");
}
}
Console.ReadKey();
}
}
}





using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace EstructuraCondicionalAnidada4
{
class Program
{
static void Main(string[] args)
{
int num;
string linea;
Console.Write("Ingrese un valor de hasta tres dígitos positivo:");
linea = Console.ReadLine();
num=int.Parse(linea);
if (num<10)
{
Console.Write("Tiene un dígito");
}
else
{
if (num<100)
{
Console.Write("Tiene dos dígitos");
}
else
{
if (num<1000)
{
Console.Write("Tiene tres dígitos");
}
else
{
Console.Write("Error en la entrada de datos.");
}
}
}
Console.ReadKey();
}
}
}




using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace EstructuraCondicionalAnidada4
{
class Program
{
static void Main(string[] args)
{
int totalPreguntas,totalCorrectas;
string linea;
Console.Write("Ingrese la cantidad total de preguntas del examen:");
linea = Console.ReadLine();
totalPreguntas=int.Parse(linea);
Console.Write("Ingrese la cantidad total de preguntas contestadas correctamente:");
linea = Console.ReadLine();
totalCorrectas=int.Parse(linea);
int porcentaje=totalCorrectas * 100 / totalPreguntas;
if (porcentaje>=90)
{
Console.Write("Nivel máximo");
}
else
{
if (porcentaje>=75)
{
Console.Write("Nivel medio");
}
else
{
if (porcentaje>=50)
{
Console.Write("Nivel regular");
}
else
{
Console.Write("Fuera de nivel");
}
}
}
Console.ReadKey();
}
}
}


Opciones
Estadísticas
Creado 01.01.1970 a las 00:00 hs
Categoría C#

  • Medallas
  • 0
    Favoritos
  • 9660
    Visitas
  • 0
    Puntos
  • 0
    Seguidores
Comentarios
0
Cargando comentarios espera un momento...
No tienes permisos para comentar.

Para poder comentar necesitas estar Registrado. O.. ya tienes usuario? Logueate!
Autor del post
Ver perfil de Administrador Administrador
Hombre Administrador  Mensaje
43 1,352 1
Medallas
No tiene medallas
Tags
Posts relacionados