Sentencias de Control
Sentencia IF
SI NO
Expresión
Sentencia1 Sentencia2
• Sintaxis en Pseudocódigo:
Si (expresión)
{
Acción1;
}
En caso contrario
{
Acción2;
}
• Sintaxis en C:
if (expresión)
{
sentencia1;
}
else
{
Sentencia2;
}
expresión : debe ser una expresión numérica, relacional o lógica. El resultado que se obtiene de evaluar
la expresión es verdadero (no creo) o falso (cero).
2
sentencia 1,2: representa una sentencia simple o compuesta. Cada sentencia simple debe estar separada
de la anterior por un punto y coma.
Ejemplo:
#include<stdio.h>
int n, k, res;
main()
{
printf("Programa que pide dos números al usuario y los compara,\n\bsi son iguales los suma, si son
diferentes los multiplica\n");
printf("Introduce el valor de n:");
scanf("%i",&n);
printf("Introduce el valor de k:");
scanf("%i",&k);
if (n==k)
{
res=n+k;
}
else
{
res=n*k;
}
printf("El valor de res=%i", res);
getch();
clrscr();
}
• Anidamiento de la sentencia If
Las sentencias if… else pueden estar anidadas. Esto quiere decir que como sentencia1 o sentencia2, de
acuerdo con el formato, puede escribirse otra sentencia if.
• Sintaxis en C:
if (expresión)
{
sentencia1;
}
else
3
if(expresión)
{
Sentencia2;
}
SI NO
expr
Sentencia1
expresión
Sentencia2
expresión
Sentencia3
• Sintaxis en Pseudocódigo:
Si (expresión)
{
Acción1;
}
En caso contrario
Si (expresión)
{
Acción2;
}
4
Ejemplo:
Realizar un programa que compare dos números y diga cual de los dos es mayor o menor.
#include<stdio.h>
int n, k;
main()
{
printf("Programa que compara dos numeros y muestra el menor\n");
printf("Introduce el valor de n:");
scanf("%i",&n);
printf("Introduce el valor de k:");
scanf("%i",&k);
if (n>k)
{
printf("n %ies mayor que k", n);
}
else
if (n<k)
{
printf("n %ies menor que k", n);
}
getch();
clrscr();
}
Ejemplo de la estructura IF
Al efectuar una compra en cierto almacén, si adquirimos mas de 100 unidades de un mismo artículo,
nos hacen un descuento de un 40%, entre 25 y 100 un descuento de 20%, entre 10 y 24 uno del 10% y
no hay descuento para una adquisición de menos de 10 unidades. Calcular el importe a pagar.
#include<stdio.h>
int ar, cc;
float pu;
main()
{
printf("Codigo del articulo:\n");
scanf("%d",&ar);
printf("Cantidad comparada:\n");
scanf("%d",&cc);
printf("Precio unitario:\n");
scanf("%f",&pu);
printf("\n\n %10s %10s %10s %10s %10s\n\n","articulo","cantidad","p.u.","dto.","total");
printf(" %10d %10d %10.2f",ar,cc,pu);
if (cc>100)
{
printf("\n %9d%% %10.2f\n",40,cc*pu*0.6);
5
}
else if (cc>=25)
{
Sentencia Switch
Esta sentencia permite ejecutar una de varias acciones, en función del valor de la expresión.
• Sintaxis en Pseudocódigo:
Switch (expresión)
{
Acción1;
}
En caso contrario
{
Acción2;
}
6
switch (letra)
defaul
case1 case1
case2 case2
case3 case3 "sentencia"
case4 case4
case5 case5
. .
. .
. break
.
Case N Case N
"sentencia" "sentencia"
break break
Fin
7
• Sintaxis en C:
Switch(exp.-test)
{
[declaraciones]
Case cte1:
[sentencia1;]
Case cte2:
[sentencia2;]
Case cte3:
[sentencia3;]
.
.
.
[defaul:]
[sentenciaN;]
}
Cte.i: es una constante entera, una constante de un solo carácter o una expresión constante; en todos los
casos, el valor resultante tiene que ser entero.
La sentencia switch evalúa la expresión entre paréntesis y compara su valor con las constantes de cada
case. La ejecución de las sentencias del cuerpo de la sentencia switch, comienza con el case, cuya
constante coincida con el valor de la exp-test y continua hasta el final del cuerpo o hasta una sentencia
que transfiera el control fuera del cuerpo (por ejemplo break). La sentencia switch puede incluir
cualquier número de cláusulas case.
Si no existe un valor igual al valor de la exp-test, entonces se ejecutan las sentencias a continuación de
defaul, si esta cláusula ha sido especificada. La cláusula defaul puede colocarse en cualquier parte del
cuerpo y no necesariamente al final.
Ejemplo:
Programa que muestra un menú preguntando que operación quieres realizar.
#include<stdio.h>
#include<math.h>
main(){
int opc;
8
int a, b, c;
clrscr();
printf("Programa que muestra un menu y segun la opcion seleccionada \n realiza el
calculo correspondiente");
printf("\n 1.-La suma c = a + b");
printf("\n 2.-La resta c= a - b");
printf("\n 3.-La multiplicacion c= a * b ");
printf("\n 4.-La division, c= a / b, recuerda q no se puede dividir entre 0");
printf("\n 5.-Salir");
printf("\n Escribe la opcion que desee:");
scanf("%d", &opc);
switch(opc)
{
case 1:
printf("Introduce el valor de a:");
scanf("%d", &a);
printf("Introduce el valor de b:");
scanf("%d", &b);
printf("\n la suma es %d + %d", a, b);
c= a + b;
printf("\n El ctado de la suma es %d", c);
break;
case 2:
printf("Introduce el valor de a:");
scanf("%d", &a);
printf("Introduce el valor de b:");
scanf("%d", &b);
printf("\n la resta es %d - %d", a, b);
c= a - b;
printf("\n El ctado de la resta es %d", c);
break;
case 3:
printf("Introduce el valor de a:");
scanf("%d", &a);
printf("Introduce el valor de b:");
scanf("%d", &b);
printf("\n la suma es %d * %d", a, b);
c= a * b;
printf("\n El ctado de la multiplicación es %d", c);
break;
case 4:
printf("Introduce el valor de a:");
scanf("%d", &a);
printf("Introduce el valor de b:");
scanf("%d", &b);
printf("\n la suma es %d / %d", a, b);
c= a / b;
printf("\n El ctado de la división es %d", c);
break;
case 5:
printf("\nAdios");
break;
default:
printf("\n Esta no es ninguna opción");
break; }
9
getche();
}
Ejemplo:
Leer una fecha representada por dos enteros, mes y año y dar como resultado los días correspondientes
al mes. Tener en cuenta que febrero puede tener 28 o 29 días si el año es bisiesto cuando es múltiplo de
4 y no de 100 o cuando es múltiplo de 400.
#include<stdio.h>
main()
{
switch(mm)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
dd= 31;
break;
case 4:
case 6:
case 9:
case 11:
dd= 30;
break;
case 2:
if ((aa%4==0)&&(aa%100!=0)||(aa%400==0))
dd=29;
else
dd=28;
break;
default:
printf("\n El mes no es valido\n");
break;
}
10
if(mm>=1&&mm<=12)
printf("\nEl mes %2d del año %4d tiene %2d dias\n", mm,aa,dd);
getche();
}
Sentencia For
Cuando se desea ejecutar una sentencia simple o compuesta, repetidamente un número de veces
conocido, la construcción adecuada es la sentencia for.
• Sintaxis en Pseudocódigo:
para(indice;condicion;incremento)
Sentencia;
Mientras(expresión);
• Sintaxis en C:
vi=ei vi representa una variable que será inicializada con el valor de la expresión ei.
11
Condición Es una expresión de Boole (operandos unidos por operadores relacionales y/o lógicos). Si
se omite, se supone que siempre que es verdadera.
progresión-cond es una expresión cuyo valor evoluciona en el sentido de que se dé la condición para
finalizar la ejecución de la sentencia for.
Ejemplo:
Imprime los número del 1 al 100. Literalmente dice: desde i igual a 1, mientras i sea menor o igual a
100, con incrementos de 1, escribir el valor de i.
#include<stdio.h>
main()
{
int i;
clrscr();
printf("\n Programa que imprime los números del 1 al 100");
for(i=1;i<=100;i++)
printf("\n\n %d",i);
getche();
}
12
Ejemplo:
Programa que imprime los múltiplos del 7 que hay entre 7 y 112.
#include<stdio.h>
main()
{
int k;
clrscr();
printf("\nPrograma que imprime los multiplos de 7 que hay entre 7 y 112");
for(k=7;k<=112;k+=7)
printf("\n\t %d",k);
getche();
}
Sentencia While
Ejecuta una sentencia, simple o compuesta, cero o mas veces, dependiendo del valor de una expresión.
• Sintaxis en Pseudocódigo:
Mientras(condición)
{
Acción1;
}
• Sintaxis en C:
While(expresión)
Sentencia;
Ejemplo:
La rutina siguiente solicita obligatoriamente una de las dos respuestas posibles: s/n (sí o no).
#include<stdio.h>
main()
{
char car;
clrscr();
printf("\nDesea continuar s/n (si o no)");
while((car = getch()) != 's' && car !='n')
printf("\n\n Desea continuar s/n (si o no)");
getche();
}
14
Ejemplo:
#include <stdio.h>
main()
{
while(1)
{
char car;
printf(“\nintroduce un caracter:”);
scanf(“%c”&car);
printf(“\nEl codigo ASCII de %c es %d\n”, car,car);
break; }
}
Sentencia DO-WHILE
Ejecuta una sentencia, simple o compuesta, una o más veces, dependiendo del valor de la una
expresión.
Do
Sentencia
while(condic)
15
• Sintaxis en Pseudocodigo:
Hacer
Sentencia;
Mientras(expresión);
• Sintaxis en C:
Do
Sentencia;
While(expresión);
Ejemplo:
scanf("%lf", &n);
printf("\nRaiz cuadrada aproximada: ");
scanf("%lf", &aprox);
printf("\nCoeficiente de error: ")
do
{
antaprox= aprox;
aprox=(n/antaprox + antaprox)/2;
}
while(fabs(aprox-antaprox)>=epsilon);
printf("\n\n La raiz cuadrada de %.2lf es %.2lf\n", n,aprox);
}
getche();
}
Ejemplo
#include<stdio.h>
main()
{
int n, salir;
clrscr();
do
{
printf("\nPrograma que muestra el codigo ASCII y para salir hay que oprimir el 1");
for (n=0;n<=255;n++)
printf("\t%c%i",n,n);
printf("\nPresiona 1 para salir");
scanf("%i",&salir);
}
while(salir!=1);