shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Uma pilha para ligar aquele radio velho.


From: Ivan lopes
Subject: Uma pilha para ligar aquele radio velho.
Date: Wed, 21 Jun 2006 03:23:03 -0200

Amigos este exemplo eh para mostrar que esse tal de bash
eh um cara versatil e simpatico.

$ stack.sh

#!/bin/bash

# $Id:$
# Federal University of Rio de Janeiro
# Author: Ivan carlos da Silva Lopes
# Mail: lopesivan (dot) ufrj (at) gmail (dot) com
#
# License: GPL
# Language: shell script
# File: stack.sh

# Description:
#
# + Operacoes primitivas
#   1- push(s,1) incluir item na pilha, empilhar.
#   2- pop(s) exclui item no topo da pilha e retorna o item.
#
# + Operacoes adicionais
#   1- isempty(s) verificar se a pilha encontra-se vazia.
#  2- stacktop(s)   retorna o item no topo da pilha.

# map <F5> :call CommentInLine(0, "#", "-", "#", " ")<cr>

# Global variables
declare -a STACK           # array
declare -r SIZE_STACK=5    # read only
declare -i i=0             # integer

##############################################################################
# push(s,1)                                                                  #
#----------------------------------------------------------------------------#
# Description:                                                               #
#       incluir item na pilha, empilhar.                                     #
# Input:                                                                     #
#     stack -- nome da pilha utilizada.                                      #
#     item  -- valor adicionado na cabeca da pilha.                          #
# Output:                                                                    #
#                                                                            #
# Return:                                                                    #
#                                                                            #
##############################################################################
function push()
{
  test ! $# -eq 2 && \
     echo "Usage: push stack item" >&2 && \
     exit 1

  local stack=$1
  local item=$2

  if [[ $i == $SIZE_STACK ]]
  then
     echo "Stack Overflow" >&2
     exit 1
  fi

  eval $stack[i++]=$item
}

##############################################################################
# pop(s)                                                                     #
#----------------------------------------------------------------------------#
# Description:                                                               #
#      exclui item no topo da pilha e retorna o item.                        #
# Input:                                                                     #
#     stack -- nome da pilha utilizada.                                      #
# Output:                                                                    #
#                                                                            #
# Return:                                                                    #
#     item  -- item removido da pilha.                                       #
##############################################################################
function pop()
{

  test ! $# -eq 1 && \
     echo "Usage: pop stack" >&2 && \
     exit 1

  local stack=$1

  if isempty
  then
     echo "Stack Underflow" >&2
     exit 1
  fi


  eval unset $stack[--i]

}

##############################################################################
# isempty()                                                                  #
#----------------------------------------------------------------------------#
# Description:                                                               #
#      verificar se a pilha encontra-se vazia.                               #
# Input:                                                                     #
#                                                                            #
# Output:                                                                    #
#                                                                            #
# Return:                                                                    #
#      stack_empty -- boleano referente ao estado da pilha.                  #
##############################################################################
function isempty(){

  local stack_empty=1

  if [[ $i == 0 ]]
  then
     stack_empty=0
  fi
  return $stack_empty
}


function show()
{
  test ! $# -eq 1 && \
     echo "Usage: push stack" >&2 && \
     exit 1

  local stack=$1
  eval echo [\${$stack[*]}]
}
##############################################################################
# ---------------------------------- main ---------------------------------- #
##############################################################################

push STACK 1
show STACK
push STACK 2
show STACK
push STACK 3
show STACK
push STACK 4
show STACK
push STACK 5
show STACK
pop  STACK
show STACK
pop  STACK
show STACK
pop  STACK
show STACK
pop  STACK
show STACK
pop  STACK
show STACK
pop  STACK
show STACK

exit 0 # end-of-file

--
[ ]'s
Ivan Carlos Da Silva Lopes

Engenheiro Eletronico e Computacao
UFRJ


reply via email to

[Prev in Thread] Current Thread [Next in Thread]