INSTRUCCIÓN GOTO EN C. ETIQUETAS O LABELS. POR QUÉ NO DEBE USARSE (HARMFUL). EJEMPLOS (CU00546F)

Documentos relacionados
FINALIZAR PROGRAMAS EN C CON EXIT. CAMBIAR FLUJO EN BUCLES BREAK Y CONTINUE. EJEMPLOS (CU00544F)

BREAK: FORZAR SALIDA BUCLES FOR, WHILE, DO EN C. LOOP. STATEMENT NOT WITHIN LOOP OR SWITCH (CU00545F)

PROGRAMACION EN LENGUAJE C: EJERCICIOS RESUELTOS CON ARRAYS O ARREGLOS Y CICLOS FOR Y WHILE (CU00540F)

FINAL DE ARCHIVO (EOF Y FEOF) CON C. END OF FILE. LEER DATOS DE FICHERO HASTA QUE NO HAYA MÁS. EJEMPLO (CU00543F)

EJERCICIOS DE PROGRAMACIÓN EN C. PASO DE PSEUDOCÓDIGO A CÓDIGO. BUCLES, CONDICIONES (CU00539F)

CONDICIONALES SWITCH CASE DEFAULT BREAK EN C. ELEGIR ENTRE VARIAS OPCIONES. EJEMPLO. (CU00532F)

WHILE Y DO WHILE BREAK EN LENGUAJE C. BUCLES MIENTRAS. FORZAR SALIDA O TERMINACIÓN. EJEMPLO (CU00534F)

Visual Basic y.net Do Loop, Exit Do, Exit For y GoTo. Ejemplos y ejercicios resueltos. (CU00337A)

BUCLES EN LENGUAJE C (ESTRUCTURA DE REPETICIÓN) CONDICIÓN, CONTADOR. EJEMPLOS. (CU00533F)

EJERCICIOS CON FUNCIONES EN C. EJEMPLO CALCULAR SERIES NUMÉRICAS. REFACTORIZAR. (CU00552F)

FUNCIONES EN C QUÉ SIGNIFICA VOID? QUÉ ES EL TIPO DE RETORNO? PARA QUÉ SIRVE RETURN? MÓDULOS (CU00547F)

AMBITO DE VARIABLES EN C. GLOBALES Y LOCALES. UNDECLARED (FIRST USE IN THIS FUNCTION). EJEMPLOS (CU00548F)

Tema 3. Estructuras de control

EJERCICIOS RESUELTOS EN C CON IF THEN ELSE. PAR O IMPAR. ECUACIÓN CUADRÁTICA. PARADOJAS. (CU00530F)

EJERCICIOS DE PROGRAMACIÓN EN C. DIBUJAR UN ROMBO O DIAMANTE. CALCULAR SUMATORIOS. (CU00542F)

PASO DE PARÁMETROS O ARGUMENTOS EN C. POR DEFECTO, POR VALOR O POR REFERENCIA. SIZEOF MEMORIA (CU00550F)

LEER RECUPERAR EXTRAER DATOS DE FICHEROS O ARCHIVOS EN C. FGETC, GETC, FGETS, FSCANF. EJERCICIOS (CU00538F)

EJEMPLOS LENGUAJE C. DECLARAR VARIABLES Y ASIGNARLES CONTENIDO. PROGRAMA BÁSICO INT MAIN MOSTRAR MENSAJE. (CU00511F)

Actividad Algoritmos, Estructura y Programación I. FOR, DO-WHILE

FUNCIONES CON Y SIN PARÁMETROS EN C. INVOCAR. SIGNATURAS. ARGUMENTOS. TIPO DE RETORNO (CU00549F)

Capítulo 12 INSTRUCCIONES DE CONTROL ALTERNATIVAS. Presentación resumen del libro: "EMPEZAR DE CERO A PROGRAMAR EN lenguaje C"

Lenguaje C. República Bolivariana de Venezuela Fundación Misión Sucre Aldea Fray Pedro de Agreda Introducción a la Programación III

Algoritmo, Estructuras y Programación I Ing. Marglorie Colina

Ejercicio final de señaleros resuelto con pseudocódigo. Organización previa de variables. Diagramas de flujo. (CU00171A)

Ejercicio ejemplo de diagramas de flujo y pseudocódigo. Verificación de algoritmos. (CU00240A)

Dobles: Es el caso de la instrucción if-else (punto 1.2).

Capítulo 13 INSTRUCCIONES DE CONTROL REPETITIVAS. Presentación resumen del libro: "EMPEZAR DE CERO A PROGRAMAR EN lenguaje C"

