Skip to main content

Python_Algoritmia e IA 9789727229536

Page 1


Inteligência artificial e machine learning em Python

Bibliotecas Python para ciência e análise de dados

Aplicação de técnicas de aprendizagem supervisionada e não supervisionada

PYTHON ALGORITMIA E IA

JOSÉ BRAGA DE VASCONCELOS | PEDRO STRECHT

Este produto tem reservados todos os direitos de autor, sendo proibida a sua reprodução total ou parcial em qualquer formato ou suporte, difusão, modificação, publicação ou qualquer uso comercial ou não comercial de qualquer conteúdo, assim como é proibida a utilização em bases de dados, ferramentas de data mining, robots, ou ferramentas similares de extração e compilação de dados, incluindo a sua consulta e uso por sistemas de inteligência artificial, quaisquer que sejam os seus objetivos, sem prévia autorização por escrito da Editora.

E dição

FCA – Editora de Informática

Av. Praia da Vitória, 14 A – 1000-247 Lisboa

Tel: +351 213 511 448 geral@fcapactor.pt www.fca.pt

d istribuição

Lidel – Edições Técnicas, Lda.

Rua D. Estefânia, 183, R/C Dto. – 1049-057 Lisboa

Tel: +351 213 511 448 lidel@lidel.pt www.lidel.pt

L ivraria

Av. Praia da Vitória, 14 A – 1000-247 Lisboa

Tel: +351 213 541 418 livraria@lidel.pt

Copyright © 2026, FCA – Editora de Informática

® Marca registada da FCA PACTOR Editores, Lda.

ISBN edição impressa: 978-972-722-953-6 1.ª edição impressa: março de 2026

Paginação: Carlos Mendes

Impressão e acabamento: Tipografia Lousanense, Lda. – Lousã

Depósito Legal n.º 560425/26

Capa: José Manuel Reis

Todos os nossos livros passam por um rigoroso controlo de qualidade, no entanto aconselhamos a consulta periódica do nosso site (www.fca.pt) para fazer o download de eventuais correções.

Não nos responsabilizamos por desatualizações das hiperligações presentes nesta obra, que foram verificadas à data de publicação da mesma.

Os nomes comerciais referenciados neste livro têm patente registada.

Reservados todos os direitos. Esta publicação não pode ser reproduzida, nem transmitida, no todo ou em parte, por qualquer processo eletrónico, mecânico, fotocópia, digitalização, gravação, sistema de armazenamento e disponibilização de informação, sítio Web, blogue ou outros, sem prévia autorização escrita da Editora, exceto o permitido pelo CDADC, em termos de cópia privada pela AGECOP –– Associação para a Gestão da Cópia Privada, através do pagamento das respetivas taxas. Os códigos QR incluídos nesta publicação remetem para páginas web com informação complementar ou cujos dados vão sendo atualizados. O reconhecimento de códigos QR em modelos mais antigos de dispositivos pode não ser imediato.

SOBRE O LIVRO

LINGUAGEM PYTHON

O desenvolvimento de software envolve atualmente a programação e integração de aplicações em diferentes contextos e domínios. Este livro tem como principal objetivo apresentar as principais tecnologias e tendências de programação de aplicações web e de outros tipos de software, utilizando a linguagem Python. Neste sentido, são apresentadas as principais características da linguagem de programação, incluindo um conjunto de algoritmos e estruturas de dados e os mecanismos de programação orientada aos objetos (POO), assim como as principais tendências e bibliotecas de software Python para o desenvolvimento de aplicações de inteligência artificial (IA) e machine learning (ML).

A influência e aplicação da linguagem Python tem vindo a crescer em diferentes áreas académicas e empresariais. Globalmente, um número significativo de universidades, incluindo portuguesas, tem vindo a aplicar esta linguagem para introduzir as ciências da computação, a algoritmia, a engenharia de software e a programação de computadores, incluindo aplicações de IA. No contexto empresarial, o Python tem sido aplicado no desenvolvimento de jogos digitais, nas áreas da ciência de dados, da IA e do ML, e no desenvolvimento de aplicações web

ORGANIZAÇÃO DO LIVRO

Os primeiros quatro capítulos deste livro derivam do livro Python – Algoritmia e Programação Web, de autoria de José Vasconcelos, também publicado pela FCA. O primeiro capítulo (“Introdução”) apresenta os fundamentos para a construção de aplicações web, incluindo a arquitetura em camadas para o desenvolvimento e programação de aplicações web com bases de dados, e a área relacionada das tecnologias de programação do lado do servidor. Nesse capítulo é abordada a importância da algoritmia na área das ciências da computação, a evolução da engenharia de software conducente à engenharia web e a nova geração da web: a web semântica. O capítulo também enquadra a relevância da linguagem de programação Python no desenvolvimento e na aplicação de algoritmos de IA e ML.

Nos capítulos seguintes (Capítulo 2 – “Linguagem de Programação Python”, Capítulo 3 – “Algoritmos e Estruturas de Dados em Python”, e Capítulo 4 – “Programação Orientada aos Objetos em Python”), são analisados os principais mecanismos para o desenvolvimento de software com esta linguagem, incluindo algoritmos e estruturas de dados especificados em Python. Dado que a linguagem Python incorpora o paradigma de POO, alguns exemplos (programas) com classes Python são implementados. Em síntese, o segundo, o terceiro e o quarto capítulos focam-se na linguagem de programação Python e nas principais características e técnicas de programação para o desenvolvimento de

aplicações. Neste sentido, a linguagem Python é inicialmente apresentada na sua vertente de programação procedimental com um conjunto de algoritmos e estruturas de dados. O Capítulo 4 introduz o paradigma de POO.

A segunda parte do livro foca-se no desenvolvimento e na implementação de aplicações de IA, ciência de dados e ML. O leitor, no final do livro, será capaz de desenvolver aplicações de IA em Python com recurso a frameworks existentes e relevantes no ecossistema Python, tais como a recente tecnologia/framework Flask. Os Capítulos 5, 6, 7 e 8, respetivamente intitulados “Ambiente Python para Inteligência Artificial e Ciência de Dados”, “Inteligência Artificial e Machine Learning”, “Aprendizagem Supervisionada com Python” e “Aprendizagem Não Supervisionada com Python” apresentam os conceitos fundamentais de IA, ciência de dados e ML, seguidos de implementação prática com aplicação da linguagem de programação Python. Estes capítulos apresentam as principais tendências e práticas de IA e ML, tais como a aprendizagem supervisionada e não supervisionada, e explora as principais bibliotecas Python para o desenvolvimento de projetos de IA, ML e ciência de dados.

PÚBLICO-ALVO

O público-alvo preferencial são os profissionais e alunos das áreas das tecnologias de informação, da gestão e da engenharia que pretendem desenvolver competências no setor do desenvolvimento de software e da subjacente programação e implementação de algoritmos com a linguagem Python. Contudo, o livro também poderá ser aplicado à introdução das ciências da computação, à algoritmia e às estruturas de dados, bem como à referente programação de computadores, incluindo programação de aplicações de IA e ML com a linguagem Python. Esta obra apresenta e aplica as principais técnicas algorítmicas e de programação, e pretende desenvolver novas capacidades para a construção de aplicações de IA. Com base nas linguagens de programação referidas e nas bibliotecas de software (frameworks) associadas, tem também por objetivo incentivar alunos, docentes universitários, profissionais e gestores de sistemas e tecnologias de informação em relação à importância da programação e da engenharia de software para a web, e no desenvolvimento de novas ideias e projetos inovadores nas organizações, incluindo as aplicações e tendências nas áreas da IA e do ML.

COMPLEMENTOS NO SITE DA EDITORA

Todos os exemplos contidos no livro podem ser descarregados gratuitamente no site da editora em www.fca.pt

CONVENÇÕES

UTILIZADAS

Ao longo do livro, optou-se por seguir um conjunto de convenções que devem facilitar a interpretação do código. Assim, todos os excertos de código são apresentados no seguinte formato:

>>> texto = 'Python Web Programming'

>>> texto2 = "Algorithms and Data Structures in 'Python 3.3.5'"

>>> print (texto,texto2)

Além do próprio código, há comentários dirigidos a ele, assinalados a cinzento, como ilustrado no exemplo seguinte:

EXEMPLO 3.5

Function Pop (ST,TOP)

Função que elimina (desempilha) o elemento do topo de uma pilha que é representada pelo vetor st. top indica a posição do último elemento inserido. o elemento eliminado é devolvido ao programa (algoritmo) principal.

1. [pilha vazia?]

If TOP = 0

Then Write (‘Não existem elementos (stack underflow)’) Return

2. [Decrementar o TOP]

TOP ← TOP - 1

3. [devolver o elemento eliminado ao programa principal]

Return(ST[TOP+1])

Ao longo da obra, aparecem caixas como a que se encontra a seguir.

NOTAS E OBERVAÇÕES

Todas as notas e observações importantes poderão ser encontradas no interior desta caixa.

