Introdução à Programação de Computadores Aula 13 – Tabelas em Python

Slides:



Advertisements
Apresentações semelhantes
IFTO ESTRUTURA DE DADOS AULA 05 Prof. Manoel Campos da Silva Filho
Advertisements

Python: Recursão Claudio Esperança.
Programação em Java Prof. Maurício Braga
Programação em Java Prof. Maurício Braga
Programação de Computadores
UNIVERSIDADE FEDERAL DE UBERLÂNDIA ENGENHARIA CIVIL INTRODUÇÃO À ALGORITMOS Professora: Fabíola Gonçalves.
03/08/2011 Professor Leomir J. Borba- –
Ludwig Krippahl, 2007 Programação para as Ciências Experimentais 2006/7 Teórica 5.
Ciclos, Vectores e Gráficos Simulação da Queda de Corpos II
Introdução à Programação
Análise de regressão linear simples: abordagem matricial
1 Complexidade de Algoritmos Complexidade de pior caso Complexidade de melhor caso de uso bem menos freqüente em algumas situações específicas Complexidade.
Adaptado de material da profa. Maria Aparecida Livi
MATRIZES Prof. Marlon.
Linguagem PHP Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Instrutor: Nilo Menezes
Comandos condicionais
Apresentação da linguagem Python
Listas Encadeadas.
Estrutura de decisão e repetição em JAVA
Revisão do conceito de matrizes
Progressão Aritmética (PA) Professor : Eduardo Jatobá
Campus de Caraguatatuba
Listas e algoritmos (em Scratch)
MATEMÁTICA UNIDADE 2 Conteúdo: Matrizes Duração: 10 40’ 04/04/13
Prof. Natalia Castro Fernandes Mestrado em Telecomunicações – UFF 2º semestre/2012.
Introdução à Programação de Computadores
Semana 03: Comandos de desvio de fluxo. Expressões lógicas.
PROGRAMAÇÃO I UNIDADE 1.
Aula prática 6 Vetores e Matrizes
Prof. Natalia Castro Fernandes Engenharia de Telecomunicações – UFF 2º semestre/2012.
MATRIZES.
Introdução à Programação de Computadores
Introdução à Programação de Computadores
UNIVERSIDADE FEDERAL DE UBERLÂNDIA ENGENHARIA CIVIL INTRODUÇÃO À ALGORITMOS Professora: Fabíola Gonçalves.
Estrutura de dados, pseudocódigo
FTIN Formação Técnica em Informática
Universidade Federal de Alagoas – UFAL Centro de Tecnologia – CTEC
ORDENAÇÃO POR CONTAGEM
Aula prática 6 Vetores e Matrizes
Produto Vetorial SLIDE 06.
Semana 03 Comandos de desvio de fluxo. Expressões lógicas.
Revisão do conceito de matrizes
Determinantes Conceito Representação Propriedades
Progressão Geométrica Matrizes Questão nº01  Na P.G., a posição do termo é...
7 Arrays.
FTIN FORMAÇÃO TÉCNICA EM INFORMÁTICA Módulo de Programação Prof. Flávio Dantas.
Introdução à Programação de Computadores
Introdução à Programação de Computadores
Introdução à Programação de Computadores Aula 08 – Variáveis em Python
Vetores Imagine que você tem que receber o nome e a nota de 50 alunos de uma escola, e depois listar o nome de cada um e a média final de cada aluno e.
Introdução à Programação de Computadores
Instituto Federal de Santa Catarina
Estruturas de Dados Aula 9: Listas (parte 1)
Fundamentos de Programação
Vetores e Matrizes Ameliara Freire
Linguagem e Ambiente Scratch
CALENDÁRIO SEXY Ele & Ela. CALENDÁRIO SEXY Ele & Ela.
Vetor Prof. Guilherme Baião S. Silva Adaptações:
Rio Verde - Goiás - Brasil
Circuitos Combinacionais Exercícios 2 POSCOMP e ENADE
BCC /01 Aula Teórica 09 Funções Material Didático Proposto. 1 BCC701 – Programação de Computadores I Universidade Federal de Ouro Preto Departamento.
Campus de Caraguatatuba
Programação I Aula 12 (Arrays Bidimensionais)
THOBER CORADI DETOFENO, MSC. Aula 10
Contagem Sequencial do Estoque
Turma: Professor: Página: Ambiente virtual: IEC037 Introdução à Programação de Computadores Aula 05 – Estruturas Condicionais.
Algoritmos e Estruturas de Dados I – Estruturas de Dados
Arrays Outline 7.1 Introdução 7.2 Arrays 7.3 Declarando e Criando Arrays 7.4 Exemplos usando arrays 7.5 Ordenando arrays 7.6 Procurando em.
V ETORES E M ATRIZES Disciplina: Informática Aplicada Professor: Modesto Chaves.
Transcrição da apresentação:

