jueves, 17 de marzo de 2016

Capitulo 8: Small Basic. Continuando con las condiciones. Parte 3

Diario de un programador.- Dia 23


EJERCICIOS:

Es hora de ejercitar lo aprendido hasta el momento

1.- Crear un programa que solicite un número del 1 al 12 y diga a cual mes corresponde. Por ejemplo si el usuario escribe un 8, el programa debe responder "Corresponde al mes de Agosto"

2.- Crear un programa que solicite 3 números y luego indique cual es el número mayor.
 

3.- Crear un programa que solicite 7 notas de un alumno (escala de 1 a 7), las promedie e indique si el alumno reprobó (promedio menor a 4), obtuvo un promedio bueno (sobre 4 y menos de 5), muy bueno (sobre 5 y menos de 6) y excelente (sobre 6)

4.- Una tienda hace un descuento del 15% si se compran 3 o más artículos. Crear un menú con 3 artículos para la venta mostrando sus precios. Solicitar al usuario que artículo desea comprar y posteriormente solicitar la cantidad de artículos. Aplicar 15% de descuento si lleva 3 o más artículos y por último, mostrar el valor total de la compra.

RESPUESTAS

1.-

TextWindow.Write("Ingresa un numero ")
mes = TextWindow.ReadNumber()

If mes = 1 Then
  TextWindow.WriteLine("Corresponde al mes de Enero")
ElseIf mes = 2 then
  TextWindow.WriteLine("Corresponde al mes de Febrero")
ElseIf mes = 3 then
  TextWindow.WriteLine("Corresponde al mes de Marzo")
ElseIf mes = 4 then
  TextWindow.WriteLine("Corresponde al mes de Abril")
ElseIf mes = 5 then
  TextWindow.WriteLine("Corresponde al mes de Mayo")
ElseIf mes = 6 then
  TextWindow.WriteLine("Corresponde al mes de Junio")
ElseIf mes = 7 then
  TextWindow.WriteLine("Corresponde al mes de Julio")
ElseIf mes = 8 then
  TextWindow.WriteLine("Corresponde al mes de Agosto")
ElseIf mes = 9 then
  TextWindow.WriteLine("Corresponde al mes de Septiembre") 
ElseIf mes = 10 then
  TextWindow.WriteLine("Corresponde al mes de Octubre") 
ElseIf mes = 11 then
  TextWindow.WriteLine("Corresponde al mes de Noviembre") 
ElseIf mes = 12 then
  TextWindow.WriteLine("Corresponde al mes de Diciembre") 
Else
  TextWindow.WriteLine("No corresponde a ningun mes")
EndIf



2.-
mayor = 0
TextWindow.Write("Ingresa el primer numero ")
num1 = TextWindow.ReadNumber()

TextWindow.Write("Ingresa el segundo numero ")
num2 = TextWindow.ReadNumber()

TextWindow.Write("Ingresa el tercer numero ")
num3 = TextWindow.ReadNumber()

If num1 > mayor Then
  mayor = num1
EndIf

If num2 > mayor Then
  mayor = num2
EndIf

If num3 > mayor Then
  mayor = num3
EndIf

TextWindow.WriteLine("El numero mayor es " + mayor)
  

3.-

TextWindow.WriteLine("Ingresa 7 notas")


TextWindow.WriteLine("Ingresa nota nro. 1")

nota1 = TextWindow.ReadNumber()



TextWindow.WriteLine("Ingresa nota nro. 2")

nota2 = TextWindow.ReadNumber()

TextWindow.WriteLine("Ingresa nota nro. 3")
nota3 = TextWindow.ReadNumber()

TextWindow.WriteLine("Ingresa nota nro. 4")
nota4 = TextWindow.ReadNumber()

TextWindow.WriteLine("Ingresa nota nro. 5")
nota5 = TextWindow.ReadNumber()

TextWindow.WriteLine("Ingresa nota nro. 6")
nota6 = TextWindow.ReadNumber()

TextWindow.WriteLine("Ingresa nota nro. 7")
nota7 = TextWindow.ReadNumber()

promedio = (nota1 + nota2 + nota3 + nota4 + nota5 + nota6 + nota7) / 7

If promedio < 4 Then
  TextWindow.WriteLine("Tu promedio es " + promedio)
  TextWindow.WriteLine("Has reprobado")

ElseIf promedio <= 5 Then
  TextWindow.WriteLine("Tu promedio es " + promedio)
  TextWindow.WriteLine("Buen trabajo!")
 
