0% acharam este documento útil (0 voto)
10 visualizações

Introdução - Python

Enviado por

Guilherme Vieira
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)
10 visualizações

Introdução - Python

Enviado por

Guilherme Vieira
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/ 178

ALGORITMOS & LINGUAGENS DE

PROGRAMAÇÃO (PYTHON)

Prof. Guilherme Vieira (UFSC)

2024.1
G.E.Vieira 2
• Programming languages used in most popular websites
https://en.wikipedia.org/wiki/Programming_languages_used_in_most_popular_websites

Top 8 Programming Languages for Building Android Apps


•Java.
•Kotlin.
•Dart.
•C#
•C++
•Python.
•Lua.
•JavaScript.

https://techvidvan.com/tutorials/best-programming-languages-for-android-app-
development/

G.E.Vieira 3
"Introdução a Linguagens de Programação:
Python"
• Conceitos fundamentais
• Tipos primitivos de dados
• Memória, constantes e variáveis
• Operadores aritméticos, lógicos e relacionais
• Comandos básicos de atribuição, entrada e saída
• Funções primitivas
• Estruturas condicionais
• Estruturas de repetição
• Noções de programação orientada a objetos (POO)
• Integração com banco de dados
• Integração com planilhas eletrônicas
G.E.Vieira
4
Bibliografia Recomendada

Livro

MENEZES, Nilo N. C. Introdução à programação com Python -


Algoritmos e lógica de programação para iniciantes. Novatec. 3a
Edição.

G.E.Vieira
5
Implementação de Algoritmos(*)
• Conceitos Fundamentais
• Tipos básicos de dados
• Memória, constantes e variáveis
• Operadores Aritméticos, Lógicos e Relacionais
• Comandos básicos de atribuição, entrada e saída
• Funções primitivas
• Estruturas Condicionais
• Estruturas de Repetição
Fonte principal: Diego Oliveira
(IFRN)​(http://docente.ifrn.edu.br/diegooliveira/disciplinas/algoritmos-acessivel-
para-leitores-de-tela/)​ G.E.Vieira
6
Conceitos Fundamentais
• Um Algoritmo serve para representar uma solução
para um problema
• É uma linguagem intermediária entre a humana e as
de programação
• Pode ser representado como:
– Narrativa
– Fluxograma
– Pseudocódigo

G.E.Vieira
7
Conceitos Fundamentais
• Narrativa: nesta forma de representação, os algoritmos
são expressos em linguagem natural (é o “passo a
passo”)

• Exemplo: Consertar uma torneira(*)


– Passo 1. Interrompa o fornecimento de água.
– Passo 2. Retire a porca da gaxeta.
– Passo 3. Remova o parafuso que prende a vedação.
– Passo 4. Substitua a vedação antiga.
– Passo 5. Encaixe a nova arruela.
– Passo 6. Liberte o fornecimento de água.

(*) Fonte: https://torneiraeletronica.com.br/conteudo/como-consertar-uma-torneira-com-vazamento-


em-6-passos-simples/30
G.E.Vieira
8
Conceitos Fundamentais
• Fluxograma: é uma representação gráfica dos
algoritmos
– Cada figura geométrica representa diferentes ações
– Facilita o entendimento das ideias contidas no algoritmo

G.E.Vieira
9
Conceitos Fundamentais
• Elementos do fluxograma:
– Início e fim de programa
• Representados por uma elipse
– Operação de Atribuição
• Representada por um retângulo
– Operação de Entrada de Dados
• Representada por um retangulo com un dos cantos
dobrados (como em uma folha de papel)
– Decisão
• Representada por um losango
– Operação de Saída
• Representada por um retângulo com um dos lados
recordado de maneira ondulada
G.E.Vieira
10
Conceitos Fundamentais
• Exemplo de fluxograma:
– Início (dentro de uma elipse)
– Calcular média de duas notas (dentro de um retângulo
com um dos cantos dobrados)
– A média para passar é 7 (dentro de um retângulo)
– Indicar “Aprovado” ou
“Reprovado” como saída (verifica se a média é maior ou igual
a 7 dentro de um losango)
– Se a média for maior ou igual a 7 imprime “Aprovado”
dentro de um retângulo com um dos lados recortado
de maneira ondulada
– Se a média for menor do que 7 imprime “Reprovado”
dentro de um retângulo com um dos lados recortado
de maneira ondulada
– Fim de programa (dentro de uma elipse)

G.E.Vieira
11
Conceitos Fundamentais

• Pseudocódigo: forma de representação de algoritmos rica em detalhes


• É uma aproximação do código final a ser escrito em uma linguagem de
programação
• Algoritmo é uma palavra que indica o início da definição de um algoritmo em
forma de pseudocódigo
• <nome_do_algoritmo> é um nome simbólico dado ao algoritmo com a
finalidade de distingui-los dos demais
• <declaração_de_variáveis> consiste em uma porção opcional onde são
declaradas as variáveis globais usadas no algoritmo principal e,
eventualmente, nos subalgoritmos
• <subalgoritmos> consiste de uma porção opcional de pseudocódigo onde são
definidos os subalgoritmos
• Início e Fim são respectivamente as palavras que delimitam o início e o término
do conjunto de instruções do corpo do algoritmo

G.E.Vieira
12
Conceitos Fundamentais

• Algoritmo da média de duas notas em


pseudocódigo:
Algoritmo Media
Início
Var N1, N2, MEDIA: real;
Leia (N1, N2);
MEDIA ← (N1 + N2) / 2;
Se MEDIA >= 7 então
Escreva “Aprovado”
Senão
Escreva “Reprovado”;
Fim_se
Fim
G.E.Vieira
13
Exemplo (feito em aula)

Escreva um algoritmo que receba três notas: N1(50%), N2(30%) e


N3(20%) e informe a média e se o estudante está Aprovado (Média >=
6), Reprovado (Média < 3) ou Em Recuperação (3 <= Média < 6).

G.E.Vieira 14
• Passo1: Ler as notas N1, N2, N3
• Passo2: Calcular média ponderada: m =
0.5N1+0.3N2+0.2N3
• Passo3: Se m >= 6: Escrever "Aprovado"
Caso contrário ("se não"):
Se m >= 3: Escrever "Em rec."
Caso contrário: Escrever "Reprovado"

