Suma de dígitos con Go

Este es un pequeño programa que toma un número entero ingresado por el usuario, extrae sus dígitos uno por uno y los suma. A continuación se expone el código del programa que tan solo tiene 18 líneas.

package main

import "fmt"

func main() {
  var sumDigit, extNum, numEntero int64

  fmt.Print("Ingrese un numero entero: ")
  fmt.Scanf("%d", &numEntero)

  for numEntero != 0 {
    extNum = numEntero % 10
    numEntero /= 10
    sumDigit += extNum
  }

  fmt.Println("La suma de los digitos es: ", sumDigit)
}

Go es un lenguaje de tipado estático, eso quiere decir que toda variable debe haber sido declarada con algún tipo antes de ser usada; su sintaxis es muy limpia y está inspirada mayormente en Python, pero diseñado con la intención de competir directamente con el lenguaje C.

En Go es obligatorio indicar el nombre de cada paquete usando la sentencia package, pero el archivo fuente que será el ejecutable principal, debe llamarse main.


Importando lo que se necesita
import "fmt"

Importamos el paquete fmt, es requerido si vamos a leer y mostrar información ingresada por el usuario.

Declarando variables
var sumDigit, extNum, numEntero int64

En Go es posible declarar diferentes variables en una sola línea pero no es obligatorio inicializarlas. Creamos 3 variables de tipo int64, es decir, de 64 Bits y el tipo de dato siempre va al final de la línea.

Bucle for, sumando los dígitos
for numEntero != 0 {
  extNum = numEntero % 10
  numEntero /= 10
  sumDigit += extNum
}

En Go no existe el bucle while y do .. while, solo existe el bucle for con diferentes formas de uso. En este caso el bucle for se usa como si fuera un bucle while, va a iterar mientras que el valor de numEntero sea diferente a cero y en su interior se realizan 3 operaciones matemáticas diferentes que se explican a continuación:

* extNum = numEntero % 10: con esta operación obtenemos el último dígito de numEntero; por ejemplo, 2018 % 10 da como resultado 8 y lo almacena en la variable extNum. Esta operación se lee, módulo 10 de N.

* numEntero /= 10: esta operación es equivalente a decir numEntero = numEntero / 10 y básicamente divide el valor de numEntero entre 10, el número resultante pierde su último dígito; por ejemplo, 2018 / 10 da como resultado 201. El resultado se almacena en la variable numEntero.

sumDigit += extNum: esta operación es equivalente a decir sumDigit = sumDigit + extNum, suma el valor en la variable sumDigit con el valor en extNum y luego lo asigna de nuevo a la variable sumDigit.

Imprimiendo resultado
fmt.Println("La suma de los digitos es: ", sumDigit)

Por último imprimimos el resultado con la función fmt.Println(), esta función genera un salto de línea al final.

Ejecutando el programa:
[fixedtorres@linuxero]$ go run SumaDeDigitos.go
Ingrese un numero entero: 1589177
La suma de los digitos es: 38
[fixedtorres@linuxero]$

Al ejecutar el programa veremos algo como esto, un mensaje solicitando un número entero y el resultado de la suma de los dígitos. Para este ejemplo he ingresado el número 1589177, que al sumar sus dígitos da 38.



Add a Comment

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *