why does a for and while loop not need a semicolon, but a do while loop does?