Python Iluminado

Introdução

img

Python é uma linguagem de programação interpretada, de alto nível, que pode ser aplicada em diversas soluções. Famosa por sua sintaxe amigável, ela vem ganhando uma expressiva popularidade nos últimos anos. Foi criada por Guido Van Rossum no período de 1985-1990, seu código fonte está disponível sob o GNU General Public License (GPL). Python conta com uma tipagem dinâmica e um sistema de gerenciamento de memória automático, sendo capaz de suportar múltiplos paradigmas de programação.

Python é uma linguagem poderosa e de fácil aprendizado. Possui estruturas de dados eficientes e de alto nível e uma simples e efetiva abordagem em relação à programação orientada a objetos. A sintaxe elegante de Python e sua tipagem dinâmica, juntamente com sua natureza interpretada, faz do Python uma linguagem ideal para scripting e desenvolvimento rápido de aplicações em muitas áreas e para diversas plataformas.

O interpretador Python e a extensiva standard library estão disponíveis gratuitamente na forma source ou binary para todas as maiores plataformas através do site oficial Python.

As principais aplicações de Python são:

Por que aprender Python?

  • Python é capaz de rodar em múltiplas plataformas (Windows, Linux, MacOS, Raspberry Pi, etc)
  • Python suporta programação interativa (Interação direta com o interpretador)
  • Sua sintaxe é simples de compreender
  • Suporta múltiplos paradigmas de programação
  • Python pode ser usada para prototipação rápida
  • Python está apta a se conectar com sistemas de banco de dados, pode também ler e modificar arquivos
  • Pode ser utilizada para lidar com grandes quantidades de dados e executar cálculos matemáticos complexos
  • Python conta com uma comunidade gigantesca e muito material de aprendizado!

Importante

  • A versão mais recente de Python é o Python 3, no qual iremos utilizar nesse guia, porém a versão Python 2 ainda é muito popular, embora não esteja mais recebendo suporte da Python Software Foundation
  • Python pode ser integrada com C, C++, CORBA, Java. Caso haja a necessidade de trabalhar com códigos de alta perfomance
  • Atualmente muitas das grandes corporações utilizam Python, podemos citar elas: Google, Facebook, Microsoft, NASA, CERN.

Computação

img

Antes de iniciarmos nossos estudos sobre a linguagem Python, é importante que tenhamos uma breve Introdução à Computação.

A Computação é qualquer tipo de cálculo que inclui etapas aritméticas e não-aritméticas e que segue um modelo bem definido (por exemplo, um algoritmo).

Dispositivos mecânicos ou eletrônicos (ou, historicamente, pessoas) que realizam cálculos são conhecidos como computadores. Uma disciplina especialmente conhecida do estudo da computação é a ciência da computação.

A Computação pode ser vista como um fenômeno puramente físico que ocorre dentro de um sistema físico fechado chamado computador. Exemplos de tais sistemas físicos incluem computadores digitais, computadores mecânicos, computadores quânticos, computadores de DNA, computadores moleculares ou até mesmo computadores analógicos. Esse ponto de vista foi adotado pela física da computação, um ramo da física teórica, bem como pelo campo da computação natural.

Um ponto de vista ainda mais radical, o pancomputacionalismo, é o postulado da física digital que argumenta que a evolução do universo é em si uma computação.

Computação na Prática

Programação de computador é o processo de escrever instruções que são executadas por computadores. As instruções, também conhecidas como código, são escritas em uma linguagem de programação que o computador pode entender e usar para realizar uma tarefa ou resolver um problema.

Para que possamos escrever programas de qualidade e eficientes, é importante que conheçamos conceitos como:

  • Representação de conhecimento através de Estruturas de Dados
  • Iteração e Recursão como metáforas computacionais
  • Abstração de procedimentos e tipos de dados
  • Organizar e Modularizar sistemas utilizando objetos classes e métodos
  • Diferentes classes de algoritmos (searching, sorting)
  • Complexidade de algoritmos

