Aula 2
Aula 2
Aula 2
E ALGORITMOS
AULA 2
2
Windows. Ele será atualizado sempre que o Python também sofrer alteração na
sua instalação. Caso esteja trabalhando em Linux, praticamente todas as
distribuições já vêm com o Python e o IDLE instalados, salvo algumas exceções.
1
O termo notebook, do inglês, refere-se, nesse caso, ao que em português denominamos de
bloco de anotações e não a um computador portátil que, no Brasil, chamamos de notebook ou
laptop.
3
de um mesmo bloco de anotações. Sendo assim, iremos adotar essa ferramenta
para realizarmos nossos estudos em Python, ao longo dos conteúdos.
Existem diferentes plataformas que dão suporte ao desenvolvimento em
Notebooks Jupyter. Dentre as mais populares, estão:
7
literal na tela, precisamos delimitá-lo por aspas. Observe essa estrutura completa
na Figura 5.
8
Figura 6 – Detalhando a função print para escrita de operações aritméticas
Python Operação
+ Adição
- Subtração
* Multiplicação
/ Divisão (com casas decimais)
// Divisão (somente a parte inteira)
% Módulo/resto da divisão
** Exponenciação ou potenciação
Fonte: Vinicius Pozzobon Borin, 2023.
10
Sua vez de praticar!
• Experimente agora trocar o símbolo da divisão da equação por duas
barras: //. O que aconteceu com o resultado? Por quê?
Exercícios de fixação
• Escreva as seguintes expressões matemáticas em linguagem Python:
a. 2 + 3 x 3
b. 4² ÷ 3
c. (9² + 2) x 6 - 1
11
variável, seu respectivo bloco de memória será automaticamente carregado da
RAM e manipulado pela CPU.
Utilizamos variáveis em todos os nossos algoritmos, com o objetivo de
armazenar os dados em processamento, ao longo de nosso programa. As
variáveis apresentam tipos, e cada tipo exibe características distintas de
operação e manipulação. Iremos investigar um pouco mais esses tipos ao longo
deste tópico. De acordo com nossa bibliografia, citamos três tipos de variáveis
denominados de tipos primitivos de dados2:
2
Algumas bibliografias trabalham com quatro tipos primitivos, pois dividem o tipo numérico em
inteiro e real. O livro de Sandra Puga e Gerson Risseti (2016), Lógica de programação e estrutura
de dados, é um exemplo de bibliografia que trabalha assim.
12
computador, veríamos esses dados colocados lá dentro, porém representados
de maneira binária.
Podemos apresentar, na tela, ambas as variáveis em um mesmo print e
ainda intercalá-las com textos já prontos. Para isso, separamos cada parte por
vírgula:
print('Disciplina: ', disciplina,'. Nota:', nota)
Saída:
Disciplina: Lógica de Programação e Algoritmos . Nota: 8.5
13
na língua inglesa, usamos ponto), que é capaz de deslocar-se pelo número
(flutuando) e alterando o expoente do dado numérico. A quantidade de casas
decimais armazenadas depende do tamanho da variável e, quanto mais
decimais, mais memória é necessário. Dados de ponto flutuante podem ser:
100.02, -10.7, 0.00, 1569.999, -5629.312, 39999.12345.
Atenção! Um número de ponto flutuante que contenha casas decimais
com valores todos zeros ainda continua sendo um valor de ponto flutuante, pois
as casas decimais continuam existindo e ocupando memória. Por exemplo: 0.00
ou 123.0.
Python Operação
== Igual a
> Maior que
< Menor que
>= Maior ou igual que
<= Menor ou igual que
!= Diferente de
3
Matemático britânico que viveu no século XIV e criou a álgebra boolena, fundamental para a
eletrônica digital e para o funcionamento e o projeto de computadores.
14
Fonte: Vinicius Pozzobon Borin, 2023.
15
3.4 Variáveis de cadeia de caracteres (strings)
4
A tabela ASCII pode ser encontrada em: <http://www.asciitable.com/> (ASCII, [S.d.]).
5
O padrão Unicode pode ser encontrado em: <https://home.unicode.org/> (Unicode, [S.d.]).
16
também que a letra a está sem acento, pois o padrão ASCII não conhece
acentuação.
17
quiséssemos o terceiro caractere? Bom, para acessarmos o terceiro caractere,
indicamos o índice 2. Observe que o índice é sempre um número a menos do
que a posição desejada, uma vez que nossos índices iniciam a contagem em
zero:
print(frase[2])
Saída:
á
Na Figura 8, temos um exemplo de string juntamente de seus respectivos
índices de acesso. Observe que temos 11 caracteres nessa frase; portanto, os
índices vão de 0 a 10, sempre um a menos que o tamanho.
Você aprendeu quais são os tipos primitivos com que o Python trabalha,
no tópico 3. Porém, strings apresentam um potencial bastante vasto a ser
explorado na linguagem, pois podemos realizar operações como concatenação,
composição e fatiamento de strings, tudo isso de maneira nativa, com o Python.
Vamos explorar um pouco mais o que significam esses recursos na linguagem
de programação que estamos estudando e como podemos trabalhar com eles.
4.1 Concatenação
18
concatenamos o que já temos em s1 com o resto da palavra e imprimimos assim
na tela:
s1 = 'Lógica de Programação'
s1 = s1 + ' e Algoritmos'
print(s1)
Saída:
Lógica de Programação e Algoritmos
Podemos repetir uma mesma string várias vezes, na concatenação,
utilizando o símbolo de multiplicação (*). No exemplo a seguir, multiplicou-se o
caractere do tracejado dez vezes, facilitando sua escrita.
s1 = 'A' + '-' * 10 + 'B'
print(s1)
Saída:
A----------B
Da mesma forma, podemos repetir espaços em branco. Neste exemplo,
multiplicou-se o caractere do espaço dez vezes:
s1 = 'A' + ' ' * 10 + 'B'
print(s1)
Saída:
A----------B
Atenção! Não é possível realizar concatenação quando estivermos
tentando juntar strings e variáveis numéricas, pois ocorre erro de compilação.
Para isso, utilize a composição.
19
exemplo, colocar o valor de uma variável dentro de uma outra variável que seja
do tipo string. Para isso, existem três maneiras distintas de fazermos
composição. Iremos começar com a primeira, chamada de composição por
marcador de posição.
Utilizamos, para isso, um símbolo de percentual (%), que vamos chamar
de marcador de posição. Esse símbolo será colocado dentro de nosso texto, no
local exato onde o valor de uma variável deve aparecer. Assim, ele irá marcar a
posição da variável que irá substituir o símbolo de percentual, durante a
execução do programa, pelo valor da variável. Confuso? Vejamos um exemplo:
nota = 8.5
s1 = 'Você tirou %f na disciplina de Algoritmos' % nota
print(s1)
Saída:
Você tirou 8.500000 na disciplina de Algoritmos
Note que temos uma variável de string s1, a qual imprime, na tela, uma
nota, portanto um dado numérico. Em um ponto específico da frase, existe o
símbolo %, seguido pela letra f. Esse percentual será substituído pelo valor da
variável nota. A variável está posicionada após o término da frase, onde existe
um símbolo de percentual e o respectivo nome. Isso significa que a variável nota
terá seu valor inserido no lugar de %f, dentro do texto. A letra após o símbolo de
percentual indica o tipo de dado que será colocado ali. Veja o Quadro 4, com as
devidas representações disso.
Marcadores Tipo
%d ou %i Números inteiros
%f Números de ponto flutuante
%s Strings
Fonte: Vinicius Pozzobon Borin, 2023.
20
nota = 8.5
s1 = 'Você tirou %.2f na disciplina de Algoritmos' % nota
print(s1)
Saída:
Você tirou 8.50 na disciplina de Algoritmos
Podemos colocar, na frase, quantas variáveis quisermos, basta pormos
todos os símbolos de percentual em seus respectivos locais e apresentar o nome
de todas as variáveis, agora, dentro de parênteses. Observe o exemplo, a seguir
com duas variáveis, uma do tipo ponto flutuante e outra do tipo string:
nota = 8.5
disciplina = 'Algoritmos'
s1 = 'Você tirou %d na disciplina de %s' % (nota, disciplina)
print(s1)
Saída:
Você tirou 8 na disciplina de Algoritmos
A maneira de composição apresentada até então é uma herança da
linguagem de programação C, linguagem que surgiu algumas décadas antes do
Python e que influenciou a nossa linguagem, em diversos aspectos.
21
4.4 Composição com f-string
4.5 Fatiamento
22
Observe que a palavra Lógica está contida nos índices de zero até o cinco.
Então, por que delimitamos o intervalo de zero até seis? O motivo para isso é
que o índice final não é incluído no fatiamento; portanto, ao colocarmos [0:6],
estamos incluindo os índices de 0 a 5.
Vejamos outro exemplo. A palavra Algoritmos está colocada nos índices
24 até 33, na string a seguir. Porém, ao criarmos o fatiamento, escrevemos do
24 até o 34, caso contrário o último caractere não seria impresso.
s1 = 'Lógica de Programação e Algoritmos'
print(s1[24:34])
É possível omitir o número da esquerda (início) ou o da direita (final) para
representar tudo a partir do início, ou tudo até o final, respectivamente. O
primeiro exemplo, para imprimir somente a palavra Lógica, poderia ser reescrito
simplesmente como [:6], pois assim incluiríamos tudo, desde o início, até o índice
5. Do mesmo modo, para a palavra Algoritmos, poderíamos colocar somente
[24:], que contemplaria tudo a partir do índice 24.
s1 = 'Lógica de Programação e Algoritmos'
print(s1[:6])
Finalizando, é também possível colocar somente [:], sem início, nem final.
Dessa maneira, estaríamos escrevendo a string, por completo, na tela, somente.
Também podemos escrevê-la da direita para a esquerda, bastando usarmos
valores negativos para os índices. O valor -1 seria o último caractere, -2 o
penúltimo e assim por diante.
24
Sua construção é muito semelhante à função de saída print. Utilizamos
parênteses para delimitar uma mensagem que aparecerá na tela ao usuário, bem
como usamos aspas simples para escrever a mensagem, conforme a Figura 10.
A função input irá, portanto, colocar na tela a mensagem de texto que você
escolheu e em seguida abrirá um campo para digitação. Nesse campo, o que for
digitado será armazenado em uma variável definida na atribuição.
Vejamos um exemplo em que queremos perguntar ao usuário do
programa qual é a sua idade. Para isso, colocamos no campo de mensagem a
pergunta. Depois, criamos uma variável que irá receber o que foi digitado e,
assim, armazenamos o dado para posterior uso.
25
Em um segundo exemplo, perguntamos um nome e, em seguida, usando
composição de strings, escrevemos uma mensagem de boas-vindas ao usuário,
na tela. A mensagem será personalizada e mudará conforme cada nome
digitado.
26
5.3 Fluxo de execução do programa
Quando vimos a função de input, poucos parágrafos antes, você deve ter
observado que, pela primeira vez, nosso programa ficou parado em uma linha
específica do código, aguardando algo acontecer para prosseguir. Como essa é
a primeira vez que algo assim acontece, é interessante analisarmos um
pouquinho como se dá a ordem de execução das coisas, em um programa
Python.
Nessa linguagem, cada linha indica uma instrução. Entenda por instrução
qualquer comando que vimos até agora (entrada, saída e atribuição). Somente
após uma linha ser executada por completo é que a próxima linha será
executada. O fluxo de execução em Python, assim como em todas as linguagens
de programação tradicionais, se dá de cima para baixo. Ou seja, a instrução mais
acima escrita será executada primeiro e, ao finalizar essa execução, o programa
descerá para a linha de baixo.
Vamos compreender melhor o fluxo de execução do algoritmo, pelo
exemplo a seguir. Mas, não se assuste! Ele parece bastante complexo no início,
mas tudo ficará claro. Foram inseridas numerações, nas linhas, para que
possamos falar delas mais especificamente.
Nosso programa inicia sua execução de cima para baixo, ou seja, na linha
1, e vai descendo, uma a uma, até executar a linha 10, em que imprime o valor
de z, na tela. A cada linha executada, as variáveis x, y e z vão alterando seus
valores, nesse exemplo.
27
No Quadro 5, mostramos o que acontece com cada variável após executar
cada linha. Note que somente uma variável sofreu mudanças em cada uma das
linhas, pois é assim que o programa foi construído.
Quadro 5 – Valores das variáveis do programa linha após linha executada (NC
= não criada ainda pelo programa; em vermelho trata-se da variável que sofreu
alteração na respectiva linha indicada)
Linha x y z
1 1 NC NC
2 1 1 NC
3 1 1 2
4 - - -
5 3 1 2
6 3 0 2
7 3 0 3
8 - - -
9 1 0 3
10 1 0 3
11 1 0 1
12 - - -
13 1 0 1
Fonte: Vinicius Pozzobon Borin, 2023.
28
adotada para os fluxogramas está apresentada por Puga e Risseti (2016, p. 14-
15).
Na resolução dos exercícios em Python, em alguns momentos você
encontrará textos antecedidos por um símbolo de #. Sempre que isso aparecer,
trata-se de comentários. Comentários são textos que você, ao desenvolver o
programa, pode inserir nele para auxiliar no seu entendimento, seja porque você
trabalha em equipe e precisa que seus colegas vejam o que você fez, seja
somente para que você se lembre depois do que fez. De todo modo, comentários
são completamente ignorados pelos compiladores e, portanto, podem ser
utilizados à vontade, sem impacto nenhum no desempenho do programa.
Exercício 2.1: desenvolva um algoritmo que solicite ao usuário dois
números inteiros. Imprima a soma desses dois números na tela.
Em Python:
# Exercício 2.1
x = int(input('Digite um número inteiro: '))
y = int(input('Digite outro número inteiro: '))
# Maneira Moderna
res = 'O resultado da soma de {} com {} é {}.'.format(x, y, x + y)
print(res)
# Maneira com f-string
res = f'O resultado da soma de {x} com {y} é {x + y}.'
print(res)
Em fluxograma:
29
Em fluxograma:
Em fluxograma:
30
Exercício 2.4: desenvolva um algoritmo que converta uma temperatura
de Celsius (C) em Fahrenheit (F). A equação de conversão é:
9×𝐶
𝐹= + 32
5
Em Python:
Em pseudocódigo:
Algoritmo Exercicio 2.4
Var
C, F: real
Inicio
Ler(C)
F = (9 * C / 5) + 32
Fim
Em fluxograma:
FINALIZANDO
32
REFERÊNCIAS
DOWNLOAD the latest version for Windows. Python, 2023. Disponível em:
<https://www.python.org/downloads/>. Acesso em: 11 dez. 2023.
33