Prévia do material em texto
Conceitos básicos de algoritmos em Python
APRESENTAÇÃO
Todos os dias, as pessoas usam o pensamento lógico-algorítmico mesmo sem perceber. Quando
você acorda pela manhã e segue um conjunto de passos bem definidos até estar pronto para sair
para o trabalho, ou mesmo para ir à universidade, você está fazendo uso do pensamento lógico-a
lgorítmico. Assim, se as ações realizadas ao acordar – tais como levantar-se da cama, ir ao banh
eiro, escovar os dentes, tomar banho e tomar café – fossem colocadas dispostas em forma de list
a e na ordem correta, você teria um algoritmo.
Os algoritmos estão por toda parte em seu cotidiano e, quando você pensa em computadores, nã
o é diferente. Na computação, algoritmo pode ser descrito como um conjunto de passos bem def
inidos, usado por um programa de computador para a solução de um problema específico. Além
disso, pode ser definido como uma sequência de etapas computacionais que transformam dados
de entrada em dados de saída. Esses dados de saída são, na verdade, a informação resultante da t
ransformação dos dados de entrada em informação de valor para o usuário.
Nesta Unidade de Aprendizagem, você vai entender a estrutura básica de algoritmos, utilizando
a linguagem de programação Python. Além disso, vai saber como analisar algoritmos da vida re
al e transformá-los em algoritmos computacionais, com o objetivo de resolver problemas utiliza
ndo programação.
Bons estudos.
Ao final desta Unidade de Aprendizagem, você deve apresentar os seguintes aprendizados:
Descrever a estrutura básica de um algoritmo em Python.•
Analisar algoritmos e programas.•
Resolver problemas utilizando programação.•
DESAFIO
Na programação, instruções de repetição são usadas para executar um bloco de código específic
o uma ou mais vezes. A instrução while é utilizada para iterar sobre um bloco de código com ins
truções, desde que a expressão condicional seja verdadeira. Geralmente, esse tipo de instrução d
e repetição é usado quando não se sabe de antemão a quantidade exata de vezes para iterar. Alé
m disso, é uma estrutura muito recomendada para iterar sobre dados sequenciais.
Conteúdo interativo disponível na plataforma de ensino!
Joana pediu sua ajuda para completar seu algoritmo (as quatro linhas faltantes). Ele deve retorna
r (saída) o número mínimo de saltos necessários para percorrer as nuvens seguras de cada desafi
o. Assim, responda:
a) Que código deve ser inserido na primeira e na terceira linhas faltantes? Justifique a sua respos
ta.
b) Que código deve ser inserido na segunda linha faltante? Justifique a sua resposta.
c) Que código deve ser inserido na quarta linha faltante? Justifique a sua resposta.
INFOGRÁFICO
Em geral, um algoritmo se destina a resolver um problema específico. No entanto, mesmo antes
de escolher uma linguagem de programação (por exemplo, Python) para construir o algoritmo, é
comum descrever o fluxo de execução para entender todos os passos. Para essa descrição, utiliz
a-se uma forma próxima da linguagem natural, porém mais simplificada, chamada de pseudocód
igo. Além disso, também é comum usar fluxogramas para descrever a estrutura de um algoritm
o.
Neste Infográfico, você vai ver três formas de representar e descrever o mesmo algoritmo, sendo
elas: pseudolinguagem (ou pseudocódigo), fluxograma e linguagem de programação Python.
CONTEÚDO DO LIVRO
Um algoritmo é formado por vários componentes que determinam como se dará o fluxo de exec
ução da tarefa, desde a inicialização até o encerramento. Trata-se de uma excelente ferramenta p
ara resolver problemas computacionais por meio de suas instruções e estruturas de controle de fl
uxo.
No capítulo Conceitos básicos de algoritmos em Python, da obra Raciocínio algorítmico, base te
órica desta Unidade de Aprendizagem, você vai ver conceitos básicos de algoritmos, tipos de da
dos, operadores e expressões, bem como exemplos de aplicação em linguagem de programação
Python.
Boa leitura.
RACIOCÍNIO
ALGORÍTMICO
Juliano Vieira Martins
Conceitos básicos de
algoritmos em Python
Objetivos de aprendizagem
Ao final deste texto, você deve apresentar os seguintes aprendizados:
Descrever a estrutura básica de um algoritmo em Python.
Analisar algoritmos e programas.
Resolver problemas utilizando programação.
Introdução
As pessoas usam o pensamento lógico constantemente, muitas vezes
sem perceber. Por exemplo, quando você acorda de manhã e realiza uma
sequência de etapas até estar pronto para sair para o trabalho ou ir até a
universidade, você está utilizando o pensamento lógico-algorítmico. Se
todas essas etapas fossem escritas, obedecendo certa ordem, no formato
de itens de uma lista, haveria um algoritmo.
No seu cotidiano, sem se dar conta, você está continuamente resol-
vendo problemas por meio do pensamento lógico. Na computação,
isso não é diferente, e questões computacionais também podem ser
resolvidas por meio do pensamento lógico-algorítmico.
Neste capítulo, você vai estudar os conceitos básicos de algoritmos e
ver como eles podem ser usados para resolver problemas computacio-
nais. Para a solução desses problemas, é necessário usar o pensamento
lógico-algorítmico, aplicado na forma de instruções e com etapas bem
definidas para atingir determinado objetivo. Assim, você também vai
verificar como essas instruções podem ser representadas por meio
de estruturas visuais ou, na forma escrita, por meio de pseudocódigo.
Além disso, você vai ver exemplos de algoritmos na linguagem de
programação Python.
Resolução de problemas com programação
No momento da concepção de um programa e para que haja coerência com o
que se está propondo resolver, é necessária certa atenção para entender o pro-
blema e apresentar uma solução viável. Descobrir um método para solucionar
determinado problema não é uma tarefa tão simples assim. Dessa forma, a
construção de um programa pode ser melhor executada quando se levam em
conta alguns itens importantes. Veja a seguir.
Requisitos do programa: você deve compreender as informações
fornecidas (a entrada) e os resultados que devem ser produzidos (a
saída). É preciso escrever uma descrição rigorosa da entrada e da saída,
que cubra todos os casos do programa.
Arquitetura: na programação, sempre existe a possibilidade de lidar
com vários tipos de objetos e dados diferentes, como um cálculo, uma
lista, uma simulação, entre outras infinitas situações. Para cada caso,
haverá algumas operações básicas a serem executadas, como imprimir
algo, adicionar algo ou mesmo buscar algo. O ideal é escrever essas
operações na forma de pequenos procedimentos de algoritmo para
resolver o problema de acordo com os requisitos do programa. Também
é possível utilizar uma notação de linguagem natural, chamada pseu-
docódigo, para fazer uma descrição narrativa dos passos e da ordem
das instruções. Por sua vez, as instruções devem ser claras o bastante
para determinar de forma única e completa as ações necessária em
cada passo do programa.
O pseudocódigo (ou pseudolinguagem) é uma forma de representação
algorítmica (GUIMARÃES; LAGES, 1985). Além disso, é praticamente um
programa escrito em linguagem natural e que tem a possibilidade de ser
transmitido ao computador, com uso de algumas ferramentas que leem pseu-
docódigos. Para escrever códigos em pseudocódigo, é necessário conhecer
as instruções básicas de um pseudocódigo. A seguir, veja as instruções de
uma pseudolinguagem.
a) ESCREVA (“ ”): essa instrução é usada para exibir uma mensagem
na tela.
b) LEIA: essa instrução é usada para ler valores que são digitados no
teclado.
c) <- (recebe): essa instrução é usada como comando de atribuição.
Conceitos básicos de algoritmos em Python2
d) INÍCIO: essa instrução é usada para iniciar o programa principal.
e) FIM: essa instrução é usada para finalizar o algoritmo principal.
f) VAR: essa instrução é usada para declarar variáveis.
g) ALGORITMO: essa instrução é usada para indicar o início doprograma.
h) FIM ALGORITMO: essa instrução é usada para indicar o final do
programa.
i) ENQUANTO: essa instrução é usada para iterar enquanto uma condição
for verdadeira.
j) PARA: essa instrução é usada também para iterar enquanto uma con-
dição for verdadeira.
k) FIM PARA: essa instrução é usada para indicar o final da instrução
PARA.
l) SE ... ENTÃO: essa instrução é usada para avaliar se uma expressão
é verdadeira ou falsa. Se for verdadeira, executa a instrução que está
no corpo.
m) SENÃO SE: essa instrução também é usada para avaliar se uma ex-
pressão é verdadeira ou falsa. Se for verdadeira, executa a instrução
que está no corpo.
n) SENÃO: essa instrução é usada para avaliar uma expressão caso as
instruções SE ou SENÃO SE não sejam executadas.
o) FIM SE: essa instrução é usada para indicar o final da instrução SE.
Veja a seguir um exemplo de algoritmo em pseudocódigo:
ALGORITMO “somar e escrever se a soma é maior, menor ou
igual a 10”
VAR
valor: real
soma: real
INÍCIO
soma <- 0
ESCREVA (“Digite um ‘valor’ ou 0 para parar:”)
LEIA valor
3Conceitos básicos de algoritmos em Python
Além de serem representados pela pseudolinguagem, algoritmos também
podem ser representados por símbolos que compõem uma notação visual. O
conjunto desses símbolos dispostos de forma estruturada é conhecido como
fluxograma. Um fluxograma é um diagrama que descreve um processo,
sistema ou algoritmo de computador. Ele é amplamente utilizado em vários
campos para documentar, estudar, planejar, melhorar e comunicar processos
(às vezes) complexos em diagramas claros e fáceis de entender.
Os fluxogramas usam retângulos ovais, diamantes e outras formas para
definir o tipo de etapa, juntamente com as setas de conexão para definir o fluxo
e a sequência. Eles podem variar de gráficos simples e desenhados à mão a
diagramas detalhados, desenhados por computador, representando várias etapas
e rotas. Às vezes, os fluxogramas são chamados por nomes mais especializados,
como fluxograma de processo, mapa de processos, fluxograma funcional,
mapeamento de processos de negócios, modelagem e notação de processos de
negócios (Business Process Model and Notation — BPMN) ou diagrama de
fluxo de processos (Process Flow Diagram — PFD). Eles estão relacionados
a outros diagramas populares, como Diagramas de Fluxo de Dados (DFDs) e
diagramas de atividade da linguagem de modelagem unificada (Unified Modeling
Language — UML). A seguir, veja os símbolos mais comuns de um fluxograma.
ENQUANTO valor <> 0 FAÇA
soma <- soma + valor
ESCREVA (“Soma atual: soma”)
ESCREVA (“Digite um ‘valor’ ou 0 para parar:”)
LEIA valor
FIMENQUANTO
SE soma > 10 ENTÃO
ESCREVA (“Soma é maior que 10”)
SENÃO SE soma < 10 ENTÃO
ESCREVA (“Soma é menor que 10”)
SENÃO
ESCREVA (“Soma é igual a 10”)
FIM SE
FIM
FIM ALGORIMTO
Conceitos básicos de algoritmos em Python4
Terminal: tem a forma oval e é usado para representar o início e o fim
de um processo.
Processo: tem a forma retangular e é obrigatório quando você inicia
o fluxograma. Representa qualquer etapa do processo, como tarefas
ou ações básicas.
Seta (ou flecha): é usada para guiar o visualizador ao longo do caminho
do fluxograma e indicar qual é a direção do fluxo de dados.
Decisão: tem a forma de um diamante e simboliza que é necessária uma
decisão para avançar. Pode ser uma escolha binária — por exemplo, sim
ou não, verdadeiro ou falso — ou mesmo uma decisão mais complexa,
com várias opções.
Entrada/saída: tem a forma de um paralelogramo e simboliza a entrada
ou a saída de dados.
Com esses cinco símbolos básicos, você tem quase tudo o que é necessário
para diagramar um fluxograma simples (Figura 1).
Figura 1. Símbolos básicos de um fluxograma.
Codificação: escolher adequadamente o que será utilizado para cada
tipo de dado torna a solução do problema mais eficiente. É no momento
da codificação que se escolhem as representações para os objetos de
dados que serão utilizados no algoritmo. Quando já se tem um pseu-
docódigo para a solução do problema, a tradução do algoritmo para
uma linguagem de programação é quase imediata. Na linguagem de
programação Python, por exemplo, existem vários tipos de objetos que
representam os conceitos de listas, matrizes, dicionários, filas, pilhas,
entre outras estruturas.
5Conceitos básicos de algoritmos em Python
A seguir, veja o mesmo algoritmo apresentado em pseudocódigo, mas agora escrito
na linguagem de programação Python.
# somar e escrever se a soma é maior, menor ou igual a 10
soma = 0
valor = float(input("Digite um 'valor' ou 0 para parar:"))
while valor != 0:
soma += valor
print(f"Soma atual: {soma}")
valor = float(input("Digite um 'valor' ou 0 para parar:"))
if soma > 10:
print("Soma é maior que 10")
elif soma < 10:
print("Soma é menor que 10")
else:
print("Soma é igual a 10")
Análise de algoritmos e programas
A razão mais objetiva para se analisar um algoritmo é descobrir suas carac-
terísticas a fi m de avaliar sua adequação a várias aplicações, ou compará-lo
com outros algoritmos para a mesma aplicação. Além disso, a análise de um
algoritmo pode ajudar o desenvolvedor a entendê-lo melhor e sugerir melhorias.
Os algoritmos tendem a se tornar mais curtos, mais simples e mais elegantes
durante o processo de análise.
Existe um ramo da ciência da computação teórica chamado complexidade
de algoritmos, cujo objetivo é classificar os algoritmos de acordo com sua
eficiência (SEDGEWICK; FLAJOLET, 2019). Do mesmo modo, um problema
computacional comumente chamado de complexidade computacional é
classificado de acordo com o seu nível de dificuldade. Essas classificações ge-
ralmente se concentram no desempenho do pior caso na ordem de crescimento.
Conceitos básicos de algoritmos em Python6
Um dos pontos principais da análise de um algoritmo é o tempo. Uma
análise detalhada e completa do tempo de execução de um algoritmo envolve
as etapas listadas a seguir.
1. Implementar o algoritmo completamente para a análise.
2. Determinar o tempo necessário para cada operação básica, tais como
cálculos, repetições, instruções, etc.
3. Identificar quantidades desconhecidas que podem ser usadas para
descrever a frequência de execução das operações básicas, como a
quantidade de operações que crescem exponencialmente durante a
execução do algoritmo.
4. Desenvolver um modelo realista para a entrada no programa.
5. Analisar as quantidades desconhecidas, assumindo a entrada modelada.
6. Calcular o tempo total de execução multiplicando o tempo pela frequên-
cia de cada operação e adicionando todos os produtos da soma ao final.
Os algoritmos geralmente são bem diferentes entre si, embora muitas
vezes o objetivo deles seja o mesmo. Ao considerar um algoritmo para um
problema específico, você deve começar a perceber os padrões, para que tipos
de problemas semelhantes possam ser resolvidos com a ajuda desse algoritmo.
Por exemplo, sabe-se que um conjunto de números pode ser classificado por
meio de algoritmos diferentes. O número de comparações realizadas por um
algoritmo pode ser diferente da quantidade de comparações realizadas por
outro algoritmo, ainda que ambos sejam para a mesma entrada de dados.
Portanto, a complexidade do tempo desses algoritmos pode ser diferente. Além
disso, é necessário calcular o espaço de memória exigido por cada algoritmo.
Assim, você deve levar em conta sob quais hipóteses o algoritmo vai operar.
Geralmente, realizam-se os tipos de análise elencados a seguir.
Pior caso: número máximo de etapas executadas em qualquer instância
do algoritmo.
Melhor caso: número mínimo de etapas executadas em qualquer ins-
tância do algoritmo.
Caso médio: número médio de etapas executadas em qualquer instância
do algoritmo.
Em resumo, a análise de algoritmo é oprocesso de analisar a capacidade de
resolução de problemas do algoritmo em termos de tempo e tamanho necessá-
rios (o tamanho da memória para armazenamento durante a implementação).
7Conceitos básicos de algoritmos em Python
Para saber mais sobre o assunto deste capítulo, acesse o link a seguir (em inglês). Nele,
você vai encontrar excelentes explicações sobre níveis mais avançados de análises de
algoritmos, tais como análise assintótica e análise amortizada.
https://qrgo.page.link/RzqX5
Estrutura básica de algoritmo
A estrutura básica de um algoritmo é formada por vários componentes, co-
mumente encontrados na maioria dos algoritmos. Esses componentes deter-
minam como se dará o fl uxo de execução da tarefa, desde a inicialização até o
encerramento (MOKARZEL; SOMA, 2008). Assim, pode haver determinado
problema que, para ser resolvido, requer uma quantidade maior ou menor de
componentes, dependendo da sua complexidade. Dessa forma, a execução de
um programa pode ser mais efi ciente quando é levado em conta o comporta-
mento das estruturas básicas de algoritmos (Figura 2).
Variáveis e constantes: esse componente de algoritmo possui conteúdo
temporário e é usado para armazenar informações adicionais que uma
instrução precisa para funcionar corretamente ou de forma efetiva. Seus
valores podem variar conforme a execução do algoritmo progride, por
isso o nome “variável”. Em contrapartida, as constantes armazenam
valores que não são alterados durante a execução do algoritmo. Por
exemplo, o valor PI usado para calcular a área do círculo é uma constante,
já que seu valor não muda.
Instruções: a instrução é um dos componentes principais de um algo-
ritmo. Um algoritmo contém em si mesmo uma série de subalgoritmos,
sendo que cada um deles executa uma tarefa menor. Por exemplo, realizar
o cálculo de uma equação pode ser uma tarefa muito grande para ser
feita por apenas uma instrução. Assim, algumas tarefas, tais como
adição, subtração, multiplicação e divisão, podem ser consideradas ins-
truções menores e auxiliam na tarefa principal, que, no caso, é calcular
a equação. Dessa forma, todos os algoritmos podem ser, eventualmente,
divididos ou fatorados em instruções menores.
Conceitos básicos de algoritmos em Python8
Condicionais: em algum momento da execução de uma tarefa, alguns
algoritmos podem ter de tomar determinadas decisões. Por exemplo, se a
soma dos dois valores em questão for maior ou menor do que outro valor,
quando comparados, a tarefa segue por determinado caminho de fluxo;
caso contrário, a tarefa segue por outro caminho. Os componentes condi-
cionais permitem que um algoritmo execute instruções seletivamente com
base em certas condições que devem ser satisfeitas, dependendo do caso.
Repetições: esse componente de algoritmo permite executar determinadas
instruções repetidas vezes, até que dada condição seja satisfeita. Existem
casos, como uma lista, em que é necessário repetir uma instrução para
cada elemento existente. Há também outros casos em que é preciso repetir
um conjunto de instruções até um objetivo ser alcançado, ou até uma
condição ser satisfeita. As repetições podem conter em si outras instruções,
incluindo repetições comumente chamadas de “repetições aninhadas”.
Figura 2. Fluxograma das estruturas básicas de algoritmo para controle de fluxo de execução.
Estruturas básicas de algoritmo em Python
Antes de você se aprofundar no assunto das estruturas básicas em Python,
deve entender o que realmente é essa linguagem e qual é o objeto pelo qual
ela foi criada. Python é uma linguagem de programação e, como tal, possui
algumas características ou atributos próprios. A seguir, veja o que, em síntese,
esses atributos querem dizer.
Tem sintaxe bonita: nesse atributo, estão em jogo as regras que determi-
nam os comandos, as palavras reservadas, as declarações, a indentação
do código, as descrições formais, os operadores, etc.
9Conceitos básicos de algoritmos em Python
Tem semântica inteligente: a semântica é o significado de cada item
da sintaxe. Por exemplo, uma das instruções de repetição na linguagem
de programação Python tem a sintaxe while, e a semântica dessa sintaxe
é “repita enquanto a condição for verdadeira”.
É uma linguagem interpretada: o interpretador do Python, que são os
algoritmos internos da linguagem, executa o código-fonte diretamente,
traduzindo cada linha de código para instruções de máquina.
É de alto nível: o interpretador sabe lidar com os detalhes técnicos do
computador. Assim, desenvolver um código é mais simples do que em
linguagens de baixo nível, nas quais o programador deve se preocupar
com detalhes da máquina, tais como quantidade de memória disponível,
capacidade do processador, etc.
É de propósito geral: o Python pode ser usado para desenvolver progra-
mas em diversas áreas, ao contrário de linguagens de domínio específico,
que são especializadas e atendem somente a determinada aplicação.
É dinamicamente tipada: não é necessário informar o tipo no momento
da declaração da variável. O interpretador se encarrega de descobrir
que tipo tem cada variável.
É fortemente tipada: em Python, não é possível realizar operações
com tipos diferentes. Por exemplo, na tentativa de somar um valor do
tipo int (inteiro) com outro valor do tipo list (lista), o Python levantará
uma exceção de erro.
Por essas e outras características, o Python consegue ser uma linguagem
simples, de sintaxe bonita, legível e amigável. Além disso, muitas empresas,
como a Nasa, o Google, o Facebook e a Amazon, utilizam o Python diariamente.
Para instalar a linguagem Python, primeiramente deve-se realizar o download do
interpretador da linguagem, acessando o primeiro link listado a seguir. Essa página
contém os links dos instaladores para variados tipos de sistemas operacionais, tais como
Windows, Linux e Mac OS X. Para cada tipo de sistema operacional, é recomendado
seguir o guia de instalação específico do Python, disponível no segundo link.
https://qrgo.page.link/2otU8
https://qrgo.page.link/oCyNg
Conceitos básicos de algoritmos em Python10
O desenvolvimento do Python começou no final da década de 1980, por
Guido van Rossum. Ele decidiu usar esse nome porque estava lendo um ro-
teiro do Monty Python, um grupo de comédia britânico da década de 1970.
Assim, a versão 1.0 do Python foi publicada em 1994, a versão 2.0, em 2000,
e a versão 3.0, em 2008.
Há diversos ambientes integrados de desenvolvimento (no inglês Integrated Develop-
ment Environment — IDE) que dão suporte à linguagem de programação Python,
sendo que alguns são mais simples e outros são mais complexos. Esses ambientes
auxiliam significativamente nos seguintes quesitos: identificação das variáveis que
foram declaradas; identificação dos erros no código; personalização do ambiente de
trabalho; ocultação de parte do código para melhor visualização, etc. Ficam como
dica alguns IDEs:
PyCharm Edu
Atom
IDLE
Spyder
Assim, você pode pesquisar as características de cada um deles no Google, fa-
zer o download no site do desenvolvedor do IDE e instalar o que você achar mais
interessante.
Os algoritmos geralmente são criados usando pseudocódigo e são in-
dependentes das linguagens subjacentes, ou seja, um algoritmo pode ser
implementado em mais de uma linguagem de programação. Da mesma forma,
a maioria das linguagens de programação compartilha instruções básicas de
código, como as repetições, os controles de fluxo, etc. Assim, quase todos
os algoritmos têm a possiblidade de ser implementados na linguagem de
programação Python.
No Python, as variáveis, funções e estruturas de dados são tratadas como
objetos. Um identificador no Python é um nome usado para identificar
esses objetos.
11Conceitos básicos de algoritmos em Python
A seguir, veja exemplos de identificadores para nomear objetos:
nome = "Paulo"
idade = 25
estado _ civil = "solteiro"
PI = 3.1415
Para declarar um identificador, vocêpode usar os conjuntos de letras (de
A até Z e de a até z), os dígitos (de 0 a 9) e também o caractere especial subli-
nhado (_) (ROSSUM, 2001). O Python não permite caracteres especiais para
identificadores, tais como os símbolos @, $ e %, pois alguns deles também
são operadores aritméticos nessa linguagem.
O Python é uma linguagem de programação sensível ao caso (case-sensitive), ou seja,
que faz distinção entre letras maiúsculas e letras minúsculas. Por exemplo, no Python,
os objetos do tipo string “feliz” e “FELIZ” são diferentes entre si.
Algumas linguagens de programação, como o Java e o PHP, exigem que,
para cada bloco de código, seja usado um par de chaves para indicar o corpo
do bloco. No Python, não são necessárias essas chaves, pois os blocos de
código são indicados por um recuo de linha, que é chamado de indentação
(PYTHON SOFTWARE FOUNDATION, 2019a). A quantidade de espaços
em branco na indentação é variável (geralmente quatro espaços), porém todas
as instruções dentro do bloco devem ser recuadas com a mesma quantidade
de espaços. Assim, todas as linhas recuadas com o mesmo número de espaços
formam um bloco de código, e este termina quando a próxima linha tiver uma
indentação diferente.
Conceitos básicos de algoritmos em Python12
Veja um exemplo de bloco de código com uma estrutura de controle de fluxo:
if 'a' == 'b':
# início do bloco
print('a é igual a b')
a = 2 + 2
b = 1 + 3
Um tipo de dado é na verdade um conjunto de valores com um conjunto de
operações definidas para esses valores. O Python pode armazenar em memória
diferentes tipos de dados, pois esses tipos estão embutidos nessa linguagem de
programação. Por exemplo, imagine que seja necessário armazenar os dados
do endereço de uma pessoa. Isso pode ser feito do seguinte modo: o número
da casa da pessoa pode ser armazenado como um valor numérico, e o nome
da rua em que a pessoa mora pode ser armazenado como texto. No Python,
também é possível somar dois valores numéricos, mas não é possível somar
um número e uma frase (texto). Os tipos de dados mais comuns que o Python
possui são: numéricos, cadeias de caracteres (strings), listas, tuplas, conjuntos
e dicionários (PYTHON SOFTWARE FOUNDATION, 2019b).
Veja a seguir um exemplo dos tipos de dados lista e dicionário:
lista = [1, 2, 3, 4]
dicionario = {
'nome': 'Paulo',
'idade': 25,
'estado _ civil':
'solteiro'
}
13Conceitos básicos de algoritmos em Python
Operadores são estruturas que podem manipular os valores dos dados
(PYTHON SOFTWARE FOUNDATION, 2019c). O Python dispõe de um
vasto conjunto de operadores para realizar operações. Esses operadores tam-
bém são chamados de “operadores relacionais”. Por exemplo, os operadores
de comparação analisam os valores em ambos os lados de uma expressão e
decidem a relação entre eles. Os operadores mais comuns são os que realizam
operações aritméticas, de comparação, lógicas, bit a bit, etc.
Veja um exemplo de alguns operadores aritméticos:
a = 2 + 2 # 4
b = 3 - 1 # 2
c = 4 * 3 # 12
d = 6 / 2 # 3
Estruturas de controle de fluxo avaliam expressões que produzem verda-
deiro ou falso como resultado. No Python, a tomada de decisão é de extrema
importância, pois é a antecipação das condições que ocorrem durante a execu-
ção do programa. Com essas estruturas, é possível seguir determinado fluxo
de execução e, de acordo com as condições (verdadeiro ou falso), tomar certas
decisões (PYTHON SOFTWARE FOUNDATION, 2019d).
Veja a seguir um exemplo de algumas estruturas de controle para decisão:
if a > b:
print('a é igual a b')
elif a < b:
print('a é diferente de b')
else:
print('a é b são iguais')
Conceitos básicos de algoritmos em Python14
Uma estrutura de repetição permite executar uma instrução ou grupo
de instruções várias vezes. A linguagem de programação Python fornece
algumas estruturas para lidar com os requisitos de repetição. Essas estruturas
testam repetidamente a expressão e, se ela for verdade, executam o primeiro
conjunto; se a expressão for falsa, o que pode ser verificado na primeira vez que
ela é testada, o fluxo segue para o fim da repetição (PYTHON SOFTWARE
FOUNDATION, 2019d).
Veja um exemplo de duas estruturas de repetição:
# while
i = 0
while i < 5:
print(i)
i += 1
# for
for i in range(5):
print(i)
Nos links a seguir (em inglês), você pode consultar uma vasta gama de exemplos de
estruturas em Python.
https://qrgo.page.link/MXfDk
https://qrgo.page.link/8yXEX
https://qrgo.page.link/qftMj
15Conceitos básicos de algoritmos em Python
GUIMARÃES, A. M.; LAGES, N. A. C., Algoritmos e estruturas de dados. Rio de Janeiro:
LTC, 1985.
MOKARZEL, F.; SOMA, N. Introdução à ciência da computação. Rio de Janeiro: Elsevier,
2008.
PYTHON SOFTWARE FOUNDATION. Built-in types. [2019c]. Disponível em: https://docs.
python.org/3/library/stdtypes.html. Acesso em: 30 dez. 2019.
PYTHON SOFTWARE FOUNDATION. Data types. [2019a]. Disponível em: https://docs.
python.org/3/library/datatypes.html. Acesso em: 30 dez. 2019.
PYTHON SOFTWARE FOUNDATION. Lexical analysis. [2019b]. Disponível em: https://
docs.python.org/3/reference/lexical_analysis.html?highlight=indent#indentation.
Acesso em: 30 dez. 2019.
PYTHON SOFTWARE FOUNDATION. More control flow tools. [2019d]. Disponível em:
https://docs.python.org/3/tutorial/controlflow.html?highlight=elif#more-control-
-flow-tools. Acesso em: 30 dez. 2019.
ROSSUM, G. PEP 8: style guide for Python code. 2001. Disponível em: https://www.
python.org/dev/peps/pep-0008/#naming-conventions. Acesso em: 30 dez. 2019.
SEDGEWICK, R.; FLAJOLET, P. An introduction to the analysis of algorithms. [2019]. Dispo-
nível em: https://aofa.cs.princeton.edu/home/. Acesso em: 30 dez. 2019.
Leituras recomendadas
PYTHON COURSE. Python3 tutorial. 2019. Disponível em: https://www.python-course.
eu/python3_course.php. Acesso em: 30 dez. 2019.
TUTORIALS POINT. DAA: methodology of analysis. 2019a. Disponível em: https://www.
tutorialspoint.com/design_and_analysis_of_algorithms/design_and_analysis_of_al-
gorithms_methodology.htm. Acesso em: 30 dez. 2019.
TUTORIALS POINT. Python tutorial. 2019b. Disponível em: https://www.tutorialspoint.
com/python/index.htm. Acesso em: 30 dez. 2019.
W3SCHOOLS. Python tutorial. 2019. Disponível em: https://www.w3schools.com/
python/. Acesso em: 30 dez. 2019.
Conceitos básicos de algoritmos em Python16
Os links para sites da Web fornecidos neste capítulo foram todos testados, e seu fun-
cionamento foi comprovado no momento da publicação do material. No entanto, a
rede é extremamente dinâmica; suas páginas estão constantemente mudando de
local e conteúdo. Assim, os editores declaram não ter qualquer responsabilidade
sobre qualidade, precisão ou integralidade das informações referidas em tais links.
17Conceitos básicos de algoritmos em Python
DICA DO PROFESSOR
Entender os conceitos básicos de algoritmos é de suma importância para desenvolver a habilidad
e de programação. Assim, é mais simples resolver problemas computacionais aplicando-se o pen
samento lógico.
Nesta Dica do Professor, você vai ver conceitos básicos de algoritmos em Python.
Aponte a câmera para o código e acesse o link do vídeo ou clique no código para acessar.
EXERCÍCIOS
1) Instruções de comparação são essenciais para tomar decisões em um algoritmo. Depe
ndendo do resultado da comparação, o fluxo de execução segue para um ou outro blo
co de instruções.
Nas expressões envolvendo comparação, qual é o tipo do valor que sempre é retornad
o?
A)
Booleano.
B)
Inteiro.
C)
Lista.
D)
String (texto).
E)
Float (ponto flutuante).
Identificadores são os nomes de variáveis, funções e classes em Python. Para nomear
variáveis nessa linguagem de programação, é preciso tomar certos cuidados para não
2)
https://fast.player.liquidplatform.com/pApiv2/embed/cee29914fad5b594d8f5918df1e801fd/3672b3e23b65ebe82110d30b1027a068
usar palavras reservadas, conhecidas comokeywords, bem como evitar usar caractere
s não permitidos.
Das alternativas a seguir, qual tem a variável nomeada com o identificador correto?
A)
nome-aluno = "João Pedro"
B)
data+nascimento = "23/07/2002"
C)
ensino_medio = True
D)
18_anos_completo = True
E)
serviço_militar = False
3) Variáveis, como o próprio nome já diz, podem ter seus valores alterados durante a ex
ecução do programa.
Considere o seguinte código:
x = 10
y = 20
resultado = 30
if (not y >= 5) or (x > 5):
resultado = x * y
else:
resultado += y
Qual será o valor da variável resultado ao final da sua execução?
A)
10.
B)
20.
C)
50.
D)
100.
E)
200.
4) Declarações de encerramento prematuro são importantes para alterar o fluxo de repe
tição. Dependendo do caso, o programador deseja apenas seguir para o próximo laço
de repetição ou que a repetição seja encerrada totalmente.
Considerando isso, qual é o objetivo da instrução de encerramento prematuro break?
A)
Ler as linhas de código restantes e seguir para o próximo laço de repetição.
B)
Não ler as linhas de código restantes e seguir para o próximo laço de repetição.
C)
Ler as linhas de código restantes e seguir para a finalização completa da repetição.
D)
Não ler as linhas de código restantes e seguir para a finalização completa da repetição.
E)
Não ler as linhas de código restantes e, no próximo laço, seguir para a finalização complet
a da repetição.
5) A declaração while repete a execução de um bloco de código quantas vezes forem nec
essárias. Trata-se de uma excelente estrutura para se trabalhar com listas, contadore
s ou mesmo para repetir alguma instrução.
Uma instrução while será executada enquanto for atendida determinada condição. Q
ue condição é essa?
A)
Enquanto a condição for igual.
B)
Enquanto a condição for maior.
C)
Enquanto a condição for menor.
D)
Enquanto a condição for falsa.
E)
Enquanto a condição for verdadeira.
NA PRÁTICA
Em algoritmos, a tomada de decisão é necessária, pois antecipa as condições que ocorrem durant
e a execução do programa. No Python, a instrução if, bem como a elif avaliam a expressão condi
cional e desviam para a execução do código que está no corpo da instrução somente se a express
ão avaliada for verdadeira. Se a expressão condicional for falsa, o bloco de código não é executa
do e o desvio da execução segue para a próxima instrução, por exemplo, a instrução else, caso es
teja presente.
Neste Na Prática, você vai ver a resolução de um problema, utilizando as instruções if, elif e else
.
SAIBA +
Para ampliar o seu conhecimento a respeito desse assunto, veja abaixo as sugestões do professo
r:
Python documentation
Aprender uma linguagem de programação requer um pouco de esforço e dedicação. Além disso,
uma boa documentação faz diferença na hora do aprendizado. O segredo é buscar a informação
na fonte. Acesse o site para saber mais (em inglês).
Aponte a câmera para o código e acesse o link do vídeo ou clique no código para acessar.
Scratch: ferramenta on-line para aprender lógica de programação
Se você quer se antecipar e aguçar seus conhecimentos em lógica de programação, acesse a ferra
menta a seguir. Com ela, você não vai aprender uma linguagem de programação em si, mas, si
m, treinar seu raciocínio lógico-algorítmico por meio da criação de jogos, histórias e animações.
Clique no ícone do globo para selecionar o idioma.
Aponte a câmera para o código e acesse o link do vídeo ou clique no código para acessar.
Algoritmos e programação com exemplos em Pascal e C
Ter um livro como suporte de aprendizado é uma excelente escolha na hora de aprender. Lembr
e-se de que os autores já trilharam o caminho que você está percorrendo agora. Embora esse livr
o contenha exemplos em Pascal e C, você saberá facilmente implementar os exemplos em Pytho
n. Confira.
Conteúdo interativo disponível na plataforma de ensino!
Ciência da computação: uma visão abrangente
https://docs.python.org/3/
https://scratch.mit.edu/projects/editor/?tutorial=getStarted
Esta obra serve como uma primeira abordagem à computação. Inicialmente, são apresentados os
conceitos básicos de um computador, de seus elementos e suas inter-relações em vários níveis.
Você poderá estudar também os diversos tipos de informações a serem manipuladas por comput
adores, assim como a evolução do relacionamento do ser humano com o computador.
Conteúdo interativo disponível na plataforma de ensino!