Computação 1 - Python Aula 9 - Teórica Laços Aninhados e Matrizes. João Carlos, Carla Delgado, Ana Luisa Duboc 1/ 15

Documentos relacionados
Computação 1 - Python Aula 11 - Teórica: Matrizes. João Carlos, Carla Delgado, Ana Luisa Duboc 1/ 9

Computação 1 - Python Aula 9 - Teórica: Interferindo no fluxo de repetição: Break e Continue Laços Aninhados

Computação 1 - Python Aula 12 - Teórica: Interação com o usuário e programa principal. João Carlos, Carla Delgado, Ana Luisa Duboc 1/ 25

Computação 1 - Python Aula 11 - Teórica. programa principal. João Carlos, Carla Delgado, Ana Luisa Duboc 1/ 29

Computação 1 - Python Aula 7 - Teórica Estrutura de Repetição com Teste de Parada: while. João Carlos, Carla Delgado, Ana Luisa Duboc 1/ 18

Computação 1 - Python Aula 10 - Teórica: Estrutura de Dados - Dicionário. João Carlos, Carla Delgado, Ana Luisa Duboc 1/ 18

Computação I - Python Aula 1 - Teórica: Manipulação de Strings, Tuplas e Listas

Computação I - Python

Computação 1 - Python Aula 2 - Teórica. João Carlos, Carla Delgado, Ana Luisa Duboc 1/ 39

Aula 10: Manipulação do fluxo de laços

Computação I - Python Aula 4 - Teórica: Variáveis e Atribuição, Strings

Computação 1 - Python Aula 4 - Teórica Variáveis e Atribuição, Strings. João Carlos, Carla Delgado, Ana Luisa Duboc 1/ 30

Computação 1 - Python Aula 8 - Teórica: Estrutura de Repetição : for 1/ 10

Computação 1 - Python Aula 7 - Teórica: Estrutura de Repetição com teste de parada: while 1/ 23

Computação 1 - Python Aula 3 - Teórica: Tipos de dados, Strings, Estrutura Condicional 1/ 28

Computação 1. Aula 10 Teórica professor: Leonardo Carvalho

Algoritmos e Programação

Aula 16: Laços aninhados e desvios

Lista de Exercícios 5

DURAÇÃO DA PROVA: 2 horas

Processamento da Informação Teoria. Listas e Matrizes

1ª Lista de Exercícios

Aula 10 Oficina de Programação Matrizes. Profa. Elaine Faria UFU

Aula de hoje. Comandos. Comandos simples. Comandos. Comandos de controle. Bloco de comandos. SCC Introdução à Programação para Engenharias

Estruturas de dados funcionais

LISTA DE EXERCÍCIOS 2

Aula 9 Oficina de Programação Matrizes. Profa. Elaine Faria UFU

Computação Eletrônica. Vetores e Matrizes. Prof: Luciano Barbosa. CIn.ufpe.br

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO MARANHÃO - CAMPUS CAXIAS. Aluno (s): 01 ATIVIDADE. Revisão de Conteúdo

Computação eletrônica: Estruturas de repetição

Computação 1. Aula 8 Teórica professor: Leonardo Carvalho

Linguagem Python. Processamento Estatístico da Linguagem Natural. Barra invertida em strings. Strings. Aspas triplas. Operações com Strings

Processamento da Informação Teoria. Laços aninhados

AULA 2: INTRODUÇÃO A PYTHON. Luís Feliphe Silva Costa

Faculdade Anglo-Americano Curso de Ciência da Computação Linguagem de Programação. Lista de Exercícios 1

Computação 1 - Python Aula 1 - Prática: Primeiros Passos - Função 1/ 19

Estruturas de Repetição WHILE e DO- WHILE

Computação I - Python Aula 1 - Prática: Primeiros Passos- Função

Universidade Federal de Ouro Preto -UFOP Departamento de Computação - DECOM Programação de Computadores I BCC701. Aula Teórica 08.

Exercícios Repetição

Variáveis e instruções de repetição

Python - Comandos de Repetição

Algoritmos e Programação

