EXERCÍCIO Imagine uma aplicação para celular (ou tablet) que gerencie a lista de compras (veja a figura abaixo). A aplicação divide os itens da lista de compras em 3 categorias: produtos de higiene, de limpeza e de alimentação. Como mostrado na figura, cada categoria é representada por uma aba. Quando uma aba é selecionada, seu título fica em fundo azul e os itens da categoria são mostrados. Além disso, um item da aba corrente pode ser selecionado. Neste caso, o item fica marcado com fundo azul. Sob a lista existem 3 botões: “+”, “-” e “FIM”. O primeiro botão provoca a inserção de um novo item antes do item selecionado. O segundo, remove o item selecionado. O terceiro botão encerra a aplicação. Abaixo, é mostrado um algoritmo para gerenciar a lista de compras. No início é criada uma lista de strings e são pré-inseridos alguns itens. Tente entender o algoritmo e escreva os trechos de código faltantes. Inclua procedimentos que julgar necessário. Algoritmo Supermercado procedimento Exibe(L: Lista<<String>>; inic, fim: Posic) /* IMPLEMENTAR */ fim procedimento inicio var lstCmpr: Lista<<String>>; var pHg, pLi, pAl,pCurr: Posic; var fim: booleano; var valor,aba_corrente: String; /* construção da lista */ lstCmpr := createLista(); pHg := insert(lstCmpr,"higiene"); pLi := insert(lstCmpr,"limpeza"); pAl := insert(lstCmpr,"alimentacao"); pCurr := insertAfter(lstCmpr,pHg,"sabonete"); pCurr := insertAfter(lstCmpr,pCurr,"xampu"); pCurr := insertAfter(lstCmpr,pCurr,"barbeador"); pCurr := insertAfter(lstCmpr,pCurr,"desodorante"); pCurr := insertAfter(lstCmpr,pLi,"sabão em pó"); pCurr := insertAfter(lstCmpr,pCurr,"água sanitaria"); pCurr := insertAfter(lstCmpr,pCurr,"desinfetante"); pCurr := insertAfter(lstCmpr,pAl,"brócolis"); pCurr := insertAfter(lstCmpr,pCurr,"biscoito"); pCurr := insertAfter(lstCmpr,pCurr,"cerveja"); /* desenhe um esquema da lista construída */ fim := falso; enquanto !fim faça quando Selecionar Aba "higiene" Exibe(lstCmpr,pHg,pLi); aba_corrente := "higiene"; fim quando quando Selecionar Aba "limpeza" Exibe(lstCmpr,pLi,pAl) aba_corrente := "limpeza"; fim quando quando Selecionar Aba "alimentacao" Exibe(lstCmpr,pAl,NULL); aba_corrente := "alimentacao"; fim quando quando Selecionar Linha valor := getText(); /* texto do item selecionado */ /* IMPLEMENTAR O RESTO */ fim quando quando Selecionar Botão "-" /* IMPLEMENTAR */ fim quando quando Selecionar o Botão "+" /* IMPLEMENTAR */ fim quando quando Selecionar Botão "FIM" fim := verdadeiro; fim quando fim enquanto fim algoritmo