O que um Computador faz?

Fundamentalmente ele é capaz de realizar cálculos (bilhões de cálculos por segundo) e também é capaz de lembrar resultados (centenas de gigabytes de storage).

Quais tipos de cálculos ele pode executar? Um computador pode executar cálculos que são pré-construídos na linguagem e também aqueles que você define como programador. É importante lembrarmos que Computadores apenas sabem o que dizemos a eles, então é importante que forneçamos as instruções corretas para que possamos obter os resultados desejados.

Tipos de Conhecimento

Em epistemologia, conhecimento descritivo, também conhecido como Conhecimento Declarativo é uma afirmação de um fato, em outras palavras, é o conhecimento que pode ser expresso em uma frase declarativa ou uma proposição indicativa (por exemplo: "Está chovendo lá fora").

Conhecimento processual, também conhecido como Conhecimento Imperativo é uma receita ou "tutorial", é o conhecimento exercido no desempenho de alguma tarefa.

Podemos considerar um algoritmo, por exemplo:

  • Ler um número
  • Verificar se ele é maior que 0
  • Se o número for maior que 0, retornar que ele é positivo
  • Verificar se ele é menor que 0
  • Se o número for menor que 0, retornar que ele é negativo
  • Se nenhum dos casos acima for atendido, então ele é 0.
  • Fim do algoritmo

O fluxograma a seguir nos apresenta esta ideia visualmente:

img

Calculando a Raiz Quadrada

Na matemática, a raiz quadrada de um número x é um número y tal que y² = x. Em outras palavras, um número y cujo quadrado (o resultado da multiplicação do número por ele mesmo, ou y*y) é x.

Vamos então definir que:

  • A raiz quadrada de um número x é y de forma que y*y = x

  • A receita para deduzir a raiz quadrada de um número x é:

  1. Começar com uma suposição g
  2. Se g*g é próximo o suficiente de x, pare e diga que g é a resposta
  3. Caso contrário faça uma nova suposição calculando a média de g e x/g
  4. Utilizando a nova suposição, repita o processo até se aproximar

Neste exemplo, queremos obter a raiz quadrada do número 16, que é 4, veja que através do nosso algoritmo somos capazes de alcançar um número muito próximo de 4.

gg*gx/g(g+x/g)/2
3916/34.17
4.1717.363.8374.0035
4.003516.02773.9974.000002

O que é uma Receita?

Uma receita é um conjunto de instruções que descreve como preparar ou fazer algo, em outras palavras:

  • Uma sequência de simples passos
  • Processo de Controle de Fluxo que específica quando cada passo é executado
  • Um meio de determinar quando parar

1+5+7 = UM ALGORITMO!

Computadores são Máquinas

Um computador é uma máquina que pode ser instruída a realizar sequências de operações aritméticas ou lógicas automaticamente por meio de programação de computador. Os computadores modernos têm a capacidade de seguir conjuntos generalizados de operações, chamados programas.

Existem diversos tipos de computadores, por exemplo:

  • Computador de Programa Fixo: Calculadora
  • Computador de Programa Armazenado: A máquina armazena e executa instruções

Arquitetura Básica do Computador

img

Computador de Programa Armazenado

Um computador de programa armazenado é aquele que armazena instruções do programa em uma memória acessível eletronicamente ou opticamente. Isso contrasta com os sistemas que armazenavam as instruções do programa com plugboards ou mecanismos semelhantes.

A Sequência de Instruções são então armazenadas dentro do computador. Construídos através de um conjunto pré-definido de instruções primitivas:

  1. Aritmética e Lógica
  2. Testes simples
  3. Movendo dados

Um Programa Especial (Interpretador) executa cada instrução em ordem e pode ser usado em testes para alterar o fluxo de controle.

Primitivos Básicos