ARRAYS (ARREGLOS O FORMACIONES) UNIDIMENSIONALES EN C. DECLARACIÓN. LÍMITES. (CU00512F)

FUNDAMENTOS DE INFORMÁTICA

Ejercicios resueltos de captura y gestión de errores en programación con pseudocódigo. (CU00246A)

Escuela Politécnica Superior de Elche

En este artículo vamos a conocer los tipos de datos que podemos manejar programando en C.

Introducción a Funciones

Programación Estructurada

Es un lenguaje estructurado, tiene una abundante cantidad de operadores y tipos de datos.

Ejercicios de Programación

LECTURA Y ESCRITURA (fwrite) DE ARCHIVOS DE TEXTO CON PHP. MODOS DE ACCESO. EJERCICIOS RESUELTOS Y EJEMPLOS. (CU00837B)

Operadores aritméticos

GUÍA DE LABORATORIO #3 ESTRUCTURAS ALGORÍTMICAS CONDICIONALES SIMPLES, DOBLES Y MÚLTIPLES

TEMA 4. ESTRUCTURAS DE CONTROL

Ficheros. Archivo, o fichero: Características:

Tema 2 Elementos básicos en C

Laboratorio de Arquitectura de Redes. Sentencias de control en lenguaje C

Ejercicios De Programación De C++ Algoritmos. Lenguaje De Programación C++:

Informática Ingeniería en Electrónica y Automática Industrial

Capítulo 3. Sentencias condicionales

Codificación en C. Como pasar de Pseudocódigo a C (con pequeños trucos de C++)

GUIA DE LABORATORIO # 2 ENTORNO DE DESARROLLO Y COMPILACIÓN DE UN PROGRAMA EN C

Ubound y Lbound en Visual Basic. Conocer índice superior e inferior de arrays (arreglos) Ejemplos y ejercicios. (CU00343A)

PROGRAMACIÓN EN LENGUAJE C VARIABLES Y CONSTANTES

Introducción a los archivos (I)

Sentencias iterativas

Objetivo N 2. Conocer la Estructura General de un Programa en C++ Estructura de Datos Prof. Egilde Márquez

Uso Pseudocódigo Diagrama de flujo Codificación

Fundamentos de programación

Estructuras de Repetición: Repita Mientras.

Ejemplos ejercicios resueltos Visual Basic. Arrays estáticos, uso de constantes vbyes, vbno y MsgBox. (CU00334A-1)

Análisis y escritura de las estructuras de control

Fundamentos de Informática

Todo programa en 'C' consta de una o más funciones, una de las cuales se llama main.

Introducción a la Programación en C Gestión de Ficheros

Lenguaje de programación C. Introducción

Resolución de problemas mediante algoritmos

Introducción a la Programación

Capítulo 11 INTRODUCCIÓN A LA CODIFICACIÓN EN C. Presentación resumen del libro: "EMPEZAR DE CERO A PROGRAMAR EN lenguaje C"

Sentencias de salto: break, continue, goto Sentencia de Salto: break

EQUIVALENCIAS EN C DE CONSTRUCCIONES SECUENICIALES EN PSEUDOCÓDIGO

ESCUELA POLITÉCNICA SUPERIOR GRADO EN DISEÑO IND. PRIMERO CURSO PRÁCTICA 1: INTRODUCCIÓN A LA PROGRAMACIÓN EN C

Autor: Ing. Nahuel González INTRODUCCIÓN A C. Clase 1

LABORATORIO 3 ESTRUCTURAS REPETITIVAS WHILE / DO WHILE

TEMA 2. LENGUAJE C. CONCEPTOS BÁSICOS Y PROGRAMACIÓN ELEMENTAL.

Práctico 2: Funciones y Punteros en C La teoría general para este práctico puede consultarse en los Capítulos 4 y 5 Notas de Clase

Asignatura: Estructuras de Datos. Docente: Ing. Yesika Medina Grado y Sección: 6to INF A-B

Laboratorio de Arquitectura de Redes. Introducción al lenguaje C

Reales. Caracteres. Cadenas de Caracteres (String)

Informática Ingeniería en Electrónica y Automática Industrial

Tema 5. Entrada y Salida

Formatos para prácticas de laboratorio

PROGRAMACIÓN PRÁCTICA AUTOR: JUAN LUIS ARELLANO ESCAMILLA

Una expresión es una combinación de uno o más operandos y operadores para obtener un resultado.

ESTRUCTURAS CONDICIONALES SIMPLES: ESTRUCTURAS CONDICIONALES DOBLES: ESTRUCTURAS CONDICIONALES ANIDADAS:

