>>9624237x and y in parentheses are your inputs. a, b, and c are variables defined when the function is called.
So when you go and use the function like this:
Algoritmo3(5,10)
Then what happens is:
1) a is set to 5
2) b is set to 10
3) c is set to 0
4) While a is still greater than 1
4A) If a is even (which it isn't in our example), then a is set equal to 1/2 of itself and b is set to twice itself.
4B) And if a is not even (which is true of our example) then c is set equal to b plus itself (so 10 for the first iteration of this while loop), a is set equal to 1/2 of itself with the decimal part dropped (so 2 for the first iteration of this while loop), and b is set equal to twice itself (so 20 for the first iteration of this while loop).
So a now equals 2, b now equals 20, and c now equals 10.
2 is still greater than 1, so another iteration ensues.
2 is even, so it goes through 4A instead of 4B this time.
Half of 2 is 1, so a equals 1 now.
Twice 20 is 40, so b equals 40 now.
Another iteration is not performed because a is no longer greater than 1 (it's just equal to it).
So 10 plus 40 equals 50 for c now (the c=b+c line just above the return line).
Finally c is returned, meaning 50 is the output to Algoritmo3(5,10).
Note that I'm not sure why the c=b+c line is counting as outside of the do while loop. I know that's probably what's intended given that this looks like it's meant to take x and y inputs and return the product of those two numbers, but I don't see any reason to consider that last line as existing outside of the do while loop. It definitely exists outside of the if then statement, but if I didn't have the context of apparent multiplication I would have probably interpreted that line as being calculated every time the do while loop iterates.