control structures explained in c