Search This Blog

Showing posts with label pilas o stacks. Show all posts
Showing posts with label pilas o stacks. Show all posts

Saturday, 1 June 2013

Pilas y matrices en programación (explicación y código)

matriz pila

Trabajo de litdev (Scotland) Moderador Small Basic Forum
http://social.technet.microsoft.com/wiki/contents/articles/15066.small-basic-stack-basics.aspx
Queremos crear una matriz con todos los archivos de imagen jpg de un directorio y todos los subdirectorios, buscando todas las carpetas de forma recursiva.
Primero creamos un array (matriz) vacío para almacenar las rutas de los archivos de imagen y el número de archivos en el mismo (cero para empezar). También establecemos la carpeta de empezar a buscar y agregarlo a una pila que llamamos “folders” (carpetas). En este ejemplo, la ubicación de la carpeta de inicio es la carpeta donde está guardado el archivo Small Basic fuente (Program.Directory
images = “”
imageCount = 0
startFolder = Program.Directory
Stack.PushValue(“folders”,startFolder)
Ahora vamos a seguir trabajando mientras nosotros tenemos carpetas todavía para comprobar, o la pila todavía tiene algunas carpetas en el mismo. Nosotros usamos un bucle while para esto. Dentro del bucle, mientras que nosotros queremos procesar la última carpeta añadida, por lo que se metió primero
While Stack.GetCount(“folders”) > 0
currentFolder = Stack.PopValue(“folders”)
‘ More work to do here
EndWhile
Ahora queremos procesar esta carpeta, primero tenemos todas las subcarpetas, de la carpeta de trabajo actual y empujar a estos en la pila para su posterior comprobación de que las while repite.
folders = File.GetDirectories(currentFolder)
For i = 1 To Array.GetItemCount(folders)
Stack.PushValue(“folders”,folders[i])
EndFor
Después de haber añadido las sub-carpetas para comprobar más tarde como se desenrolla la pila, nos encontramos con todos los archivos en la carpeta de trabajo actual y añadir otras que terminan en “. Jpg” a la lista de Array (matriz). Comprobamos el archivo por primera conversión a minúsculas, con el fin de incluir todas las variantes de caja de jpg a JPG etc
files = File.GetFiles(currentFolder)
For i = 1 To Array.GetItemCount(files)
fileName = files[i]
fileNameLower = Text.ConvertToLowerCase(fileName)
If (Text.EndsWith(fileNameLower,”.jpg”)) Then
imageCount = imageCount+1
images[imageCount] = fileName
EndIf
EndFor

Por último, imprimir los resultados, y por ahora es todo.

images = “”
imageCount = 0
startFolder = Program.Directory
Stack.PushValue(“folders”,startFolder)
While Stack.GetCount(“folders”) > 0
currentFolder = Stack.PopValue(“folders”)
folders = File.GetDirectories(currentFolder)
For i = 1 To Array.GetItemCount(folders)
Stack.PushValue(“folders”,folders[i])
EndFor
files = File.GetFiles(currentFolder)
For i = 1 To Array.GetItemCount(files)
fileName = files[i]
fileNameLower = Text.ConvertToLowerCase(fileName)
If (Text.EndsWith(fileNameLower,”.jpg”)) Then
imageCount = imageCount+1
images[imageCount] = fileName
EndIf
EndFor
EndWhile
For i = 1 To Array.GetItemCount(images)
TextWindow.WriteLine(images[i])
EndFor

Deja un comentario








    Sunday, 19 May 2013

    Small Basic : operaciones del objeto Stack (código)


    stack

    El objeto Stack en Small Basic se usa para almacenar datos al igual que si apilara platos. Este objeto sigue el principio: primero en entrar, primero en salir.
    Por ejemplo, si mira hacia abajo una pila de platos, sólo se ve el plato superior. Para ver el siguiente plato, tendrá que quitar el plato superior. No se puede tomar un plato de la mitad de la pila hasta que se hayan quitado todos los platos que tiene encima.
    El objeto Stack tiene tres operaciones:
    • PushValue (empujar valor)
    • PopValue (quitar valor)
    • GetCount (obtener cuenta)
    La operación PushValue es igual que agregar un nuevo plato encima de la pila de platos. Con la ayuda de esta operación, puede agregar un valor en la pila especificada
    La operación PopValue es como recoger un plato de la parte superior de la pila. Use esta operación para obtener un valor de una pila especificada.
    La operación GetCount proporciona el número total de platos en una pila. Use esta operación para determinar la cantidad de elementos en una pila específica.
    La operación PushValue no devuelve nada.
    La operación PopValue devuelve el valor de la pila.
    La operación GetCount devuelve el número de elementos en una pila especificada.
    En este ejemplo, se usa la operación PushValue operation para empujar 50 platos dentro de un contenedor vacío. Después, usando la operación PopValue, se toman 8 platos de la pila. Ahora, usamos la operación GetCount para obtener el número total de platos en el contenedor. Además muestra el valor del plato superior.
    1. TextWindow.Title = “Platos”
    2. contenedor =”vacío”
    3. For i = 0 To 50
    4. Stack.PushValue(contenedor , ” plato número ” + i)
    5. EndFor
    6. TextWindow.WriteLine(“El número de platos en el contenedor es ” + Stack.GetCount(contenedor))
    7. For i = 0 To 8
    8. Stack.PopValue(contenedor)
    9. EndFor
    10. TextWindow.WriteLine(“Después de tomar 8 platos, el número total de platos es ” + Stack.GetCount(contenedor))
    11. TextWindow.WriteLine(“El plato superior en el contenedor es ” + Stack.PopValue(contenedor))

    Deja un comentario