0% acharam este documento útil (0 voto)
0 visualizações32 páginas

01-Introdução A AED2 e Python

O curso PGINF591 aborda Algoritmos e Estruturas de Dados com foco em Python, ensinando a organizar o pensamento e os dados para resolver problemas de forma eficiente. Os alunos aprenderão a codificar algoritmos, utilizar a linguagem Python e entender conceitos de programação orientada a objetos. O curso também compara Python com outras linguagens, destacando suas características e paradigmas.

Enviado por

rafacien.rc
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
0 visualizações32 páginas

01-Introdução A AED2 e Python

O curso PGINF591 aborda Algoritmos e Estruturas de Dados com foco em Python, ensinando a organizar o pensamento e os dados para resolver problemas de forma eficiente. Os alunos aprenderão a codificar algoritmos, utilizar a linguagem Python e entender conceitos de programação orientada a objetos. O curso também compara Python com outras linguagens, destacando suas características e paradigmas.

Enviado por

rafacien.rc
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
Você está na página 1/ 32

PGINF591 – Algoritmos e Estruturas de Dados

Introdução a AED
e à linguagem Python

Prof. Dr. Rafael Giusti


rgiusti@icomp.ufam.edu.br
Por que AED?

» Como diz o nome, o curso tem dois focos

Algoritmos: como organizar o


pensamento para solucionar problemas
https://programadorviking.com.br/

Estruturas de dados: como organizar os


dados para facilitar sua manipulação por
meio de algoritmos.
https://programadorviking.com.br/
O que eu ganho?

» O que você ganha estudando AED

Constrói sua “caixa de ferramentas”


de algoritmos e ED

https://4570book.info/amazing-cliparts/
bayesian-networks-toolbox-clipart.htm

Aprende a avaliar e escolher quais


algoritmos usar ou adaptar na
resolução de problemas
Em síntese

» Objetivo principal: estudar e entender algoritmos


» Aprender a codificar algoritmos com eficiência
» Código limpo e organizado
» Sem caso especiais
» Sem gambiarras

http://www.criatives.com.br/2019/03/14-imagens-
mostrando-que-nem-sempre-a-gambiarra-e-a-
melhor-solucao-pra-resolver-um-problema/
Python

» Python é uma linguagem de programação


extremamente popular

Python
C
Java
C++

VB
JS

https://www.tiobe.com/tiobe-
Python

» Características da linguagem Python


» Normalmente interpretada
» Dinâmica
~ As variávies e seus tipos de dados são definidos
em tempo de execução
» Simples ?
Python

» Características da linguagem Python


» Normalmente interpretada
» Dinâmica
~ As variávies e seus tipos de dados são definidos
em tempo de execução
» “Simples de usar”
~ Python é uma linguagem bastante rica
~ Assembly e C são linguagens simples
» Multiparadigma (especialmente POO)
Como programar em Python?

» VS Code
» Disponível após instalar uma extensão
Como programar em Python?

» Sublime Code
» A execução deve ser feita pelo terminal e o
interprtador deve ser instalado separadamente
Como programar em Python?

» IPython
» Um terminal interativo da linguagem
Como programar em Python?

» Jupyter Notebooks
» Edite e execute o código no navegador
Como programar em Python?

» Google Colaboratory
» Execute Jupyter notebook na sua conta Google
Links e informações pertinentes

» https://code.visualstudio.com/
» https://www.sublimetext.com/
» https://ipython.org/
» https://colab.research.google.com/
» No Linux (Debian e clones)
» apt-get install python3 ipython3
» apt-get install python3-notebook
Fundamentos de Python

» Comparando Python e C
» A sintaxe das duas linguagens é parecida
Fundamentos de Python

» Comparando C e Python
» Python e C compartilham muitos operadores
~ Exceções: C Python
~ Conjunção && and
~ Disjunção || or
~ Negação ! not
~ Pré-incremento ++ não há
~ Potenciação não há **
Fundamentos de Python

» Comparando C e Python
» Python e C compartilham muitos operadores
» Os tipos de Python e C diferem bastante
~ Inteiros (int) em Python são “big integers”
~ Números de ponto flutuante em Python (float)
são de dupla precisão (double em C)
~ Python possui strings (str) e elas são imutáveis
~ Python possui Booleanos (bool)
~ Python possui tipos para listas (list), números
complexos (complex) e dicionários (dict)
Orientação a objetos

» Python é multiparadigma, mas com forte viés a


POO (Programação Orientada a Objetos)

Paradigma procedimental Paradigma OO

Programas organizados em Os programas organizados em


procedimentos, que definem objetos que reúnem dados e
ações ações em uma mesma entidade

Cada procedimento tem como Cada objeto possui um estado


meta principal exercer uma interno e um conjunto de ações
ação nos seus argumentos para manipular esse estado

Programas chamam Objetos se comunicam trocando


procedimentos e manipulam as mensagens, cada qual
variávies do programa manipulando seu estado interno
Características dos paradigmas

» Paradigma procedural: o programa é uma coleção


de funções

bar

foo baz

main
tempo
S.O.
Programação procedimental

» Ao resolver um problema no paradigma


procedimental, nós pensamos
» Quais são as ações que o programa precisa
tomar?
» Quais dados os procedimentos manipulam?
Preciso de uma função
para criar o tabuleiro

Uma função para verificar


movimentos válidos

Uma função para controlar


o turnos
Programação orientada a objetos

» Na programação orientada a objetos (ou POO,


para encurtar), os programas são coleções de
objetos

» Cada objeto é uma entidade que representa uma


parte do programa

» Os objetos comunicam-se trocando mensagens

» O prorama funciona a partir da “conversa” entre


os objetos
Programação orientada a objetos

Personagem
(Guia)

er
ec
Personagem

ar
(Jogador)

ap
cer
pa re
a
Jogo Cena Personagem
construir
aparecer (Coelho)
Programação orientada a objetos

Personagem
(Guia)

Personagem
(Jogador)
r
l oca
s
de
Jogo Cena Personagem
jogadorAnda
(Coelho)
Programação orientada a objetos

Personagem
(Guia)

Personagem
(Jogador)

acar
at
Jogo Cena Personagem
jogadorAtaca
(Coelho)
Programação orientada a objetos

Personagem
(Guia)

Personagem
(Jogador)

acar
at
Jogo Cena Personagem
jogadorAtaca
morrer (Coelho)
Projeto orientado a objetos
» Objetos encapsulam comportamento e dados
» O comportamento do objeto é determinado pelo
seu conjunto de métodos
» Os dados do objeto são variáveis controladas por
ele chamadas atributos

Métodos Atributos

- aparecer() - posX: int


- andar(destino) - posY: int
- atacar(alvo) - ataque: float
- tomarDano(pontos) - defesa: float
- morrer() - hp: float
Python é fortemente OO

» Em Python, praticamente tudo é um objeto


» Valores inteiros são objetos da classe int
» Strings são objetos da classe str
» Números de ponto flutuante são objetos da
classe float
» Listas são objetos da classe list
» etc.
Passagem de mensagem

» Para passar uma mensagem a um objeto, usamos


a seguinte notação

objeto . seletor ( argumentos )

» Objeto: pode ser uma variável ou um objeto


literal escrito no código
» Seletor: o nome da mensagem
» Argumentos: uma lista de argumentos,
exatamente como uma chamada de função
Acesso aos atributos

» A mesma notação pode ser usada para acessar


alguns atributos dos objetos
» complex.real: o valor da parte real de um
número complexo
» complex.imag: o valor da parte imaginária de
um número complexo
» As classes int e float também possuem os
atributos real e imag (float.imag e int.imag
sempre valem zero)
Referências

» Em Python, todas as variáveis são referências


» Uma referência é uma variável indica a
localização de outra variável na memória
» Atribuições não fazem cópia, apenas trocam
uma referência por outra
Fundamentos de Python

» Como fazer…
» Um comando de seleção (if) para ler um
número de teclado e verificar se ele é par
» Um comando de seleção com alternativa
(else) para imprimir um valor não negativo
» Um comando de seleção com múltiplas
passagens (if..elif..else) para verificar se
uma pessoa pode ou não votar com base na
idade
» Laços de repetição
Fundamentos de Python

» Como fazer…
» Um laço de repetição usando while para
encontrar o mdc entre dois números
» Uma lista com diferentes tipos de dados
» Impressão de valores usando f-strings e o
método str.format
» Um laço de repetição usando for in
Questões?

https://xkcd.com/353/

Você também pode gostar

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy