You can find good suggestions using Manipulate
in the link provided by @m_goldberg.
An alternative, also mentioned there, is to use DynamicModule
; below is a starting point.
DynamicModule[{showMore, a, b , c},
Panel@With[{controlGenerate = Function[{var, initialValue, str, range, controlType},
Control[{{var, initialValue, str}, range, ControlType -> controlType}], HoldAll]},
Column[{controlGenerate[showMore, False, "Show more", {False, True}, Checkbox],
Dynamic@If[showMore,
{controlGenerate[b, Pi, "b", {}, InputField],
controlGenerate[c, E, "c", {}, InputField]},
{controlGenerate[a, Sqrt[2], "a", {}, InputField]}],
Dynamic@Sin[a],
Dynamic@Cos[b + c]}]
]
]