ElseIf promedio <= 6 Then
  TextWindow.WriteLine("Tu promedio es " + promedio)
  TextWindow.WriteLine("Muy buen trabajo!!")

ElseIf promedio <= 7 Then
  TextWindow.WriteLine("Tu promedio es " + promedio)
  TextWindow.WriteLine("Excelente trabajo, felicitaciones!!!")
 






Esta es otra versión del mismo programa si no se hubiese utilizado la instrucción ElseIf


TextWindow.WriteLine("Ingresa 7 notas")



TextWindow.WriteLine("Ingresa nota nro. 1")

nota1 = TextWindow.ReadNumber()



TextWindow.WriteLine("Ingresa nota nro. 2")
nota2 = TextWindow.ReadNumber()

TextWindow.WriteLine("Ingresa nota nro. 3")
nota3 = TextWindow.ReadNumber()

TextWindow.WriteLine("Ingresa nota nro. 4")
nota4 = TextWindow.ReadNumber()

TextWindow.WriteLine("Ingresa nota nro. 5")
nota5 = TextWindow.ReadNumber()

TextWindow.WriteLine("Ingresa nota nro. 6")
nota6 = TextWindow.ReadNumber()

TextWindow.WriteLine("Ingresa nota nro. 7")
nota7 = TextWindow.ReadNumber()

promedio = (nota1 + nota2 + nota3 + nota4 + nota5 + nota6 + nota7) / 7

If promedio < 4 Then
  TextWindow.WriteLine("Tu promedio es " + promedio)
  TextWindow.WriteLine("Has reprobado")
EndIf 

If promedio >= 4 And promedio < 5 Then
  TextWindow.WriteLine("Tu promedio es " + promedio)
  TextWindow.WriteLine("Buen trabajo!")
EndIf

If promedio >=5 And promedio < 6 Then
  TextWindow.WriteLine("Tu promedio es " + promedio)
  TextWindow.WriteLine("Muy buen trabajo!!")
EndIf 
 
If promedio >=6 And promedio <= 7 Then
  TextWindow.WriteLine("Tu promedio es " + promedio)
  TextWindow.WriteLine("Excelente trabajo, felicitaciones!!!")
EndIf
 




Se puede apreciar que en esta versión, al no utilizar el ElseIf, se tuvo que añadir la operación “And” en la condición y además de modificar algunos valores lógicos (< >). De no haberlo hecho, si el promedio hubiese sido 4, por dar un ejemplo, no solamente se hubiese mostrado el mensaje “Buen trabajo” sino que también se hubiesen mostrado los mensajes “Muy buen trabajo” y “Excelente trabajo, felicitaciones”. Esto es porque las condiciones así lo indican, ya que 4 es menor que 5, pero también es menor que 6 y también es menor que 7, por eso es que se ejecutan esas instrucciones. Al colocar la instrucción “And” decimos que solamente ejecute la instrucción si el promedio se encuentra en ese rango de valores.


4.-


En esta ocasión, se me pide realizar varias tareas por lo que la cosa se va complicando un poco. Lo importante es no asustarse por ver tantas cosas que hacer y no saber por dónde comenzar. Lo mejor en estos casos, es realizar cada una de las tareas por separado o de forma individual y luego, cuando funcione, juntar todo el código. A esto se le conoce como “divide y vencerás”.

Vamos por parte... Dijo Jack el destripador. Entonces voy a dividir las tareas de la siguiente forma:

1ro. Crear un menú con 3 artículos para la venta mostrando sus precios
2do. Solicitar al usuario que artículo desea comprar
3ro. Al seleccionar un artículo, preguntar cuántos desea llevar
4to. Mostrar el total de la compra
5to. Si lleva 3 o más artículos, aplicar un 15% de descuento en el total

Vamos con la primera parte…

TextWindow.WriteLine("1) Peras    $130 por unidad")
TextWindow.WriteLine("2) Manzanas $120 por unidad")
TextWindow.WriteLine("3) Naranjas $140 por unidad")

Con esto está lista la primera parte que solo me pide mostrar un menú con 3 artículos (Y explicado con peras y manzanas para que no digan que no explico bien XD)


Ahora la segunda parte…

TextWindow.WriteLine("Qué fruta deseas comprar?")
TextWindow.Write("1 = Peras, 2 = Manzanas, 3 = Naranjas ")
fruta = TextWindow.ReadNumber()