G.E.Vieira 15
Tipos Básicos de Dados
• Dados Numéricos Inteiros
– São os números positivos e negativos sem casas
decimais
• Dados Numéricos Reais
– São os números positivos e negativos que possuem
casas decimais
• Dados Literais (strings ou textos (frases ou
palavras)
– São sequências de caracteres
• Dados Lógicos ou Booleanos
– Podem ser verdadeiros ou Falsos, apenas
• Dados temporais (Data/Hora)
G.E.Vieira
16
Tipos Inteiros

Os tipos inteiros básicos no padrão ANSI são mostrados a seguir.


O "tamanho" do tipo (sizeof) é o número de bytes necessários para a representação.
Os tipos abaixo são da linguagem C/C++ (em Python geralmente não precisa declarar o
tipo):

Tipo sizeof Faixa de valores


char 1 -128...127 ou 0...255 (depende da implementação)
unsigned char 1 0...255
signed char 1 -128...127
int 2 ou 4 -32.768...32.767 (32 bits) -2.147.483.648...2.147.483.647 (64 bits)
unsigned int 2 ou 4 0...65.535 (32 bits) ou 0...4.294.967.295 (64 bits)
short 2 -32.768...32.767
unsigned short 2 0...65.535
long 4 -2.147.483.648...2.147.483.647
unsigned long 4 0...4.294.967.295
Sugestão: https://www.programiz.com/c-programming/c-data-types

G.E.Vieira 17
Tipos Reais e Booleanos

Novamente, os tipos abaixo são da linguagem C/C++ (em Python


geralmente não precisa declarar o tipo):

Tipos Reais
Os tipos reais (de ponto flutuante) básicos são:
Tipo sizeof Faixa de valore Precisão
float 4 1.2E-38...3.4E+38 6 dígitos
double 8 2.3E-308...1.7E+308 15 dígitos
long double 10 3.4E-4932...1.1E+4932 19 dígitos

Tipo booleano (bool)


A especificação C ANSI original não possui um tipo booleano.
Em seu lugar, toda variável ou expressão cujo resultado seja zero
(ou nulo) é avaliada como FALSA; caso o resultado seja diferente
de zero (ou não-nulo), a variável ou expressão é considerada
VERDADEIRA, inclusive para valores negativos.
C++ tem boolean como true ou false. Em Python, são True e False.

G.E.Vieira 18
Constantes

Constantes
Existem na maioria das linguagens de programação, mas não em Python.

Python é case sensitive e portanto "programação" é diferente de


"Programação" que é diferente de "PROGRAMAÇÃO".

G.E.Vieira 19
Variáveis
• O armazenamento de informações pelo computador em sua
memória, se dá em uma região nomeada através de uma
variável
• Uma variável possui:
– NOME
– TIPO
– CONTEÚDO
Entretanto, geralmente não há necessidade de declaração
explícita de variável em Python.
• As regras para nomes de variáveis mudam de uma
linguagem para outra, entretanto
• Não se começa por número e não pode existir espaço no
nome da variável.
G.E.Vieira
20
Variáveis
• Geralmente variáveis devem ser declaradas
e antes de serem utilizadas (exceções, p.exe.
Python, MatLab)
• Ao declarar uma variável, o computador reserva
um espaço na memória para ela
• A memória é constituída de bytes, que são
conjuntos de 8 bits
• Cada tipo de variável ocupa um tamanho diferente
na memória, isso varia para cada linguagem de
programação

G.E.Vieira
21
1 bit 2 valores 0 ou 1 (binary digit)
1 Byte 8 bits 256 valores
2 Bytes 16 bits 65536

4 Bytes 32 bits 4294967296

10 Bytes 80 bits 1,20893E+24


10^3 --> 2^10 =
K 1024
M 10^6
G 10^9
T 10^12

G.E.Vieira 22
Operadores
• Os operadores podem ser:
– Lógicos
– Aritméticos
– Relacionais
• Cada tipo de operador tem sua função específica e
uma ordem de precedência

G.E.Vieira
23
Operadores

• Operadores Lógicos:
Lista de Operadores Lógicos
Operador QTD de Operadores Operação Prioridade
.OU. binário disjunção 3
.E. binário conjunção 2
.NAO. unário negação 1

G.E.Vieira
24
Operadores

• Operadores Aritméticos
Lista de Operadores Numéricos
Operador QTD de operadores Operação Prioridade
+ binário adição 4
- binário subtração 4
* binário multiplicação 3
/ binário divisão 3
** binário exponenciação 2
+ unário conservação do 1
sinal
- unário inversão do sinal 1

G.E.Vieira
25
Operadores

• Operadores Relacionais:
Lista de Operadores Relacionais
Operador QTD de Operadores Operação
= binário igualdade
< binário Menor que
> binário Maior que
<= binário Menor ou igual
>= binário Maior ou igual
< > ou != binário diferença

G.E.Vieira
26
Atribuição

• Permitem colocar um valor em uma variável:


VAR A = 10;
TEXTO = “Diego”;
• Normalmente, uma variável só pode receber um
valor do seu tipo (cuidado: Python permite
mudanças facilmente).
• Cada linguagem de programação possui tipos
específicos de dados.

G.E.Vieira
27
Entrada
• As operações de entrada permitem que o usuário
forneça dados ao programa (teclado e mouse)
• A entrada também pode ser dada via programas,
scanners, câmeras e outros
• A entrada também pode ser dada via leitura de um
banco de dados.
• Formas simples para se fazer leitura do teclado:
• Input() --> Python ==> retorna TEXTO.

G.E.Vieira
28
Entrada

• Input() --> Python

idade = float(input("Digite sua idade"))


print(idade)
x = 2 * idade
print(x)

nome_cliente = input("Qual é o nome do cliente?")


print(nome_cliente)

idade_cliente = float(input("Qual é a idade do cliente?"))


print(idade_cliente)

G.E.Vieira
29
Saída
• As operações de saída permitem que o programa
forneça informações ao usuário
• Geralmente a saída é feita na tela, mas também pode
ser via rede, impressora, leds, som e outros
• Saída na tela:
• print --> Python

• ESCREVA um programa que leia 3 notas (0..10) e mostre a média


aritmética simples.

• ESCREVA um programa que leia 3 notas (0..10) e mostre a


média ponderada 50%, 30% e 20%.

G.E.Vieira
30
n1 = float(input("Digite a primeira nota: "))
n2 = float(input("Digite a segunda nota: "))
n3 = float(input("Digite a terceira nota: "))

media = (n1 + n2 + n3)/3


print("Média do estudante= ", media)

'''Passo 1: receber as 3 notas


Passo 2: Fazer cálculo da média
passo 3: Exibir a média'''

n1 = float(input("Digite a nota 1: "))


n2 = float(input("Digite a nota 2: "))
n3 = float(input("Digite a nota 3: "))

media = (n1 + n2 + n3)/3

#print("Média= ", media)


print(f"Média= {media:.2f}") --> formatado
(arredondado) para duas casas decimais!!!

G.E.Vieira 31
Do primeiro exemplo em algoritmos

nota1 = float(input("Digite a nota 1: "))


nota2 = float(input("Digite a nota 2: "))
media = (nota1 + nota2)/2
print(media)
if media >= 6:
print("Aluno aprovado!")
else:
print("Aluno reprovado!")

G.E.Vieira 32
Exemplo

Escreva um programa que receba três notas:


N1(50%), N2(30%) e N3(20%) e informe a média
do estudante e se está aprovado (>=6), em
recuperação (>=3 e <6) ou reprovado (< 3).

G.E.Vieira 33
Funções

• Conjuntos de comandos agrupados em um bloco


que recebe um nome
• A função pode ser chamada pelo seu nome
• Permitem o reaproveitamento de código
• Facilitam a manutenção do código
• Facilitam a leitura e entendimento do código
• Proporcionam a modularização do programa

G.E.Vieira
35
Funções
Em Python:
def NOME( PARÂMETROS/ARGUMENTOS):
COMANDOS
Exemplo 1: Crie uma função para soma de dois números
passados como argumento
Exemplo2: Crie uma função soma de dois números
digitados pelo usuário.
Exemplo3: Crie uma função para calcular e mostrar a raiz
"b" de "a".
--> idem mas a função deve retornar o valor da raiz.
Exemplo4: Crie uma função para calcular e mostrar a
média de três números.
G.E.Vieira 36
def soma(a, b):
resultado = a + b
print(f"{a} + {b} = {resultado}")

soma(5, 10)

def soma():
a = float(input("Digite um primeiro número"))
b = float(input("Digite um segundo número"))
resultado = a + b
print(f"{a} + {b} = {resultado:.2f}")

soma()

G.E.Vieira 37
def raiz(a, b):
resultado = pow(a, 1/b)
print(f"raiz({a},{b}) = {resultado}")
raiz(5, 2)

def raiz(a,b):
return pow(a, 1/b)

print(raiz(5,3))

def media(n1, n2, n3):


m = (n1 + n2 + n3)/3
print("Média= ", m)

media(12, 56, 99)


media(-15, 19.4, 1090.3)

G.E.Vieira 38
def media(n1, n2, n3):
m = (n1 + n2 + n3)/3
print(f"Média= {m:.2f}")
return m

y = media(-3.5, 8, 99)
print(y)

def media():
n1 = float(input("Digite o n1: "))
n2 = float(input("Digite o n2: "))
n3 = float(input("Digite o n3: "))

m = (n1 + n2 + n3)/3
print(f"Média= {m:.2f}")
return m

y = media()
print(y)

G.E.Vieira 39
Lista de Exercícios

1. Escreva um programa em Python que pergunte um valor de comprimento


em pés e mostre o correspondente em metros.
2. Escreva um programa em Python que pergunte um valor em graus
Fahrenheit e mostre na tela o correspondente em graus Celsius.
3. Escreva um programa em Python que solicite 2 números e informe:
a) A soma deles;
b) A divisão do quadrado do primeiro pelo segundo;
c) A raiz cúbica da soma dos quadrados;
d) O cosseno da diferença do primeiro número pelo segundo;
e) O módulo do primeiro menos 3 vezes o segundo número.

4. Com uma escada de y metros, apoiada na parede e afastada de x metros,


faça um programa que leia x e y e informe a que altura a escada encosta na
parede.

G.E.Vieira 40
Escopo de Variáveis

• Uma variável GLOBAL pode ser enxergada em


qualquer parte do código.
• Uma variável LOCAL só pode ser enxergada no
escopo em que foi declarada (função).
• PARAMETROS (ou ATRIBUTOS) FORMAIS são
variáveis inicializadas no momento da chamada da
função.
• Tentar ler uma variável fora de seu escopo gera
um erro (de compilação/interpretação).

G.E.Vieira
41
def Soma(a, b):
resultado = a + b
print(a)
return resultado

def Sub(a, b):


resultado = a - b
print(a)
return resultado
x = Soma(2, 7)
print(x)
x = Sub(2, 7)
print(x)
print(a)

G.E.Vieira 42
Estruturas Condicionais
• As estruturas condicionais (if/else) são
utilizadas quando é preciso escolher entre mais de
um caminho possível
• Para se escolher o caminho,
Em Python
• if <>:...
• elif <>: ...
• else: ...

G.E.Vieira 43
• Escreva uma função para receber 3
números, calcular a média e dizer se está aprovado
(>= 6) ou reprovado (<6).

• Escreva uma função para receber


3 números, calcular a média e dizer se está
aprovado (>= 6), em recuperação (>=3 e < 6)
ou reprovado (<3).

• Escreva uma função para dizer se um número inteiro


é par, ímpar ou nenhum dos dois.
G.E.Vieira 44
def media(n1, n2, n3):
m = (n1 + n2 + n3)/3
if (m >= 6):
print("Aprovado com média= ", m)
elif (m >= 3):
print("Em recuperação com média= ", m)
else:
print("Reprovado com média= ", m)

def par(n):
if (n == 0):
print(f"{n} não par e nem ímpar!")
elif (n % 2 == 0):
print(f"{n} é par!")
else:
print(f"{n} é ímpar!")

par(5)
par(-3)
par(0)
par(1000)

G.E.Vieira 45
Exemplo

Com uma escada de 5 metros, apoiada na parede e


afastada de x metros, informe a que altura a escada
encosta na parede.

Na sequencia, informe o ângulo, em graus, que a


escada faz com o chão.

G.E.Vieira 46
(*) em Python:

G.E.Vieira 47
Exemplo

Faça um programa que leia a idade de uma pessoa e


informe se a pessoa é: Criança (< 12 anos),
Adolescente (< 18 anos), Adulto (< 60 anos) ou Idoso
(>= 60 anos).

