Tuesday, May 10, 2016

Python

Python

Uma breve nota histórica. 


Python foi criado por um programador e über hacker holandês, Guido Van Rossum, que depois foi trabalhar na Google onde ficou aperfeiçoando esta linguagem e seu interpretador. Atualmente Guido trabalha no Dropbox.




Originalmente intencionado para Unix/C hackers o nome "Python" vem do grupo comediante inglês Monty Python e nada tinha a ver com cobras.

Os objetivos do Python nas suas palavras:
  • an easy and intuitive language just as powerful as major competitors
  • open source, so anyone can contribute to its development
  • code that is as understandable as plain English
  • suitability for everyday tasks, allowing for short development times
Python é uma das linguagens mais populares e que mais crescem em número de usuários.

Sunday, May 8, 2016

Algoritmos

Algoritmos



Postei três páginas sobre algorítmos. 

Alguns autores usam o termo algorítmo liberalmente para qualquer procedimento. Outros mais precisos (talvez um pouco pedantes?) usam o termo para o que em Matemática se denomina método efetivo ( effective method ). 

Prefiro usar o termo liberalmente como sinônimo de procedimento.

Nas páginas Algoritmos e Algoritmos 1 descrevo o que chamei de padrão iterativo  para solução da maioria dos problemas que você provavelmente verá em seu dia a dia. Esta é uma vasta classe de tarefas que se conformam num paradigma relativamente simples:

É dado um conjunto de objetos e deve-se aplicar um mesmo procedimento para cada objeto deste conjunto.

Daí o nome iterativo para este padrão.

Outros tipos de problemas existem e a página Algoritmos 2 descreve um dos métodos mais poderosos que é o de algoritmos recursivos. Mas é tambem um paradigma relativamente complicado e fácil de induzir a erros.

Não existe uma classificação única para algoritmos. As que existem são parciais e dependem de ponto de vista.

Com estas 3 páginas termino a parte inicial deste módulo referente a pseudo código e algoritmos. Daqui para a frente vamos trabalhar com a linguagem de programação Python.



Ah sim, este é o logo oficial do Python.  

Thursday, May 5, 2016

Exercícios

Nova lista de exercícios

A lista de exercícios 2 já está aqui. Tentem resolver tudo.

Ah sim, uma versão HTML está aqui.

Por enquanto é só.

Wednesday, May 4, 2016

Mais pseudo código

Mais pseudo código

Hoje postei uma página revisitando comandos para usar em nosso pseudo código. A intenção ao formalizar um pouco os comandos que usamos no pseudo código é aproximar mais os termos usados com os termos de uma linguagem de programação, no caso com o Python.

Também depositei uma primeira lista de exercícios no Dropbox. Se você não tem add-on ou extensão Markdown no seu browser existe uma versão HTML da lista aqui. Alias sugiro que instale uma extensão destas, a qualidade da imagem resultante é muito boa. 

Daqui uns dias publico aqui soluções dos exercícios. 

Uma dica: se a página de exercícios versão HTML aparecer com caracteres estranhos mude no seu browser o View\Text Encoding para Unicode. O texto é em Português e acentuação, tilde, etc confundem a codificação padrão  anglo-saxonica. 


Tuesday, May 3, 2016

Pseudo código

Pseudo código

Pseudo código é a descrição informal de um procedimento usando linguagem natural misturada com trechos de programas e fórmulas matemáticas.

E para que serve isto?  No início do processo de programação é comum esboçarmos soluções que depois são modificadas e mesmo descartadas. Usando pseudo código agiliza muito este processo, comparado com programar diretamente numa linguagem de programação.

Pinçando um trecho desta referência:

What is pseudocode? A simplified, half-English, half-code outline of a computer program. It is sometimes given other names, such as Program Definition Language (PDL).
Why use it? Because it can help you to clarify your thoughts, and design a routine properly, before you start to write any code.
One of the hardest things to resist is the temptation to start writing code. Compared to typing source code, designing the functions which will make up a program seems dull. But spending ten minutes to think out carefully the pros and cons of different approaches to the goal can save you hours of time later on.
Another reason to use pseudocode: it turns into comments in your finished program, so you're save much of the task of going back to a finished program and inserting comments.

Vale a pena criar o hábito salutar de rascunhar em pseudo código  o seu procedimento, antes de investir tempo programando em Python ou outra linguagem.

Hoje postei uma página do curso dedicada a pseudo código. Outras mais virão.

Tambem postei aqui outra página introduzindo comandos e procedimentos.

 

Monday, May 2, 2016

Introdução à computação

Introdução à Computação

Na barra lateral direita do blog vocês encontram um ítem chamado Recursos. Ali há vários subtópicos com páginas de conteúdo deste curso.

Hoje postei duas páginas chamadas "Introdução à computação 1 e 2" com matéria de nossa aula piloto. Nos próximos dias postarei outras páginas onde vamos entrar em pseudo-código e bastante exercícios de programação em linguagem natural (ou quase natural). 

Sunday, May 1, 2016

Primeiros passos

Primeiros passos...

É comum ensinar linguagens de programação pulando direto em comandos, tipos de dados, etc.  Neste curso faremos um introito diferente, gastando algum tempo com o que é a real essência de programação de computadores.

Programas podem ser escritos em diversas linguagens, para efetuar a mesma tarefa. Programas em C#, em C++, em Java, scripts em Matlab, scripts em Python, etc. São programas diferentes mas resolvem a mesma tarefa. Ou seja, existe uma comunalidade entre eles. E o que é esta comunalidade?

O que ocorre é que programas são somente a codificação de um procedimento numa dada linguagem de programação. Dado um procedimento podemos escreve-lo em Python ou em outra linguagem.

E o que é um procedimento? Bem, uma receita de cozinha é um exemplo clássico:

  1. Coloque a água para ferver
  2. Quando estiver fervendo coloque o sal, 1 colher de óleo
  3. Quando o macarrão estiver mole, tire do fogo e escorra a água no escorredor de macarrão
  4. Lave o macarrão
  5. Faça o molho de sua preferência em outra panela
Um procedimento é uma sequência ordenada de passos que devem ser executados na ordem dada, tem um inicio e tem um fim e efetuam uma tarefa dada. 

Entretanto procedimentos podem nem sempre terminar, seja pela natureza do problema, seja por algum defeito do procedimento. Um exemplo de tal defeito são instruções em certo shampoo para cabelos:

  1. molhe o cabelo e aplique o shampoo.
  2. enxague e repita.
 Interpretado literalmente por um robô ou computador este procedimento jamais termina (enquanto houver shampoo e água...)



Procedimentos que sempre terminam (ainda que possam demorar muito tempo executando) são chamados de algoritmos.

Nesta primeira parte do curso vamos estudar métodos para exprimir algorítmos e exercitar sua construção. Construir algorítmos é uma arte pois não existem maneiras garantidas de fazê-lo mecanicamente. Portanto a prática constante é essencial para adquirir heurísticas de solução algoritmica de problemas.

George Polya escreveu um pequeno livro maravilhoso sobre como resolver problemas, particularmente problemas matemáticos. How To Solve It. Leitura imperdível (existem versões modernas com coautores respeitáveis)