If fruta = 1 Then
  TextWindow.WriteLine("Has seleccionado Peras")
ElseIf fruta = 2 then
  TextWindow.WriteLine("Has seleccionado Manzanas")
ElseIf fruta = 3 then
  TextWindow.WriteLine("Has seleccionado Naranjas")
Else
  TextWindow.WriteLine("La opcion ingresada no es valida")
EndIf

Sigamos con la tercera parte…

TextWindow.Write("Cuantos deseas llevar? ")
cantidad = TextWindow.ReadNumber()

Si, el código para la tercera parte es muy pequeño, solo dos líneas.
La 4ta y 5ta parte dependen mucho del valor ingresado en la variable cantidad (tercera parte), así que tendré que juntarlas para que así quede el código funcional, o sea que funcione. Ya llegando a esta parte, es hora de empezar a unir el código. La tercera parte del código, deberá ir en cada opción seleccionada, quedando todo el código de la siguiente manera

TextWindow.WriteLine("1) Peras    $130 por unidad")
TextWindow.WriteLine("2) Manzanas $120 por unidad")
TextWindow.WriteLine("3) Naranjas $140 por unidad")

TextWindow.WriteLine("Qué fruta deseas comprar?")

TextWindow.Write("1 = Peras, 2 = Manzanas, 3 = Naranjas ")
fruta = TextWindow.ReadNumber()

If fruta = 1 Then
  TextWindow.WriteLine("Has seleccionado Peras")
  TextWindow.Write("Cuantos deseas llevar? ")
  cantidad = TextWindow.ReadNumber()

ElseIf fruta = 2 then
  TextWindow.WriteLine("Has seleccionado Manzanas")
  TextWindow.Write("Cuantos deseas llevar? ")
  cantidad = TextWindow.ReadNumber()

ElseIf fruta = 3 then
  TextWindow.WriteLine("Has seleccionado Naranjas")
  TextWindow.Write("Cuantos deseas llevar? ")
  cantidad = TextWindow.ReadNumber()

Else
  TextWindow.WriteLine("La opcion ingresada no es valida")
EndIf

Lo siguiente que se hará, será agregar una variable que calcule el precio

If fruta = 1 Then
  TextWindow.WriteLine("Has seleccionado Peras")
  TextWindow.Write("Cuantos deseas llevar? ")
  cantidad = TextWindow.ReadNumber()
  total = cantidad * 130

ElseIf fruta = 2 then
  TextWindow.WriteLine("Has seleccionado Manzanas")
  TextWindow.Write("Cuantos deseas llevar? ")
  cantidad = TextWindow.ReadNumber()
  total = cantidad * 120

ElseIf fruta = 3 then
  TextWindow.WriteLine("Has seleccionado Naranjas")
  TextWindow.Write("Cuantos deseas llevar? ")
  cantidad = TextWindow.ReadNumber()
    total = cantidad * 140

Ahora solo falta mostrar el resultado de la compra, pero este resultado dependerá de la cantidad de productos que hayamos comprado (Mayor o igual a 3 aplica descuento). Para esto, ocuparemos nuevamente una instrucción if, la cual irá de la misma forma para las 3 frutas, además que hice una nueva variable para calcular el descuento de la compra

If fruta = 1 Then
  TextWindow.WriteLine("Has seleccionado Peras")
  TextWindow.Write("Cuantos deseas llevar? ")
  cantidad = TextWindow.ReadNumber()
  total = cantidad * 130
  descuento = total - (total * 0.15)

  If cantidad < 3 Then
    TextWindow.WriteLine("El total de la compra es " + total)
    TextWindow.WriteLine("Descuento aplicado = 0")
  Else 
    TextWindow.WriteLine("El total de la compra es" + descuento)
    TextWindow.WriteLine("Descuento aplicado = " + total * 0.15)
  EndIf

Si mis matemáticas no me fallan, esa debería ser una de las fórmulas para calcular un 15% de descuento al total de la compra
El código completo, se verá de la siguiente forma:
PD: Como un último retoque, agregué la instrucción TextWindow.Clear() para borrar algunos datos de la pantalla y hacer que se vea un poco más ordenado

TextWindow.WriteLine("1) Peras    $130 por unidad")
TextWindow.WriteLine("2) Manzanas $120 por unidad")
TextWindow.WriteLine("3) Naranjas $140 por unidad")
TextWindow.WriteLine("")