G.E.Vieira 48
Exemplo:Par ou ímpar
• Como identificar se um número é par ou ímpar?
def par(n):
if (n == 0):
print(f"{n} não é par e nem ímpar!")
elif (n % 2 == 0):
print(f"{n} é par!")
else:
print(f"{n} é ímpar!")

par(10)
par(7)
par(0)

G.E.Vieira 49
Algumas funções matemáticas
ceil(x)  arredonda x para cima
floor(x)  arredonda x para baixo
sin(x), cos(x) etc.  seno, cosseno etc. do ângulo x
(em radianos)
factorial(x)  fatorial de x (em Python, apenas)
abs(x)  módulo de x
pow(x,y)
Mod /// %
(muitas outras funções...)
round(x,n)  arredondar x com n número de dígitos

https://docs.python.org/pt-br/3/library/math.html G.E.Vieira 50
Exemplo

Exemplo... um barco navega a 60 graus e percorre 10


milhas náuticas... quanto percorreu na direção leste?
import math

x = 10 * math.sin(math.radians(60))
print(f"Barco navegou= {x:.2f} MN para leste.")

Exemplo... um barco navega a 60 graus e percorre 10


milhas náuticas na direção norte... quanto percorreu na
direção leste?

G.E.Vieira 51
Arredondar para cima/baixo....

• Arredonde o número 513,7689 de formas


diferentes...

import math
print(math.ceil(513.17689))
print(math.floor(513.17689))
print(round(513.17689, 2))

print(math.factorial(5))

print(math.fabs(-213.7))

G.E.Vieira 52
Potenciação e raiz...

print("O valor de 3**4 é : ", end="")


print(pow(3, 4))

PARA ESCREVER LADO A LADO, MUDA-SE O "end".

print("Digite um número")
n = float(input())
print(f"{n} ",end= "")
print(f"{n**2}",end= "")

G.E.Vieira 53
Exemplo com if/elif/else:

Faça um programa que leia um número (de 1 a 12) e escreva o mês


correspondente (também uma mensagem de erro caso seja digitado um
número não válido.

G.E.Vieira 54
*Em Python:

print("Digite um número que represente um mês do ano: ")


mes = int(input())
if (mes == 1):
print("Janeiro")
elif (mes == 2):
print("Fevereiro")
elif (mes == 3):
print("Março")
elif (mes == 4):
print("Abril")
elif (mes == 5):
print("Maio")
elif (mes == 6):
print("Junho")
elif (mes == 7):
print("Julho")
elif (mes == 8):
print("Agosto")
elif (mes == 9):
print("Setembro")
elif (mes == 10):
print("Outubro")
elif (mes == 11):
print("Novembro")
elif (mes == 12):
print("Dezembro")
else:
print("Mês digitado inválido!") G.E.Vieira 55
Exemplos if/elif/else:
(2) Faça a leitura de um número real positivo ('x') e depois mostre um menu
com as seguintes opções:
(a) x^2
(b) raiz(x)
(c) 3x – 2
(d) x / (x + 5)
(e) sen(x)
(f) raiz_cúbica(x)

G.E.Vieira 56
Exercícios

(1) Supondo que a tarifa do kWh Residencial Normal seja de


R$0,59296 em SC, faça um programa que receba a renda de
uma família e a quantidade de quilowatts consumida pela
residência, calcule e mostre:
(a) O valor total gasto com energia elétrica;
(b) Porcentagem do gasto com energia elétrica em relação à
renda da família;
(c) O valor a ser pago com desconto de 17%.

G.E.Vieira 57
consumo = float(input("Qual foi o consumo - kwh - no mês? "))
gasto = 0.57302 * consumo
renda = float(input("Qual foi a renda da família no mês? "))
print(f"Valor gasto com energia elétrica R$ {gasto:.2f}")
porc = (gasto/renda)*100
print(f"Porcentagem da renda com energia elétrica {porc:.2f}%")
#gasto = gasto*0.83
print(f"Valor gasto com energia elétrica com desc. 17% R$ {(gast
o*0.83):.2f}")

G.E.Vieira 58
Exercícios

(2) Faça um programa que receba o custo de um espetáculo e o


preço do convite desse espetáculo. O programa deverá calcular
e mostrar a quantidade mínima de ingressos que devem ser
vendidos para que o valor arrecadado seja 40% maior que o
custo do espetáculo.

G.E.Vieira 59
print("Entre com o custo do espetáculo e o valor do ingresso: ")
custo_espetaculo = float(input())
valor_ingresso = float(input())
qtdade_ingressos_vendidos = (1.4 * custo_espetaculo) / valor_ingresso
print("Número de ingressos que precisam ser vendidos: ",
math.ceil(qtdade_ingressos_vendidos))

import math
custo = float(input("Custo do espetáculo? R$ "))
convite = float(input("Valor do convite? R$ "))
custof = 1.4 * custo
venda_esperada = math.ceil(custof / convite)
print("Número mínimo de convites para vender= ", venda_esperada)

G.E.Vieira 60
Exercícios

(3) Faça um programa que determine a data cronologicamente


maior entre duas datas fornecidas pelo usuário. Cada data deve
ser composta por três valores inteiros, em que o primeiro
representa o dia, a segundo, o mês e o terceiro, o ano.

G.E.Vieira 61
String
Entrada usando strings:
(*) Em Python
--> para strings:
https://www.devmedia.com.br/tipos-de-dados-em-python-string/40669:
nome_1 = "Ricardo Alves"
nome_2 = 'Joana Melo'
print(type(nome_1)) ==> função type retorna o tipo 'str'
print(type(nome_2)) ==> função type retorna o tipo 'str'
print(nome_1[0]) ==> R
print(nome_1[0:3]) ==> Ric

– Concatenação de Strings
– Comparação de Strings
– Principais métodos de Strings
– Método find()
– Método replace()
– Método split()
– Método upper()
– Método lower()
Acentuação no Python

G.E.Vieira 62
nome1 = 'João BaTISta'
nome2 = "Pedro"

#print(f"{nome1} é amigo de {nome2}")

type(nome1)
print(nome1.capitalize())

nome3 = nome1.casefold()
print(nome3)

nome1 = "Joana"
print(nome1)
print(nome3)

G.E.Vieira 63
texto = "Hoje temos um dia ensolarado, mas com possibilidade d
e chuvas."

print(texto.find("temos"))
print(texto.replace("temos", "TEMOS"))
print(texto.replace("as", "AS"))

print(texto.upper())
print(texto.lower())

print(texto.count("as"))
print(texto.title())
print(len(texto))

print(texto[5])
print(texto[:5])
print(texto[5:])
print(texto[2:5])
print(texto[-5:])

G.E.Vieira 64
Exercícios

(4) Faça um programa que receba o código correspondente ao cargo


de um funcionário e seu salário atual e mostre o cargo, o valor do
aumento e seu novo salário. Os cargos e percentuais de aumento
estão na tabela a seguir: (Use "strings".)

G.E.Vieira 65
G.E.Vieira 66
Estruturas de Repetição
• As estruturas de repetição permitem que um trecho
de código seja repetido até que uma condição seja
satisfeita
• Os laços, ou loops, em Python podem ser:
– FOR
– WHILE

G.E.Vieira
67
Estruturas de Repetição

O laço FOR é utilizado quando a quantidade de repetições


desejada é conhecida.

Em Python, por exemplo:


for n in range(0,10,1): # igual à range(10)
print(n)

lista = list(range(1, 25, 1))


print(lista)

lista = list(range(25, 1, -2))


print(lista)

for x in range(26):
if (x%3 == 0):
print(x)

G.E.Vieira
68
x= range(1,50, 5)
for i in x:
print(i)

sul = ['SC', 'PR', 'RS']


for i in sul:
print(i)
for i in range(0,3):
print(sul[i])
G.E.Vieira 69
Exemplos
1. Faça um programa que leia 'n' nomes e depois de ler todos, escreva-os.
(No primeiro momento, a lista (para guardar os nomes) deve estar vazia! Use
o método "append" para adicionar nomes à lista.)
2. Faça um programa que, após ler o valor de x e n, mostre os n
primeiros elementos da sequência: (depois, calcule e mostre a média desses
'n' elementos)
(A) x, (x^2)/2, (x^3)/3 --> x^n / n
(B) 1, x, (x^2)/2, (x^3)/3
3. Faça um programa que mostre os 'n' primeiros elementos da sequência
de Fibonacci.
4. Faça um programa que mostre todos os números primos até um dado
número 'n' positivo.
5. Faça um programa que leia "n" idades e mostre a média das idades...
(depois a maior e a menor.) --> não precisa usar listas
6. Faça um programa que, usando listas, receba "n" salários e o nome dos
respectivos funcionários. Depois, mostre a média salarial e os nomes dos
funcionários com maior e menor salários. G.E.Vieira 70
Curiosidades sobre a sequência de Fibonacci

• The nature of design: the Fibonacci sequence and


the Golden Ratio
• 14 INTERESTING EXAMPLES OF THE GOLDEN
RATIO IN NATURE

G.E.Vieira 71
1. Faça um programa que leia 'n' nomes e depois de
ler todos, escreva-os.
nomes = [] #lista de nomes
n = int(input("Quantos nomes devem ser lidos? "))
for i in range(n):
nome = input("Digite um nome: ")
nomes.append(nome)
print(nomes)

#outra forma de mostrar o resultado:


for i in nomes:
print(i)

