Ejercicio: Devolver cadenas de métodos

Completado

Es posible que a menudo encuentre que necesita escribir un método que devuelva una cadena. Por ejemplo, puede que desee recuperar una cadena de un conjunto de datos o modificar una cadena de alguna manera. En este ejercicio, adquirirá cierta experiencia en el trabajo con cadenas en métodos mientras practica una pregunta habitual en las entrevistas de trabajo.

Creación de un método que devuelve una cadena

Supongamos que es un candidato en una entrevista para un puesto de programador. El entrevistador le pide que escriba un método para invertir una cadena sin usar string.Reverse. Dedique un momento a pensar en cómo puede realizar esta tarea.

Quizá ha decidido que puede invertir una cadena iterándola desde el final. Puede usar una cadena temporal para almacenar cada letra desde el final hasta el principio. Comencemos.

  1. En el editor de Visual Studio Code, elimine cualquier código que haya de los ejercicios anteriores.

  2. Escriba el siguiente código en el editor:

    string ReverseWord(string word) 
    {
        string result = "";
    
        return result;
    }
    
  3. El método debe iterar paso a paso la palabra especificada y actualizar el resultado. Para ello, actualice el método ReverseWord con el siguiente código:

    string ReverseWord(string word) 
    {
        string result = "";
        for (int i = word.Length - 1; i >= 0; i--) 
        {
            result += word[i];
        }
        return result;
    }
    

    En este bloque de código, empieza desde el final de la palabra usando word.Length - 1. Resta uno a la longitud, ya que los índices de matriz comienzan en cero, y quiere evitar el acceso a un elemento fuera de los límites. A continuación, agrega la letra del índice actual a la cadena result y mueve el índice hacia atrás. Utiliza i >= 0 porque i se actualiza después de ejecutar el código del bucle y quiere asegurarse de incluir el índice cero.

Prueba del código

Durante la programación, es importante comprobar con frecuencia el trabajo. La búsqueda y corrección de errores al principio del proceso de programación permite dedicar más tiempo a crear código correcto en lugar de depurar un programa de grandes dimensiones. La comprobación del trabajo con frecuencia es una aptitud que los entrevistadores de programadores también valoran en gran medida.

  1. Agregue una nueva línea de código en blanco. A continuación, cree texto de entrada y llame al método. Para ello, escriba el siguiente código encima del método ReverseWord:

    string input = "snake";
    
    Console.WriteLine(input);
    Console.WriteLine(ReverseWord(input));
    
  2. Si es necesario, abra el panel del terminal integrado de Visual Studio Code.

  3. En el indicador de comandos de Terminal, introduzca dotnet run. Compare la salida con lo siguiente:

    snake
    ekans
    

    Si el código muestra un resultado inesperado, debe revisarlo para buscar el error y corregirlo. Vuelva a ejecutar el código para ver si ha corregido el problema. Continúe actualizando y ejecutando el código hasta que genere el resultado esperado.

Creación de un método para invertir palabras en una oración

Supongamos que el entrevistador le hace una pregunta de seguimiento. Quiere que invierta cada palabra de una oración determinada, manteniendo la posición original de las palabras. Puede suponer que cada palabra está separada por un espacio. Por ejemplo, "tipo de valor devuelto" se convertiría en "opit ed rolav otleuved". Dedique un momento a pensar en cómo puede realizar esta tarea.

Si usa el método que escribió en la tarea anterior, quizá se dé cuenta de que puede usar el método para invertir cada palabra de la cadena individualmente. Puede crear una nueva oración y agregar cada palabra a medida que se invierte. Comencemos.

  1. Agregue una nueva línea de código en blanco al final del programa actual. Escriba el siguiente código para crear un nuevo método:

    string ReverseSentence(string input) 
    {
        string result = "";
    
        return result;
    }
    
  2. Ahora puede extraer las palabras individuales de la cadena usando string.Split. Actualice el método ReverseSentence a lo siguiente:

    string ReverseSentence(string input) 
    {
        string result = "";
        string[] words = input.Split(" ");
    
        return result;
    }
    

    Ahora que tiene acceso a cada palabra de la oración, puede usar el método ReverseWord en cada palabra y almacenarlas en result.

  3. Actualice el método ReverseSentence a lo siguiente:

    string ReverseSentence(string input) 
    {
        string result = "";
        string[] words = input.Split(" ");
    
        foreach(string word in words) 
        {
            result += ReverseWord(word) + " ";
        }
    
        return result;
    }
    

    Vea cómo puede llamar al método ReverseWord dentro de un operador de asignación compuesto. En este código, el valor devuelto se captura de ReverseWord y se agrega a result. Los métodos con valores devueltos se pueden usar en cualquier lugar donde sean necesarios, siempre y cuando el tipo de datos se ajuste a los requisitos.

    En este código, cada palabra invertida se anexa al resultado con un espacio agregado. Sin embargo, esto deja un espacio adicional al final de la oración invertida.

  4. Puede quitar el espacio adicional del final con string.Trim. Actualice el método con el siguiente código:

    string ReverseSentence(string input) 
    {
        string result = "";
        string[] words = input.Split(" ");
    
        foreach(string word in words) 
        {
            result += ReverseWord(word) + " ";
        }
    
        return result.Trim();
    }
    

    Dedique un momento a pensar en el resultado devuelto de este método. Un método puede usar otros métodos a lo largo de su ejecución e incluso en la instrucción "return", siempre y cuando coincidan los tipos de datos.

    Ahora ya está preparado para llamar al método.

  5. Actualice el texto input y la instrucción Console.WriteLine a lo siguiente:

    string input = "there are snakes at the zoo";
    
    Console.WriteLine(input);
    Console.WriteLine(ReverseSentence(input));
    

Comprobar el trabajo

En esta tarea, ejecutará la aplicación desde el terminal integrado y comprobará que el código funciona correctamente. Empecemos.

  1. Compare el código con lo siguiente para asegurarse de que es correcto:

    string input = "there are snakes at the zoo";
    
    Console.WriteLine(input);
    Console.WriteLine(ReverseSentence(input));
    
    string ReverseSentence(string input) 
    {
        string result = "";
        string[] words = input.Split(" ");
        foreach(string word in words) 
        {
            result += ReverseWord(word) + " ";
        }
        return result.Trim();
    }
    
    string ReverseWord(string word) 
    {
        string result = "";
        for (int i = word.Length - 1; i >= 0; i--) 
        {
            result += word[i];
        }
        return result;
    }
    
  2. Guarde el trabajo con Ctrl + S o con el menú Archivo de Visual Studio Code.

  3. Si es necesario, abra el panel del terminal integrado de Visual Studio Code.

    En el panel EXPLORER, para abrir un terminal en la ubicación de la carpeta TestProject, haga clic con el botón derecho en TestProject y, a continuación, seleccione Abrir en terminal integrado.

  4. En la terminal, escriba dotnet run

  5. Compruebe que el código genera la salida siguiente:

    there are snakes at the zoo
    ereht era sekans ta eht ooz 
    

    Si el código muestra resultados diferentes, deberá revisarlo para encontrar el error y realizar las actualizaciones correspondientes. Vuelva a ejecutar el código para ver si ha corregido el problema. Continúe actualizando y ejecutando el código hasta que genere el resultado esperado.