Skip to content
ExamplesEspañolWorkspace →

ATM

Checks your PIN and lets you check, deposit and withdraw money.

Level
Advanced
Topic:
Projects
Concepts:
Input & output
Repetir
Segun
Si
Logic
Open in Codoritmo

Run, change and debug this example in your browser.

What you'll learn

A Repetir loop with three tries guards access using a Logico variable. Then a Segun menu updates the balance and uses MOD to accept only multiples of 100.

Code

atm.psc · 60 lines
Algoritmo CajeroAutomatico    Definir saldo Como Real    Definir opcion, intentos, monto Como Entero    Definir pin Como Caracter    Definir acceso Como Logico    saldo <- 5000    intentos <- 0    acceso <- Falso    Repetir        Escribir "Ingrese su PIN:"        Leer pin        intentos <- intentos + 1        Si pin = "1234" Entonces            acceso <- Verdadero        SiNo            Si intentos < 3 Entonces                Escribir "PIN incorrecto. Le quedan ", 3 - intentos, " intentos."            FinSi        FinSi    Hasta Que acceso O intentos = 3    Si NO acceso Entonces        Escribir "Tarjeta bloqueada. Comuníquese con su banco."    SiNo        Repetir            Escribir ""            Escribir "1. Consultar saldo   2. Depositar   3. Retirar   4. Salir"            Leer opcion            Segun opcion Hacer                1:                    Escribir "Saldo disponible: $", saldo                2:                    Escribir "Monto a depositar:"                    Leer monto                    Si monto > 0 Entonces                        saldo <- saldo + monto                        Escribir "Depósito realizado. Nuevo saldo: $", saldo                    SiNo                        Escribir "El monto debe ser positivo."                    FinSi                3:                    Escribir "Monto a retirar (múltiplos de 100):"                    Leer monto                    Si monto MOD 100 <> 0 Entonces                        Escribir "El cajero solo entrega billetes de 100."                    SiNo                        Si monto > saldo Entonces                            Escribir "Fondos insuficientes."                        SiNo                            saldo <- saldo - monto                            Escribir "Retire su dinero. Nuevo saldo: $", saldo                        FinSi                    FinSi                4:                    Escribir "Gracias por usar el cajero."                De Otro Modo:                    Escribir "Opción no válida."            FinSegun        Hasta Que opcion = 4    FinSiFinAlgoritmo

Flowchart

Each block in the flowchart matches one instruction in the code.

Algoritmo CajeroAutomaticoSíNoSíNoNoSíNoSíNoSíNo1234De Otro ModoNoSíNoSíSíAlgoritmo CajeroAutomaticoAlgoritmo CajeroAutomaticoDefinir saldo Como RealDefinir saldo Como RealDefinir opcion, intentos, monto Como EnteroDefinir opcion, intentos,monto Como EnteroDefinir pin Como CaracterDefinir pin Como CaracterDefinir acceso Como LogicoDefinir acceso Como Logicosaldo <- 5000saldo <- 5000intentos <- 0intentos <- 0acceso <- Falsoacceso <- FalsoEscribir "Ingrese su PIN:"Escribir "Ingrese su PIN:"Leer pinLeer pinintentos <- intentos + 1intentos <- intentos + 1Si pin = "1234" Entoncespin = "1234"acceso <- Verdaderoacceso <- VerdaderoSi intentos < 3 Entoncesintentos < 3Escribir "PIN incorrecto. Le quedan ", 3 - intentos, " intentos."Escribir "PIN incorrecto. Lequedan ", 3 - intentos, "intentos."Hasta Que acceso O intentos = 3acceso O intentos =3Si NO acceso EntoncesNO accesoEscribir "Tarjeta bloqueada. Comuníquese con su banco."Escribir "Tarjeta bloqueada.Comuníquese con su banco."Escribir ""Escribir ""Escribir "1. Consultar saldo 2. Depositar 3. Retirar 4. Salir"Escribir "1. Consultar saldo 2. Depositar 3. Retirar 4.Salir"Leer opcionLeer opcionSegun opcion HaceropcionEscribir "Saldo disponible: $", saldoEscribir "Saldo disponible:$", saldoEscribir "Monto a depositar:"Escribir "Monto a depositar:"Leer montoLeer montoSi monto > 0 Entoncesmonto > 0saldo <- saldo + montosaldo <- saldo + montoEscribir "Depósito realizado. Nuevo saldo: $", saldoEscribir "Depósito realizado.Nuevo saldo: $", saldoEscribir "El monto debe ser positivo."Escribir "El monto debe serpositivo."Escribir "Monto a retirar (múltiplos de 100):"Escribir "Monto a retirar(múltiplos de 100):"Leer montoLeer montoSi monto MOD 100 <> 0 Entoncesmonto MOD 100 <> 0Escribir "El cajero solo entrega billetes de 100."Escribir "El cajero soloentrega billetes de 100."Si monto > saldo Entoncesmonto > saldoEscribir "Fondos insuficientes."Escribir "Fondosinsuficientes."saldo <- saldo - montosaldo <- saldo - montoEscribir "Retire su dinero. Nuevo saldo: $", saldoEscribir "Retire su dinero.Nuevo saldo: $", saldoEscribir "Gracias por usar el cajero."Escribir "Gracias por usar elcajero."Escribir "Opción no válida."Escribir "Opción no válida."Hasta Que opcion = 4opcion = 4FinAlgoritmoFinAlgoritmo

Sample run

This is what the program shows when it runs. The answers typed by the user are highlighted.

Ingrese su PIN:User answer: 1111PIN incorrecto. Le quedan 2 intentos.Ingrese su PIN:User answer: 1234 1. Consultar saldo   2. Depositar   3. Retirar   4. SalirUser answer: 1Saldo disponible: $5000 1. Consultar saldo   2. Depositar   3. Retirar   4. SalirUser answer: 2Monto a depositar:User answer: 1500Depósito realizado. Nuevo saldo: $6500 1. Consultar saldo   2. Depositar   3. Retirar   4. SalirUser answer: 3Monto a retirar (múltiplos de 100):User answer: 2250El cajero solo entrega billetes de 100. 1. Consultar saldo   2. Depositar   3. Retirar   4. SalirUser answer: 3Monto a retirar (múltiplos de 100):User answer: 2000Retire su dinero. Nuevo saldo: $4500 1. Consultar saldo   2. Depositar   3. Retirar   4. SalirUser answer: 1Saldo disponible: $4500 1. Consultar saldo   2. Depositar   3. Retirar   4. SalirUser answer: 4Gracias por usar el cajero.

Challenge

Limit withdrawals to at most $3000 per transaction.

Show hint

Add another condition in case 3, before checking whether there are enough funds.

Open in Codoritmo
  • Contact Book

    Add, list and search contacts in a book that grows.

    Advanced
  • Shell Sort

    Insertion sort between far-apart elements, with a gap that shrinks every pass.

    Advanced
  • Quicksort

    Picks a pivot, splits smaller from larger values and sorts each side recursively.

    Advanced