SUPORTE

Como mencionado anteriormente, os primeiros quatro capítulos deste livro derivam da obra, também publicada pela FCA, Python – Algoritmia e Programação Web, que foi inicialmante escrita durante o ano de 2014 e início de 2015 com a versão 3.3.5 da linguagem Python. Neste novo livro que agora se apresente foi atualizado com a introdução de novos capítulos (e novas secções) sobre IA e ML. Neste contexto e atualização, foi aplicada a versão 3.7 da linguagem Python e referentes bibliotecas de software

No âmbito da sintaxe e dos construtores aplicados, a linguagem Python apresentada neste livro não sofrerá qualquer alteração. Se, por acaso, o leitor encontrar informação que lhe pareça incorreta ou incoerente por algum motivo, ou se tiver sugestões em relação ao conteúdo, então, poderá enviar um email com as suas questões para jbraga@acm.org Eventuais atualizações serão publicadas na página do livro, em www.fca.pt

IMAGENS

Todas as imagens deste livro são um importante suporte ilustrativo de apoio à doutrina e metodologia apresentadas, através das quais se procura que o leitor perceba melhor os conteúdos apresentados. Para um melhor entendimento das mesmas em termos de cor, algumas imagens são acompanhadas de códigos QR que remetem o leitor para as suas versões a cores.

Como fazer a leitura de um código QR no meu iPhone, iPad ou dispositivo Android? A maioria dos smartphones já têm leitores de QR integrados nas suas câmaras, mas alguns dispositivos mais antigos podem exigir uma aplicação especial para fazer a leitura dos códigos QR, que podem ser facilmente encontradas na Apple App Store e no Google Play. Para fazer a leitura do código QR:

1. Abra a câmara de seu smartphone ou a aplicação do leitor de código QR.

2. Aponte-o para o código QR. Independentemente do ângulo da câmara, deve conseguir receber as informações necessárias e os dados serão instantaneamente mostrados no visor.

INTRODUÇÃO

A fundamentação deste livro tem por base a importância da linguagem de programação Python no contexto da indústria de desenvolvimento de software, assim como a tendência das aplicações de inteligência artificial (IA). As aplicações de IA e machine learning (ML) estão em crescimento exponencial. Para facilitar o seu desenvolvimento, têm surgido diferentes abordagens, frameworks e ambientes de desenvolvimento entre as linguagens de programação existentes para o desenvolvimento de software. Neste livro focamos uma das linguagens que teve mais crescimento nos últimos anos: a linguagem Python. A grande versatilidade do Python e das frameworks associadas permite o desenvolvimento de aplicações mais complexas e de grande dimensão, tendo em conta os requisitos atuais de transações na web e o desenvolvimento das aplicações Python nas áreas da IA e do ML.

1.1 CIÊNCIAS DA COMPUTAÇÃO E INTELIGÊNCIA

ARTIFICIAL

As ciências da computação podem ser interpretadas como o conjunto de teorias, regras, práticas, métodos e ferramentas que permitem a análise, a representação e a implementação de processos sistemáticos que descrevem e transformam dados em informação e em conhecimento útil para a resolução de problemas. As ciências da computação envolvem um conjunto significativo de disciplinas que estudam e utilizam algoritmos e estruturas de dados. Um programa de computador é uma implementação (codificação) de um conjunto de algoritmos e respetivas estruturas de dados através de uma determinada linguagem de programação. A algoritmia é uma disciplina basilar na área das ciências da computação, e o seu entendimento poderá ser muito relevante no desenvolvimento de competências noutras áreas do conhecimento, como é o caso da IA e respetivos algoritmos de ML.

A base da algoritmia assenta na lógica matemática e na álgebra linear. Esta ciência estuda o algoritmo como um processo discreto (sequência de ações indivisíveis) e determinístico (para cada passo da sequência e para cada conjunto válido de dados, corresponde uma e uma só ação) que termina quaisquer que sejam os dados iniciais (pertencentes a conjuntos pré-definidos). Um programa de computador não existe sem algoritmos subjacentes. As aplicações de software são cada vez mais importantes em todas as áreas de conhecimento. Neste contexto, e tendo em conta a interdisciplinaridade do conhecimento atual, o estudo e desenvolvimento de algoritmos têm vindo a ultrapassar a dimensão inicial das

ciências da computação, dado que a disciplina algorítmica tem sido aplicada noutras áreas do conhecimento.