G.E.Vieira 72
2. Faça um programa que, após ler o valor de x e n,
mostre os n primeiros elementos da sequência:
(depois, calcule e mostre a média desses 'n'
elementos): 1, x, (x^2)/2, (x^3)/3 ... --> x^n / n

G.E.Vieira 73
(A)
x = float(input("Qual é o valor de x? "))
N = int(input("Quantos elementos da sequência? "))
for n in range(1,N+1):
elemento = round((x ** n) / n, 2)
print(elemento, end= " ")

B)
x = float(input("Qual é o valor de x? "))
N = int(input("Quantos elementos da sequência? "))
for n in range(N):
if n == 0:
elemento = 1
else:
elemento = round((x ** n) / n, 2)
print(elemento, end= " ")

G.E.Vieira 74
Uma outra solução bem parecida:

G.E.Vieira 75
3.Faça um programa que mostre os 'n' primeiros elementos da sequência
de Fibonacci.​

n = int(input("Quantos elementos da sequência vc deseja ver?" ))


for i in range(n):
if i == 0:
n1 = 0
print(n1)
elif i == 1:
n2 = 1
print(n2)
else:
n3 = n1 + n2
print(n3)
n1, n2 = n2, n3
''' é igual a:
n1 = n2
n2 = n3'''

G.E.Vieira 76
3.Faça um programa que mostre os 'n' primeiros elementos da sequência
de Fibonacci.​

OUTRA SOLUÇÂO:

n = int(input("Quantos elementos da SF vc deseja ver? "))


for i in range(n):
if i == 0:
n1 = 0
print(n1, end= " ")
elif i == 1:
n2 = 1
print(n2, end= " ")
else:
n3 = n1 + n2
print(n3, end= " ")
n1, n2 = n2, n3

G.E.Vieira 77
4. Faça um programa que mostre todos os números primos até um
dado número 'n' positivo.
def eh_primo(n):
nd = 0
for i in range(1,n+1):
if (n % i == 0):
nd = nd + 1
if (nd > 2):
break
if (nd == 2):
return True
else:
return False
n = int(input("Digite um número e eu te direi todos os números
primos até ele!"))
for i in range(1, n+1):
if eh_primo(i):
print(i, end= " ")

G.E.Vieira 78
4. Faça um programa que mostre todos os números primos até um dado número 'n'
positivo (outra solução).

G.E.Vieira 79
4. Faça um programa que mostre todos os números primos até um dado número 'n'
positivo (outra solução)... mais outra solução:

def eh_primo(n):
cont = 0 #conta número de divisores
for i in range(1, n+1):
if n % i == 0:
cont = cont + 1
if cont > 2:
return False
if cont == 2:
return True
else:
return False

n = int(input("Até que número vc deseja ver os números primos?"))


for i in range(1,n+1):
if eh_primo(i):
print(i, end=" ")

G.E.Vieira 80
5. Maior, menor e média das idades:

soma = 0
n = int(input("De quantas idades vc deseja fazer a média?"))
for i in range(n):
idade = float(input("Digite uma idade: "))
soma = soma + idade # igual a escrever: soma += idade
if i == 0:
menor = idade
maior = idade
else:
if idade < menor:
menor = idade
if idade > maior:
maior = idade
media = soma / n
print(f"A média das idades é: {media:.2f}")
print("A maior idade lida foi ", maior)
print("A menor idade lida foi ", menor)

G.E.Vieira 81
5. Maior, menor e média das idades: (outra solução)

soma = 0 #somatório
n = int(input("Quantas idades devem ser lidas?"))
for i in range(n):
idade = float(input("Digite uma idade: "))
soma = soma + idade # poderia ser escrito tbém como "soma
+= idade"
if i == 0:
menor = maior = idade
else:
if idade > maior:
maior = idade
if idade < menor:
menor = idade
media = soma / n
print(f"Média das idades= {media:.2f}")
print("Menor idade lida= ", menor)
print("Maior idade lida= ", maior)
# ou em uma única linha:
print(f"Média das idades= {media:.2f}, menor idade= {menor} e
maior idade= {maior}") G.E.Vieira 82
Estruturas de Repetição

O laço WHILE é utilizado para que a repetição


aconteça enquanto uma condição permaneça
verdadeira.

G.E.Vieira
83
Exemplo #1 com while...

• Digite um número e mostre o número digitado,


enquanto não for digitado o número zero.

(Pelo menos 3 formas de fazer.)

G.E.Vieira 84
#Digite um número e mostre o número digitado, enquanto não for
digitado o número zero.

n = 1
while n != 0:
n = float(input("Digite um número: "))
print("Número digitado foi= ", n)
print("Fim da execução!")

a = True
while a == True:
n = float(input("Digite um número: "))
print("Número digitado foi= ", n)
if n == 0:
a = False

print("Fim da execução!")

G.E.Vieira 85
while True:
n = float(input("Digite um número: "))
print("Número digitado foi= ", n)
if n == 0:
break
print("Fim da execução!")

G.E.Vieira 86
Exemplo #2 com while...

• Digite um nome e mostre o


nome digitado, enquanto não for digitado a palavra
"sair". Obs.: Como considerar diferentes formas de
escrever o "sair", p.exe.: "Sair", "SAIR", "sair"?

G.E.Vieira 87
#Digite um nome e mostre o nome digitado,
#enquanto não for digitado a palavra "sair".
nome = ""
while nome != "sair":
nome = input("Digite um nome: ")
print("Nome (palavra) digitado= ", nome)
print("Fim da execução!")

#Considerando diferentes formas de escrever "sair".


nome = ""
while nome.lower() != "sair":
nome = input("Digite um nome: ")
print("Nome (palavra) digitado= ", nome)
print("Fim da execução!")

G.E.Vieira 88
Exemplo #3 com while...

Enquanto não for dia com sol ou for dia de aula, não ir
para praia. O programa pergunta para o usuário se o
dia é de sol e se tem aula. Use "s" para sim e "n"
para não. Programa fica mostrando se vai ou não
para praia no dia. O programa finaliza quando "for
para praia". (Obs.: também pode ser resolvido com
variáveis booleanas "True" e "False" se preferir,
entretanto, Python não tem leitura de teclado ("input")
que gere valor booleano (true ou false). Para isto,
poderia ser implementando uma função.)

G.E.Vieira 89
sol = 'n'
aula = 's'
while (sol == 'n' or aula == 's'):
sol = input("Tem sol hoje? (s/n): ")
aula= input("Tem aula hoje? (s/n): ")
if (sol == 's' and aula == 'n'):
print("Vamos para praia!")
else:
print("Não vai rolar praia hoje!")
print("Fim da execução!")

def trueCheck(): response = input("True or False?") if


response == "True": return True if response == "False":
return False
def trueCheck(response): if response == "True":
return True if response == "False": return False

Fonte: https://stackoverflow.com/questions/68239507/how-to-get-a-
boolean-input-from-the-user-in-python

G.E.Vieira 90
#outra solução:
while True:
sol = input("Vai dar sol amanhã? s/n")
aula = input("Vai ter aula amanhã? s/n")
if sol == 's' and aula == 'n':
print("Vamos para praia!")
break
else:
print("Não vai rolar praia!")

print("Fim da execução!")

G.E.Vieira 91
Exemplo #4 com while...

• Crie um menu que leia dois números reais "a" e "b"


e tenha as seguintes opções:
– (1) a^2 – 3*b + 2
– (2) raiz quadrada de |a * b|
– (3) a * b^4 – sin(a * b)
– (4) sair

G.E.Vieira 92
import math
opcao = 1
while opcao != 4:
a = float(input("Digite o valor de a= "))
b = float(input("Digite o valor de b= "))
print('''
(1) a^2 – 3*b + 2
(2) raiz quadrada de |a * b|
(3) a * b^4 – sin(a * b)
(4) sair ''')
opcao = int(input("Escolha uma opção do menu: "))
if (opcao == 1):
resultado = a ** 2 - 3 * b + 2
if (opcao == 2):
resultado = math.sqrt(abs(a * b))
if (opcao == 3):
resultado = a * (b**4) - math.sin(a * b)
if (opcao != 4):
print("Resultado = ", resultado)

G.E.Vieira 93
Exercícios com while...
1. Faça um programa que fique lendo um número inteiro positivo, de zero a
nove, e fique mostrando na tela seu valor, enquanto este número for
diferente de 0.

2. Faça um programa que fique lendo um número real e mostrando na tela


seu valor, enquanto este número for menor que 10.

3. Faça um programa que fique lendo um nome enquanto este nome for
diferente de 'Carlos'. O programa deve ir mostrando uma mensagem
com o nome lido.

4. Faça um programa que mostre os elementos da sequência de Fibonacci


(SF) até um determinado valor máximo 'n'.

5. Encontre a soma e a média dos valores no exercício anterior.

G.E.Vieira 94
n=float(input("Digite um número:"))
while (n < 10):
print("n= ", n)
n=float(input("Digite um número:"))

G.E.Vieira 95
G.E.Vieira 96
Continuando exercício da SF

• Calcule e mostre a média dos elementos da SF até o


maior elemento da sequência.

G.E.Vieira 97
G.E.Vieira 98
Uma outra solução...

G.E.Vieira 99
Exercícios (Estruturas de Repetição)

G.E.Vieira 100
G.E.Vieira 101
Exercícios (Estruturas de Repetição)
Número de Euler (Aproximação)
= 2,7182818285
O número de Neper, escrito com dez casas decimais, é e = 2,7182818285 (a
última casa decimal resulta de arredondamento). Na Natureza, o número de
Neper aparece, por exemplo, associado à desintegração radioativa.

G.E.Vieira 102
import math #PYTHON

E = 1
n = int(input("Digite um número inteiro positivo: "))
for i in range(1,n+1):
E = E + 1/math.factorial(i)
print("E= ",E)

OU

E = 0
n = int(input("Digite um número inteiro: "))
for i in range(n+1):
E = E + 1/math.factorial(i)
print("E= ",E)

G.E.Vieira 103
Outra solução (Python):
#import math
#print(math.factorial(5))

def Factorial(n): # --> se fossemos implementar a fatorial!


fat = 1
for i in range (1,n+1):
fat = fat * i
return fat
print(Factorial(5))

def Factorial2(n): #com recursividade


if n == 0:
fat = 1
else:
fat = n * Factorial2(n-1)
return fat
print(Factorial2(5))

N = int(input("Digite um valor para N inteiro e positivo: "))


E = 0
for i in range(0, N+1):
E = E + (1/Factorial(i))
print("Valoar aproximado do e= ", E)

G.E.Vieira 104
Exercícios (Estruturas de Repetição)

G.E.Vieira 105
Listas

• Índices começam em zero !!!


• Listas: tamanho variável -- alocação dinâmica de memória

• Uma lista (list) é uma sequência ou coleção ordenada de valores.


Cada valor na lista é identificado por um índice. O valores que
formam uma lista são chamados elementos ou itens.

• Em Python, uma lista pode conter elementos de diferentes tipos.

• Podemos usar listas para implementar filas e pilhas.

G.E.Vieira 106
"list" (Classe Lista em Python)
Method Description
append() Adds an element at the end of the list
clear() Removes all the elements from the list
copy() Returns a copy of the list
count() Returns the number of elements with the specified value

extend() Add the elements of a list (or any iterable), to the end of
the current list
index() Returns the index of the first element with the specified
value
insert() Adds an element at the specified position
pop() Removes e return the element at the specified position

remove() Removes the first item with the specified value

reverse() Reverses the order of the list


sort() Sorts the list

len(x) --> número de elementos ou comprimento de x


G.E.Vieira 107
A = [2, -1, 3, 0, 8]
A = [2, -1, 3, 0, 8]
B = []
print(A) print(A)
print(A[2]) print(A[1])
B.append("Bom dia a todos.") B = []
print(B) B.append(5)
B.append("Como vcs têm passado?") B.append(-2)
print(B)
print(B)
C = A.copy()
A.clear() C = B.copy()
print(A) print(C)
print(C) B.clear()
C.append(-1) print(B)
print(C) print(C)
print(C.count(-1))
D = ['Boa tarde pessoal!', 'Hoje tem EPS
print(B.count("Bom dia a todos."))
C.extend(B) 7001.']
print(C) print(D)
B.insert(1,"Valeu pessoal!") print(D[1].lower())
print(B) print(D[1].upper())
print(C) A.extend(D)
x = C.pop(2)
print(A)
print(x)
print(C) D.clear()
x = C.remove("Bom dia a todos.") print(len(D))
print(x) # None print(A)
print(C) print(len(A))
C.reverse() A.count(3)
print(C)
A.count('Boa tarde pessoal!')
B.sort(reverse=True)
print(B) print(A.index(8))
B.sort() print(A.index('Boa tarde pessoal!'))
print(B) A.insert(2, '20/04/2023')
A = [2, -1, 3, 0, 8] print(A)
A.sort() x = A.pop(2)
print(A)
print(A) G.E.Vieira 108
Listas (Python)

A = [2, 3, -2, 5]

print(A)
print(A[1])
for elemento in A:
print(elemento, end = " ")
print()
A[2] = A[2] * 3
for elemento in A:
print(elemento, end = " ")
print()
A.append(8)
A.append(-1)
print(A)
elemento = A.pop(2)
print(elemento)
print(A)
A.sort()
print(A)

nomes = ["Ana", "Lúcio", "Thiago", "Roberta"]


print(nomes)
nomes[3] = "Robertha"
print(nomes)

G.E.Vieira 109
Em Python:
x = [1.2, 3.7, -0.9, 2.3, -4.9]

print(x)
x.sort() --> em ordem crescente
print(x)
x.sort(reverse=True) --> em ordem decrescente
print(x)
print("Maior elemento de x= ", x[0])
print("Menor elemento de x= ", x[4])

G.E.Vieira 110
Exemplo

Faça um programa que leia e mostre o


nome lido enquanto o nome digitado não
fizer parte da lista de nomes:
• Carlos
• Joana
• Cibele
• Guilherme

G.E.Vieira 111
G.E.Vieira 112
Exemplo

A = [2, 5, 7, -2]
B = [3, -1, 0, 6]
• C = A + B --> C[i] = A[i] + B[i]
• Mostre C
• D = Maior(A, B) --> D[i] = Maior(A[i], B[i])
• Mostre D
• E = Menor(A, B) --> E[i] = Menor(A[i], B[i])
• Qual é o maior e o menor elementos de D?
• Qual é a média dos elementos de D?
• Dica: Python tem as funções "max" e "min" prontas.
G.E.Vieira 113
A = [2, 5, 7, -2]
B = [3, -1, 0, 6]
C = []
D = []
E = []
soma = 0
for i in range(4): #3 formas de fazer:
C.append(A[i] + B[i])
#C = C + [A[i] + B[i]]
#C.extend([A[i] + B[i]])
D.append(max(A[i],B[i]))
E = E + [min(A[i],B[i])] # só para implementar de outro j
eito.
soma = soma + D[i] # isto é igual a: soma += D[i]

print(C)
print(D)
print(E)
print("Maior elemento de D= ", max(D))
print("Menor elemento de D= ", min(D))
avg = soma / 4
print("Média dos elementos de D= ", avg)

G.E.Vieira 114
Exercício

Sendo um vetor ("lista") x = [12.4, -5, 34.7, -45.1, 32.9, 18.7,


0.67] e y= [1.1, 6.5, 4.7, -5.1, 12.9, -28.4, 8.7] encontre:

a) Soma dos elementos de x[ ]


b) Média dos elementos de x[ ]
c) z[ ] = x[ ] + y[ ] --> z[i] = x[i] + y[i]
d) m = Σ(x[i] * y[i])
e) k[ ] = Sequência inversa de x[ ]
f) Maior elemento de y[ ]
g) Menor elemento de y[ ]
h) x[ ] em ordem crescente
i) y[ ] em ordem decrescente

