struct Livro {
let titulo: String
let autor: String
var ano: Int?
var estaEmprestado: Bool
mutating func emprestar() {
if !estaEmprestado {
estaEmprestado = true
print("Livro '\(titulo)' emprestado.")
} else {
print("Livro '\(titulo)' já está emprestado.")
}
}
mutating func devolver() {
if estaEmprestado {
estaEmprestado = false
print("Livro '\(titulo)' devolvido.")
} else {
print("Livro '\(titulo)' já está disponível.")
}
}
func status() {
let estado = estaEmprestado ? "Emprestado" : "Disponível"
print("• \(titulo) — \(autor) — \(estado)")
}
}
class Biblioteca {
private var livros: [Livro] = []
private var usuarios: [Usuario] = []
func adicionarLivro(_ livro: Livro) {
livros.append(livro)
print("Livro '\(livro.titulo)' adicionado à biblioteca.")
}
func listarLivros() {
print("\n📚 Lista de Livros:")
for livro in livros {
livro.status()
}
}
func adicionarUsuario(_ usuario: Usuario) {
usuarios.append(usuario)
print("Usuário \(usuario.nome) adicionado.")
}
func listarUsuarios() {
print("\n👥 Lista de Usuários:")
for usuario in usuarios {
print("• \(usuario.nome) — \(usuario.cpf)")
}
}
func emprestarLivro(titulo: String, para usuario: Usuario, naData data: String) {
print("Livro \(titulo) emprestado para \(usuario.nome) na data \(data)")
}
func devolverLivro(titulo: String, de usuario: Usuario, naData data: String) {
print("Livro \(titulo) devolvido por \(usuario.nome) na data \(data)")
}
}
// Criando 7 livros
let livro1 = Livro(titulo: "11 Minutos", autor: "Paulo Coelho", ano: 2003, estaEmprestado: false)
let livro2 = Livro(titulo: "Se Houver Amanhã", autor: "Sidney Sheldon", ano: 1985, estaEmprestado: false)
let livro3 = Livro(titulo: "A Mão e a Luva", autor: "Machado de Assis", ano: 1874, estaEmprestado: true)
let livro4 = Livro(titulo: "Esaú e Jacó", autor: "Machado de Assis", ano: 1904, estaEmprestado: false)
let livro5 = Livro(titulo: "Por que as Nações Fracassam", autor: "Acemoglu & Robinson", ano: 2002, estaEmprestado: false)
let livro6 = Livro(titulo: "O Cavaleiro dos Sete Reinos", autor: "George R. R. Martin", ano: nil, estaEmprestado: false)
let livro7 = Livro(titulo: "O Morro dos Ventos Uivantes", autor: "Emily Brontë", ano: 1847, estaEmprestado: true)
// Biblioteca
let minhaBiblioteca = Biblioteca()
// Adicionando TODOS os 7 livros
minhaBiblioteca.adicionarLivro(livro1)
minhaBiblioteca.adicionarLivro(livro2)
minhaBiblioteca.adicionarLivro(livro3)
minhaBiblioteca.adicionarLivro(livro4)
minhaBiblioteca.adicionarLivro(livro5)
minhaBiblioteca.adicionarLivro(livro6)
minhaBiblioteca.adicionarLivro(livro7)
minhaBiblioteca.listarLivros()
// criar usuários da biblioeca
class Usuario {
let nome: String
let cpf: String
var livrosEmprestados: [(livro: Livro, dataRetirada: String, dataEntrega: String?)] = []
init(nome: String, cpf: String) {
self.nome = nome
self.cpf = cpf
}
func listarLivrosEmprestados() {
for item in livrosEmprestados {
print("Livro: \(item.livro.titulo), Retirado: \(item.dataRetirada), Entrega: \(item.dataEntrega ?? "Ainda não devolvido")")
}
}
}
let usuario1 = Usuario(nome: "Zulmira", cpf: "123.456.789-00")
let usuario2 = Usuario(nome: "João", cpf: "987.654.321-00")
let usuario3 = Usuario(nome: "Jacob", cpf: "432.987.210-28")
// Empréstimo de livros
minhaBiblioteca.emprestarLivro(
titulo: "11 Minutos",
para: usuario1,
naData: "05/09/2026"
)
minhaBiblioteca.emprestarLivro(
titulo: "Por que as nações fracassam",
para: usuario1,
naData: "07/09/2026"
)
// Devolução dos livros
minhaBiblioteca.devolverLivro(
titulo: "A Mão e a Luva",
de: usuario2,
naData: "06/09/2026"
)
// listar livros emprestados e devolvidos
usuario1.listarLivrosEmprestados()
usuario2.listarLivrosEmprestados()
To embed this project on your website, copy the following code and paste it into your website's HTML: