On the design of punctured low density parity check codes for variable rate systems