1. Uma conta começa com saldo zero. Para cada transação (“DEPOSITO” ou “SAQUE”), atualize o saldo. Rejeite saques com valor maior que o saldo. Retorne ou imprima o valor do saldo final e o total de rejeições que possam ter ocorrido. Considere a seguinte lista de transações:
    transacoes = [
    (“DEPOSITO”, 100.0),
    (“SAQUE”, 30.0),
    (“SAQUE”, 80.0),
    (“DEPOSITO”, 50.0)
    ]

Passo 1

O enunciado pede para processar uma sequência de transações que começam com saldo zero e, a cada transação, atualizar o saldo; se for um saque com valor maior que o saldo, esse saque deve ser rejeitado. No final, devemos retornar o valor do saldo final e o total de rejeições ocorridas. As informações dadas (peguei diretamente da lista do enunciado) são as transações:
("DEPOSITO",\;100,0),
("SAQUE",\;30,0),
("SAQUE",\;80,0),
("DEPOSITO",\;50,0).

Passo 2

Vamos resolver isso simulando as transações uma a uma, na ordem dada. Para isso definimos duas variáveis que vamos atualizar ao longo do processo:
saldo
que guarda o dinheiro atual na conta, e
rejeicoes
que conta quantos saques foram rejeitados. Inicializamos:
saldo = 0
rejeicoes = 0
Aqui saldo está em unidades monetárias e rejeicoes é um contador inteiro.

Passo 3

Regra para um depósito: se a transação for do tipo “DEPOSITO” com valor v, então atualizamos o saldo somando esse valor:
saldo \leftarrow saldo + v
Explicando: o símbolo \leftarrow indica atribuição (ou seja, o novo valor de saldo passa a ser o resultado da soma). Por exemplo, se saldo=10 e chega um depósito v=5, então saldo vira 15.

Passo 4

Regra para um saque: se a transação for do tipo “SAQUE” com valor v, precisamos verificar se há fundos suficientes:
  • se v \le saldo, o saque é autorizado e fazemos
saldo \leftarrow saldo - v
  • se v > saldo, o saque é rejeitado e fazemos
rejeicoes \leftarrow rejeicoes + 1
e o saldo permanece igual.
Explicando a desigualdade: v \le saldo significa que o valor do saque não excede o que tem na conta; se exceder, não podemos permitir o saque.

Passo 5

Agora aplicamos as regras à primeira transação, que é um depósito de 100,0. Antes dessa transação tínhamos:
saldo = 0,\quad rejeicoes = 0.
Aplicando a regra do depósito com v = 100,0:
saldo \leftarrow 0 + 100,0 = 100,0.
Portanto, após a primeira transação:
saldo = 100,0,\quad rejeicoes = 0.

Passo 6

Segunda transação: é um saque de 30,0. Verificamos a condição:
30,0 \le 100,0?
Sim, é verdadeira, então autorizamos o saque e atualizamos:
saldo \leftarrow 100,0 - 30,0 = 70,0.
O contador de rejeições permanece:
rejeicoes = 0.
Após a segunda transação:
saldo = 70,0,\quad rejeicoes = 0.

Passo 7

Terceira transação: é um saque de 80,0. Verificamos:
80,0 \le 70,0?
Não — a desigualdade é falsa, pois 80,0 > 70,0. Logo esse saque deve ser rejeitado. Aplicamos a regra de rejeição:
rejeicoes \leftarrow 0 + 1 = 1.
O saldo não muda:
saldo = 70,0.
Após a terceira transação:
saldo = 70,0,\quad rejeicoes = 1.

Passo 8

Quarta transação: é um depósito de 50,0. Aplicamos a regra do depósito com v = 50,0:
saldo \leftarrow 70,0 + 50,0 = 120,0.
O número de rejeições não muda:
rejeicoes = 1.
Após a quarta transação (e como não há mais transações), temos o resultado final:
saldo = 120,0,\quad rejeicoes = 1.

Resposta

Saldo final: 120,0
Total de rejeições: 1

Exercícios relacionados