Вы находитесь на странице: 1из 8

UNIVERSIDAD COLUMBIA DEL PARAGUAY MATERIA Lenguaje de Programacin 3 (LP3) Documentacin de Trabajo

Programacin en RUBY. (Stock en Depsito de Materiales)


Prof.: Ing. Roberto Snchez. Integrantes: y Vctor Cabrera. y Marcos Len.

Asuncin-Paraguay Ao 2011

RUBY Breve historia Es un lenguaje de programacin interpretado, reflexivo y orientado a objetos, creado por el programador japons Yukihiro "Matz" Matsumoto, quien comenz a trabajar en Ruby en 1993, y lo present pblicamente en 1995. Combina una sintaxis inspirada en Python y Perl con caractersticas de programacin orientada a objetos similares a Smalltalk. Comparte tambin funcionalidad con otros lenguajes de programacin como Lisp, Lua, Dylan y CLU. Ruby es un lenguaje de programacin interpretado en una sola pasada y su implementacin oficial es distribuida bajo una licencia de software libre. IMPLEMENTACION Un nombre es una letra mayscula, una letra minscula o un guin bajo, seguido por cualquier combinacin de maysculas, minsculas, nmeros o guiones bajos. Los nombres en Ruby se usan para referirse a constantes, variables, mtodos, clases y mdulos. La primera letra de un nombre ayuda a Ruby a distinguirlos. Algunos nombres, son palabras reservadas y no pueden usarse como variable, mtodo, clase o mdulo. El conjunto de las minsculas abarca de la 'a' a la 'z' incluyendo el guin bajo '_'. El conjunto de las maysculas abarcan de la 'A' a la 'Z' y los nmeros (del '0' al '9'). Ruby no utiliza punto y coma para indicar al fin de alguna declaracin o sentencia. DEPOSITO DE MATERIALES_1 Enfocamos este lenguaje a la idea de un depsito de materiales, con materiales limitados (cal, cemento, ladrillos, tejas y tejuelones). Los clculos principales, las validaciones y los mensajes principales son desarrollados en las clases, la seleccin de las clases como de sus atributos son realizados en el main. main.rb require "calculos.rb" require "mensajes.rb" require "validacions.rb" # Declaracin de las clases que se utilizaran # Clase de donde provienen los clculos principales # Clase para los mensajes principales # Clase que aceptan o rechazan las validaciones #Ruby no utiliza el ; (punto y coma) para indicar el final de #una sentencia # Instanciamos una clase con la palabra reservada new y el nombre de la clase que utilizaremos $mensaje=Mensajes.new $cal=Calculos.new $valida=Validacions.new def compras_modulo() $mensaje.titulo #La palabra reservada def define una funcin #la clase se utiliza nombrando la clase acompaado de un punto luego el atributo o funcin que se desea #utilizar # las variables no se declaran, RUBY simplemente asume el

$mensaje.compras a=false

b=false while a==false

tipo de dato # Bucle de repeticin con la palabra reservada WHILE # En este caso se repetira mientras que a sea falso # puts palabra reservada para imprimir en pantalla

while b==false puts "Que material desea comprar? *ladrillo *cemento *cal *teja *tejuelon" STDOUT.flush producto = gets.chomp

# obtiene los valores STRING ingresados por pantalla

if $valida.val_letras(producto)== true || $valida.val_mer(producto.downcase) ==true b=true else puts "Debe ingresar Solo Letras y algun producto del listado" b=false end end # Dentro de este bloque de cdigo vemos la palabra #reservada IF (de condicin) donde utilizamos la funcin #val_letras() contenida en una clase que en este caso #valida que la variable producto sea string y no numrico y #la funcin val_mer() valida que las letras ingresadas #correspondan a alguna mercadera del listado y este #proceso se repite mientras que no sea vlida alguna #seleccin. #La palabra reservada downcase convierte los ingresos en #mayscula por pantalla a minscula para su bsqueda en #el listado c=false while c==false puts "Que cantidad desea Comprar?" unidad = STDIN.gets.to_i if $valida.val_num(unidad)==true c=true else puts "Debe ingresar solo numeros" c=false end end #Este proceso realiza la validacin del numero que recibe #como parmetro por STDIN.gets.to_i en pantalla y como

#en el anterior caso repite el bloque hasta que la seleccin #no sea vlida.

$cal.compra(producto, unidad) puts"Desea realizar otra compra? 1 si desea seguir comprando 2 no desea seguir comprar" STDOUT.flush respuesta = STDIN.gets.to_i if respuesta==1 a=false else a=true end end end