G.E.Vieira 115
Python permite:
x[i],x[j] = x[j],x[i]

G.E.Vieira 116
Exercício

G.E.Vieira 117
cid = ["","","","",""] #SOLUÇÃO SIMPLES, SEM APPEND !
nvp = [0,0,0,0,0]
natv = [0,0,0,0,0]
iat = [0,0,0,0,0]
for i in range (0,5,1):
print("Digite o código da cidade " + str(i+1) + ": ")
cid[i] = input()
print("Digite o NVP da cidade " + str(i+1) + ": ")
nvp[i] = float(input())
print("Digite o NATV da cidade " + str(i+1) + ": ")
natv[i]= float(input())

iat[i] = natv[i] / nvp[i]

if (i==0):
menor_iat = maior_iat = iat[i]
cid_menor_iat = cid_maior_iat = cid[i]
else:
if (iat[i] > maior_iat):
maior_iat = iat[i]
cid_maior_iat = cid[i]
if (iat[i] < menor_iat):
menor_iat = iat[i]
cid_menor_iat = cid[i]

print("Cidade com maior IAT= " + cid_maior_iat + " -


IAT= " + str(maior_iat))
G.E.Vieira 118
cid = [] //SOLUÇÃO MAIS "ELEGANTE" (GERAL)
nvp = []
natv = []
iat = []
for i in range (0,5,1):
print("Digite o código da cidade " + str(i+1) + ": ")
cid.append(input())
print("Digite o NVP da cidade " + str(i+1) + ": ")
nvp.append(float(input()))
print("Digite o NATV da cidade " + str(i+1) + ": ")
natv.append(float(input()))

iat.append(natv[i] / nvp[i])

if (i==0):
menor_iat = maior_iat = iat[i]
cid_menor_iat = cid_maior_iat = cid[i]
else:
if (iat[i] > maior_iat):
maior_iat = iat[i]
cid_maior_iat = cid[i]
if (iat[i] < menor_iat):
menor_iat = iat[i]
cid_menor_iat = cid[i]

print(cid)
print(iat)
print("Cidade com maior IAT= " + cid_maior_iat + " -
IAT= " + str(maior_iat)) G.E.Vieira 119
Simplifique: considere 3 times de 5 jogadores. Sugestão: Use um único
vetor para as idades, pesos e alturas. Lance os valores diretamente
nos vetores ao invés de leitura pelo teclado.

(A seguir, mostro alguns itens, mas não todas as respostas...)

G.E.Vieira 120
idades = [17, 20, 21, 22, 19, 18, 16, 19, 20, 21, 22, 20, 19, 20, 19]
alturas = [1.8, 1.7, 1.65, 1.69, 1.71, 1.6, 1.8, 1.81, 1.77, 1.79, 1.68, 1.7, 1.71,
1.8, 1.67]
pesos = [77.5, 69, 70.5, 80.1, 74.7, 67.7, 71.1, 66.9, 69.4, 70.4, 72.3, 74.7,71.3
, 72.4, 67.3]

qtd18 = 0
soma = 0
qtd80kg = 0
for i in range(15):
if (idades[i] < 18):
qtd18 += 1
soma += idades[i]
if (pesos[i] > 80):
qtd80kg += 1

media_idades = soma / 15
print("Quantidade de jogadores com menos de 18 anos: ", qtd18)
print("Média das idades de todos os jogadores= ", media_idades)
porc80 = (qtd80kg / 15) * 100
print("Porcentagem de jogadores com mais de 80kg= ", porc80)

G.E.Vieira 121
Outra solução...
idades = [17, 20, 21, 22, 19, 18, 16, 19, 20, 21, 22, 20, 19, 20, 19]
alturas = [1.8, 1.7, 1.65, 1.69, 1.71, 1.6, 1.8, 1.81, 1.77, 1.79, 1.68, 1.7, 1.71, 1.8, 1.67]
pesos = [77.5, 69, 70.5, 80.1, 74.7, 67.7, 71.1, 66.9, 69.4, 70.4, 72.3, 74.7,71.3, 72.4, 67.3]
qtd18 = 0
soma = 0
soma1 = soma2 = soma3 = 0
qtd80kg = 0
for i in range(15):
if idades[i] < 18:
qtd18 += 1 # qtd18 = qtd18 + 1
soma += alturas[i]
if (i < 5):
soma1 += idades[i]
elif (i < 10):
soma2 += idades[i]
else:
soma3 += idades[i]
if (pesos[i] > 80):
qtd80kg += 1

print("Quantidade de jogadores com menos de 18 anos= ", qtd18)


media_alturas = soma / 15
print("Média das alturas de todos jogadores= ", media_alturas)
mi1 = soma1 / 5
mi2 = soma2 / 5
mi3 = soma3 / 5
print("Média das idades do time 1= ", mi1)
print("Média das idades do time 2= ", mi2)
print("Média das idades do time 3= ", mi3)
porc_80kg = (qtd80kg / 15)*100
print("Porcentagem de jogadores com mais de 80kg= ", porc_80kg)

G.E.Vieira 122
Exercícios

G.E.Vieira 123
Criando uma lista com o range()

L = list(range(100, 1100, 50))


print(L)

G.E.Vieira 124
#só para ser mais rápido, não faremos a leitura
preco = [1.5, 12.2, 5.4, 75, 17.25, 23.5, 17.5, 50, 25, 33.4]
qtd_vendida = [10, 20, 12, 5, 9, 10, 12, 25, 15, 30]
faturamento = [ ]
total_vendas = 0

for i in range(10):
faturamento.append(preco[i]*qtd_vendida[i])
total_vendas += faturamento[i]
if (i == 0):
mais_vendido = qtd_vendida[i]
ind_mais_vendido = i
else:
if (qtd_vendida[i] > mais_vendido):
mais_vendido = qtd_vendida[i]
ind_mais_vendido = i

comissao = 0.05 * total_vendas


print(faturamento)
print(total_vendas)
print(comissao)
salario = 545 + comissao
print(salario)
print(mais_vendido)
print("Indice no vetor do mais vendido: ", ind_mais_vendido)
print("Preço do item mais vendido: ", preco[ind_mais_vendido])
G.E.Vieira 125
Exercícios (Estruturas de Repetição)

Se preferir fazer uma versão mais simples desse exercício:


S = -x + x^2/2! - x^3/3! + ….

G.E.Vieira 126
#EXE 05 PYTHON
import math
S = 0
denominador = [1,2,3,4,3,2]
x = float(input("Digite o valor de x: "))
n = int(input("Digite o número de termos: "))
for i in range(1,n+1,1):
if (i <= 6):
den = denominador[i-1]
else:
den = denominador[(i-1) % 6]
termo = pow(-1,i)*pow(x,i+1)/math.factorial(den)
#print("termo= ", termo)
S = S + termo

print("S= ", S)

G.E.Vieira 127
Lista (Python / C++)

• https://www.w3schools.com/python/python_ref_list.asp
• https://pythonacademy.com.br/blog/listas-no-python

• https://www.javatpoint.com/post/cpp-list
• https://cplusplus.com/reference/list/list/

G.E.Vieira 128
Mais exercícios (Estruturas de Repetição)

Se preferir fazer uma versão mais simples desse exercício:


S = -x + x^2/2! - x^3/3! + ….

S(N = 10, x = 1.5) ?

G.E.Vieira 129
S = -x + x^2/2! - x^3/3! + ….

import math

N = int(input("Digite N: "))
x = float(input("Digite um valor positivo para x: "))
S = 0
for n in range(1,N+1):
S += pow(-1,n)*pow(x, n)/math.factorial(n)
print("S= ", S)

G.E.Vieira 130
Exercícios (Estruturas de Repetição)

G.E.Vieira 131
Exercícios (Vetores)

G.E.Vieira 132
Exercícios (Vetores --> Listas)

3.a2) Como retirar elementos repetidos do vetor (lista) resultante?


3.a3) Como fazer uma cópia do vetor (lista) resultante (de 3a) sem os elementos
repetidos.
3.b) Encontre o vetor que seja composto pelos maiores elementos dentre Vetor 1 e
Vetor 2, em cada posição.
3.c) Encontre um vetor (lista) que seja composto pelos números primos do Vetor 1
e do Vetor 2 (mesmo que sejam repetidos).
3.d) Com base nos vetores 1 em 2, encontre dois outros vetores, cada qual com os
números pares e ímpares (mesmo que sejam repetidos). G.E.Vieira 133
def ehPrimo(n):
nd=1
for i in range(2,n+1):
if (n % i == 0):
nd += 1
if (nd > 2):
return False if (ehPrimo(v1[i])):
if (nd == 2): vp.append(v1[i])
return True if (ehPrimo(v2[i])):
else: vp.append(v2[i])
return False if (v1[i] > 0):
if (v1[i] % 2 == 0):
v1 = [3,5,4,2,2,5,3,2,5,9] vpares.append(v1[i])
v2 = [7,15,20,0, 18, 4, 55, 23,8, 6] else:
vi = [] vimp.append(v1[i])
vm = []
vp = [] if (v2[i] > 0):
vpares = [] if (v2[i] % 2 == 0):
vimp = [] vpares.append(v2[i])
for i in range(10): else:
vi.append(v1[i]) vimp.append(v2[i])
vi.append(v2[i])
vm.append(max(v1[i],v2[i])) print(vpares)
print(vimp)
G.E.Vieira 134
Exercícios (Vetores)

