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

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s