• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
05 listas
 

05 listas

on

  • 427 views

 

Statistics

Views

Total Views
427
Views on SlideShare
427
Embed Views
0

Actions

Likes
0
Downloads
2
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    05 listas 05 listas Presentation Transcript

    • Python:Python:listaslistasRodrigo de Toledo(adaptação do original do prof. Claudio Esperança)Estruturas de dados• Maneira de organizar dados de maneira a facilitar seu acesso• Algumas formas são clássicas:– Listas– Arrays (vetores e matrizes)– Tuplas (registros)– Árvores• Linguagens freqüentemente possuem primitivas para construçãodessas estruturas de dados• Outras estruturas de dados mais complexas podem ser construídascombinando as estruturas de dados clássicasListas em Python• São variáveis que podem conter simultaneamente mais de umvalor, inclusive de diferentes tipos– lista = [1, a, Rodrigo, 3.1415]• Na verdade, pode ser vista como uma implementação tanto delistas como de arraysAlém de acesso seqüencial, suportam também acesso direto através– Além de acesso seqüencial, suportam também acesso direto atravésde índices• Listas são variedades de seqüências assim como strings e portantotêm APIs semelhantes– Podem ser indexadas e fatiadas– Podem ser concatenadas (+) e repetidasListas em Python• Entretanto, há diferenças importantes entre listase strings– Seqüência genérica X de seqüência de caracteres– Elementos de listas podem ser alteradosindividualmente mas os de strings, nãoindividualmente mas os de strings, não• Listas constituem o tipo de agregação de dadosmais versátil e comum da linguagem Python– Podem ser usadas para implementar estruturas dedados mais complexas como matrizes e árvores, porexemplo
    • Listas: constantes e índices• Uma constante do tipo lista é escrita entrecolchetes com os elementos separados porvírgula:[] # lista vazia[1,2] # lista com 2 elementos• Os elementos de uma lista podem ser dequalquer tipo, inclusive listas. Ex.:lista = [1, a, Rodrigo, 3.1415]• Os elementos de uma lista podem ser acessadospor índices como strings– O primeiro elemento tem índice 0– O último elemento tem índice -1Listas: constantes e índices>>> lista = [1, a, Rodrigo, 3.1415]>>> lista [0]1>>> lista [2]Rodrigo>>> lista [3]3.1415>>> lista [-1]3.1415>>> lista [0] = 2>>> lista[2, a, Rodrigo, 3.1415]Listas: Concatenação e Repetição• O operador + pode ser usado paraconcatenação e o operador * para repetição>>> lista = [0]*4>>> lista>>> lista[0, 0, 0, 0]>>> lista = lista + [1]*3>>> lista[0, 0, 0, 0, 1, 1, 1]Inicializando listas• Não é possível atribuir a uma posiçãoinexistente de uma lista>>> vetor = []>>> vetor [0] = 1Traceback (most recent call last):File "<pyshell#21>", line 1, in -toplevel-vetor [0] = 1vetor [0] = 1IndexError: list assignment index out of range• Se uma lista vai ser usada como um array, istoé, vai conter um número predeterminado deelementos, é conveniente iniciá-la>>> vetor = [0]*10>>> vetor [0] = 3>>> vetor[3, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    • Exemplo• Faça um programa que leia 15 números e os imprima e ordeminversa a qual foram lidos.lista=[0]*15i=0i=0while (i<15):lista[i]=input()i+=1i=1while (i<=15):print lista[-i]i+=1Exercícios1. Faça um programa que leia as notas dos 50 alunos de uma turma e diga ao final quais notasficaram acima da média da turma.2. (vetor contador):Faça um programa que leia diversos votos para 100 candidatos (votos entre 0 e 99) e ao finaldiga qual foi o candidato vencedor (considere que não há empate). Os votos terminam comum número inválido (negativo ou maior que 99). Obs: Altere o programa de modo aconsiderar a possibilidade de empates.3. Escreva um programa que leia uma lista de x inteiros seguida de uma lista de y caracteres,criando uma terceira lista que intercale os elementos das duas listas lidas– obs1: pergunte ao usuário x e y no início– obs1: pergunte ao usuário x e y no início– obs2: a lista que for maior deverá ser repetida sequencialmente ao final– Exemplo: x=3, y=5, l1 = [1,2,3] e l2 = [a,b,c,d,e],o programa deve computar a lista [1,a,2,b,3,c,d,e]4. DESAFIO:Faça um programa que leia as informações dos 70 produtos de uma farmácia (código, preçoe quantidade em estoque). Em seguida permita ao usuário entrar com código e quantidadeque deseja comprar do produto até que seja entrado o código –1. Para cada código entradodiminua a quantidade do estoque (caso tenha o suficiente) se o código for válido, senãoimprima mensagem de erro. Ao final da compra, diga o total a ser pago!Sobre o desafio...• Para realizar o desafio anterior, entender osconceitos de:– um único índice para diversos vetores– busca do índice– busca do índice• No futuro será mais fácil tratar esse desafio:– index()– tuplasOutros exercícios1. Faça um programa que leia um conjunto de notas (nota - tipointeiro) de 20 alunos (uma nota por aluno) e imprima quantasnotas iguais a 0, iguais a 1, iguais a 2, ... e iguais a 10.2. Faça um programa que leia 100 valores reais da entrada eidentifique o valor mais próximo da média. Exemplo supondoquatro valores:quatro valores:2.5 7.5 10.0 4.0média = 6.0 (não deve ser impresso)valor mais próximo da média = 7.5 (resultado a ser impresso)3. Faça um programa que conte a quantidade de cada uma das letras(sem levar em conta as maiúsculas e minúsculas) digitadas em umtexto (vetor de 26 posições).
    • Lista de tamanho indefinidoLista de tamanho indefenido• Às vezes não sabemos em tempo deprogramação qual deve ser o tamanho da lista(exemplo: “leia 50 notas” ≠ “leia notas até umanegativa”).• Nesse caso a lista deve ir crescendo (ou• Nesse caso a lista deve ir crescendo (oudiminuindo) de acordo com a necessidade.• Precisaremos de:– len: para saber tamanho do vetor– del: para retirar um elemento da lista– append: para acrescentarDeletando elementos• O operador del pode ser usado para removerelementos de uma lista• Ex.:>>> lista[11, 22, 33, Rodrigo][11, 22, 33, Rodrigo]>>> del lista [2]>>> lista[11, 22, Rodrigo]>>> del lista [2]>>> lista[11, 22]Len, min e max• len (lista) retorna o número de elementos de lista• min (lista) e max (lista) retornam o menor/maiorelemento de lista• Ex.:>>> lista = [55, 1, 22, 99, 3, 4]>>> lista = [55, 1, 22, 99, 3, 4]>>> min (lista)1>>> len (lista)6>>> max (lista)99>>> max ([a, b, c])c
    • min e max• Na verdade, min e max podem ser usadostambém com vários argumentos ao invés de umalista• Ex.:Ex.:>>> min (1,2,3,4)1>>> max (3,4,5)5>>> max ([],[1],[a])[a]Método APPEND• append(elemento)– Acrescenta o elemento no fim da lista– Observe que a operação altera a lista, e nãosimplesmente retorna uma lista modificada– Ex.:>>> lista = [1,2]>>> lista.append(3)>>> lista[1, 2, 3]Exemplo• Leia uma sequência de números INTEIROS positivos terminada por umnúmero NEGATIVO, guardando-os num vetor. Remova do vetor osnúmeros PARES. Ao final, imprima o vetor!lista = []num = input()while (num>=0):lista.append(num)lista.append(num)num=input()i=0while i<len(lista):if lista[i]%2==0:del lista[i]else:i+=1print listaExercícios1. Faça o programa do jogo: “Acerte os números”.– Inicialmente, leia diversos números inteiros entrados pelo dono da casa de aposta, guardandonuma lista.• Termina com número negativo– Em seguida o apostador poderá entrar com vários números para verificar o seu acerto.• Caso acerte um dos números da lista, informe do acerto e diga quantos números faltam acertar.• O programa termina caso o apostador erre 10 vezes ou até ele acertar todos os números.2. Altere o programa anterior para guardar os números sem que haja repetição, ou seja, caso o donoda casa de apostas tenha entrado com um número que já exista, ignore-o.3. DESAFIO:Faça um programa que mantenha o estoque do hortifruti Leguminosas. Apresente um menu comas seguintes opções:as seguintes opções:(a) inserir novos produtos(b) acrescentar no estoque(c) baixar do estoque(d) listar produtos com estoque baixo(e) listar estoque de todos os produtos(f) sair!– Para cada produto inserido, ler nome, código e quantidade inicial– Para acrescentar ou baixar do estoque, ler código e quantidade– Quando der baixa no estoque, verificar se não está negativo, nesse caso, avisar ao usuário queserão baixados apenas a quantidade atual no estoque (zerando esse produto)– “Estoque baixo” significa que há apenas 5 ou menos produtos
    • Fatias...Listas: fatias (slices)• A notação de fatias também pode ser usada,inclusive para atribuição:>>> lista = [1, a, 2+3j, [ab, CD]]>>> lista [1:][a, (2+3j), [ab, CD]]>>> lista [:1]Lista de lista,veremos isso posteriormente!>>> lista [:1][1]>>> lista [1:2][a]>>> lista [0:-1][1, a, (2+3j)]Listas: atribuição a fatias(e inserção)• A atribuição a uma fatia requer que o valor atribuído seja umaseqüência (uma lista ou uma string, por exemplo)• A atribuição substitui os elementos da fatia pelos da seqüência(INSERÇÃO)>>> lista = [1, y, [ab, CD]]>>> lista [1:1] = [z]>>> lista[1, z, y, [ab, CD]]>>> lista [1:3] = [[x]]>>> lista[1, [x], [ab, CD]]>>> lista [1:-1]= [2,3,4]>>> lista[1, 2, 3, 4, [ab, CD]]>>> lista [:2] = xyz>>> lista[x, y, z, 3, 4, [ab, CD]]Inserindo lista em lista• Também é possível inserir uma variável listana outra:>>> var1 = [a, b, c, d, x]>>> var2 = [6,7]>>> var2 = [6,7]>>> var1[2:2] = var2>>> var1[a, b, 6, 7, c, d, x]
    • Incrementos em Fatias• É possível usar um terceiro número na notaçãode fatias designando o incremento– Default é 1 , ou seja, toma os elementos de um em umdo menor para o maior índice– Pode-se usar qualquer número inteiro diferente de 0– Pode-se usar qualquer número inteiro diferente de 0• a[0:10:2] retorna uma lista com os 10 primeiros elementosde a tomados de 2 em 2 (5 elementos, no máximo)• a[5:0:-1] retorna uma lista com os 5 primeiros elementosde a tomados da direita para a esquerda• Obs.: Esta notação só existe nas versões dePython a partir da 2.3Incrementos em Fatias• Exemplo>>> a = [a, 2, 3, d, x]>>> a [:3:2][a, 3][a, 3]>>> a [::-1][x, d, 3, 2, a]>>> a [3:0:-2][d, 2]Incrementos em Fatias• Se um incremento de fatia é diferente de 1,uma atribuição à fatia deve ter o mesmonúmero de elementos:>>> l = [1,2,3,4,5]>>> l [0::2] = [x,y,z]>>> l [0::2] = [x,y,z]>>> l[x, 2, y, 4, z]>>> l [0::2] = [6,7]Traceback (most recent call last):File "<pyshell#17>", line 1, in -toplevel-l [0::2] = [6,7]ValueError: attempt to assign sequence of size 2to extended slice of size 3Alguns métodos da classe list• sort(cmp=None, key=None, reverse=False)– Ordena a lista– Os argumentos são opcionais. Por default, a lista éordenada crescentemente– Ex.:Ex.:>>> lista = [9,8,7,1,4,2]>>> lista.sort()>>> lista[1, 2, 4, 7, 8, 9]
    • Alguns métodos da classe list• sort(cmp=None, key=None, reverse=False)– É possível obter a ordem inversa, passando True para oargumento reverse– Ex.:>>> lista = [9,8,7,1,4,2]>>> lista.sort(reverse=True)>>> lista>>> lista[9, 8, 7, 4, 2, 1]– OBS.: A notação acima permite passar um argumentosem especificar os anteriores, mas poderíamos terescrito:>>> lista = [9,8,7,1,4,2]>>> lista.sort(None,None,True)>>> lista[9, 8, 7, 4, 2, 1]Exercício• Em uma universidade a fila do bandejão funciona da seguinteforma:– As filas começam a se formar pela manhã. Até às 11h, horário deabertura do restaurante, alunos podem guardar lugar para no máximo3 outros colegas, depois disso a fila é congelada.• Faça um programa que:– Leia uma fila de alunos (matrícula) até que seja entrada uma matrícula– Leia uma fila de alunos (matrícula) até que seja entrada uma matrículanegativa (às 11h).– Imprima a fila inicial.– Para cada aluno, pergunte para quantas pessoas ele está guardandolugar na fila e se ele irá continuar na fila (para esta pergunta eledeverá responder ‘S’ ou ‘N’). Leia a matrícula dos alunos a sereminseridos e remova aqueles que vão sair da fila.– Imprima a fila final.– Use uma única fila!!!forinrangerangeOperador “in”• Permite saber se um elemento pertence a umalista• Serve também para strings• Ex.:>>> lista = [1, a, bc]>>> 1 in lista>>> 1 in listaTrue>>> 2 in listaFalse>>> b in listaFalse>>> b in lista[2]True>>> bc in abcdTrue
    • A função range• Retorna uma progressão aritmética de inteiros numalista• Forma geral: range (início, parada, incremento)– início (opcional) é o primeiro valor a ser gerado (default: 0)– parada é o limite da progressão: a progressão termina noúltimo valor antes de paradaúltimo valor antes de parada– incremento (opcional) é o passo da progressão (default:1)• Ex.:>>> range(3)[0, 1, 2]>>> range(2,5,2)[2, 4]>>> range(5,2,-2)[5, 3]>>> range (2,5,-2)[]>>> range (5,2,2)[]Comando for• Assim como while, o comando for é um comandode repetição (loop)• Permite iterar sobre os elementos de uma lista• Forma geral: for var in lista : comandos– Os comandos são repetidos para cada valor de lista– Durante a repetição, var possui o valor corrente da lista– Durante a repetição, var possui o valor corrente da lista• Uma grande utilidade da função range é construir alista de iteração• Ex.:>>>for i in range(1,7): print i,1 2 3 4 5 6Quando usar for ou while?• Duas situações distintas que precisam de comando de repetição:– Quando se deseja repetir um bloco de comandos uma quantidade de vezespré-determinada (antes de chegar ao bloco). USO DO FOR É IDEAL!– Quando não se sabe a quantidade de vezes antes de entrar no bloco decomandos, havendo apenas uma condição para o fim do loop. USO DO WHILEÉ IDEAL!• Na verdade existe uma terceira situação:• Na verdade existe uma terceira situação:– Quando há pelo menos duas condições para término da repetição, umadeterminada e outra indeterminada• Exemplo:– Faça a leitura das notas de no máximo 30 alunos de uma turma (a entradatermina se for digitada uma nota negativa ou se já foram entradas as 30notas). Ao final diga a média da turma.• Rever exercícios, propor o uso de for...Exemplo• Condição pre-determinada:– Leia a nota de 30 alunos de uma turma• Condição indeterminada:• Combinados:• Combinados:
    • Exercícios• Faça um programa que leia código de produto,preço e quantidade vendida de 1881 produtose informe os 10 produtos (código e preço)responsáveis pelo maior faturamento.• Modifique o programa anterior para que aleitura termine com código inválido (códigoválido varia de 10000 até 99999, inclusive osextremos). Ou seja, não necessariamentehaverá 1881 produtos.Alguns métodos da classe list• count(elemento)– Retorna quantas vezes o elemento aparece na lista– Ex.:>>> [1,2,3,1,2,3,4].count(1)2• extend(lista2)• extend(lista2)– Acrescenta os elementos de lista2 ao final da lista– OBS.: Altera a lista ao invés de retornar a lista alterada– Ex.:>>> lista=[1,2]>>> lista.extend([3,4])>>> lista[1, 2, 3, 4]Alguns métodos da classe list• index(elemento)– Retorna o índice da primeira ocorrência de elemento na lista– Um erro ocorre se elemento não consta da lista– Ex.:>>> lista = [9,8,33,12]>>> lista.index(33)22>>> lista.index(7)Traceback (most recent call last):File "<pyshell#3>", line 1, in -toplevel-lista.index(7)ValueError: list.index(x): x not in listOBS: use in para ter certeza que o elemento existe na lista!Alguns métodos da classe list• insert(indice, elemento)– insere elemento na lista na posição indicada por índice– Ex.:>>> lista = [0,1,2,3]>>> lista.insert(1,dois)>>> lista[0, dois, 1, 2, 3]– Como o extend, altera a lista ao invés de retornar a– Como o extend, altera a lista ao invés de retornar alista• O valor retornado é None!– Atribuições a fatias servem para a mesma finalidademas são menos legíveis>>> lista = [0,1,2,3]>>> lista [1:1] = [dois]>>> lista[0, dois, 1, 2, 3]
    • Alguns métodos da classe list• pop(índice)– Remove da lista o elemento na posição índice e o retorna– Se índice não for mencionado, é assumido o último– Ex.:>>> lista = [1,2,3,4]>>> lista.pop()44>>> lista[1, 2, 3]>>> lista.pop(1)2>>> lista[1, 3]Alguns métodos da classe list• remove(elemento)– Remove da lista o primeiro elemento igual a elemento– Se não existe tal elemento, um erro é gerado– Ex.:>>> lista = [oi, alo, ola]>>> lista.remove(alo)>>> lista[oi, ola][oi, ola]>>> lista.remove(oba)Traceback (most recent call last):File "<pyshell#24>", line 1, in -toplevel-lista.remove(oba)ValueError: list.remove(x): x not in listOBS: use in para ter certeza que o elemento existe na lista!Alguns métodos da classe list• reverse()– Inverte a ordem dos elementos da lista– Ex.:>>> lista=[1,2,3]>>> lista.reverse()>>> lista>>> lista[3, 2, 1]Exercício• Faça um programa para cadastrar os alunos da turma de Python. O programa deverá apresentar um menude opções ao usuário contendo:a. inclusãob. exclusãoc. listagem gerald. listagem acima notae. listar alunof. trocar de notag. fimg. fim• Regras:– Para cadastrar um aluno, deverá ser realizada a leitura de sua matrícula e sua nota.– Para excluir um aluno, apenas sua matrícula deverá ser pedida.– A listagem geral deverá listar todos os alunos matriculados.– A listagem por nota deverá listar todos os alunos acima de uma determinada nota.– Listar um aluno significa mostrar a nota de um aluno.– Para trocar a nota de um aluno, é necessário apenas a sua matricula e sua nova nota.• Observações:– A listagem deverá ser mantida sempre ordenada (dica: insira ordenado durante a leitura).– GRANDE DESAFIO: crie uma opção a mais que seria listar alunos por ordem de notas. Crie um vetor auxiliar contendoos índices dos vetores alunos e notas, para que não seja necessário reordenar os vetores a cada listagem de notas ealunos.
    • Exercício UPA• Faça um programa para controlar o atendimento da emergência de uma UPA (UnidadePython de Atendimentos).– As seguintes regras de precedência devem ser respeitadas toda vez que há um médicodisponível:• Todo caso urgente tem precedência máxima e serão atendidos em ordem de chegada.• Caso não haja ninguém na fila de urgência:– Pessoas acima de 65 anos devem ser atendidas, a prioridade deve ser por idade (o mais velho primeiro).– Crianças de até 8 anos por ordem de chegada. Mas atenção, enquanto houver mais de 5 crianças, entãoelas têm precedência em relação aos idosos (para evitar tumulto).– Demais pessoas devem ser atendidas em ordem de chegada.– O seu programa deve manter quatro filas (urgentes, idosos, crianças e demais). As lista– O seu programa deve manter quatro filas (urgentes, idosos, crianças e demais). As listaguardam a identidade dos pacientes (valor inteiro). No caso dos idosos, deve-se usaruma lista auxiliar com as idades.– O programa deverá manter o seguinte menu:• (a) Registro de paciente:– Ler identidade, idade e urgência (‘s’ ou ‘n’).– Encaminhar o paciente para a fila correta.• (b) Proximo paciente:– Baseado nas regras acima, dizer quem é o próximo (mostrar identidade) e retirá-lo da fila• (c) Troca de plantão:– Imprimir as quatro filas, total de atendimentos e sair do programaExercício nomes• Faça um programa que leia uma série de nomes completos (termina quando forinserido um nome vazio). Em seguida, o programa deverá dizer para cada primeironome diferente, quantas vezes ele apareceu.– Ex:• Entrada:– OTAVIO HENRIQUE FLAESCHEN OLIVEIRA– PAULO EDUARDO ANDRADE RODRIGUES DA SILVA– PAULO FELIPE NUNES DE LIMA– OTAVIO SECKLER MACHADO– MATHEUS SOARES DA SILVA– NICOLAS D AURIA– NICOLAS D AURIA– OCTAVIO LACERDA DE ALMEIDA– PAULA ALVES BESSA– PAULO RICARDO MORAIS SHOR– MATHEUS GALLUZZI MALAFAIA• Saída:– MATHEUS 2– NICOLAS 1– OCTAVIO 1– OTAVIO 2– PAULA 1– PAULO 3Matrizes• Exemplo: Calcule as médias das turmas de uma escola e, ao final, exiba asnotas dos alunos da turma com a maior média.• Para representar os dados do problema descrito acima poderíamos usartantos vetores quanto fosse o número de turmas existentes no colégio.• Porém, seria ideal uma estrutura de dados que armazenasse todas asnotas de todas as turmas, e que pudesse ser referenciada pelo conjunto,ou pelo conjunto das notas de uma turma, ou por cada notaExemplo:notas[4][3]=7.5;ou pelo conjunto das notas de uma turma, ou por cada notaindividualmente:– Notas0 5,0 3,0 8,0 .......... 9,51 7,3 2,2 5,6 .......... 8,02 5,7 1,8 6,4 ........... 5,93 2,4 4,9 6,0 .......... 3,84 10,0 9,5 3,0 .......... 4,00 1 2 ......... 49Matrizes• Listas podem ser usadas para guardar matrizes• Uma matriz é um tipo de dado usado para representar umacerta quantidade de valores homogêneos de naturezabidimensional (na verdade, podem ser multidimensionais).Podemos imaginar uma matriz como sendo uma lista, ondecada elemento dessa lista é também uma lista.Exemplo:notas[4][3]=7.5;cada elemento dessa lista é também uma lista.• Logo, para referenciarmos um elemento em uma matrizprecisamos de dois índices: o primeiro para selecionar a lista(linha) e o segundo para selecionar o elemento da listapreviamente selecionada (coluna).• Exemplo:– notas[4][3]=7.5
    • Matrizes• Percorrendo matrizes:– São necessárias duas estruturas de repetição aninhadas (while ou for)– Por exemplo, a estrutura de repetição mais externa percorrerá as linhas damatriz, enquanto a estrutura de repetição mais interna percorrerá oselementos (colunas) da linha corrente.– Exemplo:notas = [[5,6,7],[9,8,7],[10,9,8]]for i in range(3):for i in range(3):for j in range (3):print notas[i][j]• Inicializando uma matriz:– Por exemplo, podemos criar uma matriz-identidade de 3x3 com o código:m = []for i in range(3):m.append([0]*3)m[i][i]=1• .Exercício• Escreva um programa para computar o produto de duas matrizes m1 e m2.Seu programa deve começar lendo os tamanhos das matrizes e verificandose são de tamanhos compatíveis para multiplicação. Em seguida faça aleitura preechendo os valores das matrizes m1 e m2. Finalmente faça ocálculo matemático, imprimindo a matriz final no formato tradicional(linhas e colunas alinhadas, use /t).Exercícios Matriz• Uma pista de Kart permite 10 voltas para cada um dos 6 corredores. Faça umprograma que leia todos os tempos em segundos e guarde em uma matriz 6 x10. Ao final diga:– De quem foi a melhor volta da prova e em que volta– Classificação final em ordem (1º o campeão)– Qual foi o piloto mais regular?– Qual foi a volta com a média mais rápida?• Uma editora quer saber o relacionamento entre seus autores. Faça umprograma que:– Dado o total de livros da editora (lido no início), leia para cada livro da editora, onome dos autores.• Cada livro pode ter mais de um autor• Cada livro pode ter mais de um autor• Para facilitar, basta guardar o primeiro nome• Lista terminada por linha vazia• Não precisa ler o nome do livro– Mantenha uma lista de autores e quantidade de livros escritos.– Mantenha uma matriz de inteiros com a relação de autorias. Observe que essamatriz é simétrica e sua diagonal é igual a lista do item anterior.– Ao final, imprima:• Quais autores escreveram mais livros juntos• Dado um autor, com quais autores ele nunca escreveuExercício Matriz (e funções)• Faça um programa que gere um jogo do tipo "caça-palavras". O programa deveráinicializar uma matriz 6x6 com letras minúsculas em ordem alfabética por coluna(tabela 1) (caso não haja mais letras minúsculas para preencher a matriz, deve-sevoltar à letra ‘a’). A seguir o programa deverá ler o conjunto de informações paramontar o caça-palavras composto por:– Uma palavra de até 6 caracteres– A linha inicial– A coluna inicial– O sentido (1=p/ cima; 2=p/ baixo; 3=diagonal p/Nordeste; 4=diagonal p/Suldeste; 5=p/– O sentido (1=p/ cima; 2=p/ baixo; 3=diagonal p/Nordeste; 4=diagonal p/Suldeste; 5=p/esquerda; 6=p/direita, 7=diagonal p/Noroeste, 8= diagonal p/Sudoeste)• A leitura das palavras termina com uma palavra vazia. Para cada palavra lida, oprograma deverá colocá-la na matriz de acordo com o sentido. Caso a palavra nãocaiba na posição e direção definida, esta deverá ser ignorada e uma mensagem de errodeverá ser emitida. (crie uma função para cada sentido)• Exemplo:
    • Exercícios• Escreva um programa para computar o triângulode Pascal até a linha n, onde n é um valor inteiropositivo lido da linha de comando– Lembre-se que o elemento na i-ésima linha e j-ésimacoluna do triângulo de Pascal contém o número decombinações de i elementos j a jcombinações de i elementos j a j– O triângulo deve ser posto numa lista onde o i-ésimoelemento é uma lista com a i-ésima linha do triângulo– Ex:Quantas linhas? 7[[1], [1, 1], [1, 2, 1], [1, 3, 3, 1], [1, 4, 6,4, 1], [1, 5, 10, 10, 5, 1], [1, 6, 15, 20, 15,6, 1]]