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
Download

Lista de Compras