Escolar Documentos
Profissional Documentos
Cultura Documentos
2. INTRODUÇÃO
Python é uma Linguagem de Programação (LP) de alto nível e de propósito geral.
Foi desenvolvida pelo programador Holandês Guido Van Rossum em suas horas vagas no
final da década de 80 e continuou evoluindo para uma das LPs mais usadas no mundo
atualmente (veja TIOBE-Index). É possível classificar a LP Python como sendo uma LP
multi-paradigma de tipagem dinâmica e forte, isto é, pode-se criar códigos estruturados,
orientados a objetos ou funcionais, com confiabilidade nas verificações de tipos de
dados e flexibilidade no uso destes dados.
Thonny é um Ambiente de Desenvolvimento Integrado (IDE – Integrated
Development Environment). IDE é uma aplicação que provê ferramentas de apoio à
programação com o objetivo de facilitar e agilizar o processo de produção de software.
Thonny, encontrado em http://thonny.org/ já vem com os programas necessários para
executar códigos Python, sendo altamente recomendado para iniciantes no mundo da
programação.
A LP Python e a IDE Thonny serão usados como apoio para o aprendizado de
algoritmos para a disciplina de Introdução à Computação.
3. IDE THONNY
Thonny (Figura 1) será a IDE utilizada durante este documento, assim, é
importante conhecê-la um pouco mais.
4. ALGORITMOS vs PYTHON
O aprendizado em sala de aula será dado sob a forma de Português-Estruturado
(P-E). Assim é possível manter-se genérico, em termos de LPs, e explicar conceitos
relevantes ao conteúdo de algoritmos. Porém, as implementações serão todas realizadas
em Python, muitas vezes comparando o P-E com códigos Python.
Inicialmente, serão mostradas as palavras-chaves do Python. Palavras-chaves são
palavras que contém um significado especial em uma LP e, preferencialmente, não
devem ser usadas como identificadores (algumas LPs restrigem completamente o uso de
palavras-chaves). Para visualizar a lista destas palavras-chaves, na seção área de saída e
controle do Thonny escreva help() e pressione Enter. Será exibido um texto de ajuda e
entrará no modo de ajuda do Python help>, em seguida escreva keywords e pressione
Enter novamente. A Figura 2 apresenta a lista de saída deste procedimento.
É recomendado que estas palavras-chaves não sejam usadas fora de seu escopo
especial, isto é, como identificadores de variáveis. Para finalizar o modo de ajuda do
Python, basta digitar o caractere “q” e pressionar Enter.
Atividade:
Crie um código em Python que mostre seu nome e sobrenome em linhas diferentes.
- Salve o código com o nome meuPrimeiroPython.py
Python não requer declaração de variáveis, como pode ser observado na tradução
do Hello World Avançado, pois os tipos são inferidos à partir dos valores ou resultados
atribuídos.
Por exemplo:
nome = “Python”
é considerado um texto (str), pois a variável nome recebe um texto.
idade = 33
é considerado um número inteiro (int)
peso = 54.3
é considerado um número real (float)
Python ainda fornece outros tipos de dados, porém não serão discutidos neste
momento.
Ex02 – Leia uma medida em Quilogramas (Kg) e apresente-o convertido para Libras (lb)
e Stones (st).
- Observações: 1kg = 2,20462lb e 1lb = 0,0714286st
- Entrada: deve ser solicitado “Quantos kg deseja converter? ”<entrada>
- Saída: <entrada> kg = <conversão1>lb = <convesão2>st.
- Não esqueça do cast dos textos de entrada para número real
- Exemplo:
Quantos kg deseja converter? <1>
1 kg = 2.20462 lb ou 0.15747292013199998 st.
Observações:
Em P-E e em Python, o símbolo “=” é usado para apresentar uma
atribuição, ou seja, levar um determinado valor à uma variável. Portanto, para evitar
ambiguidade, o operador para avaliar igualdade é dado por símbolo duplo de igualdade
“==”. Obserception: alguns autores trazem “←” como atribuição, permitindo o uso de “=”
para comparação de igualdade. Esta notação não será adotada neste documento.
Blocos de Comandos/Códigos.
A maioria das LPs permitem algum tipo de mecanismo para agrupar um conjunto
de comandos chamado de Bloco. Estes Blocos são úteis para determinar conjunto de
comandos de Desvios Condicionais, para Repetições Específicas, também para de
Subprogramas, ou visualização de uma variável (escopo).
Em P-E, um Bloco é definido pelo nome do Comando Especial até a palavra-
reservada que o finaliza, por exemplo, fim_se para o comando se. Outro exemplo que
pode ser citado é o Bloco Principal de um algoritmo em P-E, que inicia na palavra-
reservada inicio, e termina em fim.
Outras LPs, como a Linguagem C e Java, determinam seus Blocos com o uso do
conjunto de caracteres “{“ e “}”. Em Python, o Bloco não é determinado por um caractere,
mas sim explicitado via uso de tabulação (tecla TAB). Este conceito de tabulação é
chamado de Indentação e é obrigatório em Python, e altamente recomendado na
grande maioria das LPs.
A seguir é apresentado um exemplo de Bloco em P-E e Python.
1. programa exemploBloco 1. não aplicável
2. inicio 2. não aplicável
3. Comandos Anteriores 3. <Comandos Anteriores>
4. inicio_Bloco 4. não aplicável
5. Comandos Indentados 5. <Comandos Indentados>
6. fim_Bloco 6. não aplicável
7. Comandos Posteriores 7. <Comandos Posteriores>
8. fim 8. não aplicável
Bloco em P-E Bloco em Python
1. programa exemploDesvioCondicional01
2. inicio
3. declare nome: texto
4. declare sexo: caractere
5. escreva “Qual é seu nome?”
6. leia nome
7. escreva “Qual é seu sexo?”
8. leia sexo
9. se sexo==”F” então
10. escreva “Olá Sra “, nome
11. fim_se
12. se sexo==”M” então
13. escreva “Olá Sr “, nome
14. fim_se
15. fim
Algoritmo do Exemplo de Desvio Condicional 01.
1. programa exemploSE
2. inicio
3. Comandos Anteriores
4. se Condição então
5. Bloco Verdadeiro
6. senão
7. Bloco Falso
8. fim_se
9. Comandos Posteriores
10. fim
Desvio Condicional Composto em P-E.
1. programa exemploDesvioCondicional01
2. inicio
3. declare nome: texto
4. declare sexo: caractere
5. escreva “Qual é seu nome?”
6. leia nome
7. escreva “Qual é seu sexo?”
8. leia sexo
9. se sexo==”F” então
10. escreva “Olá Sra “, nome
11. senão
12. escreva “Olá Sr “, nome
13. fim_se
14. fim
Algoritmo do Exemplo de Desvio Condicional 02.
Importante:
Fluxograma, P-E e Código Python.
Solução:
1) Compreender completamente o problema a ser resolvido.
O usuário entrará com 1 valor inteiro. Se este for positivo, deve-se somá-lo à
um acumulador e incrementar um contador.
Problema: a leitura do número acontece depois da avaliação da Condição
Solução: remover número de acumulador e decrementar contador após
encontrar número negativo
2) Definir os dados de entrada
num, acumulador, contador do tipo inteiro iniciando em zero
3) Definir o processamento
acumulador ← acumulador + num
Introdução à Computação Módulo Programação Básica pág 13/22
Curso de Engenharia Civil – Unioeste / Cascavel
contador ← contador + 1
4) Definir dados de saída
acumulador / contador
5) Construir o algoritmo utilizando alguma formalidade
Por Fluxograma:
Por P-E:
1. programa calculoDeMedias
2. inicio
3. declare n, ac, cont : inteiro
4. n = 0
5. ac = 0
6. cont = 0
7. enquanto n >= 0 faça
8. escreva “Entre com Número “, cont, “: “
9. leia n
10. ac = ac + n
11. cont = cont + 1
12. fim_enquanto
13. ac = ac – n
14. cont = cont – 1
15. escreva “Média = ”, ac/cont
16. fim
Figura 10: P-E para solução do exercício 01 de Iteração Controlada por Condicional.
Por Python:
1. n = 0
2. count = 0
3. ac = 0
4. while n >= 0:
5. n = int(input("Insira um número inteiro: ")) # indentação!
6. ac = ac + n
7. count = count + 1
8. ac = ac - n
9. count = count - 1
10. print("Média = ", ac/count)
1. programa exIteContVar
2. inicio
3. <Comandos Anteriores>
4. para <var> de <início> até <fim> passo <passo>
P-E
5. <Comandos da Iteração>
6. fim_para
7. <Comandos Posteriores>
8. fim
1. não aplicável
2. não aplicável
3. <Comandos Anteriores>
4. for <var> in range(<início>,<fim>):
5. <Comandos da Iteração> # indentação! Python
6. não aplicável
7. <Comandos Posteriores>
8. não aplicável
Figura 12: Comando Iterativo Condicional com pré-teste em P-E e Python.
Em Fluxograma:
Figura 13: Fluxograma para solução do ex.01 da Iteração Controlada por Variável.
Em P-E:
1. programa lrcv1
2. início
3. declare n, i : inteiro
4. se (n >= 0) E (n <=10) então
5. para i de 0 até 11 faça
6. escreva n, “ x “, i, “ = “, n*i
7. fim_para
8. senão
9. escreva “Número Inválido!”
10. fim
Figura 14: P-E para solução do ex. 01 de Iteração Controlada por Variável.
Em Python:
1. n = int(input("Digite o número (0 até 9): "))
2. if n > 0 and n < 10:
3. for i in range(0, 11):
4. print(n, "x", i, "=", (n*i))
5. else:
6. print("número inválido, somente de 0 até 9")
Figura 15: Python para solução do ex. 01 de Iteração Controlada por Variável.
Exemplos de execuções:
>>> %Run fib.py
Até qual Fibonacci deseja conhecer? <0>
Fibonacci 0 = 0
>>> %Run fib.py
Até qual Fibonacci deseja conhecer? <1>
Fibonacci 0 = 0
Fibonacci 1 = 1
>>> %Run fib.py
>>> %Run fib.py Até qual Fibonacci deseja conhecer? <10>
Até qual Fibonacci deseja conhecer? <2> Fibonacci 0 = 0
Fibonacci 0 = 0 Fibonacci 1 = 1
Fibonacci 1 = 1 Fibonacci 2 = 1
Fibonacci 2 = 1 Fibonacci 3 = 2
Fibonacci 4 = 3
>>> %Run fib.py Fibonacci 5 = 5
Até qual Fibonacci deseja conhecer? <3> Fibonacci 6 = 8
Fibonacci 0 = 0 Fibonacci 7 = 13
Fibonacci 1 = 1 Fibonacci 8 = 21
Fibonacci 2 = 1 Fibonacci 9 = 34
Fibonacci 3 = 2 Fibonacci 10 = 55
Em Fluxograma:
Figura 16: Fluxograma para solução do ex.02 da Iteração Controlada por Variável.
Por P-E:
1. programa lrcv2
2. início
3. declare fib, n0, n1, aux, i : inteiro
4. escreva “Até qual Fibonacci deseja conhecer?
5. leia fib
6. se fib < 2 então
7. se fib == 1 então
8. escreva “Fibonacci 0 = 0”
9. escreva “Fibonacci 1 = 1”
10. senão
11. escreva “Fibonacci 0 = 0”
12. fim_se
13. senão
14. escreva “Fibonacci 0 = 0”
15. escreva “Fibonacci 1 = 1”
16. n0 = 0
17. n1 = 1
18. para i de 2 até fib passo 1 faça
19. aux = n0 + n1
20. n0 = n1
21. n1 = aux
22. escreva “Fibonacci “, i, “ = “, aux
23. fim_para
24. fim_se
25. fim
Figura 17: P-E para solução do ex. 02 de Iteração Controlada por Variável.
Em Python:
1. fib = int(input("Até qual Fibonacci deseja conhecer? "))
2. if fib < 2:
3. if fib == 1:
4. print("Fibonacci 0 = 0")
5. print("Fibonacci 1 = 1")
6. else:
7. print("Fibonacci 0 = 0")
8. else:
9. print("Fibonacci 0 = 0")
10. print("Fibonacci 1 = 1")
11. n0 = 0
12. n1 = 1
13. for i in range(2,fib+1):
14. aux = n0 + n1
15. n0 = n1
16. n1 = aux
17. print("Fibonacci", i, "=", auxiliar)
Figura 18: Python para solução do ex. 02 de Iteração Controlada por Variável.
4.9. Módulos
Em algumas soluções em algoritmos, é demandado o uso de uma operação, ou
conjunto de operações, diversas vezes. Desta forma, o algoritmo pode se tornar muito
longo, já que vários comandos, ou sequências de comandos, são repetidas ao longo
deste. Para tornar a implementação mais “enxuta”, usa-se as funções.
Uma função é definida apenas uma vez no algoritmo, e pode ser usada
diversas vezes durante a execução deste. A definição em Fluxograma usa do símbolo de
conector entre fluxogramas, e em P-E é dado pela palavra reservada func. Abaixo são
mostrados estas definições.
Por P-E:
1. programa exemploFuncao0
2. <tipo> func <nome> (<p1>:tipo, <p2>:tipo,…)
3. <Comandos da Função>
4. retorno <valor>
5. fim_func
6. #linha apenas para separar declaração da função de código principal
7. início
8. <Comandos do Programa Principal>
9. fim
Figura 20: P-E geral para função.
Em Python:
1. def <nome> (<p1>, <p2>,…):
2. <Comandos da Função>
3. return <valor/variável>
Figura 21: Código Python geral para função.
print(var1, var2, …)
escreve na saída padrão o conteúdo das variáveis var1, var2, etc de forma
concatenada. É possível criar um texto unificado de outros textos utilizando o operador
+.
input(texto1)
solicita uma entrada de dados, normalmente pelo teclado. Antes, porém,
escreve na saída padrão o conteúdo de texto1.
int(texto)
transforma um texto que contém somente algarismos em um número
operável pelos operadores e funções numéricas de inteiros.
float(texto)
transforma um texto que contém somente algarismos e um “.” (ponto)
como separador de decimais em um número operável pelos operadores e funções
numéricas de ponto-flutuante.
str(int)
transforma um número em uma sequência de algarismos, isto é,
transforma o tipo número em tipo texto (string).
Também existem diversas bibliotecas que contém várias funções extras, que
podem ser importadas e usadas para facilitar a programação. Um exemplo de biblioteca
muito utilizada é a math, que contém funções matemáticas que variam de
trigonométricas, raízes, logarítmicas e algumas constantes. A lista destas funções
matemáticas e suas operações são encontradas em
https://docs.python.org/3/library/math.html.
Para usar qualquer função da biblioteca math, é necessário importá-la no início do
código, através da linha:
1. import math
Para o exemplo seguinte, será necessário usar a função sqrt(x), que retorna a raiz
quadrada do número x passado como único parâmetro. Exemplo básico:
1. import math
2. r = math.sqrt(25)
3. print(r)
Figura 22: exemplo de uso da biblioteca math do Python.
Em Python:
1. import math
2. def calcHip(a,b)
3. h = a**2 + b**2
4. h = math.sqrt(h)
5. return h
6.
7. cat1 = float(input(“Entre com Cateto 1: “))
8. cat2 = float(input(“Entre com Cateto 2: “))
9. hip = calcHip(cat1, cat2)
10. print(“Hipotenusa = “, hip)
Figura 24: solução para o exercício de Funções 01.
Escopo de variáveis
Ver documento \Notas de Aulas\Aula 04\04 – Programação básica.pdf, Seção 6.3.