Estructuración del programa en partes más pequeñas y sencillas

1000+(4/100)*1000 =1000 * (1+4/100) =1000 * 1.04 = Al finalizar el segundo año, el 4% se aplica sobre los 1040, y obtenemos:

Unidad 2. La lógica de programación. Tema 4. Arreglos y estructuras de repetición

IF ELSE, IF ELSE IF JAVASCRIPT. CONDICIONALES DEL FLUJO O ESTRUCTURAS DE DECISIÓN. EJEMPLOS. EJERCICIOS. (CU01119E)

Informática. Prueba de conjunto (0.25 puntos) Considerar el siguiente fragmento de código:

EJERCICIO Y EJEMPLO RESUELTO: USO DE LA INTERFAZ CLONEABLE DE JAVA. MÉTODO CLONE() PARA CLONAR OBJETOS. (CU00912C)

Programación (PRG) PRACTICA 4. Elementos de programación: estructuras de control.

2^6 2^5 2^4 2^3 2^2 2^1 2^0 SUMA

Ficheros conceptos. Manejo de ficheros en C. Apertura del fichero Función fopen: nombre del fichero. Apertura del fichero Función fopen

Ejercicio resuelto programa de librería II. Diagramas de flujo. (CU00223A)

Práctica 6. El procesador

Programación I Funciones

Programación I Teoría : Entrada/Salida - Archivos.

Lenguaje C Bucles, Condicionales, operadores y Algoritmos.

Formatos para prácticas de laboratorio

FUNCIONES PHP: DECLARACIÓN Y LLAMADAS. PARÁMETROS, RETURN. EJERCICIOS EJEMPLOS RESUELTOS. (CU00827B)

Instrucción SalirMientras para el control del flujo de programas. Pseudocódigo y diagramas de flujo. (CU00180A)

Transcripción:

APRENDERAPROGRAMAR.COM INSTRUCCIÓN GOTO EN C. ETIQUETAS O LABELS. POR QUÉ NO DEBE USARSE (HARMFUL). EJEMPLOS (CU00546F) Sección: Cursos Categoría: Curso básico de programación en lenguaje C desde cero Fecha revisión: 2031 Resumen: Entrega nº46 del curso básico Programación C desde cero. Autor: Mario Rodríguez Rancel

INSTRUCCIÓN GOTO (IRA) EN C. ETIQUETAS O LABELS. El uso de la instrucción IrA no debe contemplarse en la práctica habitual de la programación, de hecho se recomienda prescindir de ella porque se ha demostrado que empeora la calidad del código y dificulta su depuración. Recomendamos leer la descripción de esta instrucción en el curso Bases de la programación nivel I de aprenderaprogramar.com. La sintaxis a emplear en C es: goto etiqueta; Donde etiqueta es un punto de referencia introducido en el código de programación indicado escribiendo simplemente etiqueta:. Para ejecutar un goto no es necesario que todas las líneas o secciones de código estén identificadas, pero sí es necesario que la ubicación de destino esté etiquetada con el identificador que se elija. goto es una sentencia en general mal vista, ya que normalmente hace los programas más difíciles de entender y depurar, hasta el punto de que en muchos cursos de programación ni siquiera se explica. Nosotros expondremos un ejemplo de su uso simplemente para tener constancia de su existencia, pero recomendamos que no se use en el código de programas.

EJERCICIO RESUELTO Nº1: ENUNCIADO Transformar en código el siguiente pseudocódigo y razonar para comprender su lógica. Se trata de un ejemplo de aplicación de IrA, que debemos implementar en C mediante la sentencia goto. Nota: considerar que Numerodatos es un valor fijo de 35, y que los datos se encuentran en el fichero notas.dat, que habremos creado previamente. 1. Inicio [Ejemplo de IrA goto aprenderaprogramar.com] 2. Leer Numerodatos [Establece el nº de datos a extraer] 3. [El dato esperado en fichero debe valer entre cero y diez] 4. Desde i = 1 hasta Numerodatos Hacer Leer Dato(i) Si Dato(i) < 0 ó Dato(i) > 10 Entonces [Dato no válido] IrA 99 [Envío a Gestión de Errores] FinSi Suma = Suma + Dato(i) Siguiente 5. Media = Suma / Numerodatos 6. Mostrar La media es, Media 7. Finalizar 99. [Gestión de Errores] 99.1 Mostrar No se pudo completar la extracción de datos. Motivo: dato no válido. Revise archivo y vuelva a intentarlo 99.2 Mostrar Gracias por utilizar este programa 100. Fin

