Estructuras Condicionales

Las estructuras condicionales en C utilizan el concepto expresiones booleanas. A continuación se muestra un sencillo ejemplo en lenguaje C del uso de estructuras condicionales

#include <stdio.h>

int main()
{
    int valor;
    printf("Digite un valor entero:");
    scanf("%d", &valor);
    if (valor < 0)
        printf("\nEl valor es negativo\n");
    return 0;
}

Este programa lee un número entero digitado por el usuario. Luego el programa prueba el valor usando una estructura  condicional simple para verificar si el número es negativo. Sí lo es, el programa imprime el mensaje: "El valor es negativo". En otro caso, el programa no hace nada. El (b < 0)es la parte de la estructura condicional que se denomina Expresión Booleana. C evalua (determina si es cierta o falsa) para decidir cuando imprimir o no imprimir el mensaje. Si la espresión booleana se evalúa a verdadero (True), entonces C ejecuta el bloque de instrucciones (dentro de llaves {}) o la instrucción que sigue a la estructura condicional. Sí la expresión booleana es falsa (False), entonces C  salta el bloque de instruciones o la instrucción que sigue a la estructura condicional. 

  A continuación se muestra un ejemplo un poco más complejo:
#include <stdio.h>

int main()
{
    int valor;
    printf("Enter a value:");
    scanf("%d", &valor);
    if (valor < 0)
        printf("\nEl valor es negativo\n");
    else
          if (valor == 0)

            printf("\nEl valor es cero\n");
        else
            printf("\nEl valor es positivo\n");
    return 0;
}

En este ejemplo, la estructura condicional despues de la primera aparición de else if(valor == 0) evalua por un valor de cero y si es cierto C imprimirá el mensaje "El valor es cero", el segundo else corresponde a la ocurrencia de un valor positivo, en este caso no se evaluan más condiciones debido a que luego de haber evaluado las dos expresiones booleanas, solo queda la opción de que el valor sea positivo y por lo tanto no es necesario evaluar algo como if (valor>0).

Operadores Booleanos en lenguaje C:

Los operadores booleanos son los que debemos utilizar en lenguaje C para construir expresiones booleanas, que determinarán la ejecución de algunas partes del programa. A continuación se listan los principales operadores booleanos utilizados en el lenguaje C:

Igualdad:               ==
Mayor que:            >
Menor que:            <
Mayor o igual que: >=
Menor o igual que: <=
Diferente:              !=
Y lógico (AND):     &&
O lógico (OR):       ||
Negación (NOT):    !

Ejercicios Resueltos (Instruciones secuenciales y estructuras condicionales)

Ejercicio 1:- En un estacionamiento cobran $/. 1.500 por hora o fracción. Diseñe un algoritmo que determine cuanto debe pagar un cliente por el estacionamiento de su vehículo, conociendo el tiempo de estacionamiento en horas y minutos.

Algoritmo 1


 


INICIO
    // Declaración de variables   
   
ENTERO horas, minutos
    REAL pago    
    // Entrada de datos
    LEER horas, minutos
    // Si hay alguna fracción de hora, incrementa las horas a pagar en una unidad
   
SI( minutos > 0 )
        horas = horas + 1
    // Determina el importe a pagar
    pago = horas * 1.500
    // Salida de resultados
    IMPRIMIR pago
FIN    


Ejercicio 2:- Diseñe un algoritmo que determine si ún número es o no es, par positivo.

Algoritmo


 
 
 


 

 

 

 

INICIO
    // Declaración de variables   
    REAL numero
    CADENA tipoNumero
    // Entrada de datos
    LEER numero
    // Determina si el número es o no es, par positivo   
    SI( (numero%2==0) && (numero>0) )
        tipoNumero = "El número es par positivo"
    SINO
        tipoNumero = "El número no es par positivo"
   // Salida de resultados
   IMPRIMIR tipoNumero
FIN


Ejercicio 3:- Un supermercado ha puesto en oferta la venta al por mayor de cierto producto, ofreciendo un descuento del 15% por la compra de más de 3 docenas y 10% en caso contrario. Además por la compra de más de 3 docenas se obsequia una unidad del producto por cada docena en exceso sobre 3. Diseñe un algoritmo que determine el monto de la compra, el monto del descuento, el monto a pagar y el número de unidades de obsequio por la compra de cierta cantidad de docenas del producto. 