Na computação, primitivos de linguagem são os elementos mais simples disponíveis em uma linguagem de programação. Um primitivo é a menor 'unidade de processamento' disponível para um programador de uma determinada máquina, ou pode ser um elemento atômico de uma expressão em uma linguagem.

Um primitivo é um tipo de dados fundamental que não pode ser dividido em um tipo de dados mais simples. Por exemplo, um inteiro é um tipo de dados primitivo, enquanto que um array, que pode armazenar vários tipos de dados, não é.

  • Turing mostrou que podemos computar tudo utilizando apenas 6 primitivos
  • Linguagens de programação modernas possuem conjuntos de primitivos mais convenientes
  • É possível abstrair métodos para criar novos primitivos
  • Qualquer cálculo computável em uma linguagem é computável em qualquer outra linguagem de programação

Criando Receitas

Uma linguagem de programação fornece um conjunto de operações primitivas. Expressões são complexas combinações legais de primitivos em uma linguagem de programação. Expressões e Computações possuem valores e sentido em uma linguagem de programação

Aspectos das Linguagens

As linguagens possuem Constructos Primitivos, em português, por exemplo, temos as palavras, nas linguagens de programação temos os números, strings e operadores simples.

Elas também possuem uma Sintaxe, por exemplo, em português podemos construir a seguinte frase "gato caxorro garoto", que é inválida sintaticamente, também podemos construir "mãe abraça o garoto", que é válida sintaticamente. Nas linguagens de programação existem as mesmas situações, por exemplo "oi"5 é uma definição inválida em termos de sintaxe, porém 3*5 é válido, pois define a multiplicação de dois números de maneira correta, veja que aqui estamos usando um exemplo geral e não estamos falando de uma linguagem específica.

Além disso, as linguagens também possuem a Semântica Estática, no qual strings sintaticamente válidas possuem sentido, no português, por exemplo, podemos definir "Eu árvore fome", embora seja uma expressão valida sintaticamente, ela tem erro de semântica, pois não há sentido no que se quer dizer. Nas linguagens de programação temos o mesmo problema, se definirmos por exemplo 3+"oi" teremos um erro semântico, pois esta soma não faz sentido.

A Semântica é então o sentido associado com uma string de símbolos sintaticamente correta com nenhum erro de semântica.

Quando Ocorrem Erros

Erros são os problemas ou falhas no programa que fazem com que nosso programa se comporte de forma inesperada, existem diversos tipos de erros, podemos citar por exemplo:

  • Erros de Sintáxe: Comuns e fáceis de perceber
  • Erros de Semântica Estática: Algumas linguagens checam por eles antes de rodar o programa, eles podem causar comportamento imprevisível
  • Nenhum erro de Semântica, porém um sentido diferente do que o programador desejava expressar ocorre: Programa crasha, para de rodar, programa roda para sempre, programa dá uma resposta, porém diferente do esperado

Programas em Python

Um programa é uma sequência de definições e comandos, estas definições devem ser bem avaliadas. Também podemos considerar ele como comandos executados pelo Interpretador Python em uma shell, comandos (afirmações) instruem o interpretador a fazerem algo e podem ser digitados diretamente em uma shell ou guardados em um arquivo que é então lido na shell e avaliado.

Objetos

Python é uma linguagem de programação orientada a objetos. Quase tudo em Python é um objeto, com suas propriedades e métodos.

img

Devemos estar cientes da importância dos Objetos, pois programas manipulam objetos de dados. Objetos possuem um tipo que define os tipos de ações que os programas podem fazer com eles, por exemplo:

  • Gabriel é um humano, sendo assim ele pode caminhar, falar, etc.
  • Zeus é um cachorro, sendo assim ele pode latir, rosnar, etc.

Objetos são normalmente divididos em duas categorias:

  • Escalares (não podem ser subdivididos)
  • Não-Escalares (possui uma estrutura interna que pode ser acessada)

Agora que temos informações fundamentais básicas sobre princípios da computação e da linguagem Python, podemos iniciar a configuração de nosso Ambiente de Programação.