Anda di halaman 1dari 16

1

Sentencias de Control
 Sentencia IF

Nos permiten seleccionar una opción, dependiendo si cumple o no la condición o condiciones.

Toma una decisión referente a la acción a ejecutar en un programa, basándose en el resultado


(verdadero o falso) de una expresión.

• Sintaxis en el Diagrama de flujo:

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.

Si el resultado de la expresión es verdadero, se ejecutara lo indicado por la sentencia 1.


Si el resultado de la expresión es falso, se ejecutara lo indicado por la sentencia 2.
Si el resultado de la expresión es falso, y la cláusula else se ha omitido, la sentencia 1 se ignora. En
cualquier caso, la ejecución continua con la siguiente sentencia ejecutable.

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;
}

• Sintaxis en el Diagrama de flujo:

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)
{

printf("\n %9d%% %10.2f\n",20,cc*pu*0.8);


}
else if (cc>=10)
{

printf("\n %9d%% %10.2f\n",10,cc*pu*0.9);


}
else
{

printf("\n %10s %10.2f\n","--",cc*pu);


}
getch();
clrscr();
}

 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

• Sintaxis en el Diagrama de Flujo:

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;]
}

Exp-test: es una expresión entera.

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.

Sentencia: es una sentencia simple o compuesta.

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()
{

int dd, mm,aa;


clrscr();
printf("\n\nPrograma que indica los dias correspondientes a un mes y año dado\n\n");
printf("\nIntroducir el mes (##) y año (####):\n");
scanf("%i%i", &mm, &aa);

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 Diagrama de Flujo:

• Sintaxis en Pseudocódigo:

para(indice;condicion;incremento)
Sentencia;
Mientras(expresión);

• Sintaxis en C:

For (vi=31, [V2=e2]..]; [condición];[progresión-cond])


Sentencia;

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.

Sentencia es una sentencia simple o compuesta.

La ejecución de la sentencia for sucede de la siguiente forma:

1.- Se inicializan las variables vi.

2.- Se evalúa la expresión de Boole (condición).

2.1 Si el resultado es distinto de cero (verdadero), se ejecuta la sentencia, se evalúa la expresión


que da lugar a la progresión de la condición y se vuelve al punto 2.
2.2 Si el resultado de 2 es cero (falso), la ejecución de la sentencia for se da por finalizada y se
continúa en la siguiente sentencia del programa.

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;

Expresión es cualquier expresión numérica, relacional o lógica.


Sentencia es una sentencia simple o compuesta.

La ejecución de la sentencia while sucede así:


1.- se evalúa la expresión.
2.- si el resultado de la expresión es cero (falso), la sentencia no se ejecuta y se pasa a ejecutar la
siguiente sentencia en el programa.
3.- si el resultado de la expresión es distinto a cero (verdadero), se ejecutara la sentencia y el proceso
se repite en el punto 1.
13

• Sintaxis en el Diagrama de Flujo:

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:

Programa que muestra el código ASCII de un carácter:

#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.

• Sintaxis en Diagrama de Flujo:

Do

Sentencia

while(condic)
15

• Sintaxis en Pseudocodigo:

Hacer
Sentencia;
Mientras(expresión);

• Sintaxis en C:

Do
Sentencia;
While(expresión);

Expresión es cualquier expresión numérica, relacional o lógica.


Sentencia es una sentencia simple o compuesta.

La ejecución de una sentencia do sucede de la siguiente forma:

1.- Se ejecuta la sentencia o cuerpo de la sentencia do.


2.- Se evalúa la expresión.
3.- Si el resultado de la expresión es cero (falso), se ejecuta la siguiente sentencia del programa.
4.- Si el resultado de la expresión es distinta de cero(verdadero) el proceso se repite comenzando el
punto 1.

Ejemplo:

Calcular la raíz cuadrada de un número n, por el método de Newton que dice:


ri+1=(n/ri + ri)/2

La raiz calculada será valida, cuando se cumpla que:

abs(ri - ri+1) <= epsilón


#include<stdio.h>
#include<stdlib.h>
#include<math.h>
main()
{
double n;
double aprox;
double antaprox;
double epsilon;
clrscr();
printf("\nPrograma que calcula la raiz cuadrada de un numero por el metodo de newton");
printf("\nNumero: ");
16

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

Utilizando un for y un do-while

#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);

Anda mungkin juga menyukai