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

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

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)

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

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

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

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

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

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

Tema 3. Estructuras de control

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

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

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

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

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

TEMA 4. ESTRUCTURAS DE CONTROL

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

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

Programación Estructurada

Ejercicios de Programación

Sentencias iterativas

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

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

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

Palabras reservadas de C++ y C. Una palabra reservada no puede declararse como un identificador, esto haría un conflicto entre conectores y funciones.

Operadores aritméticos

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

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

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

Al igual que las instrucciones alternativas, las instrucciones repetitivas también se pueden anidar, permitiendo las siguientes combinaciones de

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

Sentencias de control de flujo

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

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

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

TEMA 5. PROGRAMACIÓN BÁSICA EN MATLAB /OCTAVE

FUNDAMENTOS PARA LA CONSTRUCCIÓN DEL CÓDIGO A PARTIR DEL ALGORITMO

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

Tema 6 Control de Flujo

Estructuras repetitivas o de ciclo

Tema 4. Control de flujo. Programación Programación - Tema 4: Control de Flujo

Herramientas de programación: contadores y su control. Valor inicial y final en bucles for next, do while, etc. (CU00157A)

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

Boletín de ejercicios de la asignatura de INFORMÁTICA para la realización de las prácticas de laboratorio. Ejercicios de Estructuras de Control

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

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

TEMA 4: Estructuras de Control

EJERCICIOS ALGORITMOS

Introducción a la Programación

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

Ejercicios ejemplo: verificación de algoritmos del valor suma de una sucesión matemática. (CU00238A)

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:

Estructuras de Repetición: Repita Mientras.

Examen de Fundamentos de la Programación (Modelo 1)

Sentencias DO-WHILE EN C++

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

TEMA 5. CONTROL DE FLUJO DEL PROGRAMA. Sentencia Instrucción Expresión Operadores + Operandos Sintaxis: Sentencia ;

Informática I. While & do While

Lenguaje de programación C. Introducción

1. Detalle de los Comandos:

Lección 3 Sentencias de control

TEMA 5. ESTRUCTURAS DE CONTROL: BUCLES.

Ejercicios resueltos Visual Basic y.net con arrays (arreglos), Do While, For, mod, ficheros, Ubound. Cálculo serie numérica (CU00344A)

Instrucciones Si... Entonces y Si... Entonces SiNo (if then else) en pseudocódigo (CU00142A)

Ejercicios ejemplos resueltos con Desde-Siguiente (For-next) y arrays en pseudocódigo y diagramas de flujo. (CU00154A)

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

Fundamentos de programación

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

5. ESTRUCTURAS DE REPETICIÓN

OPERADORES ARITMÉTICOS EN PHP: OPERADORES BÁSICOS Y RESTO (MÓDULO). INCREMENTO Y DECREMENTO. (CU00819B)

GENERALIDADES DEL LENGUAJE C

Bloque 3. Expresiones, sentencias y estructuras de control

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

Lenguaje C Bucles, Condicionales, operadores y Algoritmos.

Capítulo 3. Sentencias condicionales

Estructuras de Decisión Simples y Dobles

Programación: Estructuras de Control

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

Introducción al lenguaje C

Programación I Instrucciones de control - condicionales

Ejercicio ejemplo de verificación de algoritmos. Análisis de eficiencia en programación. (CU00239A)

Reales. Caracteres. Cadenas de Caracteres (String)

ESCUELA POLITÉCNICA SUPERIOR PRÁCTICA 2: EXPRESIONES, PRINTF Y SCANF

Programación. Ejercicios Tema 4 Estructuras de Control Repetitivas

SWITCH JAVASCRIPT. SELECCIÓN ENTRE ALTERNATIVAS. DIAGRAMA DE FLUJO Y EJEMPLO DE APLICACIÓN. (CU01120E)

Fundamentos de Informática 1º IIND

VGOC"6<"Rtqitcocekôp"guvtwevwtcfc

la solución a una ecuación cuadrática solicitando al usuario los términos de dicha ecuación.

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

Capítulo 4. Estructuras Iterativas

Programación Estructurada

DISEÑO ESTRUCTURADO USANDO HERRAMIENTAS DE

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

Programación. Test Autoevaluación Tema 4

Programcaión Básica. Secuencias de Control y Repetición. Arturo Vega González.

Formatos para prácticas de laboratorio

Expresiones y Operadores

FUNDAMENTOS DE INFORMÁTICA

fundamentos de programación (unidad 4) programación estructurada en Java

Transcripción:

APRENDERAPROGRAMAR.COM FINALIZAR PROGRAMAS EN C CON EXIT. CAMBIAR FLUJO EN BUCLES BREAK Y CONTINUE. EJEMPLOS (CU00544F) Sección: Cursos Categoría: Curso básico de programación en lenguaje C desde cero Fecha revisión: 2031 Resumen: Entrega nº44 del curso básico Programación C desde cero. Autor: Mario Rodríguez Rancel

CAMBIAR EL FLUJO NATURAL DE PROGRAMAS EN C Las recomendaciones para el uso de instrucciones de control directo del flujo de programas se resumen en una palabra: prudencia. Recomendamos leer lo expuesto al respecto en el curso Bases de la programación nivel I de aprenderaprogramar.com, donde se explican las pautas generales a seguir a la hora de realizar modificaciones del flujo natural de programas. FUNCIÓN EXIT En programación C disponemos de la función exit que permite finalizar de forma controlada un programa. La forma de uso habitual será: exit (-1); Donde -1 es un valor devuelto por la función al ambiente de ejecución (y podrá ser éste u otro; normalmente se usa -1 para indicar una detención del programa por un problema detectado). Veamos un ejemplo de código: // Ejemplos aprenderaprogramar.com int numero=0; printf("introduzca un numero entero positivo: "); scanf("%d", &numero); if(numero<=0) { puts("numero no valido. El programa se cierra"); exit(-1); printf("gracias"); En este ejemplo, si el usuario introduce un número entero negativo el condicional if lo detecta y muestra un mensaje de advertencia mientras la función exit da lugar a la salida del programa. 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 básico de uso de la instrucción finalizar.

