Atividade Pratica 1 (2026.1) – Python Básico aplicado à Construção Civil#
Responder a questão incluindo narrativa, enunciado completo, fluxograma (descrição), pseudocódigo e solução comentada. A atividade deverá ser enviada o código via plataforma do Teams e apresentada na próxima aula ao professor. A entrega deve ser feita usando o modelo latex, anexando o pdf, link do overleaf e o código latex.
Questão 1 – Dosagem de concreto#
Um técnico precisa calcular a quantidade de sacos de cimento necessários para uma concretagem.
Dados:
Volume: 2,5 m³
Consumo: 320 kg/m³
Cada saco: 50 kg
Solicita-se:
Descrever o fluxograma
Escrever o pseudocódigo
Criar a função
calcula_sacos(volume)Calcular a massa total
Arredondar o número de sacos para cima usando
math.ceilExibir o resultado
Fluxo: Entrada → validação → cálculo → saída
Pseudocódigo: se volume <= 0: erro massa = volume * 320 sacos = ceil(massa/50)
import math
def calcula_sacos(volume):
# Validação do dado de entrada
if volume <= 0:
return "Volume inválido"
# Cálculo da massa total de cimento
massa = volume * 320
# Arredondamento para cima do número de sacos
sacos = math.ceil(massa / 50)
return sacos
print(calcula_sacos(2.5))
16
Questão 2 – Controle de estoque#
O almoxarifado simula movimentações aleatórias de materiais.
Dados:
Estoque inicial: 100
Limite mínimo: 40
Solicita-se:
Criar fluxograma com laço
Escrever pseudocódigo
Implementar
simula_estoque(estoque)Gerar 5 movimentações aleatórias entre -30 e +20
Impedir estoque abaixo do mínimo
Exibir estoque final
Fluxo: loop → gerar movimento → validar → atualizar
Pseudocódigo: para 5 vezes: mov = aleatório se estoque+mov >= mínimo: atualizar
import random
def simula_estoque(estoque):
minimo = 40
# Loop de simulação
for _ in range(5):
mov = random.randint(-30, 20)
# Só atualiza se não violar o limite mínimo
if estoque + mov >= minimo:
estoque += mov
return estoque
print(simula_estoque(100))
81
Questão 3 – Área de setor circular (com conversão de graus)#
Em uma obra, um engenheiro precisa calcular a área de um setor circular (fatia de um círculo) para projetar a base de um pilar curvo.
Solicita-se:
Ler os dados de entrada (raio e ângulo em graus)
Converter graus para radianos
Calcular a área do setor
Exibir o resultado
Fórmula: A = (r² * θ) / 2
Fluxo: Entrada → conversão → cálculo → saída
Pseudocódigo: ler raio ler angulo_graus angulo_rad = converter_para_radianos(angulo_graus) area = (raio^2 * angulo_rad) / 2 exibir area
import math
# Função para calcular área do setor circular
def area_setor(raio, angulo_graus):
if raio <= 0:
return "Raio inválido"
angulo_rad = math.radians(angulo_graus)
area = (raio**2 * angulo_rad) / 2
return area
# Entrada de dados
raio = float(input("Digite o raio (m): "))
angulo = float(input("Digite o ângulo (graus): "))
# Saída
resultado = area_setor(raio, angulo)
print("Área do setor:", resultado)
Área do setor: 17.453292519943293
Questão 4 – Nível de água#
Sistema monitora continuamente o nível da caixa d’água.
Dados:
Leituras: 25, 50, 80
Regras:
< 30 → Crítico
30 a 70 → Adequado
70 → Cheio
Solicita-se:
Fluxograma com laço
Pseudocódigo
Função
classifica_nivel(nivel)Classificar cada leitura
Exibir resultados
Fluxo: loop → decisão → saída
Pseudocódigo: se <30: crítico elif <=70: adequado else: cheio
def classifica_nivel(nivel):
if nivel < 30:
return "Crítico"
elif nivel <= 70:
return "Adequado"
else:
return "Cheio"
leituras = [25, 50, 80]
for n in leituras:
print(n, "->", classifica_nivel(n))
25 -> Crítico
50 -> Adequado
80 -> Cheio
Questão 5 – Temperatura do concreto#
Análise térmica do concreto durante a cura.
Dados:
Temperaturas: 20, 22, 25, 27, 29
Solicita-se:
Fluxograma
Pseudocódigo
Função
analise_temp(lista)Calcular média (1 casa decimal)
Verificar faixa ideal (20–30 °C)
Exibir média e status
Fluxo: soma → média → decisão
Pseudocódigo: média = soma/quantidade se entre 20 e 30: ideal
def analise_temp(lista):
# Cálculo da média
media = round(sum(lista)/len(lista), 1)
# Verificação da faixa ideal
if 20 <= media <= 30:
status = "Ideal"
else:
status = "Fora"
return media, status
print(analise_temp([20,22,25,27,29]))
(24.6, 'Ideal')
Questão 6 – Custo de mão de obra#
Cálculo do custo semanal de um trabalhador.
Dados:
Horas: [8, 9, 10, 8, 7]
Valor hora: R$ 30
Extra: +50% acima de 8h
Solicita-se:
Fluxograma com laço
Pseudocódigo
Função
custo_semanalCalcular custo total
Exibir resultado
Fluxo: loop → decisão → soma
Pseudocódigo: se >8h: calcula extra
def custo_semanal(horas, valor):
total = 0
for h in horas:
if h > 8:
total += 8*valor + (h-8)*valor*1.5
else:
total += h*valor
return total
print(custo_semanal([8,9,10,8,7], 30))
1305.0
Questão 7 – Orçamento#
Narrativa: O preço do concreto varia conforme fornecedor.
Dados:
Volume: 3 m³
Preço base: R$ 250
Solicita-se:
Fluxograma
Pseudocódigo
Função
orcamentoGerar variação aleatória ±10%
Calcular custo
Verificar se está abaixo de R$ 900
Exibir resultado
Fluxo: gerar variação → cálculo → decisão
Pseudocódigo: preço = base*(1±10%) se custo < 900: aprovado
import random
def orcamento(volume, preco):
# Geração de variação aleatória
variacao = random.uniform(-0.1, 0.1)
preco_final = preco * (1 + variacao)
custo = volume * preco_final
if custo < 900:
status = "Aprovado"
else:
status = "Revisar"
return custo, status
print(orcamento(3,250))
(788.380448464752, 'Aprovado')