Programação com Listas Introdução Considera-se de lista, uma estrutura de dados constituída por uma sequencia ordenada e finita de itens (os quais podem, inclusive ser de outras listas, ditas sublistas). As listas podem ser modificadas, com a inserção, exclusão e reordenamento dos itens. Ex: lista homogénea para um dado tipo de base A; A* = A1, A2, A3, A4 …An Elementos de uma lista Tipo [A]; Lista de elementos do tipo A Valores []; Lista vazia; [A0,…,An]; Lista não vazia Construtores [] : 1 -> Lista; A * Lista A -> Lista A; [A0,…,A20] = A0 : (A1 : (… : (An : []) …)) ++; head; last; tail; init; nul; length; !!; repeat; break; take; drop; any; all; elem; notElem; sum; maximun; minimun Operadores Operadores de listas De entre vários operadores vejamos a definição dos seguintes: ++, dá-nos a concatenação de duas listas. Ex: [1,2,3]++[4,5,6] = [1,2,3,4,5,6] init, dá-nos todos elementos da lista com excepção do ultimo. Ex: init [1,2,3] = [1,2,] Operadores de listas last, dá-nos apenas o ultimo elemento da lista. Ex: last [1,2,3,4] = [4] tail, dá-nos todos elementos da lista menos o primeiro (consideram-se a cauda da lista). Ex: tail [1,2,3,4,5,6] = [2,3,4,5,6] Operadores de listas head, dá-nos apenas o primeiro elemento da lista (considera-se a cabeça da lista). Ex: [1,2,3,4,5,6] = [1] drop, exclui alguns elementos da lista de acordo com o número de elementos que forem seleccionados. Ex: drop 2 [1,2,3,4,5,6] = [3,4,5,6] Exercicios 1. Diga qual é a função dos operadores que se seguem: a) Lenght; b) !!; c) break; d) take; e) repeat; f) sum. 2. Com base nas seguintes listas resolva: [1,2,3,4]; 5,6,7,8] a) Faça a união das listas acima; b) Faça a remoção do primeiro elemento da primeira lista; c) Faça a remoção de todos elementos com excepção do primeiro na segunda lista.