Programação de Computadores 1 Lista 2. Prof. Álvaro A. F. de Souza DECSI - ICEA - UFOP

Exercícios V1 = V2 = V1 = V2 =

Laços de repetição for, while, do-while

Aula 25: Funções com Arrays

Aula 20: Matrizes (Parte 2)

Aula 11: Laços e exercícios

Estruturas de Repetição

Oficina de Introdução de Programação usando Linguagem Python Prof. Ms. Perini

Introdução a Linguagem C (Parte I) UFPA Sistemas de Informação. Roberto Araujo 2013

1. Faça uma função que recebe por parâmetro o raio de uma esfera e calcula o seu volume.

algoritmo "exercício vetor" var vet:vetor [1..12] de inteiro i:inteiro inicio para i de 1 ate 12 faca escreva ("Entre com vetor[",i,"]: ") leia

Linguagem C ESTRUTURA DE CONTROLE

Universidade Federal de Uberlândia Faculdade de Computação. Linguagem C: estruturas de repetição While / Do While / For

Aula 11: Modularização

CURSO BÁSICO DE PROGRAMAÇÃO AULA 15. Revisão Vetores e Matrizes Trabalho

Aula 10: Introdução a Vetores e Matrizes

Universidade Federal de Ouro Preto UFOP. Instituto de Ciências Exatas e Biológicas ICEB. Departamento de Computação DECOM

Laboratório 3 Comandos de repetição while, do-while e for

Processamento da Informação Teoria. Coleções: Listas

Universidade Federal de Uberlândia Faculdade de Computação. Estruturas de repetição

Aula 8 Oficina de Programação Vetores. Profa. Elaine Faria UFU

PROGRAMAÇÃO de COMPUTADORES: LINGUAGEM FORTRAN 90/95

Fundamentos da Programação

Universidade Federal de Ouro Preto - UFOP Departamento de Computação - DECOM Programação de Computadores I - BCC701

Exercícios Aula Prática XIV

1 Da aula teórica ao Java

Algoritmos e Estrutura de Dados Aula 02 Listas em Python

Universidade Federal de Uberlândia - UFU Faculdade de Computação - FACOM Lista de exercícios de programação em linguagem Python

CI208 - Programação de Computadores. Aula 24: Arrays. Prof. MSc. Diego Roberto Antunes

Programação: Vetores

Introdução à Computação - aulas 13 e 14-

BAC004 Informática Teórica T2 Professora: Fabiana Costa Guedes Lista 05 Vetores e Matrizes Vetores

Aula 15: Repetição (Parte 3)

Linguagem Python. Inteligência Artificial. Características de Python. Importando módulos. Módulos. Usando Python no modo interativo

INFORMÁTICA APLICADA AULA 05 LINGUAGEM DE PROGRAMAÇÃO C++

Lista 2 TP060. Exercícios Vetores

Aula 07 Introdução à Programação Subprogramas

Lista de Exercícios 02

Exercícios: Vetores e Matrizes

DURAÇÃO DA PROVA: 2 horas

LINGUAGEM C++ Prof. Bruno Gomes ESTRUTURAS DE DADOS HOMOGÊNEAS PARTE II - MATRIZES. Currais Novos, 2011

Listas e Tuplas. Vanessa Braganholo

PCI- Matrizes. Profa. Mercedes Gonzales Márquez

MAC2166 Introdução à Computação

Algoritmos e Programação

Aula 14: Repetição (Parte 2)

LP II Estrutura de Dados

Questão 1: O histograma deve ser: [0, 1, 4, 2, 0, 3, 0,, 0, 2] Exemplo: Para a matriz

Linguagem de Programação Java Terceira aula. Prof. Rogério Albuquerque de Almeida

Universidade Federal do ABC BCM Processamento da Informação Prática Prova 2 Primeiro Quadrimestre de 2018

Variáveis e Entrada de Dados Marco André Lopes Mendes marcoandre.googlepages.

Algoritmos e Programação de Computadores Profs: Ronaldo Castro de Oliveira Anilton Joaquim da Silva

MATRIZES - PARTE Definição e Manipulação de Matrizes AULA 21