Algoritmo


INICIO
    // Declaración de variables
   
REAL montopag, montocom, montodes, precio 
    ENTERO
 docenas, obsequio    
    // Entrada de datos
    LEER docenas, precio
    // Determina el monto de la compra
    montocom = docenas*precio    
    // Determina el monto del descuento y el obsequio
   
SI( docenas > 3 ){
        montodes = 0.15*montocom
        obsequio = docenas-3
    }
    SINO{
    
    montodes = 0.10*montocom
        obsequio = 0
    }
    // Determina el monto a pagar
   
montopag = montocom - montodes
    // Salida de resultados
    IMPRIMIR
montocom, montodes, montopag, obsequio
FIN


Ejercicio 4:- Diseñe un algoritmo que lea un número de tres cifras y determine si es igual al revés del número.

Observación

Como el número tiene tres cifras, para que sea igual al revés, basta con que la cifra de las unidades sea igual a la cifra de las centenas. Por ejemplo: 353, 878, etc.

Algoritmo

INICIO
    // Salida de resultados
   
ENTERO numero, unidades, centenas
    CADENA tipoNumero
    // Entrada de datos
    LEER numero
    // Si el número tiene tres cifras...
    SI(numero >99 && numero < 1000 ){
         // Determina la cifra de las unidades y la cifra de las centenas
        unidades = numero%10
        centenas = int(numero/100)
        // Determina si el número es igual al inverso
        SI( unidades == centenas )
           
tipoNumero = "El número es igual al inverso"
        SINO
           
tipoNumero = "El número no es igual al inverso"
        // Muestra el tipo de número
        IMPRIMIR tipoNumero
    }
    SINO

        IMPRIMIR "Debe ingresar un número de tres cifras"
FIN

Ejercicio 5:- Una compañía dedicada al alquiler de automoviles cobra un monto fijo de $300000 para los primeros 300 km de recorrido. Para más de 300 km y hasta 1000 km, cobra un monto adicional de $ 15.000 por cada kilómetro en exceso sobre 300. Para más de 1000 km cobra un monto adicional de $ 10.000 por cada kilómetro en exceso sobre 1000. Los precios ya incluyen el 20% del impuesto general a las ventas, IVA. Diseñe un algoritmo que determine el monto a pagar por el alquiler de un vehículo y el monto incluído del impuesto.

Algoritmo

INICIO
    // Declaración de variables
    REAL kilomrec, montopag, montoiva, montofijo = 300000, iva = 0.20  
    // Entrada de datos
    LEER kilomrec
    // Determina el monto a pagar
    SI( kilomrec <= 300 )   
        montopag = montofijo
    SINO SI( kilomrec <= 1000 )
        montopag = montofijo + 15000*(kilomrec-300)
    SINO
        montopag = montofijo + 15000*700 + 10000*(kilomrec-1000)
    // Determina el monto del impuesto
    montoiva = iva*montopag
    // Salida de resultados
    IMPRIMIR montopag, montoiva
FIN

Ejercicio 6:- Diseñe un algoritmo que determine quienes son contemporáneos entre Juan, Mario y Pedro.

Algoritmo

INICIO
    // Declaración de variables
    ENTERO EdadJuan, EdadMario, EdadPedro
    CADENA contemporaneos
    // Entrada de datos
    LEER EdadJuan, EdadMario, EdadPedro
    // Determina quienes son contemporáneos
    SI(EdadJuan == EdadMario && EdadMario == EdadPedro)
        contemporaneos = "Los tres son contemporáneos"
    SINO
        SI(EdadJuan == EdadMario)
            contemporaneos = "Juan y Mario son contemporáneos"
        SINO
            SI(EdadJuan == EdadPedro)
                contemporaneos = "Juan y Pedro son contemporáneos"
            SINO
                SI(EdadMario == EdadPedro)
                    contemporaneos = "Mario y Pedro son contemporáneos"
                SINO
                    contemporaneos = "No hay contemporáneos"
    // Salida de resultados
    IMPRIMIR contemporaneos