Muitos outros exemplos poderiam ser apresentados para fundamentar a importância da algoritmia para o desenvolvimento da ciência, tanto na área da ciência da computação como noutras áreas técnicas, humanas e sociais. Este capítulo enfatiza a importância dos algoritmos na área de ML e a sua aplicação no desenvolvimento de soluções de software A engenharia de software e a programação são atualmente o principal campo de aplicação de algoritmos, incluindo os algoritmos de ML apresentados nos próximos capítulos.

No âmbito da aplicação das ciências da computação nas organizações e na indústria, temos vindo a assistir a uma forma de democratização das tecnologias de IA. Neste sentido, os métodos, as técnicas e os algoritmos de IA e ML têm vindo a ultrapassar o ambiente académico.

ML é um tópico de investigação na área da IA para o desenvolvimento de mecanismos de aprendizagem com base em dados provenientes de exemplos, experiências e fenómenos em geral. Os objetivos principais são o desenvolvimento e a programação de algoritmos para permitir a aprendizagem dos sistemas computacionais. As tecnologias de ML têm vindo a ser utilizadas em diferentes contextos sociais e no normal quotidiano. Por exemplo, na simples ação de escrita de uma mensagem de telemóvel (smartphone), quando a aplicação sugere um conjunto de palavras possíveis que poderá escrever ou noutro contexto quando um determinado sítio web de comércio eletrónico recomenda.

Os métodos e as técnicas de IA procuram aproximar as capacidades relacionadas com a inteligência humana com os computadores. Na medida em que IA é uma área fundamental das ciências da computação, também está relacionada com outras áreas científicas, tais como a lógica matemática, a linguística, a psicologia, as ciências cognitivas, a biologia, entre outros domínios do conhecimento. Uma excelente obra, reconhecida globalmente na área da IA, é mantida por Russel e Norvig (2016). Neste sentido, é recomendada a leitura desta excelente obra focada na área abrangente de IA.

No âmbito da IA, a principal função de ML é a aprendizagem das máquinas (computadores) por meio da experiência e do registo de casos e problemas do mundo real. No caso de ML, a aprendizagem é desenvolvida através da análise sistemática de grandes volumes de dados. O objetivo principal é disponibilizar um conjunto significativo de dados que a máquina (computador) possa analisar, extrair e inferir conhecimento útil para a resolução de problemas e para diminuir a incerteza em processos de tomada de decisão. Com esta abordagem, foram desenvolvidos sistemas de reconhecimento facial e de visão computacional, aplicações de spam de email, serviços de helpdesk e atendimento automático a clientes empresariais, assim como ferramentas de análise de comportamento (sentiment analysis) dos consumidores em redes sociais. Estas e outras aplicações de IA e ML são uma realidade empresarial em crescimento e com impacto no desenvolvimento de vantagens competitivas.

ML é uma disciplina para a programação dos sistemas de software, de modo a fazê-los aprender e melhorar automaticamente com a experiência de casos anteriores e respetivos dados processados. A aprendizagem implica reconhecer e compreender os dados de

ALGORITMOS E ESTRUTURAS DE DADOS EM PYTHON

A linguagem Python contém um conjunto de instruções para a manipulação de estruturas de dados simples e compostas (lineares e não lineares), tais como vetores e matrizes (arrays), pilhas (stacks), filas (queues), listas (lists), árvores binárias (binary trees) e grafos (graphs). Incluem-se também neste capítulo as strings como exemplo de um array de carateres alfanuméricos. As próximas secções contêm um conjunto de algoritmos e respetivos programas em Python, com aplicação destas importantes estruturas de dados, fundamentais para o desenvolvimento de software e resolução de problemas. Algumas destas estruturas de dados também serão representadas no próximo capítulo, através de classes com base na utilização da linguagem Python, sob o paradigma de programação com orientação aos objetos (POO). A última secção deste capítulo apresenta um resumo (e as tendências) dos principais algoritmos de inteligência artificial (IA) – alguns deles serão aplicados e implementados em Python nos capítulos seguintes.

3.1 TIPOS E ESTRUTURAS DE DADOS

O Python é uma linguagem não “tipada”, na medida em que podemos utilizar variáveis sem uma declaração prévia do respetivo tipo de dados. Contudo, a compreensão e aplicação de tipos e estruturas de dados é igualmente importante na linguagem Python como em qualquer outra linguagem de programação (“tipada”). Uma estrutura de dados define a forma como os dados de um algoritmo são relacionados e agrupados de modo coerente (Braga de Vasconcelos & Carvalho, 2005). Estruturas de dados primitivas definem dados como uma ou mais instâncias de tipos de dados atómicos. Estruturas mais complexas (não primitivas) apresentam organizações mais complexas de dados (ex.: estruturas de dados que referenciam outras estruturas).