Introdução à Programação de Computadores Aula 13 – Tabelas em Python IEC037 Introdução à Programação de Computadores Aula 13 – Tabelas em Python Turma: Professor: Sala: E-mail: Página: Ambiente virtual:

Resolução de Problemas Algorítmicos Início 1 Identificar o problema 2 Definir as entradas e as saídas Decompor 3 Projetar o algoritmo Refinar passo a passo Converter o algoritmo em declarações da linguagem de programação 4 Caminho longo com 1 obstáculo. Objetivo: Introduzir variável de controle “PROX_CASA” e apresentar o comando “SE” Testar o programa resultante 5 Fim

Conteúdo O que é uma Tabela em Python? Como acessar elementos da Tabela? Entrada de valores Problemas envolvendo Tabelas

Conteúdo O que é uma Tabela em Python? Como acessar elementos da Tabela? Entrada de valores Problemas envolvendo Tabelas

Dados bidimensionais Algumas aplicações demandam que os dados sejam organizados em um formato de tabela bidimensional: Temperatura medida em diferentes localidades e em diversos momentos. Tempo de disparo de um projétil e as respectivas posições x e y no espaço.

Tabelas Arranjos de dados organizados em linhas e colunas são chamados de matrizes, ou tabelas no Python. Python não tem uma estrutura específica para criar tabelas. Por isso, utilizamos uma lista de listas para criar uma estrutura de linhas e colunas.

Como criar uma tabela? Seja o quadro de medalhas dos sete primeiros colocados nas Olimpíadas de 2012. quadro = [ [46, 29, 29], [38, 27, 23], [29, 17, 19], [24, 26, 32], [13, 8, 7], [11, 19, 14], [11, 11, 12] ] Ouro Prata Bronze EUA 46 29 China 38 27 23 Grã-Bretanha 17 19 Rússia 24 26 32 Coreia do Sul 13 08 07 Alemanha 11 14 França 12

Como criar uma tabela? Tabelas são organizadas em linhas. Uma tabela é criada como uma lista de linhas de um arranjo tabular. quadro = [ [46, 29, 29], [38, 27, 23], [29, 17, 19], [24, 26, 32], [13, 8, 7], [11, 19, 14], [11, 11, 12] ] Linha 090

Quais as dimensões de uma tabela? Número de linhas (comprimento da tabela): Número de colunas (comprimento de uma das linhas): NLIN = len(quadro) NCOL = len(quadro[0]) 091

Conteúdo O que é uma Tabela em Python? Como acessar elementos da Tabela? Entrada de valores Problemas envolvendo Tabelas

Como acessar elementos da Tabela? Indique o índice da linha e o índice da coluna, cada um entre colchetes, e nessa ordem. quadro[3][1] Índices das colunas Índices das linhas x = quadro[3][1] 092

Computando o total de uma linha Qual o total de medalhas de um país i? [0] [2] linha [i]

Computando o total de uma linha :: Script Qual o total de medalhas da Rússia (linha 3)? # Constantes (facilitam manutencao) PAISES = len(quadro) MEDALHAS = len(quadro[0]) total = 0 # Processa a j-esima coluna na linha 3 for j in range(MEDALHAS): total = total + quadro[3][j] print(total) 093

Computando o total de uma coluna Qual o total de medalhas do tipo j entre os sete países? coluna [j] [0] [PAISES - 1]