G.E.Vieira 135
vint = []
vpos = []
vneg = []
#construção do vetor de inteiros:
for i in range(8):
x = int(input("Digite um número inteiro: "))
vint.append(x) # vint.append(int(input("Digite um núm
ero inteiro: ")))

#criação dos vetores com positivos e negativos


for i in range(8):
if (vint[i] > 0):
vpos.append(vint[i])
if (vint[i] < 0):
vneg.append(vint[i])

print(vint)
print(vpos)
print(vneg)

G.E.Vieira 136
Exercícios (Vetores)

Faça um programa que em que um cliente possa efetuar reserva de passagem


aérea. O programa deverá ler informações sobre três voos (número, origem e
destino) e o número de lugares disponíveis para três voos (um vetor para cada um
desses dados). Depois da leitura, o programa deverá apresentar um menu com as
seguintes informações:
• Consultar (para mostrar os voos e disponibilidades)
• Efetuar reserva (caso haja disponibilidade); e
• Sair.

G.E.Vieira 137
numero = [] #NÃO ESTÁ ACABADO … SUGESTÃO: FINALIZE ESTA RESOLUÇÃO...
origem = []
destino = []
disponib= []
nvoos = 1

for i in range(nvoos):
numero.append(int(input(f"Digite o número do Voo {i+1}: ")))
origem.append(input(f"Digite o código da origen do Voo {i+1}: "))
destino.append(input(f"Digite o código do destino do Voo {i+1}: "))
disponib.append(int(input(f"Digite o número de assentos disponíveis no Voo {i+1}: ")))

opcao = ''
while opcao != 'S' and len(opcao) == 1:
print("*** MENU: ***")
print("Consultar (para mostrar os voos e disponibilidades) ('c') ")
print("Efetuar reserva (caso haja disponibilidade) ('e')")
print("Sair ('s')")
opcao = input().upper()

if opcao == 'C':
for i in range(nvoos):
print("Voo: " + str(numero[i]) + " ORIGEM: " + origem[i] + " DEST.: " + destino[i] + " Disp.: " + str(disponib[i]))

# if opcao == 'E'

G.E.Vieira 138
Exercícios

Sendo um vetor x = [14, -0.5, 34.7, -45.1, 39, 8.7, 6.7] e y= [1.9, 6.6, 1.7, -15.1, 1.9, 2.4,
-7.7] encontre:

a) Média dos elementos de x + y


b) soma de (x * y)
c) k = Sequência inversa de x
d) Maior e menor elementos de y
e) x em ordem crescente

G.E.Vieira 139
Programação Orientada a Objetos (POO)

• Possivelmente a melhor (eficiente e eficaz) maneira


de se programar!!
• Veremos apenas uma introdução, não será visto
polimorfismo.
• Comecemos com uma classe “Retângulo”
• Use Herança
• Crie a classe "Quadrado", herdando de Retângulo
• C++, Java, C# têm public, private ... Python tudo é
public.

Sugestão de leitura para uma introdução à POO em


Python:
• https://www.datacamp.com/tutorial/python-oop-tutorial

G.E.Vieira
14
Crie 3 retângulos diferentes e mostre: (a) A médias das áreas e (b) O maior
perímetro.

