Acompanhamento das aulas

Acompanhamento das aulas

por Marcelo Queiroz -
Número de respostas: 6

Bom dia, pessoal!

Acrescentei um bloco no PACA chamado "Acompanhamento das aulas", onde irei acrescentando materiais, links e recomendações de estudo organizados por semana, conforme o curso progride. Para a primeira semana, coloquei o conteúdo da Aula introdutória, uma seleção dos Vídeos sugeridos do Coursera no Youtube, uma sugestão de leitura (O caminho do programa) e alguns exercícios sugeridos para estudo individual (Variáveis, expressões e comandos, das Aulas em Python: Edição interativa). Esse último link tem mais conteúdo do que vimos em aula, então sugiro parar antes do Exercício 2.2.

Os vídeos do Youtube e as leituras e exercícios sugeridos são importantes e fortemente recomendados.

No final do link para a aula introdutória, acrescentei vários outros vídeos interessantes, além daqueles que vimos em aula. Esse material da aula introdutória é opcional, para a cultura geral de vocês, e para verem quando e se tiverem tempo e vontade.

Abraços e bons estudos!

Marcelo

 

Em resposta à Marcelo Queiroz

Re: Acompanhamento das aulas

por Marcelo Queiroz -

Olás!

Dando sequência ao acompanhamento das aulas, na aula de hoje vimos como principais novidades a função input() e o comando if, além das funções de conversão para os tipos int() e float().

São sugeridos como material complementar as seções Variáveis, Expressões e Comandos e Decisões e Seleção do livro interativo "Como Pensar Como um Cientista da Computação", os vídeos "Executando programas em Python" e os vídeos 5, 6 e 7 do coursera, e a aula interativa Classes float e str e execuções condicionais em cadeia (pulando os exercícios 4.1 e 4.2, que dependem de comandos que não vimos). É bastante material, então cabe a vocês selecionar os trechos que possam ser mais úteis (conforme as necessidades/dúvidas de cada um). Especialmente no material interativo deve ser fácil perceber os trechos que talvez pareçam fáceis demais e não gastar muito tempo com eles.

Bons estudos!

Marcelo

 

Em resposta à Marcelo Queiroz

Re: Acompanhamento das aulas

por Marcelo Queiroz -

Bom dia!

Acrescentei ao bloco Acompanhamento das aulas no PACA indicações relativas à nossa aula de ontem, bem como os códigos que escrevemos juntos em aula.

No código da sequência de Fibonacci, acrescentei um recurso novo da função print(), um easter egg por assim dizer.

Um exercício sugerido a partir do código de Fibonacci é escrever aquela "rolagem" de valores (Fatual, Fultimo, Fpenultimo) usando apenas 2 variáveis ao invés de 3. Essa mudança depende de re-escrever a definição geral da sequência

F[n]=F[n-1]+F[n-2]

usando uma mesma variável Fatual dos dois lados da atribuição, mas com sentidos diferentes (à direita ela representa um valor velho, à esquerda ela representa um valor novo), e atualizar a variável Fanterior de uma maneira um pouquinho diferente.

Além de ser um bom desafio, isso também tem relação com o que veremos na próxima aula.

Bons estudos!

Marcelo

Em resposta à Marcelo Queiroz

Re: Acompanhamento das aulas

por Marcelo Queiroz -

Bom dia!

Atualizei o bloco Acompanhamento das aulas com o material dessa semana. Em particular, gostaria de relembrar que escrevemos um código para a função raizquadrada ontem que gerava um laço infinito ao tentarmos calcular raizquadrada(2). Isso ocorria porque y se aproximava rapidamente da raiz de 2, mas a precisão finita da representação em ponto flutuante torna praticamente impossível que a condição y**2==x se verifique exatamente, fazendo com que y**2!=x seja sempre True. Curiosamente, existem muitos números inteiros para os quais o programa não para (você consegue produzir outros?) e muitos números quebrados para os quais o programa para (tente produzir exemplos). Mais ainda, existe uma lógica bem forte para cada um desses casos, e a chave do mistério está na representação binária das soluções (pense que mesmo números fracionários também são representados em binário, usando as potências negativas de 2: 0.5, 0.25, 0.125, 0.0625...).

Um exercício sugerido para vocês é re-escrever o programa fazendo com que ele pare sempre, usando uma versão aproximada daquela condição do while. Existem formulações alternativas para a condição de parada que pedem para verificar se duas aproximações sucessivas y[k] e y[k+1] = (y[k]+x/y[k])/2 estão próximas o suficiente uma da outra. No caso da raiz quadrada, relaxar a condição y**2==x parece até mais interessante, pois nos dá uma medida exata do desvio em relação ao valor real da raiz quadrada (ao invés de simplesmente constatar que a sequência começou a dar passos muito pequenos e "ficou com preguiça", o que por si só não seria garantia de estarmos muito perto da solução). Um desafio experimental interessante consiste em fazer implementações das duas condições usando uma mesma tolerância/precisão, e ver quão bem a solução de um código verifica a condição do outro código: se a solução verifica a condição y**==x com um erro menor do que 1e-6 (==10-6), qual foi a diferença entre as últimas duas aproximações produzidas? e se as duas últimas aproximações distam menos de 1e-6 uma da outra, qual o erro entre y**2 e x?

Para a cultura geral de vocês, esse método para calcular a raiz quadrada, que pode ser derivado do método de Newton para obter zeros de funções, era conhecido desde o tempo dos Babilônios. O método de Newton permite obter iterações para construir sequências que aproximam muitas funções, em particular a raiz n-ésima de um x qualquer: basta fazer um chute inicial x0 (que pode ser o próprio x) e construir a sequência y[k+1] = ((n-1)*y[k]+x/y[k]**(n-1))/n. No link existe a dedução da expressão, que depende apenas de conhecer derivadas de polinômios (Calculus to the rescue! boca aberta). Experimente escrever uma função raizgeral(x,n) que produza essas aproximações.

Boas implementações!

Marcelo

 

Em resposta à Marcelo Queiroz

Re: Acompanhamento das aulas

por Marcelo Queiroz -

Boa tarde a todos!

Os códigos da aula de hoje já estão no PACA, juntamente com material complementar e sugestões de estudos. Esses códigos têm um pequeno easter egg, que poderá ser útil para futuros trabalhos (mas não usem no EP2...)

Em relação ao material complementar da semana anterior ao break, havia esquecido de sugerir 2 vídeos do coursera que tratam de strings, e ainda podem ser úteis em relação ao EP2. São os vídeos 27 e 28 da lista de Vídeos do Coursera no YouTube.

Boa programação,

Marcelo

 

Em resposta à Marcelo Queiroz

Re: Acompanhamento das aulas

por Marcelo Queiroz -

Boa noite!

Peço que lembrem-se sempre de verificar o bloco Acompanhamento das aulas no PACA. O código imagem2matriz.py que começamos a escrever na 3a está lá, e o usaremos na aula de amanhã.

Abraços,

Marcelo

 

Em resposta à Marcelo Queiroz

Re: Acompanhamento das aulas

por Marcelo Queiroz -

Bom dia, pessoal!

O material da aula de ontem está no PACA. Como estudo para a prova, recomendo fortemente que vocês olhem o caderno de exercícios, que possui vários desafios com listas, matrizes e funções. Tentem detectar as partes da matéria em que vocês não estão seguros, e postem dúvidas aqui no fórum.

Abraços,

Marcelo