Os tipos de dados primitivos permitem manipular valores atómicos, como valores booleanos, numéricos e alfanuméricos. As próximas secções apresentam um resumo dos tipos de estruturas de dados primitivos: tipo booleano (ou binário), tipo numérico (inteiros e reais) e tipo alfanumérico para o tratamento de cadeias de carateres (strings) e respetivo tratamento de texto. A Figura 3.1 ilustra as principais estruturas de dados.

Estruturas de dados

Primitivas

Booleanas

Numéricas

Carateres alfanuméricos

Ponteiros

Comprimento fixo (variáveis indexadas)

Inteiros Reais

Vetor

Matriz

Não primitivas (complexas)

Comprimento variável

Ficheiros (memória secundária)

Lineares

Não lineares

Bidimendional

Multi-indexado

Pilhas

Filas

Listas

Árvores Grafos

Sequenciais

Sequenciais indexados

Diretos

3.1 – ESTRUTURAS DE DADOS (BRAGA DE VASCONCELOS & CARVALHO, 2005)

A algoritmia centra-se na forma como representamos entidades e objetos reais através de estruturas de dados e não na forma como os armazenamos fisicamente na memória do computador. A definição das estruturas de dados a utilizar por um algoritmo também deverá ter em atenção as operações a executar sobre os dados. Diferentes operações podem ser executadas, tais como: operações para criar, alterar e eliminar estruturas de dados; operações para inserir, alterar e eliminar elementos das estruturas de dados; e operações para aceder a elementos da estrutura de dados. Em síntese, uma eficiente manipulação das estruturas de dados associadas à resolução de um problema e consequente construção de um algoritmo envolve uma análise das seguintes questões:

■ Compreender a relação entre os dados;

■ Compreender a gestão das estruturas dos dados e dos dados em memória (primária e secundária);

■ Decidir operações a executar nos dados logicamente relacionados;

■ Representar os elementos dos dados;

■ Manter as relações lógicas entre os dados;

■ Executar de forma eficiente as operações sobre os dados;

■ De um modo geral, especificar os algoritmos e as estruturas de dados e implementar numa linguagem de programação da forma mais natural e expressiva possível. As estruturas de dados primitivas definem dados como uma ou mais instâncias de tipos de dados atómicos. As estruturas complexas (não primitivas) apresentam organizações mais complexas de dados, como estruturas de dados que referenciam outras estruturas. Assim, temos os seguintes tipos de dados (primitivos) para a manipulação de estruturas de dados:

FIGURA

■ Tipo de dados booleano – este tipo é aplicado em situações reais que unicamente denotam dois estados possíveis: verdadeiro (true) ou falso (false). Estes dois estados também podem ser representados através dos valores 0 (false) ou 1 (true);

■ Tipo de dados numérico – este tipo é representativo de valores numéricos no domínio dos números inteiros e reais. De uma forma simples, os tipos de dados numéricos dividem-se em tipos inteiros e tipos reais;

■ Tipo de dados alfanumérico – este tipo é constituído por uma sequência de carateres contendo letras, dígitos e símbolos especiais. A próxima secção apresenta um conjunto de instruções, funções, operações e algoritmos para o processamento de cadeias de carateres (strings) em Python.

TIPOS DE DADOS

Os tipos de dados numéricos dividem-se em tipos inteiros e reais. Os tipos de dados reais são normalmente designados por “números de vírgula flutuante” (float point numbers). Estes três tipos de dados (booleanos, numéricos e alfanuméricos) são considerados primitivos porque estão incorporados nas linguagens de programação. Atualmente, uma parte significativa dos tipos de dados não primitivos (complexos ou compostos), como um array, uma lista ou uma pilha, está também incorporada no núcleo das linguagens de programação. Ainda temos os tipos de dados definidos pelo utilizador, que serão alvo de análise e aplicação no capítulo referente à POO (Capítulo 4), e subsequentes.

3.2 PROCESSAMENTO DE STRINGS

No âmbito da representação e manipulação de strings em Python são utilizadas várias instruções e funções que se inserem no seguinte conjunto de operações de tratamento de texto (strings):

■ Criar uma string;

■ Determinar o comprimento de uma string;

■ Concatenar strings;

■ Determinar a posição de uma substring numa string;

■ Obter (extrair) uma substring de uma string;

■ Comparar strings.