G.E.Vieira 141
class Retangulo: #COM VARIÁVEIS PRIVADAS
def __init__(self, a, b):
self.a = a
self.b = b
self.__area = a * b
self.__perimetro = 2*(a + b)

def Info(self):
print(f"Retângulo com largura= {self.a} e comprimento= {
self.b} tem área= {self.__area} e perímetro= {self.__perimetro}.
")

def Area(self):
return self.__area

def Perimetro(self):
return self.__perimetro

G.E.Vieira 142
• Crie 3 retângulos diferentes e mostre: (a) A médias
das áreas e (b) O maior perímetro.

G.E.Vieira 143
Herança

class Quadrado(Retangulo):
def __init__(self, a):
Retangulo.__init__(self,a,a)

def Info(self):
print(f"Quadrado com lado {self.a} tem área = {self.ar
ea}")

q1 = Quadrado(13)
q2 = Quadrado(10)
q3 = Quadrado(20)

q1.Info()
q2.Info()
q3.Info()

print(q1.Area())
G.E.Vieira 144
class Quadrado(Retangulo):
def __init__(self, a):
self.a = a
Retangulo.__init__(self,a,a)

def Info(self):
print(f"Quadrado com lado= {self.a} tem área= {self.A
rea()} e perímetro= {self.Perimetro()}.")

q1 = Quadrado(10)
q2 = Quadrado(20)

q1.Info()
q2.Info()

G.E.Vieira 145
Crie a classe Círculo.
Métodos "Área" e "Circunferência"
Crie 3 círculos
Mostre a média das 3 áreas.

G.E.Vieira 146
import math
class Circulo:
def __init__(self, raio):
self.raio = raio
self.area = math.pi * pow(raio,2) # raio**2
self.circun= 2*math.pi*raio

def Info(self):
print(f"Área= {self.area} e Circunferência= {self.circun}")

def Area(self):
return self.area

c1 = Circulo(5)
c2 = Circulo(10)
c3 = Circulo(15)
ma = (c1.Area() + c2.Area() + c3.Area())/3
print(f"Médias das áreas= {ma:.2f}")

G.E.Vieira 147
Exercício:
Classes: Pessoa, Empregado e Estudante universitário
Pessoa:
Nome Completo (string/texto)
CPF: (string/texto: nnn.nnn.nnn-nn)
Data de Nascimento: (string/texto: dd/mm/aaaa) Crie métodos para mostrar/retornar
Cidade, Estado e País de nascimento informações em cada uma das classes.
(naturalidade):
Obs.: Na prática, usaríamos tipo "datas".
• Crie 5 empregados... coloque em
uma lista seus salários e mostre o
Empregado: É uma Pessoa, tem mais:
nome (e a empresa) de quem tem o
Empresa: (string/texto) maior salário.
Salário: (número real)
Cargo: (string/texto)
• Crie 5 estudantes... liste-os em
Data de Contratação: (string/texto: dd/mm/aaaa) ordem crescente pelo IAA e seu
respectivo curso.
EstudanteUniversitário: É uma Pessoa, tem mais:
IES: (string/texto)
Número de matrícula: (número)
Curso: (texto)
Data de Ingresso: (string/texto: dd/mm/aaaa)
G.E.Vieira 148
class Pessoa:
def __init__(self, Nome, CPF, DdN, cid_nasc, est_nasc, pais_nasc):
self.Nome=Nome
self.CPF=CPF
self.DdN=DdN
self.cid_nasc=cid_nasc
self.est_nasc=est_nasc
self.pais_nasc=pais_nasc

def Info(self):
print(self.Nome + " " + self.CPF + " " + self.DdN + " " + self.cid_nasc + "/" + self.est_
nasc + "/" + self.pais_nasc)

joao = Pessoa("João Batista","123456789-01", "12/04/2000", "Palhoça", "SC", "Brasil")


maria= Pessoa("Maria Vieira", "888888888-88", "09/03/1995", "São José", "SC", "Brasil")

#joao.Info()
#maria.Info()

class Empregado(Pessoa):
def __init__(self, Nome, CPF, DdN, cid_nasc, est_nasc, pais_nasc):
Pessoa.__init__(self, Nome, CPF, DdN, cid_nasc, est_nasc, pais_nasc)
def contratacao(self, Empresa, Salario, Cargo, DC):
self.Empresa = Empresa
self.Salario = Salario
self.Cargo = Cargo
self.DC = DC
def Info(self):
print(self.Nome + " tabalha na empresa: " + self.Empresa)

e1 = Empregado("João Batista","123456789-01", "12/04/2000", "Palhoça", "SC", "Brasil")


e1.contratacao("B1 Engenharia", 2500, "Assistente de Produção", "15/01/2022")

e1.Info()
G.E.Vieira 149
G.E.Vieira 150
Uso de "matrizes" ou listas de listas (Python) 
Não vamos ter tempo para usar trabalhar com o array (do
NumPy) – mas vale a pena dar uma olhada se for trabalhar
com vetores e matrizes (arrays).
A = [ [1, 2, 3], [4, 5, 6], [7, 8, 9] ]
print(A) #ou

for i in A:
print(i) #ou

for i in range(3):
print(A[i]) #ou

for i in range(3):
for j in range(3):
if j < 2:
print(A[i][j], end= " ")
else:
print(A[i][j])

VER: https://www.programiz.com/python-programming/matrix
G.E.Vieira 152
#Ideia.... "forma geral" para criação de matriz em Python
matriz = [] # lista vazia
n_linhas= 3
n_colunas = 3
for i in range(n_linhas):
linha = [] # lista vazia --- cria a linha i
for j in range(n_colunas):
valor = i * j #só como exemplo
linha.append(valor)
matriz.append(linha) # coloque linha na matriz
print(matriz)

G.E.Vieira 153
Uso de "matrizes" ou
listas de listas (Python)

Leia uma matriz 3 x 3 de números inteiros.


(a) Conte e escreva quantos valores maiores que 5 ela possui.
(b) Qual é a média de todos os valores dessa matriz.
(c) Retorne a localização (linha e a coluna) do maior valor.

G.E.Vieira 154
A = []
#criar 3 linhas e adicioná-las ao A
ne5 = 0
for i in range(3):
for j in range(3):
linha = [] # Cria uma linha nova
elemento = int(input(f"Digite o elemento [{i}][{j}]= "))
linha.append(elemento)
if elemento > 5:
ne5 += 1
if i==0 and j==0:
maior = elemento
i_maior = i
j_maior = j
else:
if elemento > maior:
maior = elemento
i_maior = i
j_maior = j
#A.append(linha[:]) # "append" não cria cópia da lista, mas "aponta" para a list
a, em outras palavras, cria um "apelido" para a lista
A.append(linha)
print(A)
print("Número de elementos maiores que 5= ", ne5)
print(f"Maior elemento= {A[i_maior][j_maior]} na posição: {i_maior} ,{j_maior}")

G.E.Vieira 155
• Como ver apenas 1 (uma) coluna "j" em Python?

A = [ [1, 2, 3], [4, 5, 6], [7, 8, 9] ]

for e in A:
print(e[2])

Ou:

for i in range(3):
print(A[i][2])

G.E.Vieira 156
"Apelido" para matriz (em Python)
def main():
a = [0, 1, 2, 3, 4]
b = a #b é um apelido para a
b[1] = 7
print("a = ", a)
print("b = ", b)

main()

def main():
a = [0, 1, 2, 3, 4]
b = a[:] #b é outra lista, cópia de a
b[1] = 7
print("a = ", a)
print("b = ", b)

main()

G.E.Vieira 157
G.E.Vieira 158
• Crie 2 matrizes: A2x4 (aij= i +2j) e B4x3
(bij= (i+j)^2) --> lembrando que os índices começam
em zero.
• Calcule C = A x B
• Mostre C
• E Mostre C[1][2]

G.E.Vieira 159
Exercício (Revisão)

Para a sequência dada pelo termo geral (2*n + 1),