EJERCICIO RESUELTO Nº1: SOLUCIÓN #include <stdio.h> #include <stdlib.h> #define NumeroAlumnos 35 int main() { double nota[numeroalumnos]; //35 elementos numerados de 0 a 34 double sumatorio = 0; double media = 0; int i=0; puts ("Programa Calcular Notas Medias \n"); //Extracción de datos de archivo FILE* fichero; fichero = fopen("notas.dat", "rt"); for (i=0; i<=numeroalumnos-1; i++) { fscanf (fichero, "%lf", &nota[i] ); if (nota[i] < 0 nota[i] > 10) { //[Dato no válido] goto gestiondeerrores; //Salto a gestión de errores sumatorio = sumatorio + nota[i]; fclose(fichero); media = sumatorio / NumeroAlumnos; printf ("La nota media de la clase es %lf \n", media); exit(-1); // Ejemplos curso C aprenderaprogramar.com gestiondeerrores: printf("no se pudo completar la extraccion de datos. Motivo:\n"); printf("dato no valido. Revise archivo y vuelva a intentarlo.\n"); printf("gracias por utilizar este programa.\n"); fclose(fichero); return 0; Describimos el código propuesto. En primer lugar se utiliza la directiva #define para establecer como valor constante asociado a NumeroAlumnos el valor 35. Se declara la variable tipo array double nota, que constará de 35 elementos (numerados de 0 a 34). También se declaran e inicializan las variables de tipo double sumatorio y media, así como la variable entera i. Se muestra el mensaje Programa Calcular Notas Medias y se abre el fichero notas.dat para lectura de datos (modo rt). Se van extrayendo los datos existentes en el fichero y almacenándolos en el array nota. En caso de detectarse una nota menor que cero o mayor que 10 se considera que existe un dato no válido y se introduce un salto en el flujo del programa dirigiéndolo a la etiqueta <<gestiondeerrores>>. Si se accede a esta parte del programa, se muestra un mensaje de error, se cierra el fichero y termina el programa. En caso de que la lectura de datos sea exitosa se cierra el fichero, se calcula la media de las notas de los alumnos y se muestra la nota media por pantalla antes de finalizar el programa.

EJERCICIO Nº1 Estudia el siguiente código y responde a las preguntas: #include <stdio.h> #include <stdlib.h> // Curso de programación C aprenderaprogramar.com /* C program to demonstrate the working of goto statement. */ int main(){ float num,average,sum; int i,n; printf("maximum no. of inputs: "); scanf("%d",&n); for(i=1;i<=n;++i){ printf("enter n%d: ",i); scanf("%f",&num); if(num<0.0) goto jump; /* control of the program with goto */ sum=sum+num; jump: average=sum/(i-1); printf("average: %.2f",average); return 0; a) Sin ejecutar el código (sólo pensando) responde: para qué sirve este programa? cuál será el resultado del programa si introducimos los números 10, 5 y 2? cuál será el resultado del programa si introducimos los números 10, -5 y 2? b) Ejecutando el código cuál será el resultado del programa si introducimos los números 10, 5 y 2? cuál será el resultado del programa si introducimos los números 10, -5 y 2? c) Qué signficado tiene ++i en el contexto de este programa? d) Es equivalente escribir if( num<0.0) goto jump; y if( num < 0.0) { goto jump;? e) Haz que el código ofrezca los mismos resultados evitando el uso de goto. Para comprobar si tus respuestas son correctas puedes consultar en los foros aprenderaprogramar.com.

EJERCICIO Nº2 Estudia el siguiente código: #include <stdio.h> #include <stdlib.h> // Curso de programación C aprenderaprogramar.com /* C program to demonstrate the working of goto statement. */ int main() { int age; Vote: printf("you are eligible for voting"); NoVote: printf("you are not eligible to vote"); printf("enter you age:"); scanf("%d", &age); if(age>=18) goto Vote; else goto NoVote; return 0; a) Sin ejecutar el código (sólo pensando) responde: para qué sirve este programa? cuál será el resultado del programa si introducimos el número 22? b) Crea otro programa equivalente (que produzca los mismos resultados) sin hacer uso de la sentencia goto. Para comprobar si tus respuestas son correctas puedes consultar en los foros aprenderaprogramar.com. Próxima entrega: CU00547F Acceso al curso completo en aprenderaprogramar.com -- > Cursos, o en la dirección siguiente: http://www.aprenderaprogramar.com/index.php?option=com_content&view=category&id=82&itemid=210