Which of the following best describes "procedural abstraction"?

a.
Making the behavior of a procedure very hard to understand

b.
Picking a procedure to use at random and hoping it does the job you need

c.
Ensuring that a procedure has random results

d.
Using a procedure to perform a task without needing to understand the internal details

d.

Using a procedure to perform a task without needing to understand the internal details