📘 Exercícios — Capítulo 2#
Bases da Programação#
Exercícios Propostos#
1. Escreva um algoritmo em prosa para a tarefa de fazer uma ligação telefônica a partir de um smartphone, garantindo que não haja ambiguidades nos passos.
2. Classifique os seguintes identificadores como válidos ou inválidos de acordo com as regras de formação: _saldo, 2lugar, valor total, distância, preco_final, A123 e while.
3. Melhore a legibilidade da seguinte expressão aritmética renomeando as variáveis x, y e z para nomes significativos: z = (x * y) / 100 (dica: imagine que é um cálculo de comissão de vendas).
4. Converta o identificador calculoMediaFinal do estilo lowerCamelCase para o estilo snake_case.
5. Explique, com base no conceito de case sensitive, por que o Python trataria Salario, salario e SALARIO como três variáveis distintas.
6. Em Python, ao executarmos x = 10 e depois x = 20, o valor 10 é substituído na mesma posição de memória ou um novo objeto é criado? Justifique com base no mecanismo de referências.
7. O que acontece com um objeto na memória quando ele perde todas as suas referências (nomes associados)? Descreva o mecanismo de coleta de lixo (garbage collection).
8. Identifique o tipo de dado Python (inteiro, ponto flutuante, complexo, booleano ou string) para cada valor a seguir: 5, 5.0, 5j, "5", True e 5.3e10.
9. Qual será o resultado da operação de divisão inteira x = -7 // 2 em Python? Explique por que o resultado difere de linguagens como C.
10. Escreva uma expressão em Python para calcular o resto da divisão de 15 por 4 e outra para calcular 2 elevado à potência 10.
11. Crie um pequeno programa que utilize a atribuição compacta para somar o valor 5 a uma variável contador que já possui o valor 10.
12. Explique por que a operação print(0.1 + 0.2 == 0.3) pode retornar False em Python, mencionando a natureza da representação de ponto flutuante.
13. Utilize o caractere de contrabarra (\) para escrever uma única instrução de atribuição em Python que ocupe três linhas no código-fonte.
14. Escreva um código Python que teste se uma variável x está entre os valores 10 e 20 (inclusive) usando a sintaxe de comparação encadeada.
15. Demonstre como incluir aspas duplas dentro de uma string que já está delimitada por aspas simples em Python.
16. O que diferencia a tipagem estática (usada em C/Java) da tipagem dinâmica do Python quanto à declaração de variáveis?.
17. Por que é uma convenção comum entre programadores escrever nomes de constantes (como PI) inteiramente em letras maiúsculas, se o Python não proíbe a alteração de seus valores?.
18. Escreva uma expressão booleana que use o operador != para verificar se o nome de um usuário não é igual a “admin”.
19. Refine o algoritmo de busca em dicionário (Seção 2.3) adicionando um passo que trate o caso de o dicionário estar completamente vazio.
20. No contexto da busca binária, se tivermos um universo de 1.000.000 de elementos, qual é o número máximo aproximado de passos necessários para encontrar um item?.