FIN

Ejercicio 7:- El promedio de prácticas de un curso se calcula en base a cuatro prácticas calificadas de las cuales se elimina la nota menor y se promedian las tres notas más altas. Diseñe un algoritmo que determine la nota eliminada y el promedio de prácticas de un estudiante.

Algoritmo


INICIO
    // Declaración de variables
    REAL pc1, pc2, pc3, pc4, pcmenor, promedio
    // Entrada de datos
    LEER pc1, pc2, pc3, pc4
    // Determina la nota menor
    pcmenor = pc1
    SI( pc2 < pcmenor )
        pcmenor = pc2
    SI( pc3 < pcmenor )
        pcmenor = pc3
    SI( pc4 < pcmenor )
        pcmenor = pc4
    // Determina el promedio
    promedio = (pc1 + pc2 + pc3 + pc4 - pcmenor )/3
    // Salida de resultados
   
IMPRIMIR promedio, pcmenor
FIN



Ejercicio 8:- Diseñe un algoritmo que lea tres longitudes y determine si forman o no un triángulo. Si es un triángulo determine de que tipo de triángulo se trata entre: equilátero (si tiene tres lados iguales), isósceles (si tiene dos lados iguales) o escaleno (si tiene tres lados desiguales). Considere que para formar un triángulo se requiere que: "el lado mayor sea menor que la suma de los otros dos lados".

Algoritmo

INICIO
    // Declaración de variables
    REAL L1, L2, L3, suma
    CADENA tipoTriangulo
    // Entrada de datos
    LEER L1, L2, L3<   
    // Determina el lado mayor
    mayor = L1
    SI( L2 > mayor )
        mayor = L2
    SI( L3 > mayor )
        mayor = L3
    // Determina la suma de los lados a excepción del lado mayor
    suma = L1 + L2 + L3 - mayor
    // Determina de que tipo de triángulo se trata
    SI( mayor < suma ){
        SI( ( L1 == L2 ) && ( L2 == L3 ) )
           tipoTriangulo= "Triángulo equilátero"
        SINO SI( ( L1 == L2 ) || ( L1 == L3 ) || ( L2 == L3 ) )
           tipoTriangulo= "Triángulo isósceles"
        SINO
           tipoTriangulo= "Triángulo escaleno"
    }
    SINO
       tipoTriangulo= "No es un triángulo"

    // Salida de resultados
    IMPRIMIR tipoTriangulo
FIN


Ejercicio 9:- Diseñe un algoritmo que lea un número entero de 3 cifras, y forme el mayor número posible con las cifras del número ingresado. El número formado debe tener el mismo signo que el número ingresado.

Algoritmo

INICIO
    
// Declaración de variables
    ENTERO num1, num2, numaux, uni, dec, cen, menor, mayor,medio

    
// Entrada de datos
    LEER num1

    
// Si el número tiene tres cifras...
    SI( ( num1 >= 100 && num1 <= 999 ) || ( num1 >= -999 && num1 <= -100 ) ){

       
// Guarda el número en una variable auxiliar para preservar el signo
        numaux = num1

       
// Cambia el signo de num1 en caso de ser negativo
        SI( num1 < 0 )
            num1 = -num1

       
// Determina las cifras del número
        cen = num1/100
        dec = (num1%100)/10
        uni = (num1%100)%10

       
// Determina la cifra menor
        menor = cen
        SI( dec < menor )
            menor = dec
        SI( uni < menor )
            menor = uni

       
// Determina la cifra mayor
        mayor = cen
        SI( dec > mayor )
            mayor = dec
        SI( uni > mayor )
            mayor = uni
       
// Determina la cifra del medio
        medio = cen+dec+uni-mayor-menor
       
// Forma el nuevo número
        SI( numaux > 0 )
            num2 = mayor*100 + medio*10 + menor
        SINO
            num2 = -1*(menor*100 + medio*10 + mayor)
       
// Imprime el nuevo número
        IMPRIMIR num2
    }
    SINO
        IMPRIMIR "El número no tiene tres cifras"
FIN