Criar uma string na linguagem Python é uma tarefa simples. Uma string é expressa por uma qualquer sequência de carateres entre plicas ou entre aspas. A criação de uma string pode ser efetuada pela atribuição a uma variável, exatamente da mesma forma como criamos e inicializamos uma variável do tipo numérico (Exemplo 3.1).

EXEMPLO 3.1

>>> texto = 'Python Web Programming'

>>> texto2 = "Algorithms and Data Structures in 'Python 3.3.5'"

>>> print (texto,texto2)

A concatenação de strings em Python é também uma operação muito simples. Para concatenar strings aplicamos o operador ‘+’, que, neste caso, tem a função de concatenar (juntar) o conteúdo dos operandos (strings). Esta operação permite juntar duas strings para formar uma outra, como indica o seguinte Exemplo 3.2 na Python shell

EXEMPLO 3.2

>>> text1 = 'String processing'

>>> text2 = 'using Python'

>>> pvers = '3.3.5'

>>> text = text1 + ' ' + text2 + ' ' + pvers

>>> print (text)

String processing using Python 3.3.5

A pesquisa de uma substring dentro de uma string determina a posição da substring dentro da string. No caso de a substring (padrão) não existir, a função find() devolve o valor -1 (Figura 3.2).

3.2 – DETERMINAR A POSIÇÃO DE UMA SUBSTRING

A função find() efetua uma pesquisa da substring numa dada string, e, caso exista, um valor numérico é devolvido. Este valor indica a posição na string mais à esquerda (primeiro caráter) na string

Uma string em Python funciona como um array de carateres. Deste modo, a partir das posições dos carateres da string é possível manipular e extrair novas strings. A extração de uma substring é definida diretamente através da seguinte sintaxe na variável do tipo string. O primeiro caráter de uma string está na posição 0. Um caráter é interpretado como uma string de tamanho 1. Os índices (variáveis) inteiros [i,j] são aplicados para indexar e extrair substrings de uma string, conforme ilustra o próximo exemplo (código-fonte) na Python shell (Figura 3.3).

FIGURA

AMBIENTE

PYTHON PARA INTELIGÊNCIA ARTIFICIAL E CIÊNCIA DE DADOS

Este capítulo apresenta um resumo do ecossistema Python para o desenvolvimento de aplicações de inteligência artificial (IA) e ciência de dados. A parte inicial do capítulo descreve as principais tarefas para a configuração de um ambiente de desenvolvimento Python para IA e ciência de dados, incluindo as principais bibliotecas de software. Este capítulo pretende demonstrar a importância do ecossistema Python no desenvolvimento das tecnologias de IA e machine learning (ML). As últimas secções do capítulo apresentam as principais tendências e bibliotecas (software) Python para o desenvolvimento de aplicações de IA e ciência de dados.

5.1 PROGRAMAÇÃO PYTHON PARA INTELIGÊNCIA

ARTIFICIAL

E CIÊNCIA DE DADOS

5.1.1 EVOLUÇÃO DA LINGUAGEM DE PROGRAMAÇÃO PYTHON

Desde a sua criação, no final da década de 80 do século xx, a linguagem de programação Python tem sido aplicada nas universidades como a linguagem mais adequada à aprendizagem da algoritmia e da programação de computadores, assim como para a introdução às ciências da computação. Nos últimos anos, no decorrer do novo século, a utilização e programação em Python tem vindo a crescer em diferentes áreas académicas e aplicações de negócio.

Conforme referido nos capítulos anteriores, a primeira versão oficial da linguagem de programação Python foi lançada em 1991. A versão seguinte (2.0) foi lançada em outubro de 2000. Mais tarde, a versão 2.7 foi amplamente aplicada, e, atualmente, ainda continua a ser a preferida de um conjunto de programadores. Em 2008 surge a versão 3.0, também designada por “Python 3000” ou “py3k”. Atualmente (janeiro de 2026) temos disponível a versão 3.12. As versões 3.6, 3.7 e 3.11 da linguagem Python foram as versões do ambiente de desenvolvimento aplicadas nos exemplos (código-fonte) apresentados nesta e nas próximas secções.

A linguagem Python tem uma sintaxe simples e de alto nível, muito próxima da linguagem natural. Neste sentido, tem uma componente sintática clara e de fácil leitura e

interpretação. Adicionalmente, assegura um conjunto de mecanismos de programação avançados para a implementação de algoritmos e consequente resolução de problemas, assim como para o desenvolvimento de aplicações de IA e ML.

