Semanas anteriores
Semana de 04-08/06/2018:
- Programação orientada a objetos
- Objetos: coleção de informações (atributos) e funções para manipular essas informações (métodos)
- Classes: coleção de objetos que compartilham atributos e métodos (um exemplo de classe corresponde aos tipos de dados, como int/float/bool/str/list, que definem como os valores são representados e quais operações estão definidas para os valores desse tipo)
- Métodos mágicos: são aqueles que permitem redefinir (overload) funções e operadores pré-existentes.
- __init__: construtor, cria um objeto da classe e inicializa seus atributos (chamado pela expressão nomedaclasse());
- __str__: conversão para string, substitui a função str(objeto), e determina também como o objeto é apresentado pela chamada de função print(objeto) (que realiza uma conversão implícita str(objeto));
- __add__: redefine o operador '+' (a expressão a+b equivale à chamada a.__add__(b));
- __mul__: redefine o operador '*' (a expressão a*b equivale à chamada a.__mul__(b));
- vários outros métodos mágicos existem, veja por exemplo a página Python Tutorial: Magic Methods.
- Exemplo: classe de polígonos, classe de matrizes, classe de conjuntos (ordenados, essa última ficou como lição de casa).
- Códigos: poligono.py, matriz.py, conjunto-exercicio.py
Material suplementar: Vídeos do Coursera no YouTube (vídeos 33 e 34), Aulas de Introdução à Computação em Python: Edição Interativa (Parte III: Programação orientada a objetos, exercícios com objetos), Caderno de exercícios (Exercícios com funções - parte III e exercícios complementares), Livro Interativo: Como Pensar Como um Cientista da Computação: Definindo classes.
Semana de 28/05-01/06/2018: Break
Semana de 21-25/05/2018: Revisão + P2
Semana de 14-18/05/2018:
- Arquivos: open/close, read/readline/readlines, seek/tell, flush/close
- Módulos: metáfora da caixa (que contém funções e variáveis, acessíveis como nomedomodulo.nomedoobjeto)
- Espaços de nomes e a função dir()
- Formas de acessar módulos: import modulo (mantém os espaços de nomes separados, e o acesso requer a sintaxe modulo.objeto), from modulo import objeto (traz o objeto para o espaço de nomes de quem importou, sem a necessidade de prefixar o objeto com o nome do módulo)
- Exercícios: ler/escrever imagem de/em arquivo, rotação e inversão de imagens, estruturação de códigos em módulos
- Códigos: imagem2matriz.py, meumodulo.py, copiamatriz.py, entortaimagem.py, inverteimagem.py (alguns módulos dependem de códigos da semana anterior: multiplicamatrizvetor.py, rotacionamatriz.py). Usamos também os arquivos feep.pnm e double-ferris.pnm para realizar testes.
Material suplementar: Vídeos do Coursera no YouTube (vídeos 29, 30), Aulas de Introdução à Computação em Python: Edição Interativa (Parte II: matrizes, funções com matrizes, strings e arquivos), Caderno de exercícios (Exercícios com matrizes), Livro Interativo: Como Pensar Como um Cientista da Computação: Arquivos.
Semana de 07-11/05/2018:
- Matrizes: em Python são listas de listas, dimensões: len(A) e len(A[0]), varredura por linhas, impressão tabular
- Exercícios: soma e produto de matrizes, produto matrizvetor, rotação dos elementos/posições de uma matriz
- Códigos: imprimematriz.py, somamatrizes.py, multiplicamatrizes.py (esses dois dependem do imprimematriz.py), multiplicamatrizvetor.py, rotacionamatriz.py (depende de multiplicamatrizvetor.py)
Material suplementar: Vídeos do Coursera no YouTube (vídeos 25, 26, 31 e 32), Aulas de Introdução à Computação em Python: Edição Interativa (Parte II: matrizes e funções com matrizes), Caderno de exercícios (Exercícios com matrizes).
Semana de 30/04-04/05/2018: Break
Semana de 23-27/04/2018:
- Listas: sintaxe, indexação, len(), índices fora de faixa e índices negativos, fatiamento (lista[i:j])
- Manipulação de listas (append/insert, soma=concatenação, produto por inteiro, del/remove, copy)
- Condições envolvendo listas: "item in lista", "lista1 == lista2" (testa se lista1[i] == lista2[i] para todo i)
- Referências: listas são ponteiros! "lista1 is lista2" testa se os ponteiros são iguais.
- Comando for para percorrer listas e forma geral de range (com start, stop e step)
- Strings (são como como listas estáticas, permitem acesso mas não manipulação)
- Funções específicas de strings: split, strip, count, find/replace, upper/lower, capitalize/title, center
- Exercícios: ler uma sequência de números e imprimir em ordem inversa, ler uma frase e inverter cada palavra (e a sequência de palavras), dadas duas strings encontrar a maior subsequência (substring) comum.
- Códigos: invertelista.py, invertestring.py, gcs.py
Material suplementar: Vídeos do Coursera no YouTube (vídeos 21-24, 27 e 28), Aulas de Introdução à Computação em Python: Edição Interativa (Parte 2: listas e funções com listas), Caderno de exercícios (Exercícios com vetores).
Semana de 16-20/04/2018:
- Revisão para a P1: exercícios antigos (maximizar f(x,y), resto e quociente por subtrações sucessivas, conversão de inteiros entre bases genéricas
- Código: conversãodebases.py
Semana de 09-13/04/2018:
- mais exercícios com repetições encaixadas:
- estimação do pi (pela área do círculo discretizado)
- bagagem de mão com volume ótimo
- aproximações inteiras da razão áurea
- códigos: pi.py, malaotima-v0.py, malaotima-v1.py, malaotima-v2.py, razaoaurea.py,
- Conteúdo opcional (não cai na prova): Aula sobre imagens fractais, código: imagensfractais.py
Material suplementar:
- Vídeos do Coursera: 19 e 20
- Aulas interativas: Exercícios
Semana de 2-6/4/2018:
- critério de parada para √¯: y**2 chega no intervalo [x-ε,x+ε]
- cosseno(x) a partir de aproximações pela série de Taylor:
implementação direta x implementação esperta, gráficos com plotutils, instabilidade numérica e pré-condicionamento - repetições encaixadas: tabuada, gráficos em modo texto
- códigos: fatorial.py, cosseno-v0.py, cosseno-v1.py, tabuada.py, grafico.py
Material complementar:
- Vídeos 14 a 18 do Coursera
- Aulas interativas: Mais sobre números reais, Mais funções com reais, Repetições encaixadas.
Semana de 19-23/3/2018:
- processamento de sequências lidas da entrada
- mecanismos de cômputo iterativo/incremental: soma, produto, máximo e teste de ordem ascendente
- funções: Fibonacci e √¯
- exemplos de códigos
Material complementar:
- Vídeos 10 a 13 do Coursera
- Aulas interativas: Valores e operadores booleanos e Funções
- Livro Interativo: Funções
Semana de 12-16/3/2018:
- a função input();
- comandos if...else... e while;
- funções de conversão de tipos int() e float()
- contadores e sequências
- exemplos de código
Material complementar:
- as seções Variáveis, Expressões e Comandos, Decisões e Seleção e O comando
while
do livro interativo "Como Pensar Como um Cientista da Computação"; - os vídeos "Executando programas em Python" e os vídeos 5 a 9 do coursera;
- as aulas interativas Execuções condicionais e alternativas e Classes float e str e execuções condicionais em cadeia.
Semana de 5-9/3/2018:
- Histórico da Computação;
- Expressões com operadores aritméticos (+,-,*,/,//,%,**), operadores relacionais (==,!=,>,<,>=,<=) e operadores lógicos (and,or);
- Expressões e tipos (int, float, bool e str);
- Funções print(), type() e len().
Vídeos sugeridos do Coursera no Youtube:
- O que é Ciência da Computação
- O que é Software Livre
- Primeiras linhas em Python
- Variáveis e scripts em Python
- Valores e tipos em Python
Leitura recomendada: "Como pensar como um cientista da computação: O caminho do programa"
Exercícios sugeridos para estudo individual: até antes do Exercício 2.2 de Variáveis, expressões e comandos (Aulas em Python: Edição interativa)