#llamamos a la funcin compra de la clase calculo #le enviamos como parmetro el producto que #deseamos comprar y las unidades que deseamos #comprar, luego preguntamos si desea seguir #comprando, caso contrario volver a la #pantalla principal con la opcin 1 # # # # # controla que el bucle se repita si se desea volver # a comprar #Modulo de compras

def ventas_modulo() $mensaje.titulo $mensaje.ventas a=false b=false while a==false while b==false puts "Que material desea vender? *ladrillo *cemento *cal *teja *tejuelon" STDOUT.flush producto = gets.chomp if $valida.val_letras(producto)== true || $valida.val_mer(producto.downcase) ==true b=true else puts "Debe ingresar Solo Letras y algun producto del listado" b=false end end c=false while c==false puts "Que cantidad desea vender?" unidad = STDIN.gets.to_i if $valida.val_num(unidad)==true c=true else

puts "Debe ingresar solo numeros" c=false end end $cal.venta((producto), unidad) puts"Desea realizar otra venta? 1 si desea seguir vendiendo 2 no desea seguir vendiendo" STDOUT.flush respuesta = STDIN.gets.to_i if respuesta==1 a=false else a=true end end end #Al igual que compras el modulo ventas realiza las mismas #funciones con la diferencia de restar al stock final antes #que sumarlo #pantalla inicial a=false while a==false $mensaje.titulo puts"**Obciones** 1.COMPRAS 2.VENTAS 3.IMPRESION DE STOCK " _p_ini = STDIN.gets.to_i if(_p_ini>0)||(_p_ini <4) case _p_ini when 1 then compras_modulo() when 2 then ventas_modulo when 3 then $cal.imprimir_stock end else a=false end end

#La palabra reservada case es igual al de JAVA #que selecciona a partir de un valor el resultado #que deseamos obtener, en este caso invoca a los #mdulos caso contrario repite el proceso hasta #que sea vlida alguna seleccin

CLASE mensajes.rb class Mensajes def initialize puts " puts " end def ventas puts" end def compras puts" end def titulo puts" end def supervisor puts" end end

**FERRETERIA Y DEPOSITO**" **CONTROL DE STOCK**"

**MODULO VENTAS**"

**MODULO COMPRAS**"

**CONTROL STOCK **"

**MODULO SUPERVISOR **"

#como vemos esta clase realiza un trabajo simple, la de mostrar en pantalla mensajes #gracias a las funciones ventas, compras. class Calculos def initialize @ladrillo=100 @cemento=100 @cal=100 @teja=100 @tejuelon=100 end

#Las variables de las clases son definidas anteponiendo @ #y como cualquier otra variable de Ruby ya no se declara el tipo al #que corresponde Ruby asume su clase.

def compra (produc , cantidad ) case produc when 'ladrillo' then @ladrillo = (@ladrillo + cantidad) when 'cemento' then @cemento = (@cemento + cantidad) when 'cal' then @cal = (@cal + cantidad) when 'teja' then @teja = (@teja + cantidad) when 'tejuelon' then @tejuelon = (@tejuelon + cantidad) end end #Funcin de compra suma al produc seleccionado la cantidad #que recibe como parmetro.

def venta (produc , cantidad ) case produc

when 'ladrillo' then @ladrillo = (@ladrillo - cantidad) when 'cemento' then @cemento = (@cemento - cantidad) when 'cal' then @cal = (@cal - cantidad) when 'teja' then @teja = (@teja - cantidad) when 'tejuelon' then @tejuelon = (@tejuelon - cantidad) end end #Funcin de venta resta al produc seleccionado la cantidad #que recibe como parmetro. def imprimir_stock impresion={ ' Ladrillos ' => @ladrillo, ' Cementos ' => @cemento, ' Cal ' => @cal, ' Tejas ' => @teja, ' Tejuelones ' => @tejuelon } puts impresion end #Con esta funcin creamos un vector con los nombres de los productos y l #enviamos los valores como parmetros para la impresin. End class Validacions

def initialize @numero=0 @letras="" end def val_num (numero) x=200 if numero.class == x.class return true

#con esta funcin validamos que el valor recibido #sea numrico, respondiendo con true o false en #caso contrario

else

return false end end def val_letras (letras) if letras.class == "String"

#con esta funcin validamos que el valor recibido #sea string, respondiendo con true o false en caso #contrario

return true else return false end end def val_mer (merca) case (merca) when 'ladrillo' then return true when 'cemento' then return true when 'cal' then return true when 'teja' then return true when 'tejuelon' then return true else return false end end end

#esta funcion, luego de validar que el producto #obtenido por pantalla sea string, controla que #este dentro del listado de productos para la #compra de venta posterior.

Вам также может понравиться