When calculating surface integral in scalar field, we use the following formula:

Now, in the example solved below;
For surface S1, they have calculated $r_(theta) × r_z$ for finding the normal vector, which is clear to me. But my question is whether we can use gradient to find the same normal vector and then its modulus to be replaced in the integral because in my class, our teacher has used gradient for finding the unit normal vector in many examples in surface integrals over vector field given by the formula
Now, if I calculate the gradient of the surface I get n= 2x i+ 2y j and |n| = 2 instead of 1 found out by $r_(theta) × r_z$ in the solved question above. As a result if I substitute 2 in place of |$r_(theta) × r_z$| the whole integral value gets multiplied by 2 which certainly gives the wrong answer. I am really confused as to why the magnitude of the normal vector differs in the two cases and how to differentiate where to use the gradient and where the cross-product for calculations. Also, if normals can be found using gradient, then why at all we have been introduced with the method of using the cross product which is quite tedious to find in some cases, to find the same?