Computando o total de uma coluna :: Script Qual o total de medalhas de ouro entre os sete primeiros colocados? # Constantes (facilitam manutencao) PAISES = len(quadro) MEDALHAS = len(quadro[0]) ouro = 0 # Processa a i-esima linha na coluna 0 for i in range(PAISES): ouro = ouro + quadro[i][0] print(ouro) 094

Seleção de elementos de uma linha Seleção de todos os elementos da linha i: Seleção dos n primeiros elementos da linha i: Seleção dos n últimos elementos da linha i: x = quadro[i][:] x = quadro[i][:n] x = quadro[i][-n:] 095

Seleção de elementos de uma coluna Tabelas são listas de linhas. Por isso, os elementos de uma coluna em específico devem ser manipulados um a um, através de um laço. Portanto, nenhum dos comandos abaixo terão o efeito desejado para a coluna j: x = quadro[:][j] x = quadro[:n][j] x = quadro[-n:][j]

Localizando elementos adjacentes Alguns programas que trabalham com tabelas precisam de localizar os elementos adjacentes a outro elemento [i][j]. Cuidado para não obter índices negativos

Conteúdo O que é uma Tabela em Python? Como acessar elementos da Tabela? Entrada de valores Problemas envolvendo Tabelas

Entrada de valores :: Via teclado mat = [] # Cria uma tabela vazia NLIN = int(input("Qual o no. de linhas? ")) NCOL = int(input("Qual o no. de colunas? ")) for i in range(NLIN): mat.append([]) # Anexa nova linha vazia for j in range(NCOL): valor = int(input("Valor do elemento: ")) mat[i].append(valor) # Imprime tabela print(mat)

Entrada de valores :: Valores aleatórios from random import * mat = [] # Cria uma tabela vazia NLIN = int(input("Qual o no. de linhas? ")) NCOL = int(input("Qual o no. de colunas? ")) for i in range(NLIN): mat.append([]) # Anexa nova linha vazia for j in range(NCOL): mat[i].append(randint(0, 99)) # Imprime tabela print(mat)

Entrada de valores Se a matriz for quadrada, como os códigos podem ser simplificados? Dica: NCOL = NLIN

Conteúdo O que é uma Tabela em Python? Como acessar elementos da Tabela? Entrada de valores Problemas envolvendo Tabelas

Problema 01 Determinar: 1 2 3 4 5 -5 -3 -4 -1 -2 M[3][0] M[4][2] 1 2 3 4 5 -5 -3 -4 -1 -2 Determinar: M[3][0] M[4][2] M[1][3] M[5][M[0][2]] M[M[3][1]][1] M[4][(M[1][2]+M[3][0])] -3 1 -2 -5 -4

Problema 02 Escreva um script que imprima uma matriz quadrada de dimensão N contendo: 1 nos elementos abaixo da diagonal principal 0 na diagonal principal -1 nos elementos acima da diagonal principal

Problema 02 :: Projetar algoritmo coluna [j] [0][0] [0][1] [0][2] [0][3] [1][0] [1][1] [1][2] [1][3] [2][0] [2][1] [2][2] [2][3] [3][0] [3][1] [3][2] [3][3] linha [i] Diagonal principal: i = j Elementos acima: i < j Elementos abaixo: i > j

Problema 02 :: Script – Criação da matriz N = int(input("Dimensao da matriz:")) # Criacao da matriz quadrada mat = [] for i in range(N): linha = [0] * N mat.append(linha)

Problema 02 :: Script – Preenchimento da matriz for i in range(N): for j in range(N): # Verifica se termo estah ABAIXO if (i > j): mat[i][j] = 1 # Verifica se termo estah ACIMA elif (i < j): mat[i][j] = -1 # Elementos da diagonal principal else: mat[i][j] = 0 096

Problema 03 Criar uma matriz quadrada 4×4 na qual cada elemento é a soma dos índices de sua posição na matriz.

Problema 03 :: Script N = 4 mat = [] for i in range(N): # Anexar nova linha i mat.append([]) for j in range(N): # Anexar elemento na linha i mat[i].append(i+j) 097

Problema 04 :: Matriz transposta Achar a transposta de uma matriz M×N fornecida.