A linguagem Python tem associado vários ambientes integrados de desenvolvimento de software (Integrated Development Environment [IDE]). O IDE de base, incluído na instalação do ambiente Python, contém um conjunto integrado de ferramentas de software para facilitar o desenvolvimento, o teste e a execução dos programas. Um IDE Python contém um editor para especificar e atualizar o código-fonte, um interpretador para executar os programas e um corretor de erros (debugger) para auxiliar no desenvolvimento e na correção de erros de sintaxe e de execução de um programa Python. O IDE base do ambiente Python (próximas secções) contém também uma linha de comando designada por “Python shell”, para o desenvolvimento e testes de instruções Python.

Um aspeto fundamental do sucesso da linguagem Python é a riqueza e a diversidade de bibliotecas de software em diversas áreas de conhecimento, nomeadamente bibliotecas de funções para o desenvolvimento de soluções de IA e ML, tais como a biblioteca NumPy (abreviatura de Numerical Python) para análise e cálculo numérico, a biblioteca

Matplotlib para a visualização gráfica de grandes volumes de dados (datasets) ou a biblioteca Scikit-Learn para a implementação de algoritmos de aprendizagem (ML).

5.1.2 AMBIENTE DE PROGRAMAÇÃO PYTHON

Conforme descrito anteriormente (Capítulo 2) com detalhe, a instalação do ambiente Python é muito simples. O editor e interpretador Python pode ser instalado nos sistemas operativos Windows, Linux e macOS. Neste sentido, é necessário selecionar, efetuar o download e executar o ficheiro de instalação (software) adequado do sítio web oficial www.python.org (Figura 5.1). Depois de instalado, o interpretador é um programa que entende e executa as instruções Python especificadas pelo programador. No âmbito da análise de dados, serão também instalados (próximas secções) determinados recursos (bibliotecas Python) de software para o desenvolvimento de soluções na área da IA e ML.

FIGURA 5.1 – SÍTIO WEB DA LINGUAGEM DE PROGRAMAÇÃO PYTHON

O ambiente Integrated Development Environment (IDLE) (Figura 5.2) permite diferentes modos de desenvolvimento de código Python. A shell simples e interativa permite introduzir e testar linhas de código. Para desenvolver programas mais elaborados, é necessário criar e editar ficheiros de código Python que irão conter o código-fonte da aplicação a implementar. O ficheiro/programa principal (main program) representativo do algoritmo inicial poderá ser executado através do comando run module (Figura 5.4) através do menu de uma janela de código-fonte Python.

FIGURA 5.2 – UTILIZAÇÃO DO AMBIENTE (SHELL) PARA EXECUTAR E TESTAR INSTRUÇÕES

O ambiente IDLE pode ser utilizado como uma simples ferramenta de cálculo ou para escrever o código-fonte e implementar a respetiva aplicação de software. O IDLE tem uma utilização simples, conforme verificámos anteriormente (Capítulos 3 e 4) e retomamos através dos próximos exemplos ilustrativos da utilização do editor Python IDLE.

As aplicações na linguagem Python podem ser estruturadas em módulos de software que contêm funções que implementam operações. Os módulos e as referentes funções podem ser reutilizados através do programa principal, tendo em conta a natureza e os requisitos do problema e respetiva estrutura da solução e referente código Python.

O ambiente Python tem um conjunto de módulos standard predefinidos (Figuras 5.3 e 5.4), que contêm as funções normalmente aplicadas em diferentes domínios, tais como os módulos math, time, random, string, sys, entre outros, que definem bibliotecas de software e de funções que são aplicadas no desenvolvimento e na implementação de programas em Python.

5.4 – UTILIZAÇÃO DO EDITOR PYTHON COM MÓDULOS E FUNÇÕES

A linguagem de programação Python tem uma abordagem de implementação de software com base numa vasta biblioteca de módulos, previamente especificados para a resolução de problemas e automatização de determinadas tarefas. As Figuras 5.5 e 5.6 e a Tabela 5.1 resumem os módulos de funções standard incorporados no ambiente-base Python.

FIGURA 5.3 – MÓDULOS STANDARD EM PYTHON
FIGURA

A próxima Figura 5.46 apresenta o código Python para a definição de um gráfico de linhas. Este exemplo demonstra um gráfico de linhas que exibe o comportamento regular das funções trigonométricas seno e cosseno.

A próxima função scatter (Figura 5.47) permite a visualização de pontos no eixo cartesiano. O programa Python seguinte aplica esta função para visualizar um conjunto de 2048 pontos (Figura 5.48) de pontos gerados aleatoriamente.

5.47 – CÓDIGO PYTHON PARA UM GRÁFICO DE PONTOS

5.48 – EXEMPLO DE UM GRÁFICO DE PONTOS

