Strange shading on curved surface
This is because you have Smooth shading enabled in your 3D Viewport > Toolshelf > Tools tab > Edit dropdown > Shading:. There is a way to fix this without going back to Flat shading.

Go to the Properties panel > Object Modifiers tab and add an Edge Split modifier. The default settings should be ok, but if they aren't, you can change the Split Angle:, which is defined as the max value at which an angle should be split.

The Edge Split modifier:



Comparison with a cylinder: