No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Expresión goto

11/13
Recursos

Aportes 21

Preguntas 1

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

En el libro de Algoritmos a fondo con implementaciones en C y Java, escrito por el Ing. Pablo Augusto Sznajdleder.
Dice, la estructura “ir a” o, en inglés, “go to” o “goto”. Esta estructura quedó descartada luego de que el
teorema de la programación estructurada demostrara que con una adecuada combinación
de las**_ tres estructuras de control **(secuenciales, selectivas e iterativas. Las que estudiamos en este curso) es posible resolver cualquier algoritmo sin tener que recurrir al **“goto”_** (o estructura “ir a”). Esta estructura se quedó en desuso porque trae grandes problemas de mantenibilidad.

Esta instrucción goto seguramente sea algo heredado de otros lenguajes más antiguos. El lenguaje **C ** que se basa en un paradigma de programación estructurada.
Es más avanzado a la programación secuencial porque tiene funciones que rompe la continuidad, por la existencia de return, los bucles con el continue, y break. Elgoto` es algo que puede saltar a otro lugar del código que puede ser curioso… no lo he probado pero que tal y si pongo la etiqueta dentro de un bucle y este no tiene inicializadas las condiciones… En fin no quiero romperme la cabeza, solo le pido al compilador que ante semejante aberración chille, llore, berrée o te saque del programa de forma abrupta, a ser posible sin guardar el programa.

la instruccion goto te lleva a una linea especifica en el programa, pero usarlo se puede caer en malas practicas

En el minuto 5:20 me parecio haber escuchado que este era el super poder de goku.

Goto : El iniciador del llamado "Código Spaguetti"
aquel código que necesitas a un genio para poder entenderlo.

por que me menosprecia a mi goto XD

Haciendo este ejercicio me da una idea del uso que le puedo dar.

#include <stdio.h>

int main(int argc, const char* argv[])
{
    int nAdvertencias = 0;

    restart:

        if(nAdvertencias == 3)
            goto errorHandler;

        int count=1000;

        for (size_t i = 0; i < count; i++)
        {
            for (size_t j = 0; j < count; j++)
            {
                for (size_t k = 0; k < count; k++)
                {
                    if (k>100)
                    {
                        printf("\nHas sobrepasado el numero de iteraciones permitidas\n");
                        nAdvertencias++;
                        printf("Advertencia: %d\n", nAdvertencias);
                        goto restart;
                    }
                }
            }
            printf("%d\n", i);
        }

        return 0;

    errorHandler: //todo el codigo para componer tu desastre
        printf("\nHas sobrepasado 3 veces el numero de iteraciones permitidas");

    return 0;
}

goto
Es la comando que te lleva a una linea especifica en el programa, pero usarlo se puede caer en malas practicas

que diferencia hay entre try catch y goto?
los dos son para errores?

La instrucción de salto goto se puede usar en un programa, para transferir incondicionalmente el control del mismo a la primera instrucción después de una etiqueta, o dicho de otra forma, al ejecutar una instrucción goto, el control del programa se transfiere (salta) a la primera instrucción después de una etiqueta. Una etiqueta se define mediante su nombre (identificador) seguido del carácter dos puntos (😃.

goto label;

Único caso de uso recomendable para goto:

  • En bucles anidados al darse una condicion de salida directa desde un bucle interno a afuera del bucle principal (nivel superior)

goto es igual al ‘codigo spaeguetti’

La instruccion GOTO se usa ampliamente en la programacion de codigo G para CNC.

Para reutilizar segemento de codigo no sería mejor usar funciones.

Instrucción altamente abusable.

Si intrucción goto, se encuentra en desuso porque causa problemas de operavilidad y es una mala practica de los estudiantes.

yo las he usado en Assembler para microcontroladores PICS

#include <stdio.h>

int main(int argc, char const *argv[])
{

    printf("Contando del 1 al 10:\n");

    int i = 1;

    contar:
    printf("%d\n", i);
    i++;
    if (i <= 10)
        goto contar;
    
    printf("Terminamos\n");

    return 0;
}

El go to está presente en muchos códigos spaguetti.

Recuerdo en el lenguaje BASIC se usaba bastante con las condiciones