Pseudocódigo: 1. Inicio [Finaliza si hay problemas] 2. Mientras Numero < 100 ó Numero > 200 Hacer Mostrar Por favor, introduzca un número comprendido entre 100 y 200 Pedir Numero i = i + 1 Si i > 9 Entonces Mostrar Hay un problema para continuar y el programa se va a cerrar. Motivo: 10 procesos nulos. Consulte el manual del programa Finalizar FinSi Repetir 3. Mostrar Gracias por introducir una entrada válida 4. [Aquí continuaría el programa con diferentes procesos] 5. Fin [Ejercicios resueltos aprenderaprogramar.com] EJERCICIO RESUELTO Nº1: SOLUCIÓN /* Ejemplo de uso de finalizar */ int i=0; double numero = 0.0; printf("ejemplo instruccion Finalizar\n\n"); while (numero < 100 numero > 200) { printf("por favor introduzca un numero entre 100 y 200: "); scanf ("%lf", &numero); i = i + 1; if (i>9) { printf("hay un problema para continuar y el programa se va a cerrar.\n"); printf("motivo: 10 procesos nulos. Consulte el manual del programa\n"); exit(-1); // Ejercicios resueltos aprenderaprogramar.com printf("gracias por introducir una entrada valida"); //Aquí continuaría el programa con diferentes procesos 1.1.1.1.1.1.1 ALTERAR EL FLUJO EN BUCLES FOR. BREAK Y CONTINUE La sentencia break; dentro de cualquier bucle (for, while, etc.) fuerza la salida del bucle de forma inmediata sin esperar a su terminación natural. Esta sentencia en bucles podemos calificarla de poco habitual por cuanto rompe el flujo natural de los programas, situación que habitualmente se trata de evitar. No obstante, su uso puede resultar de interés en algunas situaciones especiales.

Recordar que break; también lo usábamos en condicionales de tipo switch, donde break; hace que una vez verificado que se cumple una opción dentro del switch, se salga del mismo y se continúe la ejecución en la siguiente instrucción después del switch. Es habitual incluir un break; después de cada evaluación de un switch, aunque no es obligatorio. En un bucle for, vendría siendo equivalente a la expresión SalirDesde que empleamos cuando estudiamos pseudocódigo. Cuando existe anidamiento de bucles, se produce la salida del bucle más interno al inmediato superior. Si se escribe un break; fuera de un bucle o sentencia switch aparece el mensaje de error: "break statement not within loop or switch". Otra forma de manipular el flujo en un bucle for es mediante el uso de la instrucción continue;. Con esta instrucción, insertada normalmente tras evaluar una condición, se produce el incremento automático de la variable índice y la vuelta al comienzo del bucle sin terminar la ejecución del mismo. Ejecuta este pequeño programa y comprueba cómo estas instrucciones permiten modificar el flujo natural de un bucle for. int i=0; for (i=0; i<5; i++) { if(i>3) {break; //Ejemplo break printf("i vale %d\n", i); for (i=0; i<10; i++) { if(i%3==0) {continue; //Ejemplo continue printf("ahora i vale %d\n", i); // Curso programación C aprenderaprogramar.com El resultado de ejecución esperado es el siguiente: i vale 0, i vale 1, i vale 2, i vale 3 Ahora i vale 1, Ahora i vale 2, Ahora i vale 4, Ahora i vale 5, Ahora i vale 7, Ahora i vale 8 En el primer bucle, comprobamos cómo al verificarse la condición i>3, se produce la salida forzada del bucle. En el segundo bucle, comprobamos cómo cuando el resto de dividir el valor del índice entre tres resulta cero, se aborta la ejecución del bucle y se vuelve al comienzo del mismo incrementando la variable índice. En este ejemplo, no se muestran los valores 0, 3, 6, 9 porque el resto de su división por tres es cero. EJERCICIO RESUELTO Nº2: ENUNCIADO Transformar en código el siguiente pseudocódigo y razonar para comprender su lógica. Se trata de un ejemplo básico de uso de la instrucción SalirDesde, que debemos implementar en C mediante la sentencia break; en un bucle for. Considerar que Numerodatos tiene un valor fijo de 35, y que los datos se extraen usando un bucle for desde el archivo notas.dat (que habremos creado previamente introduciendo 35 líneas con valores numéricos).

1. Inicio [Algoritmo Media curso aprenderaprogramar.com] 2. Leer Numerodatos [Establece el nº de datos a extraer] 3. Desde i = 1 hasta Numerodatos Hacer Leer Dato(i) [El dato esperado en fichero debe valer entre 0 y10] Si Dato(i) < 0 ó Dato(i) >10 Entonces [Dato no válido] Mostrar No se pudo completar la extracción de datos. Motivo: dato no válido. Revise archivo y vuelva a intentarlo Fallolectura = Verdadero [Interruptor] SalirDesde FinSi Suma = Suma + Dato(i) Siguiente 4. Si Fallolectura = Falso Entonces Media = Suma / Numerodatos: Mostrar La media es, Media Sino Mostrar Gracias por utilizar este programa FinSi 6. Fin EJERCICIO RESUELTO Nº2: SOLUCIÓN #define NumeroAlumnos 35 // Ejercicios resueltos programacion aprenderaprogramar.com int fallolectura = 0; //0 no hay fallo lectura, 1 hay fallo lectura 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] printf("no se pudo completar la extraccion de datos. Motivo: \n"); printf("dato no valido. Revise archivo y vuelva a intentarlo \n\n"); fallolectura = 1; //[Interruptor] break; //Salida forzada del for; sumatorio = sumatorio + nota[i]; fclose(fichero); if (fallolectura ==0) { media = sumatorio / NumeroAlumnos; printf ("La nota media de la clase es %lf \n", media); else { printf("gracias por utilizar este programa \n");

Para comprobar el funcionamiento del programa, lo ejecutaremos con un archivo de datos válidos y después modificaremos un dato para hacerlo no válido, con lo cual deberá mostrarse el mensaje "No se pudo completar la extracción de datos. Motivo: dato no válido. Revise archivo y vuelva a intentarlo". EJERCICIO Nº 1 Estudia el siguiente código y responde a las preguntas: // Ejercicios aprenderaprogramar.com int main(){ float num,average,sum; int i,n; printf("maximum no. of inputs\n"); scanf("%d",&n); for(i=1;i<=n;++i){ printf("enter n%d: ",i); scanf("%f",&num); if(num<0.0) break; sum=sum+num; average=sum/(i-1); printf("average=%.2f",average); a) Para qué crees que sirve este código? b) Qué ocurre si introducimos como maximum no. of inputs 8 e introducimos los números 1.5, 12.5 y -1 Por qué ocurre eso? Qué significado tiene lo que se muestra por pantalla? c) Qué signficado tiene %.2f dentro de este programa? Para comprobar si tus respuestas son correctas puedes consultar en los foros aprenderaprogramar.com.

EJERCICIO Nº 2 Estudia el siguiente código y responde a las preguntas: // Ejercicios aprenderaprogramar.com int main(){ int i,num,product; for(i=1,product=1;i<=4;++i){ printf("enter num%d:",i); scanf("%d",&num); if(num==0) continue; product*=num; printf("product=%d",product); a) Para qué crees que sirve este código? b) Qué ocurre si introducimos como números 3, 0, -5, 2 Por qué ocurre eso? Qué significado tiene lo que se muestra por pantalla? c) Es legal escribir un if sin los corchetes {? d) Qué ocurre si introducimos como números 0, 0, 0, 0 Por qué ocurre eso? Qué significado tiene lo que se muestra por pantalla? Para comprobar si tus respuestas son correctas puedes consultar en los foros aprenderaprogramar.com. Próxima entrega: CU00545F 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