Aula de hoje. Python para disciplinas básicas. Computação científica. Introdução. Álgebra Linear. Álgebra linear

Transcrição:

Computação 1 - Python Aula 9 - Teórica Laços Aninhados e Matrizes 1/ 15

Repetições Aninhadas Podemos combinar mais de uma estrutura de repetição de forma a obter resultados interessantes. Exemplo: Gerar as tabuadas de multiplicação de 1 a 10. 2/ 15

Repetições Aninhadas Podemos combinar mais de uma estrutura de repetição de forma a obter resultados interessantes. Exemplo: Gerar as tabuadas de multiplicação de 1 a 10. # função tabuadas que gera as tabuadas # de multiplicação de 1 a 10 # sem parâmetro list def tabuadas(): pivo = 1 lista = [] while pivo <= 10: tabuada = [] numero = 1 while numero <= 10: tabuada += [str(pivo) + * + str(numero) + = + str(pivo*numero)] numero += 1 pivo += 1 list.append(lista,tabuada) return lista 2/ 15

Repetições Aninhadas Podemos combinar mais de uma estrutura de repetição de forma a obter resultados interessantes. Exemplo: Gerar as tabuadas de multiplicação de 1 a 10. # função tabuadas que gera as tabuadas # de multiplicação de 1 a 10 # sem parâmetro list def tabuadas(): pivo = 1 lista = [] while pivo <= 10: tabuada = [] numero = 1 while numero <= 10: tabuada += [str(pivo) + * + str(numero) + = + str(pivo*numero)] numero += 1 pivo += 1 list.append(lista,tabuada) return lista Exercício: Reescreva a função tabuadas usando for. 2/ 15

Podemos usar listas para armazenar e manipular matrizes. A matriz ( ) 2 3 4 0 7 5 é representada pela lista [ [2,-3,4], [0, 7,5] ] MATRIZ [linha][coluna] MATRIZ [0] [0] = 2 MATRIZ [1] [0] = 0 MATRIZ [0] [1] = -3 MATRIZ [1] [1] = 7 MATRIZ [0] [2] = 4 MATRIZ [1] [2] = 5 3/ 15

Faça uma função que construa uma matriz 4x3 com valores iguais a zero. Retorne a matriz. 4/ 15

Faça uma função que construa uma matriz 4x3 com valores iguais a zero. Retorne a matriz. # Função que constrói uma # matriz 4x3 de 0 s # sem entrada list def constroimatriz1(): linha = 3 * [0] matriz = 4 * [linha] return matriz 4/ 15

Faça uma função que construa uma matriz 4x3 com valores iguais a zero. Retorne a matriz. # Função que constrói uma # matriz 4x3 de 0 s # sem entrada list def constroimatriz1(): linha = 3 * [0] matriz = 4 * [linha] return matriz >>> matriz = constroimatriz1() >>> matriz 4/ 15

Faça uma função que construa uma matriz 4x3 com valores iguais a zero. Retorne a matriz. # Função que constrói uma # matriz 4x3 de 0 s # sem entrada list def constroimatriz1(): linha = 3 * [0] matriz = 4 * [linha] return matriz >>> matriz = constroimatriz1() >>> matriz [[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]] >>> matriz[1][1]= ola >>> matriz 4/ 15

Faça uma função que construa uma matriz 4x3 com valores iguais a zero. Retorne a matriz. # Função que constrói uma # matriz 4x3 de 0 s # sem entrada list def constroimatriz1(): linha = 3 * [0] matriz = 4 * [linha] return matriz >>> matriz = constroimatriz1() >>> matriz [[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]] >>> matriz[1][1]= ola >>> matriz [[0, ola, 0], [0, ola, 0], [0, ola, 0], [0, ola, 0]] 4/ 15

>>> matriz = constroimatriz1() >>> matriz [[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]] >>> matriz[1][1]= ola >>> matriz [[0, ola, 0], [0, ola, 0], [0, ola, 0], [0, ola, 0]] Por que isto ocorre? 5/ 15