TextWindow.WriteLine("Qué fruta deseas comprar?")
TextWindow.WriteLine("")
TextWindow.Write("1 = Peras, 2 = Manzanas, 3 = Naranjas ")

fruta = TextWindow.ReadNumber()

If fruta = 1 Then
  TextWindow.Clear()
  TextWindow.WriteLine("Has seleccionado Peras")
  TextWindow.Write("Cuantos deseas llevar? ")
  cantidad = TextWindow.ReadNumber()
  total = cantidad * 130
  descuento = total - (total * 0.15)

  If cantidad < 3 Then
    TextWindow.Clear()
    TextWindow.WriteLine("El total de la compra es " + total)
    TextWindow.WriteLine("Descuento aplicado = 0")
  Else 
    TextWindow.Clear()
    TextWindow.WriteLine("El total de la compra es " + descuento)
    TextWindow.WriteLine("Descuento aplicado = " + total * 0.15)
  EndIf

ElseIf fruta = 2 then
  TextWindow.Clear()
  TextWindow.WriteLine("Has seleccionado Manzanas")
  TextWindow.Write("Cuantos deseas llevar? ")
  cantidad = TextWindow.ReadNumber()
  total = cantidad * 120
  descuento = total - (total * 0.15)

  If cantidad < 3 Then
    TextWindow.Clear()
    TextWindow.WriteLine("El total de la compra es " + total)
    TextWindow.WriteLine("Descuento aplicado = 0")
 
  Else 
    TextWindow.Clear()
    TextWindow.WriteLine("El total de la compra es " + descuento)
    TextWindow.WriteLine("Descuento aplicado = " + total * 0.15)
  EndIf

ElseIf fruta = 3 then
  TextWindow.Clear()
  TextWindow.WriteLine("Has seleccionado Naranjas")
  TextWindow.Write("Cuantos deseas llevar? ")
  cantidad = TextWindow.ReadNumber()
  total = cantidad * 140
  descuento = total - (total * 0.15)

  If cantidad < 3 Then
    TextWindow.Clear()
    TextWindow.WriteLine("El total de la compra es " + total)
    TextWindow.WriteLine("Descuento aplicado = 0")
  Else 
    TextWindow.Clear()
    TextWindow.WriteLine("El total de la compra es " + descuento)
    TextWindow.WriteLine("Descuento aplicado = " + total * 0.15)
  EndIf

Else
  TextWindow.Clear()
  TextWindow.WriteLine("La opcion ingresada no es valida")
EndIf



Esto es todo por ahora, en el proximo capitulo, se estudiaran los ciclos. Hasta luego.



Gustavo J. Cerda Nilo

Agosto 2015. Última modificación, Marzo 2016


3 comentarios:

  1. 2)Una empresa les ha encargado realizar un programa para calcular la nómina de los trabajadores. El sueldo base semanal sale aplicando la siguiente fórmula: horastrabajo * preciohora + horesextra * preciohoraextra. El preciohora es una constante = 20. El preciohoraextra depende de las horas extra hechas: si son menos de 10 horas extras semanales, el precio es un 50% mayor que el preciohora (* 1,5). Si se hacen entre 10 y 20 horas extras, el precio es un 40% mayor. Si se hacen más de 20 horas extras, el precio es un 20% mayor. Si el trabajador es de categoría 3, el preciohora es el constante. Si es de categoría 2; el preciohora es un 25% mayor y si es de categoría 1 es un 45% más.  Solicitar al usuario por teclado Nombre del Trabajador, Horas trabajadas normales (horastrabajo), Horas trabajadas extras (horasextra) y Categoría.  Mostrar por pantalla el Nombre del Trabajador y el Sueldo mensual que le corresponde.
    3)Determinar el precio de un pasaje de ida y vuelta en colectivo, conociendo la distancia a recorrer y sabiendo que si el número de días de estadía es superior a los 7 días y la distancia superior a 800 Km. el pasaje tiene una reduccción del 15%. El precio por kilómetro es de $ 1,20.  Calcular el precio del pasaje.  Mostrar un mensaje de advertencia en caso de que la distancia a recorrer no sea mayor a 800 Km. o la estadía sea menor a 7 días.  Recuerde utilizar GOTO.

    necesito ayuda con este..

    ResponderEliminar
  2. Hola.como lo resolviste al ejercicio 3?

    ResponderEliminar

C++ El apuntador This

El apuntador This En C++, cada objeto tiene acceso a su propia dirección a través de un puntero o apuntador denominado This. Lo...