responda (n >= 1):
– Qual é o 250° elemento ?
– Qual é a soma dos elementos 150° a 200° ?
– Qual é a média dos elementos 120° a 170°?
– Mostre todos os elementos múltiplos de 3 entre 100° e
200°. (Obs. "Mostre todos os elementos múltiplos de 3
entre 100 e 200" é outro exercício.)
– Qual é o 50° elemento múltiplo de 7 ?
– Crie um vetor (x) com os elementos 130° a 150°, então
calcule e mostre um novo vetor (y), feito pela divisão dos
elementos de x pela sua média.

G.E.Vieira 160
def elemento(i): #(2*n + 1)
return 2*i + 1 #Qual é o 50° múltiplo de 7 ?
nm7 = 0
n = 0
#Qual é o elemento 250 ?
while nm7 < 50:
print(elemento(250))
n += 1
if (elemento(n) % 7 == 0):
#Qual é a soma dos elementos 1
nm7 += 1
50 a 200 ?
soma = 0
print(elemento(n))
for i in range(150,201):
soma += elemento(i)
x = []
y = []
print(soma)
soma = 0
for i in range(130, 151):
#Qual é a média dos elementos
x += [elemento(i)] # ou x.append(elemento(i))
120 a 170?
soma += elemento(i)
soma = 0
media = soma / 21
for i in range(120,171):
for i in x:
soma += elemento(i)
y += [i/media]
'''
media = soma / 51
print(media) Ou:
for i in range(21):
y += [x[i]/media]
for i in range(100,201):
if (elemento(i) % 3 == 0):
Ou:
print(i)
y += [i/media for i in x]
'''
print(y)
G.E.Vieira 161
Exercício (Revisão)

Sejam A = (aij)4x4 e B = (bij)4x4 duas matrizes reais definidas por:

Onde i e j >= 1

(a) Mostre a matriz A.


(b) Mostre a matriz B.
(c) Sendo C = A + B, mostre a matriz C.

G.E.Vieira 162
A = []
linha = []
for i in range(4):
for j in range(4):
if i >= j:
elem = i + j
else:
elem = i - j
linha += [elem] # ou usa append
A.append(linha)
linha = []
OU: def a(i, j):
print(A)
if (i >= j):
return i + j
else:
return i - j

A = []
linha = []
for i in range(4):
for j in range(4):
linha += [a(i+1,j+1)]
A += [linha]
linha = []

print(A) G.E.Vieira 163


Exercício (Revisão):
Classes "Animal" e "Cachorro"
• Crie uma classe "Animal":
– Espécie (aves, mamíferos, peixes, répteis etc.)
– Peso
– Idade
• Crie uma classe "Cachorro" (veja a classe “dog” mais a frente, como exemplo):
– Nome
– Latido
– Raça
– Cor predominante
– Métodos: Late(), Aniversario() etc.
• Crie 5 cachorros (nome, peso, raça, idade, latido)
– Use seus métodos
– Mostre a média dos pesos e idades de cachorros da mesma raça.

G.E.Vieira 164
https://www.iberdrola.co
m/sustentabilidade/classi
ficacao-seres-vivos-
G.E.Vieira
reinos-biologicos 165
class Animal:
def __init__(self, especie, peso, idade):
self.especie = especie
self.peso = peso
self.idade = idade

def Info(self):
print(f"{self.especie}/{self.peso}kg/{self.idade}ano(s)")

a1 = Animal("Mamífero",12,1)
a2 = Animal("Réptil",5,2)
a1.Info()
a2.Info()

class Cachorro(Animal):
def __init__(self, nome, raca, latido, peso, idade):
Animal.__init__(self,"Mamífero", peso, idade)
self.nome = nome
self.raca = raca
self.latido = latido

def Info(self):
print(f"{self.nome} tem {self.idade} anos, é da raça {self.raca} e pesa {self.p
eso} kg.")

lulu = Cachorro("Lulu", "Yorkshire", "au-au", 2, 3)


lulu.Info()

G.E.Vieira 166
Exemplo: Class Dog e seu uso

Uma classe Cachorro (“Dog”) com atributos: nome,


idade, latido etc. e métodos: Construtor, Info,
Aniversário etc.

G.E.Vieira 167
G.E.Vieira 168
Exemplo: outra Classe Estudante

Crie uma Classe Estudante:


• 5 atributos: Nome, Sobrenome, Curso (Nome), No.
de Matrícula, Ano de Ingresso.
• 3 Métodos: (a) Construtor, (b) Info, (c) Tempo de
Universidade

Então:
- Crie 2 estudantes
- Mostre suas informações
- Indique o estudante que tem mais tempo de
universidade.
G.E.Vieira 170
class Estudante:
def __init__ (self, nome, sobrenome, numero_mat, curso, ano_ingr):
self.nome = nome
self.sobrenome = sobrenome
self.numero_mat = numero_mat
self.curso = curso
self.ano_ingr = ano_ingr

def Info(self):
print(self.nome + " " + self.sobrenome + " cursa " + self.curso)

def TempoUniv(self, ano):


return ano - self.ano_ingr

e1 = Estudante("Gui","Vieira",123456, "Automação", 2019)


e2 = Estudante("Kika", "Silva", 3453424, "Engenheira de Produção", 2020)
e1.Info()
e2.Info()
if e1.TempoUniv(2022) > e2.TempoUniv(2022):
print(e1.nome + " tem mais tempo de universidade!")
elif e2.TempoUniv(2022) > e1.TempoUniv(2022):
print(e2.nome + " tem mais tempo de universidade!")
else:
print("Ambos têm o mesmo tempo de universidade!")

G.E.Vieira 171
Exercícios POO
1. Crie uma classe para representar/modelar uma “Pessoa” com os atributos: Nome
(string), Endereço (string) e Data de Nascimento (dia, mês e ano são três
números inteiros). Faça também um programa para usar a classe pessoa. O
usuário deve cadastrar 2 pessoas e o programa deve mostrar o nome da pessoa
mais velha.

2. Crie uma classe “Produto” que contenha os atributos: Descrição (string), preço de
compra (real), imposto taxado ("taxa") ao vender (real), taxa de lucro "markup"
(real), estoque (inteiro) atual. Dentre os métodos, inclua um que represente
aquisição (compras do fornecedor) e vendas. Faça também um programa para
usar a classe Produto: Cadastre todas as informações de produto, inclusive o
estoque atual.
Para conseguir atender um pedido ("vender"), deve ser consultado o estoque atual. Só
pode vender o máximo em estoque.
Um pedido de cliente significa que ele deseja comprar "n" unidades de um produto.
Realize 5 vendas de 3 produtos diferentes. Mostre o total das vendas (em unidades e
em valores monetários (R$)). Mostre o lucro total obtido e o total pago em
impostos.
Realize uma reposição de estoque entre as vendas.
G.E.Vieira 172
G.E.Vieira 173
DICA: Uma função para converter data (dia/mês/ano) em número real

N = (ano + mes/100.0 + dia/10000.0);

Ou

N = (ano*10000 + mes*100 + dia);

FACILITA COMPARAÇÃO DE DATAS !!

G.E.Vieira 174
Exercícios POO

3. Defina uma classe Funcionário com os seguintes atributos: Código do


cargo (string), sexo (char) e quantidade de horas trabalhadas (real). Essa
classe deve possuir ainda um método para calcular o salário final, ou
seja, o salário de acordo com o cargo (valor da hora trabalhada
multiplicado pelo número de horas trabalhadas) mais o adicional, ou seja,
20% sobre o salário calculado, caso seja feminino (f ou F) – para o sexo
m (ou M), não há adicional. Faça também um programa que carregue
dados de três funcionários, calcule e mostre seu salário final.

G.E.Vieira 175
Ordenar uma lista...

• Implementar um algoritmo.
• Depois usar o método "sort" .

G.E.Vieira 176
• Dada um sequência de números reais cujo termo
geral é:
a(n) = n^3 + tg(n) - raiz_q(n)

– Crie uma lista (k) com os 10 primeiros elementos.


– Mostre a média desses elementos
– Maior e menor valores
– Crie lista m = k invertido
– Crie lista n = k ordenado crescente
– Crie lista p = k arrendondado para 1 casa decimal

G.E.Vieira 177
x = [18, 22, 21, 20, 17, 23, 21, 18]
'''n = 8
for i in range(0,n-1):
for j in range(i+1, n):
if (x[j] < x[i]): #para ordem CRESCENTE
x[i],x[j] = x[j],x[i]
'''
#usando a função (método) pronta:
x.sort()
print(x)
x.sort(reverse=True)
print(x)

G.E.Vieira 178
Dicionários (Python)

my_dict = {"a": 1, "b": 2}


valor = my_dict["a"]
print(valor)
valor = my_dict.get("a")
print(valor)

• https://kenzie.com.br/blog/dicionario-
python/#:~:text=O%20que%20%C3%A9%20um%20dicion%C3%A1rio,isso%20oc
orre%20de%20forma%20diferente.

G.E.Vieira 179
PySimpleGUI (Python)
import PySimpleGUI as sg

sg.theme("SandyBeach")
sg.set_options(font= "Courier 16", text_color= "black")
layout = [
[sg.T("CADASTRO")],
[sg.T("Nome"), sg.Push(), sg.I(size=(30,1),key='NAME')],
[sg.CalendarButton(button_text="Data de Nascimento",format='%d-%m-
%y',no_titlebar=True,close_when_date_chosen=True,target='DOB',default_date_m_d_y=(1,6,1980)), sg.Push(), sg.I(size=(30,1),key='DOB')],
[sg.T("Sexo"), sg.Push(), sg.Combo(size=(30,1),values=["Female", "Male"],key="GENDER")],
[sg.T("Endereço"), sg.Push(), sg.ML(size=(30,3), key="ADDRESS")],
[sg.Button("Submiter", expand_x=True), sg.Button("Limpar", expand_x=True), sg.Button("Sair", expand_x=True)]
]
window = sg.Window("Aplicação com GUI e Banco de Dados", layout)

def clear_inputs():
for key in values:
window['NAME'].update('')
window['DOB'].update('')
window['GENDER'].update('')
window['ADDRESS'].update('')

while True:
event, values = window.read()
#if event == sg.WIN_CLOSED or event == 'Sair':
if event in [sg.WIN_CLOSED, 'Sair']:
break
if event == 'Limpar':
clear_inputs()
if event == 'Submiter':
name = values['NAME']
if name == '':
sg.PopupError("Nome precisa ser digitado!")
else:
data = name + " " + values['DOB'] + " " + values['GENDER']
sg.PopupOK(data)

window.close() G.E.Vieira 180


Outras fontes/referências

• http://docente.ifrn.edu.br/diegooliveira/disciplinas/alg
oritmos-acessivel-para-leitores-de-tela/
• https://www.inf.ufpr.br/roberto/ci067/02_tipos.html
• https://www.datacamp.com/courses/intro-to-python-
for-data-science

G.E.Vieira 181

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