Problema 04 :: Projetar algoritmo [0][0] [0][1] [0][2] [1][0] [1][1] [1][2] [2][0] [2][1] [2][2] [3][0] [3][1] [3][2] Matriz a t[i][j] = a[j][i] Matriz t a[0][0] a[1][0] a[2][0] a[3][0] a[0][1] a[1][1] a[2][1] a[3][1] a[0][2] a[1][2] a[2][2] a[3][2]

Problema 04 :: Script # Constantes NLIN = len(a) NCOL = len(a[0]) t = [] # Matriz transposta vazia for i in range(NCOL): # Anexar nova linha i t.append([]) for j in range(NLIN): # Anexar elemento a[j][i] na linha i t[i].append(a[j][i]) 098

Problema 05 :: Determinante Criar uma matriz 2×2 com números inteiros aleatórios no intervalo [-5;+5]. Qual o determinante da matriz obtida?

Problema 05 :: Script # Constantes NLIN = 2 NCOL = 2 # Cria matriz 2x2 com valores aleatorios em [-5;5] from random import * mat = [] for i in range(NLIN): mat.append([]) for j in range(NCOL): # Anexar no. aleatorio na linha i mat[i].append(randint(-5,5)) det = mat[0][0]*mat[1][1] - mat[0][1]*mat[1][0] 099

Problema 06 Oito estudantes responderam a um teste de dez perguntas. As respostas são armazenadas em uma tabela. Cada linha da figura abaixo registra respostas de um aluno para as questões.

Problema 06 O gabarito é armazenado em uma lista de uma dimensão. Considerando que cada questão vale um ponto, qual a nota de cada aluno?

Problema 06 :: Projetar algoritmo Definir tabela de respostas (resp) Definir lista de gabarito (gab) Definir uma lista de notas (notas), com número de elementos igual à da tabela resp Para cada aluno (linha) na tabela resp: Para cada resposta (coluna) na tabela resp: Comparar resposta do aluno com gabarito Se forem iguais, incrementar posição correspondente na lista notas Caso contrário, não faz nada Imprimir nota do aluno

Problema 06 :: Script – definições # Respostas dos alunos 'as questoes resp = [ ['A', 'B', 'A', 'C', 'C', 'D', 'E', 'E', 'A', 'D'], ['D', 'B', 'A', 'B', 'C', 'A', 'E', 'E', 'A', 'D'], ['E', 'D', 'D', 'A', 'C', 'B', 'E', 'E', 'A', 'D'], ['C', 'B', 'A', 'E', 'D', 'C', 'E', 'E', 'A', 'D'], ['A', 'B', 'D', 'C', 'C', 'D', 'E', 'E', 'A', 'D'], ['B', 'B', 'E', 'C', 'C', 'D', 'E', 'E', 'A', 'D'], ['B', 'B', 'A', 'C', 'C', 'D', 'E', 'E', 'A', 'D'], ['E', 'B', 'E', 'C', 'C', 'D', 'E', 'E', 'A', 'D']] # Gabarito das questoes gab = ['D', 'B', 'D', 'C', 'C', 'D', 'A', 'E', 'A', 'D']

Problema 06 :: Script – cálculo da nota # Constantes NALUNOS = len(resp) # No. de alunos NQUEST = len(resp[0]) # No. de questoes # Lista das notas de cada aluno notas = [0] * NALUNOS # Percorre cada linha (aluno) for i in range(NALUNOS): # Pontua um aluno i, verificando cada questao for j in range(NQUEST): if (resp[i][j] == gab[j]): notas[i] = notas[i] + 1 print("Nota do aluno", i, ":", notas[i]) 100

Referências bibliográficas Menezes, Nilo Ney Coutinho (2010). Introdução à Programação com Python. Editora Novatec. HETLAND, Magnus Lie (2008). Beginning Python: From Novice to Professional. Springer eBooks, 2ª edição. Disponível em: http://dx.doi.org/10.1007/978-1-4302-0634-7. Horstmann, Cay & Necaise, Rance D. (2013). Python for Everyone. John Wiley & Sons. Liang, Y. D. (2013). Introduction to Programming Using Python. Pearson

Dúvidas?