O próximo programa Python (Figura 5.49) define novamente um conjunto aleatório de pontos e visualiza os pontos no eixo cartesiano com diferentes cores.

ver figura a cores
FIGURA 5.46 – EXEMPLO DE UM GRÁFICO DE LINHAS (SENO E COSSENO)
FIGURA
FIGURA

FIGURA 5.49 – EXEMPLO DE UM GRÁFICO DE PONTOS COM DIFERENTES CORES

ver figura a cores

Os próximos exemplos (Figura 5.50) apresentam a representação gráfica (aleatória) de determinadas figuras geográficas ilustradas através de símbolos (marker = ‘<’ ou ‘*’).

ver figura a cores

FIGURA 5.50 – EXEMPLOS DE GRÁFICOS DE PONTOS COM DIFERENTES FIGURAS GEOMÉTRICAS

O próximo exemplo (Figura 5.51 e 5.52) apresenta um gráfico de barras. O módulo matplotlib contém a função bar() para a criação de gráficos de barras, conforme especificado no próximo programa Python.

5.51 – CÓDIGO PYTHON PARA UM GRÁFICO SIMPLES DE BARRAS

FIGURA

BIBLIOGRAFIA

Abreu, L. (2011). HTML 5. FCA – Editora de Informática.

Ambler, S. (2001). The Object Primer (2nd Edition). Cambridge University Press, SIGS Books.

Anders, M. (2011). Python 3 Web Development. Packt Publishing.

Aspray, W. (1989). John von Neuman’s Contributions to Computing and Computer Science. IEEE Annals of the History of Computing, Volume 11, Issue 3.

Barry, P. (2011). Head First Python. O’Reilly Media.

Berners-Lee, T., Hendler, J., & Lassila, O. (2001). The Semantic Web. A New Form of Web Content That Is Meaningful to Computers Will Unleash a Revolution of New Possibilities. Scientific American, 284, 1-5.

Bishop, C. M. (2006). Pattern Recognition and Machine Learning. Springer Science+Business Media, LLC.

Bolshakova, E. (2005). Programming Paradigms in Computer Science Education. Proceedings of the Third International Conference on Information Research, Applications and Education (i.TECH 2005).

Bourque, P., & Fairley, R. E. (Eds.) (2014). Guide to the Software Engineering Body of Knowledge –SWEBOK. IEEE.

Braga de Vasconcelos, J. (2015) Python – Algoritmia e Programação Web. FCA – Editora de Informática.

Braga de Vasconcelos, J., & Barão, A. (2017) Ciência dos Dados nas Organizações – Aplicações em Python. FCA – Editora de Informática.

Braga de Vasconcelos, J., & Ribeiro, N. (2013). Tecnologias de Programação de Jogos. FCA – Editora de Informática.

Braga de Vasconcelos, J., & Vidal de Carvalho, J. (2005). Algoritmia e Estrutura de Dados –Programação nas Linguagens C e Java. Editora Centro Atlântico.

Braga de Vasconcelos, J., Henriques, V., & Miranda, H. (2011). Sistema de Software para a Gestão e Avaliação de Competências Organizacionais. Atas da Conferência em Investigação e Intervenção em Recursos Humanos (IIRH 2011).

Bramer, M. (2007). Principles of Data Mining. Springer London. https://doi.org/10.1007/978-1-84628766-4

Breiman, L. (2001). Random Forests. Machine Learning, 45, 5-32. https://doi.org/10.1023/A: 1010933404324

Büchner, A. G., & Mulvenna, M. D. (1998). Discovering Internet marketing intelligence through online analytical web usage mining. ACM SIGMOD Record, 27(4), 54-61. https://doi.org/10.1145/ 306101.306124

Canelake, S. (2011). A Gentle Introduction to Programming Using Python, MIT OpenCourse Ware: Massachusetts Institute of Technology. Disponível em: https://ocw.mit.edu/courses/6-189-a-gentleintroduction-to-programming-using-python-january-iap-2011/ Carreiro, J., & Abreu , L. (2013). JavaScript (2.ª ed). FCA – Editora Informática.

Carvalho, D. V., Pereira, E. M., & Cardoso, J. S. (2019). Machine learning interpretability: A survey on methods and metrics. Electronics (Section: Artificial Intelligence), 8(8), 1-34. https://doi.org/10.3390/ electronics8080832

9 789727 229536 em Python de dados supervisionada

ISBN 978-972-722-953-6

ISBN 978-972-722-953-6

9 789727 229536

Turn static files into dynamic content formats.

Create a flipbook