{"id":930,"date":"2017-02-23T15:47:31","date_gmt":"2017-02-23T21:47:31","guid":{"rendered":"http:\/\/naps.com.mx\/blog\/?p=930"},"modified":"2017-11-16T12:09:45","modified_gmt":"2017-11-16T18:09:45","slug":"instrucciones-condicionales-ejemplos-en-c","status":"publish","type":"post","link":"https:\/\/naps.com.mx\/blog\/instrucciones-condicionales-ejemplos-en-c\/","title":{"rendered":"Instrucciones condicionales: Ejemplos en C"},"content":{"rendered":"<p>Una de las caracter\u00edsticas de un lenguaje de programaci\u00f3n es el uso de instrucciones condicionales. Veamos diferentes tipos de instrucciones condicionales a trav\u00e9s de ejemplos en lenguaje C.<\/p>\n<div id=\"attachment_938\" style=\"width: 650px\" class=\"wp-caption alignnone\"><a href=\"http:\/\/naps.com.mx\/blog\/wp-content\/uploads\/2017\/02\/instrucciones-condicionales.jpeg\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-938\" class=\"size-full wp-image-938\" src=\"http:\/\/naps.com.mx\/blog\/wp-content\/uploads\/2017\/02\/instrucciones-condicionales.jpeg\" alt=\"instrucciones condicionales\" width=\"640\" height=\"426\" srcset=\"https:\/\/naps.com.mx\/blog\/wp-content\/uploads\/2017\/02\/instrucciones-condicionales.jpeg 640w, https:\/\/naps.com.mx\/blog\/wp-content\/uploads\/2017\/02\/instrucciones-condicionales-300x200.jpeg 300w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/a><p id=\"caption-attachment-938\" class=\"wp-caption-text\">Aprende mas sobre instrucciones condicionales<\/p><\/div>\n<p><!--more--><\/p>\n<p>&nbsp;<\/p>\n<h2>Instrucciones condicionales<\/h2>\n<h2>Sentencia if\u2026else<\/h2>\n<p>La utilizamos cuando tenemos una condici\u00f3n que nos arroja dos resultados: Verdadero o Falso.<\/p>\n<p>Por ejemplo: Escribir un programa en C que lea una edad e indique si la persona puede votar o no.<\/p>\n<pre class=\"theme:arduino-ide lang:c decode:true\">#include \"stdio.h\"\r\n\r\nint main(){\r\n   int edad;\r\n   printf(\"Escriba su edad: \");\r\n   scanf(\"%d\", &amp;edad);\r\n   if (edad &gt;= 18){\r\n      printf(\"Ya puedes votar\");\r\n   }\r\n   else{\r\n      printf(\"Todavia eres un ni\u00f1o\");\r\n   }\r\n}<\/pre>\n<p>&nbsp;<\/p>\n<p>La instrucci\u00f3n <em>if<\/em> abre un par\u00e9ntesis que dentro lleva una condici\u00f3n: <em>edad &gt;= 18<\/em>. No lleva punto y coma. Si colocaras el punto y coma, el error lo encontrar\u00eda hasta la sentencia <em>else<\/em>.<\/p>\n<p>Justo despu\u00e9s de la condici\u00f3n que est\u00e1 entre par\u00e9ntesis, se abre una llave <em>{<\/em>, todo lo que siga a partir de aqu\u00ed y hasta que se cierre la llave, son las instrucciones que se ejecutar\u00e1n si la condici\u00f3n es verdadera.<\/p>\n<p>Despu\u00e9s del cierre de la llave <em>}<\/em> , encontramos la sentencia <em>else<\/em>, que no lleva condici\u00f3n. <em>Else<\/em> abre una llave y todo lo que siga a partir de esta llave y hasta su cierre <em>}<\/em>, son las instrucciones que se ejecutar\u00e1n si la condici\u00f3n es falsa.<\/p>\n<h2>Operadores condicionales<\/h2>\n<p>Las condiciones que van dentro de los par\u00e9ntesis usan operadores condicionales, que son los siguientes: <em>&lt;, &gt;, &lt;=, &gt;=, ==, !=<\/em>. (Menor, mayor, menor-igual, mayor-igual, igual, diferente)<\/p>\n<p>En el siguiente ejemplo utilizamos una instrucci\u00f3n <em>if\u2026els<\/em>e y un operador menor-igual<em> &lt;=<\/em><\/p>\n<p>Ejemplo: Realizar programa que utilice un saldo lea un deposito, agrege el deposito al saldo, lea un retiro, verifique que hay suficiente saldo. Si hay suficiente saldo, realiza la operacion.<\/p>\n<pre class=\"theme:arduino-ide lang:c decode:true \">#include \"stdio.h\"\r\nint main(){\r\n   float saldo, deposito, retiro;\r\n   saldo = 300;\r\n   printf(\"Cuanto deposita: \");\r\n   scanf(\"%f\", &amp;deposito);\r\n   saldo = saldo + deposito;\r\n   printf(\"Cuanto retira: \");\r\n   scanf(\"%f\", &amp;retiro);\r\n   if (retiro &lt;= saldo){\r\n      saldo = saldo - retiro;\r\n      printf (\"Su nuevo saldo es: %.2f\", round(saldo));\r\n   }\r\n   else{\r\n      printf(\"No hay suficiente saldo\");\r\n   }\r\n}<\/pre>\n<p>&nbsp;<\/p>\n<h2><em>Ifs<\/em> anidados<\/h2>\n<p>Los <em>if<\/em> pueden contener cualquier tipo de instrucci\u00f3n, incluidos otros<em> if<\/em>.<\/p>\n<p>En el siguiente ejemplo utilizaremos dos<em> if<\/em>. Uno va dentro de la parte del <em>else<\/em> (cuando da falso la condici\u00f3n).<\/p>\n<p>Consiste en identificar cuando un n\u00famero es nulo, positivo o negativo.<\/p>\n<pre class=\"theme:arduino-ide lang:c decode:true \">#include \"stdio.h\"\r\nint main(){\r\n   int n;\r\n   printf(\"Escriba un numero\");\r\n   scanf(\"%d\", &amp;n);\r\n   if (n==0){\r\n      printf(\"Es nulo\");\r\n   }\r\n   else{\r\n      if (n&lt;0){\r\n      printf(\"Es negativo\");\r\n      }\r\n      else{\r\n         printf(\"Es positivo\");\r\n      }\r\n   }\r\n}\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p>El primer <em>if<\/em> utiliza un operador igual <em>==<\/em> para determinar si el n\u00famero es cero. (Tiene que escribir <em>==<\/em>, si escribe un solo signo <em>=<\/em> est\u00e1 indicando una operaci\u00f3n de asignaci\u00f3n, no de comparaci\u00f3n).<\/p>\n<p>Cuando no es cero (la parte <em>else<\/em>) quiere decir que es positivo o negativo. Para saber si es positivo o negativo usamos otro<em> if<\/em>. En este segundo <em>if<\/em> solo tenemos que preguntar si es menor que cero (<em>n&lt;0<\/em>), la parte <em>else<\/em> por l\u00f3gica indica que el n\u00famero es positivo.<\/p>\n<p>&nbsp;<\/p>\n<h2>Operadores l\u00f3gicos<\/h2>\n<p>Los operadores l\u00f3gicos son Y, O, y NO (AND, OR y NOT). En lenguaje C se utilizan estos s\u00edmbolos:<em> &amp;&amp;, || <\/em>y<em> !<\/em><\/p>\n<p>Se utilizan para que evaluar dos o m\u00e1s condiciones en un solo <em>if<\/em>.<\/p>\n<p>Vea el siguiente ejemplo:<\/p>\n<p>Hacer un programa que realice descuentos en base a lo siguiente:<\/p>\n<ul>\n<li>Si la compra es menor a 500 no hay descuento<\/li>\n<li>Si es entre 500 y 1000, 10% de descuento<\/li>\n<li>Si es entre 1000 y 2000, 20% de descuento<\/li>\n<li>Si es mayor a 2000, 30% de descuento<\/li>\n<\/ul>\n<pre class=\"theme:arduino-ide lang:c decode:true \">#include \"stdio.h\"\r\nint main(){\r\n   float compra, descuento, total;\r\n   printf(\"Monto de la compra: \");\r\n   scanf(\"%f\",&amp;compra);\r\n   if (compra &lt; 500){\r\n      descuento = 0;\r\n   }\r\n   if (compra &gt;= 500 &amp;&amp; compra &lt; 1000){\r\n      descuento= compra * .10;\r\n   }\r\n   if (compra &gt;= 1000 &amp;&amp; compra &lt; 2000){\r\n      descuento = compra * .20;\r\n   }\r\n   if (compra &gt;= 2000){\r\n      descuento = compra * .30;\r\n   }\r\n   total = compra - descuento;\r\n   printf(\"Su descuento es: %.2f\", descuento);\r\n   printf(\"\\nEl total a pagar es: %.2f\", total);  \r\n}\r\n\r\n \r\n\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p lang=\"en-US\">Usamos 4 <em>if<\/em>, uno por cada descuento del programa. Estos if no utilizan la sentencia <em>else<\/em>, por lo que se eval\u00faan siempre los 4.<\/p>\n<p>El segundo <em>if<\/em> utiliza el operador l\u00f3gico <em>&amp;&amp;<\/em> (and), para unir dos condiciones: \u00bfcompra es mayor-igual a 500 Y compra es menor que 1000?<\/p>\n<p>Si el usuario introdujera en compra el valor de 800, el <em>if<\/em> cumple las dos condiciones (es mayor-igual a 500 y al mismo tiempo menor que 1000), por lo que se ejecutar\u00edan las instrucciones que est\u00e1n entre sus llaves. De lo contrario contin\u00faa en la siguiente l\u00ednea despu\u00e9s del cierre de la llave <em>}<\/em><\/p>\n<p>El tercer <em>if<\/em> hace algo parecido.<\/p>\n<h2>Operador AND<\/h2>\n<h3>Tabla de verdad<\/h3>\n<p>V &amp;&amp; V = V<br \/>\nV &amp;&amp; F = F<br \/>\nF&amp;&amp; V =F<br \/>\nF &amp;&amp; F= F<br \/>\nSi el usuario introdujera el valor de compra de 1200, y la instrucci\u00f3n fuese:<\/p>\n<p><em>if (compra &gt;= 500 &amp;&amp; compra &lt; 1000)<\/em><\/p>\n<p>la primera condici\u00f3n s\u00ed da verdadero (<em>compra<\/em> es mayor que 500), pero la segunda da falso (<em>compra<\/em> no es menor que 1000), por lo que la sentencia completa da falso y no se ejecutar\u00eda la secci\u00f3n de c\u00f3digo correspondiente.<\/p>\n<p>&nbsp;<\/p>\n<h2>Comparaci\u00f3n de cadenas en C<\/h2>\n<p>En los ejemplos anteriores hemos utilizado comparaci\u00f3n de n\u00fameros. Si deseamos utilizar cadenas de caracteres, necesitamos algunas instrucciones adicionales.<\/p>\n<p>Vea el siguiente ejemplo:<\/p>\n<p>Cree un programa que lea una clave.<\/p>\n<p>Si la clave es itsa es correcta, si no, es incorrecta.<\/p>\n<pre class=\"theme:arduino-ide lang:c decode:true \">#include \"stdio.h\"\r\n#include \"string.h\"\r\nmain(){\r\n   char clave[10];\r\n   printf(\"Escriba su clave: \");\r\n   scanf(\"%9s\", clave); \/\/ Solo admitira 9 caracteres\r\n   if (strcmp(clave, \"itsa\")==0){\r\n      printf(\"La clave es correcta\");\r\n   }\r\n   else{\r\n      printf(\"La clave es incorrecta\");\r\n   }\r\n}\r\n\r\n \r\n\r\n<\/pre>\n<p>Utilizamos una nueva biblioteca llamada <em>string.h<\/em>. Tambi\u00e9n utilizamos la instrucci\u00f3n <em>strcmp<\/em> que nos sirve para comparar cadenas. Se utiliza as\u00ed<\/p>\n<p><em>if (strcmp(clave, \u00abitsa\u00bb)==0){<\/em><\/p>\n<p>se escribe <em>strcmp<\/em> y entre par\u00e9ntesis se anotan las dos cadenas que deseamos comprar, en este ejemplo, la clave que el usuario introdujo y la cadena \u201citsa\u201d; si el resultado de esta comparaci\u00f3n es 0, quiere decir que no hay diferencias.<\/p>\n<h2>Operador OR ||<\/h2>\n<p>Supongamos que deseamos utilizar dos claves distintas. La instrucci\u00f3n completa quedar\u00eda as\u00ed<\/p>\n<p><em>if (strcmp(clave, \u00abitsa\u00bb)==0 || strcmp(clave,\u201d1234\u201d)==0{<\/em><\/p>\n<p>Observe que utilizamos el operador l\u00f3gico <em>or ||,<\/em> que eval\u00faa dos condiciones. El operador <em>or<\/em> nos permite que con que una sola de las dos instrucciones de verdadero, la sentencia completa se eval\u00faa como verdadera.<\/p>\n<h3>Tabla de verdad<\/h3>\n<p>V || V = V<br \/>\nV || F = V<br \/>\nF || V = V<br \/>\nF || F = F<\/p>\n<p>Si el usuario escribe como clave 1234, la primera condici\u00f3n se eval\u00faa a falso, pues clave no es igual a \u201citsa\u201d, pero la segunda condici\u00f3n s\u00ed se eval\u00faa a verdadero, porque clave es igual a 1234, por lo que toda la condici\u00f3n es verdadera y se ejecutan las instrucciones que siguen a la llave.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Una de las caracter\u00edsticas de un lenguaje de programaci\u00f3n es el uso de instrucciones condicionales. Veamos diferentes tipos de instrucciones condicionales a trav\u00e9s de ejemplos 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,189],"class_list":["post-930","post","type-post","status-publish","format-standard","hentry","category-programacion-basica","tag-aprender-a-programar","tag-ejercicios-lenguaje-c","tag-fundamentos-de-programacion","tag-programacion-basica"],"_links":{"self":[{"href":"https:\/\/naps.com.mx\/blog\/wp-json\/wp\/v2\/posts\/930","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=930"}],"version-history":[{"count":11,"href":"https:\/\/naps.com.mx\/blog\/wp-json\/wp\/v2\/posts\/930\/revisions"}],"predecessor-version":[{"id":942,"href":"https:\/\/naps.com.mx\/blog\/wp-json\/wp\/v2\/posts\/930\/revisions\/942"}],"wp:attachment":[{"href":"https:\/\/naps.com.mx\/blog\/wp-json\/wp\/v2\/media?parent=930"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/naps.com.mx\/blog\/wp-json\/wp\/v2\/categories?post=930"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/naps.com.mx\/blog\/wp-json\/wp\/v2\/tags?post=930"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}