{"id":1043,"date":"2017-06-22T10:45:14","date_gmt":"2017-06-22T15:45:14","guid":{"rendered":"http:\/\/naps.com.mx\/blog\/?p=1043"},"modified":"2017-11-16T12:09:44","modified_gmt":"2017-11-16T18:09:44","slug":"ejemplos-explicados-de-ciclos-en-c","status":"publish","type":"post","link":"https:\/\/naps.com.mx\/blog\/ejemplos-explicados-de-ciclos-en-c\/","title":{"rendered":"Ejemplos explicados de ciclos en lenguaje C"},"content":{"rendered":"<p>Los siguientes ejemplos explicados de ciclos en C nos permitir\u00e1n comprenden mejor las estructuras de control iterativos en lenguaje C.<\/p>\n<div id=\"attachment_1058\" style=\"width: 650px\" class=\"wp-caption alignnone\"><a href=\"http:\/\/naps.com.mx\/blog\/wp-content\/uploads\/2017\/06\/ejemplos-explicados-de-ciclos.jpeg\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-1058\" class=\"wp-image-1058 size-full\" title=\"ejemplos explicados de ciclos\" src=\"http:\/\/naps.com.mx\/blog\/wp-content\/uploads\/2017\/06\/ejemplos-explicados-de-ciclos.jpeg\" alt=\"ejemplos explicados de ciclos\" width=\"640\" height=\"426\" srcset=\"https:\/\/naps.com.mx\/blog\/wp-content\/uploads\/2017\/06\/ejemplos-explicados-de-ciclos.jpeg 640w, https:\/\/naps.com.mx\/blog\/wp-content\/uploads\/2017\/06\/ejemplos-explicados-de-ciclos-300x200.jpeg 300w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/a><p id=\"caption-attachment-1058\" class=\"wp-caption-text\">Analizamos varios ejemplos explicados de ciclos en C<\/p><\/div>\n<p><!--more--><\/p>\n<h2>\u00bfQu\u00e9 es el lenguaje C?<\/h2>\n<p>Es un lenguaje de programaci\u00f3n que tiene entre sus ventajas un control de flujo moderno. (Kernigham y Ritchie, 1991).\u00a0 El control de flujo se logra mediante instrucciones iterativas o c\u00edclicas, donde una secuencia de instrucciones se ejecuta una y otra vez mientras se cumpla una condici\u00f3n. Cuando esa condici\u00f3n no se cumple, se finaliza la ejecuci\u00f3n de la estructura de iteraci\u00f3n (Garc\u00eda, 2002).<\/p>\n<h2>Ejemplos explicados de ciclos en C<\/h2>\n<h3>Ciclo For<\/h3>\n<p>Un ciclo for es una estructura de iteraci\u00f3n. Esto quiere decir que nos permitir\u00e1 ejecutar una instrucci\u00f3n (o serie de instrucciones) un n\u00famero determinado de veces.<\/p>\n<p>Su sintaxis es:<\/p>\n<pre class=\"lang:batch decode:true \">for (expresi\u00f3n 1; expresi\u00f3n 2; expresi\u00f3n 3){\r\n    secuencia de instrucciones\r\n}<\/pre>\n<p>&nbsp;<\/p>\n<h3>Cuando el n\u00famero de iteraciones es conocido<\/h3>\n<p><strong>Ejemplo<\/strong>: Escriba un programa que imprima los n\u00fameros del 1 al 30 escribiendo un salto de l\u00ednea cada 7 n\u00fameros.<\/p>\n<pre class=\"lang:c mark:4-8 decode:true\">#include \"stdio.h\"\r\nint main(){\r\n  int x=0;\r\n  for (x=1; x&lt;=30; x++){\r\n    printf(\"%d \\t\",x);\r\n    if (x%7==0){\r\n      printf (\"\\n\");\r\n    }\r\n  }\r\n}\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p><strong>Explicaci\u00f3n<\/strong>: En el ejemplo anterior el n\u00famero de iteraciones o vueltas est\u00e1 controlado por la variable x. Al ser declarada, x vale 0. Sin embargo, cuando comienza el ciclo x adquiere el valor de 1. El ciclo terminar\u00e1 cuando x valga 30 (<em>x&lt;=30<\/em>). Adem\u00e1s, x recibir\u00e1 incrementos de 1 (<em>x++<\/em>).\u00a0 Dentro del cuerpo de la instrucci\u00f3n for se imprime el valor de x (<em>printf(\u00ab%d \\t\u00bb, x)<\/em>). Se eval\u00faa si x es m\u00faltiplo de 7 (<em>x%7==0<\/em>), de ser as\u00ed se imprime un salto de l\u00ednea (<em>printf (\u00ab\\n\u00bb)<\/em>).<\/p>\n<p>&nbsp;<\/p>\n<h3>Cuando el n\u00famero de iteraciones es determinado por el usuario.<\/h3>\n<p>Ejemplo: Escriba un programa que imprime los n\u00fameros del 1 a n, donde n es la cantidad de d\u00edas que tiene un mes que el usuario selecciona previamente.<\/p>\n<pre class=\"lang:c decode:true\">#include \"stdio.h\"\r\nint main(){\r\n  int x, mes, dias=0;\r\n  int aa = 2017;\r\n  printf (\"Que mes desea: \");\r\n  scanf(\"%d\", &amp;mes);\r\n  if (mes == 1|| mes == 3 || mes == 5 ||\r\n      mes == 7 || mes == 8 || mes == 10 ||\r\n      mes == 12 ){\r\n        dias = 31;\r\n      }\r\n      \r\n  for (x=1; x&lt;=dias; x++){\r\n    printf(\"%d\\t\", x);\r\n    if (x % 7 == 0){\r\n        printf (\"\\n\");\r\n    }\r\n  }\r\n}\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p><strong>Explicaci\u00f3n<\/strong>: Se pregunta al usuario el mes que desesa visualizar. Si el n\u00famero introducido corresponde a un mes con 31 d\u00edas, la variable dias recibe el valor 31. (Se deber\u00e1 incluir c\u00f3digo si desea validar los meses con 30 d\u00edas y el mes de febrero). Se inicializa el ciclo for usando la variable x con valor inicial de 1. El ciclo terminar\u00e1 cuando la variable x sea igual al valor de d\u00edas del mes seleccionado.<\/p>\n<h3>Ciclo while<\/h3>\n<p>Una ciclo while realiza un conjunto de instrucciones mientras una condici\u00f3n sea cierta (sea diferente de 0). Cuando la instrucci\u00f3n es 0 (o falso) se suspende la ejecuci\u00f3n del ciclo.<\/p>\n<p><strong>Ejemplo<\/strong>: Realizar un programa que muestre un men\u00fa de opciones.Se realizar\u00e1 la opci\u00f3n elegida y se volver\u00e1 a mostrar el men\u00fa. El programa termina cuando el usuario elige la opci\u00f3n 5 del men\u00fa.<\/p>\n<pre class=\"lang:c decode:true\">#include \"stdio.h\"\r\nint main(){\r\n  int saldo=0, deposito=0, retiro=0, opcion=0;\r\n  printf(\"Introduzca saldo inicial: \");\r\n  scanf(\"%d\", &amp;saldo);\r\n  while(opcion != 5){\r\n    printf(\"===Bienvenido al banco===\");\r\n    printf(\"\\nElija una opcion\");\r\n    printf(\"\\n1. Depositar\");\r\n    printf(\"\\n2. Retirar\");\r\n    printf(\"\\n3. Ver saldo\");\r\n    printf(\"\\n4. Abonar intereses\");\r\n    printf(\"\\n5. Salir\");\r\n    printf(\"Su opcion: \");\r\n    scanf(\"%d\", &amp;opcion);\r\n    if (opcion == 1){\r\n        printf(\"Monto a depositar: \");\r\n        scanf(\"%d\", &amp;deposito);\r\n        saldo = saldo + deposito;\r\n    }\r\n    if (opcion == 3){\r\n        printf(\"\\nSu saldo es: %d\", saldo);\r\n    }\r\n    if (opcion == 5){\r\n        printf(\"\\nGracias por usar este programa\");\r\n    }\r\n  }\r\n}\r\n<\/pre>\n<p><strong>Explicaci\u00f3n<\/strong>: La variable que controla el ciclo es opcion, que inicialmente tiene un valor de 0. Se utiliza la instrucci\u00f3n while para evaluar si la variable opci\u00f3n es diferente de 5, el valor con el que se cierra el programa (<em>while(opcion != 5)<\/em>). Mientras no sea 5 se muestra el men\u00fa y se ejecutan las opciones. Cuando el usuario escribe 5, el programa realiza la opci\u00f3n 5, y finaliza.<\/p>\n<p>&nbsp;<\/p>\n<h3>Ciclo do-while<\/h3>\n<p>La principal diferencia con los otros dos ciclos (for y while) es que el ciclo do-while eval\u00faa la condici\u00f3n al final del bloque de instrucciones. Esto implica que realizar\u00e1 por lo menos 1 vez el conjunto de instrucciones que forman el cuerpo del ciclo.<\/p>\n<p><strong>Ejemplo<\/strong>: Solicitar una calificaci\u00f3n al usuario, si est\u00e1 no est\u00e1 en el intervalo 0 a 10, se deber\u00e1 volver a pedir la calificaci\u00f3n.<\/p>\n<pre class=\"lang:c decode:true\">#include \"stdio.h\"\r\nint main(){\r\n  int cal=0;\r\n  do{\r\n     printf(\"Deme la calif\");\r\n     scanf(\"%d\", &amp;cal);\r\n  } while (cal &lt; 0 || cal &gt; 10);\r\n  printf(\"\\nGracias\");\r\n}\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p><strong>Explicaci\u00f3n<\/strong>: El ciclo es controlado por la variable cal. Como se nos solicita un rango de valores, se escriben dos condiciones (<em>cal &lt; 0 || cal &gt; 10<\/em>). Se solicita al usuario una calificaci\u00f3n, por lo menos una vez, si no est\u00e1 en el rango de valores, el ciclo while eval\u00faa a verdadero por lo que volver\u00e1 a repetirse el conjunto de instrucciones para solicitar una calificaci\u00f3n. Cuando la calificaci\u00f3n est\u00e1 en el rango, el ciclo eval\u00faa a falso, por lo que se saldr\u00e1 y continuar\u00e1 en la instrucci\u00f3n siguiente.<\/p>\n<h3>Ciclos anidados<\/h3>\n<p>Dado que una instrucci\u00f3n iterativa puede incluir cualquier tipo de instrucci\u00f3n, un ciclo puede contener a otro ciclo en su cuerpo de instrucciones.<\/p>\n<p><strong>Ejemplo<\/strong>: Se desea leer las calificaciones de 5 alumnos, por cada alumno se leen 3 calificaciones.<\/p>\n<pre class=\"lang:c decode:true\">#include \"stdio.h\"\r\nint main(){\r\n  int i,j;\r\n  int calif;\r\n  int suma1=0, suma2=0;\r\n  float promedio1, promedio2;\r\n  for (i=1; i&lt;=5; i++){\r\n    printf(\"\\nCalificaciones alumno %d\\n\", i);\r\n    for (j=1; j&lt;=3; j++ ){\r\n        printf(\"\\tDeme calif %d: \",j);\r\n        scanf(\"%d\",&amp;calif);\r\n        suma1=suma1+calif;\r\n    }\r\n    promedio1 = suma1 \/ 3;\r\n    printf(\"\\tEl promedio es %.2f\", promedio1);\r\n    suma2=suma2+promedio1;\r\n    suma1=0;\r\n  }\r\n  promedio2 = suma2 \/ 5;\r\n  printf(\"\\nEl promedio general es: %.2f\",promedio2);\r\n}\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p><strong>Explicaci\u00f3n<\/strong>: Se utilizan dos ciclos for, uno dentro del otro. El primer ciclo utiliza la variable i como contador. La variable i va de 1 a 5 (los alumnos). El segundo ciclo utiliza la variable j. Esta variable va de 1 a 3 (las calificaciones). Como est\u00e1 dentro el primer ciclo, leer\u00e1 3 calificaciones por cada uno de los 5 alumnos. En el ejemplo anterior se utilizan dos variables suma. La primera lleva la suma de 3 calificaciones, para obtener un promedio. La segunda lleva la suma de los promedios obtenidos, lo que permite tener un promedio general de las calificaciones de los alumnos.<\/p>\n<p>&nbsp;<\/p>\n<p><strong>Ejemplo<\/strong>: Se desea leer 10 calificaciones aceptando \u00fanicamente las calificaciones que est\u00e9n en el rango de 0 a 10.<\/p>\n<pre class=\"lang:c decode:true \">#include \"stdio.h\"\r\nint main(){\r\n  int calif=0;\r\n  int erronea=0;\r\n  int i;\r\n  for (i = 1; i&lt;=10; i++){\r\n   do{\r\n    printf(\"\\nEscriba una calificacion correcta: \");\r\n    scanf(\"%d\", &amp;calif);\r\n    if (calif &lt;0 || calif &gt; 10){\r\n      erronea=1;\r\n      printf(\"\\nLa calificacion es erronea, introduzca de nuevo: \");\r\n    }\r\n    else{\r\n        erronea = 0;\r\n    }\r\n    } while (erronea != 0);\r\n    printf(\"\\nGracias!!\");\r\n  }\r\n}\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p><strong>Explicaci\u00f3n<\/strong>: Se utiliza un for para las 10 calificaciones. Ahora bien, para aceptar \u00fanicamente calificaciones v\u00e1lidas se utiliza un do-while. Si usas un if, tambien realiza la validaci\u00f3n, pero contin\u00faa con la siguiente calificaci\u00f3n. Un do-while vuelve a pedir (una y otra vez) la calificaci\u00f3n, mientras no se le de una calificaci\u00f3n correcta. En este ejemplo se utiliza una varible centinela llamada erronea, que es inicializada en 0 (no es erronea). Se utiliza un if para hacer la evaluaci\u00f3n de si el n\u00famero est\u00e1 fuera del rango. Si est\u00e1 fuera del rango erronea se cambia a 1.\u00a0 Volver\u00e1 a pedir la calificaci\u00f3n mientras erronea tenga ese valor de 1. La \u00fanica forma de que erronea vuelva a ser cero es dando una calificaci\u00f3n correcta.<\/p>\n<p>Espero que estos ejemplos explicados de ciclos te permitan comprender mejor las instrucciones iterativas en lenguaje C.<\/p>\n<h3>Referencias<\/h3>\n<ol>\n<li>Garc\u00eda F y otros (2002).<a href=\"https:\/\/books.google.com.mx\/books?id=edIG9mRCHMEC&amp;printsec=frontcover&amp;hl=es&amp;source=gbs_ge_summary_r&amp;cad=0#v=onepage&amp;q&amp;f=false\" target=\"_blank\"> Problemas resueltos de programaci\u00f3n en lenguaje <\/a>C.<\/li>\n<li>Kernighan B., Ritchie D (1991). <a href=\"https:\/\/books.google.com.mx\/books?id=OpJ_0zpF7jIC&amp;printsec=frontcover&amp;hl=es&amp;source=gbs_ge_summary_r&amp;cad=0#v=onepage&amp;q&amp;f=false\" target=\"_blank\">El lenguaje de programaci\u00f3n C<\/a>. Pearson Educaci\u00f3n.<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Los siguientes ejemplos explicados de ciclos en C nos permitir\u00e1n comprenden mejor las estructuras de control iterativos en lenguaje C.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"amp_status":"","footnotes":""},"categories":[188],"tags":[178,149,131],"class_list":["post-1043","post","type-post","status-publish","format-standard","hentry","category-programacion-basica","tag-aprender-a-programar","tag-ejercicios-lenguaje-c","tag-fundamentos-de-programacion"],"_links":{"self":[{"href":"https:\/\/naps.com.mx\/blog\/wp-json\/wp\/v2\/posts\/1043","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/naps.com.mx\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/naps.com.mx\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/naps.com.mx\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/naps.com.mx\/blog\/wp-json\/wp\/v2\/comments?post=1043"}],"version-history":[{"count":16,"href":"https:\/\/naps.com.mx\/blog\/wp-json\/wp\/v2\/posts\/1043\/revisions"}],"predecessor-version":[{"id":1060,"href":"https:\/\/naps.com.mx\/blog\/wp-json\/wp\/v2\/posts\/1043\/revisions\/1060"}],"wp:attachment":[{"href":"https:\/\/naps.com.mx\/blog\/wp-json\/wp\/v2\/media?parent=1043"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/naps.com.mx\/blog\/wp-json\/wp\/v2\/categories?post=1043"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/naps.com.mx\/blog\/wp-json\/wp\/v2\/tags?post=1043"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}