>>> matriz = constroimatriz1() >>> matriz [[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]] >>> matriz[1][1]= ola >>> matriz [[0, ola, 0], [0, ola, 0], [0, ola, 0], [0, ola, 0]] Por que isto ocorre? A matriz tem quatro referencias para os mesmos elementos que aparecem na variável linha! :-( 5/ 15

Solução Alternativa # Função que constrói uma # matriz 4x3 de 0 s # sem entrada list def constroimatriz2(): linha = 3 * [0] matriz = 4 * [linha[:]] # alteramos esta linha return matriz 6/ 15

Solução Alternativa # Função que constrói uma # matriz 4x3 de 0 s # sem entrada list def constroimatriz2(): linha = 3 * [0] matriz = 4 * [linha[:]] # alteramos esta linha return matriz >>> matriz = constroimatriz2() >>> matriz 6/ 15

Solução Alternativa # Função que constrói uma # matriz 4x3 de 0 s # sem entrada list def constroimatriz2(): linha = 3 * [0] matriz = 4 * [linha[:]] # alteramos esta linha return matriz >>> matriz = constroimatriz2() >>> matriz [[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]] >>> matriz[1][1]= ola >>> matriz 6/ 15

Solução Alternativa # Função que constrói uma # matriz 4x3 de 0 s # sem entrada list def constroimatriz2(): linha = 3 * [0] matriz = 4 * [linha[:]] # alteramos esta linha return matriz >>> matriz = constroimatriz2() >>> matriz [[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]] >>> matriz[1][1]= ola >>> matriz [[0, ola, 0], [0, ola, 0], [0, ola, 0], [0, ola, 0]] 6/ 15

Por que o problema persiste? 7/ 15

Por que o problema persiste? Como o fatiamento gera uma nova lista, então a variável linha não é mais modificada quando modificamos a matriz. Porém a matriz continua referenciando quatro vezes a mesma lista de elementos (que foi criada com o fatiamento) e não quatro lista diferentes. 7/ 15

Faça uma função que construa uma matriz 4x3 com valores iguais a zero. Retorne a matriz. # Função que constrói uma matriz 4x3 de 0 s # sem entrada list def constroimatriz3(): matriz = [] for i in range(4): linha = [] for j in range(3): list.append(linha,0) matriz = matriz + [linha] return matriz # Função que constrói uma matriz 4x3 de 0 s # sem entrada list def constroimatriz4(): matriz = [] for i in range(4): list.append(matriz,[0]*3) return matriz ATENÇÃO: estas funções são equivalentes e funcionam corretamente. 8/ 15

Escreva uma função para multiplicar os elementos da diagonal principal de uma matriz por um valor k. Sua função deve receber a matriz e k, e retornar a matriz resultante. 9/ 15

Escreva uma função para multiplicar os elementos da diagonal principal de uma matriz por um valor k. Sua função deve receber a matriz e k, e retornar a matriz resultante. # Função que multiplica os elementos da # diagonal principal por k # list, int list def multidiagonal(matriz,k): for i in range(len(matriz)): matriz[i][i] *= k return matriz 9/ 15

Faça uma função que dadas duas matrizes A e B de mesmo tamanho, retorne a matriz C que é a matriz soma de A e B. 10/ 15

Faça uma função que dadas duas matrizes A e B de mesmo tamanho, retorne a matriz C que é a matriz soma de A e B. # Função que dadas duas matrizes A e B # retorna a matriz C = A + B # list, list list def somamatrizes(a,b): C = [ ] for i in range(len(a)): linha = [ ] for j in range(len(a[0])): list.append(linha,a[i][j] + B[i][j]) list.append(c,linha) return C 10/ 15

Faça uma função para retornar a linha de maior soma de uma matriz de inteiros dada como parâmetro. A soma também deve ser retornada. 11/ 15

Faça uma função para retornar a linha de maior soma de uma matriz de inteiros dada como parâmetro. A soma também deve ser retornada. # Função que retorna a linha de maior soma # de uma matriz de inteiros. A soma tb é # retornada # list list,int def maiorlinha1(matriz): somas = [ ] for i in range(len(matriz)): soma = 0 for j in range(len(matriz[0])): soma += matriz[i][j] list.append(somas,soma) maior = max(somas) pos = list.index(somas,maior) return matriz[pos],maior # Função que retorna a linha de maior soma # de uma matriz de inteiros. A soma tb é # retornada # list list,int def maiorlinha2(matriz): somas = [ ] for i in range(len(matriz)): soma = sum(matriz[i]) list.append(somas,soma) maior = max(somas) pos = list.index(somas,maior) return matriz[pos],maior 11/ 15

Para calcular o coeficiente de rendimento de um aluno (CR), precisamos fazer a média ponderada considerando a nota obtida e o número de créditos da disciplina. Assim, se o aluno cursou somente as disciplinas computação 1 e cálculo 1, respectivamente com 4 e 6 créditos, obtendo grau 7.0 na primeira e 8.0 na segunda, seu CR no período será de 4 7.0+6 8.0 10 = 7.6. Faça uma função que calcula o CR de um aluno. O parâmetro de entrada é uma lista, cujos elementos são listas de tamanho 2, onde o primeiro elemento corresponde ao número de créditos (tipo inteiro) de uma disciplina cursada e o segundo representa a nota (tipo float) obtida pelo aluno nesta disciplina. ([[4, 7.0],[6, 8.0]]) 12/ 15

Para calcular o coeficiente de rendimento de um aluno (CR), precisamos fazer a média ponderada considerando a nota obtida e o número de créditos da disciplina. Assim, se o aluno cursou somente as disciplinas computação 1 e cálculo 1, respectivamente com 4 e 6 créditos, obtendo grau 7.0 na primeira e 8.0 na segunda, seu CR no período será de 4 7.0+6 8.0 10 = 7.6. Faça uma função que calcula o CR de um aluno. O parâmetro de entrada é uma lista, cujos elementos são listas de tamanho 2, onde o primeiro elemento corresponde ao número de créditos (tipo inteiro) de uma disciplina cursada e o segundo representa a nota (tipo float) obtida pelo aluno nesta disciplina. ([[4, 7.0],[6, 8.0]]) # Função que calcula o CR de um aluno # list float def cr(notas): soma = 0 peso = 0 for disciplina in notas: soma = soma + disciplina[0]*disciplina[1] peso = peso + disciplina[0] CR = soma/peso return CR 12/ 15

Faça uma função calcula o CR de um conjunto de alunos. Entrada: lista formada por tuplas, onde cada tupla é formada pelo nome do aluno e uma lista contendo os créditos e as notas de cada disciplina. Exemplo: [( joao,[[4,7.0],[6,8.0]]),( carla,[[4,5.5],[5,6.0],[1,10]])] Saída: lista contendo tuplas formadas pelo nome do aluno e seu CR. Exemplo: [( joao, 7.6), ( carla, 6.2)] Dica: use a função anterior para calcula o CR de um aluno. 13/ 15

Faça uma função calcula o CR de um conjunto de alunos. Entrada: lista formada por tuplas, onde cada tupla é formada pelo nome do aluno e uma lista contendo os créditos e as notas de cada disciplina. Exemplo: [( joao,[[4,7.0],[6,8.0]]),( carla,[[4,5.5],[5,6.0],[1,10]])] Saída: lista contendo tuplas formadas pelo nome do aluno e seu CR. Exemplo: [( joao, 7.6), ( carla, 6.2)] Dica: use a função anterior para calcula o CR de um aluno. # Função que calcula o CR de um conjunto de alunos # list list def cralunos(listaalunosnotas): resposta = [ ] for aluno in listaalunosnotas: list.append(resposta,(aluno[0],cr(aluno[1]))) return resposta 13/ 15

Autores João C. P. da Silva Lattes Carla Delgado Ana Luisa Duboc Lattes Lattes Colaboradores Fabio Mascarenhas Lattes Anamaria Martins Moreira Leonardo de Oliveira Carvalho Charles Figueiredo de Barros Lattes Lattes Lattes Fabrício Firmino de Faria Lattes 14/ 15

Computação 1 - Python Aula 9 - Teórica Laços Aninhados e Matrizes 15/ 15