): Int {
315 | var suma = 0
316 | for (i in array) {
317 | suma += i
318 | }
319 | // Cambio un elemento del array
320 | array[0] = 100
321 | return suma
322 | }
323 |
324 | fun main() {
325 | var a = 2
326 | var b = 3
327 | println(suma(a, b))
328 | println(a) // El valor de a ha cambiado, porque pasa por referencia
329 |
330 | var array = arrayOf(1, 2, 3, 4, 5)
331 | println(sumElementosArrray(array))
332 | println(array[0]) // El valor del array ha cambiado, porque pasa por referencia
333 | }
334 | ```
335 | 
336 |
337 | ### Ámbito de variables
338 | El ámbito de una variable es el lugar donde se puede utilizar. Las variables pueden tener ámbito local o global. Las variables locales solo se pueden utilizar dentro de la función o procedimiento donde se han declarado. Las variables globales se pueden utilizar en cualquier parte del programa.
339 | Se deben intentar no abusar de las variables globales ya que pueden provocar errores en el programa.
340 |
341 | ```kotlin
342 | // Ámbito de variables
343 | fun suma(a: Int, b: Int): Int {
344 | var c = 0 // Variable local
345 | var d = 0 // Variable local
346 | return a + b
347 | }
348 |
349 | var c = 0 // Variable global
350 | fun main() {
351 | var a = 2 // Variable local
352 | var b = 3 // Variable local
353 | println(suma(a, b))
354 | println(c) // La variable c es global y se puede utilizar en cualquier parte del programa
355 | }
356 | ```
357 | ### Paquete o módulo
358 | Un paquete o módulo es un conjunto de funciones y procedimientos que realizan una tarea concreta. Por ejemplo, un paquete de funciones matemáticas, un paquete de funciones de entrada y salida, un paquete de funciones de gestión de arrays, etc. Usamos estos paquetes para agrupar funciones y procedimientos que realizan una tarea concreta y que podemos reutilizar en otros programas o en otras partes del mismo.
359 |
360 | ```kotlin
361 | // Paquete o módulo
362 | import kotlin.math.* // importamos el paquete kotlin.math
363 |
364 | fun main() {
365 | println(sqrt(4.0))
366 | }
367 | ```
368 |
369 | ### Recursividad
370 | La recursividad es una técnica que consiste en llamar a una función o procedimiento dentro de sí mismo. La función o procedimiento se llama a sí misma hasta que se cumple una condición que hace que la función o procedimiento deje de llamarse a sí misma (condición de parada o salida).
371 | Muchos problemas son mucho más sencillos de resolver con recursividad que con iteración. Por ejemplo, el cálculo de un factorial es mucho más sencillo de resolver con recursividad que con iteración.
372 |
373 | ```kotlin
374 | // Recursividad factorial de un número
375 | fun factorialRec(n: Int): Int {
376 | if (n == 0) {
377 | return 1
378 | } else {
379 | return n * factorialRec(n - 1)
380 | }
381 | }
382 |
383 | // Iteración factorial de un número
384 | fun factorialIter(n: Int): Int {
385 | var factorial = 1
386 | for (i in 1..n) {
387 | factorial *= i
388 | }
389 | return factorial
390 | }
391 |
392 | fun main() {
393 | println(factorialRec(5))
394 | println(factorialIter(5))
395 | }
396 | ```
397 |
398 |
399 | ## Referencias
400 | - https://es.wikipedia.org/wiki/Tipo_de_dato
401 | - https://es.wikipedia.org/wiki/Programaci%C3%B3n_estructurada
402 | - https://es.wikipedia.org/wiki/Programaci%C3%B3n_modular
403 | - https://es.stackoverflow.com/questions/1493/cu%C3%A1l-es-la-diferencia-entre-paso-de-variables-por-valor-y-por-referencia
404 | - https://es.wikipedia.org/wiki/Recursi%C3%B3n
405 |
406 |
407 |
408 | ## Recursos
409 | - Twitter: https://twitter.com/joseluisgonsan
410 | - GitHub: https://github.com/joseluisgs
411 | - Web: https://joseluisgs.github.io
412 | - Discord del módulo: https://discord.gg/RRGsXfFDya
413 | - Aula DAMnificad@s: https://discord.gg/XT8G5rRySU
414 |
415 |
416 | ## Autor
417 |
418 | Codificado con :sparkling_heart: por [José Luis González Sánchez](https://twitter.com/joseluisgonsan)
419 |
420 | [](https://twitter.com/joseluisgonsan)
421 | [](https://github.com/joseluisgs)
422 |
423 | ### Contacto
424 |
425 | Cualquier cosa que necesites házmelo saber por si puedo ayudarte 💬.
426 |
427 |
428 |
429 |
431 |
432 |
433 |
435 |
436 |
437 |
439 |
440 |
441 |
443 |
444 |
445 |
447 |
448 |
449 |
451 |
452 |
453 |
454 | ### ¿Un café?
455 | 
456 |
457 | ## Licencia de uso
458 |
459 | Este repositorio y todo su contenido está licenciado bajo licencia **Creative Commons**, si desea saber más, vea la [LICENSE](https://joseluisgs.github.io/docs/license/). Por favor si compartes, usas o modificas este proyecto cita a su autor, y usa las mismas condiciones para su uso docente, formativo o educativo y no comercial.
460 |
461 | 
JoseLuisGS by José Luis González Sánchez is licensed under a Creative Commons Reconocimiento-NoComercial-CompartirIgual 4.0 Internacional License.
Creado a partir de la obra en https://github.com/joseluisgs.
462 |
--------------------------------------------------------------------------------