2. Unidad 04
Estructuras de control
Objetivos
• El alumno estará en la capacidad de crear programas en
el lenguaje C utilizando estructuras de control.
3. ESTRUCTURAS DE CONTROL
• Por lo general, en un programa los enunciados son
ejecutados en orden secuencial.
• Para solucionar un problema debemos tomar
decisiones que influyan sobre la secuencia de pasos
que debemos seguir.
Programación 1 - 2010-02 - Unidad 4 - Estructuras de control
4. ESTRUCTURAS DE CONTROL SELECTIVAS
• Según se cumplan o no estas condiciones, la
secuencia de pasos serán diferentes.
• Las estructuras de control selectivas nos permiten
decidir qué sentencias ejecutar y cuáles no.
Programación 1 - 2010-02 - Unidad 4 - Estructuras de control
5. ESTRUCTURAS DE CONTROL SELECTIVAS
• Llamadas también estructuras de control de decisión
porque afectan el flujo del programa,
permitiéndonos realizar en forma alternada una de
varias posibilidades de ejecución de instrucciones.
• Tipos:
▫ De selección simple : if/else
▫ De selección múltiple : switch
Programación 1 - 2010-02 - Unidad 4 - Estructuras de control
6. ESTRUCTURAS DE CONTROL SELECTIVAS
• De selección simple: if , ?
Estoy tarde para mi clase...
¿Qué hago?
Me voy en taxi Espero el Autobús
Programación 1 - 2010-02 - Unidad 4 - Estructuras de control
7. ESTRUCTURAS DE CONTROL SELECTIVAS
• De selección simple:
▫ Esta estructura nos permite elegir o seleccionar una de
dos posibilidades a ejecutar, dependiendo de la
condición dada como dato.
Programación 1 - 2010-02 - Unidad 4 - Estructuras de control
8. Ejemplo
int main(array<System::String ^> ^args)
{
int numero1;
printf("Ingrese el numero entero : ");
scanf_s("%d",&numero1);
if (numero1> 0)
printf("El numero es positivo");
_getch();
}
Desarrollar una aplicación en C, que indique si un número
entero es positivo.
• Datos de Entrada: Un número entero.
• Datos de Salida: Texto que indica si el número es positivo.
9. Sintaxis de la Instrucción if
if (condición)
{
bloque de instrucciones
}
• La condición es un expresión lógica
• En caso que la condición sea VERDADERA se ejecutará el bloque de
instrucciones
• Si el bloque de instrucciones sólo contiene una instrucción, no es necesario
colocar {}
10. Ejemplo IF
Desarrollar una aplicación en C, que indique si un número
entero es positivo o negativo o neutro.
• Datos de Entrada: Un número entero.
• Datos de Salida: Texto que indica si el número es positivo o
negativo.
11. Ejemplo IF
Desarrollar una aplicación en C, que indique que tipo de triangulo
forman 3 lados dados.
• Datos de Entrada: 3 lados.
• Datos de Salida: Texto que indica si forman un isósceles,
escaleno o equilátero.
12. Ejercicio IF
•Realice una aplicación en C, que solicite la edad de una
persona y que calcule en costo de la entrada al cine.
•Para el cálculo de la entrada debe tener en cuenta la
edad de la persona:
• Si tiene hasta 12 años, el costo es de 7 nuevos soles
• Si es mayor de 65, el costo es de 10 nuevos soles.
• En otros casos el valor es de 15 nuevos soles
13. Ejercicio If
Una empresa ha decidido aumentar el sueldo a sus
empleados según sus años en la empresa:
▫Si tienen menos de 5 años de servicio, se le aumentará
el sueldo en 1000 nuevos soles
▫Si los años de servicio van de 5 a 10 , el incremento
será de 2000 nuevos soles, y
▫Si es mayor de 10, será de 3000 nuevos soles
Se le solicita a usted que escriba un programa que dado
como datos: el sueldo y los años de servicio de un
trabajador, nos determine su nuevo sueldo.
14. Ejercicio If
En una empresa se ha realizado una modificación a los sueldos de los empleados. Para
ello se ha asignado un bono al sueldo actual de acuerdo al tipo de empleado de la
siguiente manera:
Tipo de Empleado Letra que identificaBonificación
el tipo de empleado
Gerentes G 150 soles
Administrativos A 80 soles
Operarios O 30 soles
Al nuevo sueldo se le aplica un descuento de 17% por impuestos al gobierno y AFP y
ESSALUD.
Realizar un programa en C++ que reciba los datos necesarios y permita calcular cual será
el nuevo sueldo neto final que recibirá un empleado.
Debe tomar en cuenta que el usuario podrá ingresar el tipo de empleado con una letra
Mayúscula o minúscula.
15. Sintaxis de la Instrucción if/else
if (condición)
{
bloque de instrucciones 1
}
else
{
bloque de instrucciones 2
}
•Si la condición es VERDADERA se ejecutará el bloque de
instrucciones correspondiente al if , si es FALSA, se ejecuta el
bloque de instrucciones correspondiente al else
16. Ejemplo If - else
int main(array<System::String ^> ^args)
{
int numero1;
printf("Ingrese el numero entero : ");
scanf_s("%d",&numero1);
if (numero1> 0)
printf("El numero es positivo");
else
printf("El numero es negativo");
_getch();
}
Desarrollar una aplicación en C, que indique si un número
entero es positivo o negativo.
• Datos de Entrada: Un número entero.
• Datos de Salida: Texto que indica si el número es positivo o
negativo.
19. Una nueva cumbia???
La instrucción que se evalúa para saber si
se ejecuta el bloque if??
La instrucción que sirve para asignar un
valor a una variable??
Una película de terror??
Programación 1 - 2010-02 - Unidad 4 - Estructuras de control
21. Yes
No
Programación 1 - 2010-02 - Unidad 4 - Estructuras de control
La condición se coloca encerrada entre
paréntesis???
22. Yes
No
Programación 1 - 2010-02 - Unidad 4 - Estructuras de control
La instrucción IF se escribe en mayúsculas???
23. Yes
No
Programación 1 - 2010-02 - Unidad 4 - Estructuras de control
La condición se escribe luego de la instrucción IF??
24. Yes
No
Programación 1 - 2010-02 - Unidad 4 - Estructuras de control
Es obligatorio que la instrucción IF, tenga un ELSE??
25. Yes
No
Programación 1 - 2010-02 - Unidad 4 - Estructuras de control
Puede existir la instrucción ELSE sin un IF, siempre y
cuando se le coloque una condición???
26. ESTRUCTURAS DE CONTROL SELECTIVAS
• De selección simple:
▫ Anidamientos:
Ocurre cuando encontramos en el bloque de
instrucciones correspondiente a la sección del if
o del else, otras sentencias if o if / else
Programación 1 - 2010-02 - Unidad 4 - Estructuras de control
27. Ejemplo if anidados
int main(array<System::String ^> ^args)
{
int numero1;
printf("Ingrese el numero entero : ");
scanf_s("%d",&numero1);
if (numero1> 0)
printf("El numero es positivo");
else
if (numero1!=0)
printf("El numero es negativo");
else
printf("El número es cero");
_getch();
}
Desarrollar una aplicación en C, que indique si un número
entero es positivo, negativo o cero.
• Datos de Entrada: Un número entero.
• Datos de Salida: Texto que indica si el número es positivo,
negativo o cero.
28. Ejercicio If anidados
•Realice una aplicación en C, que solicite la edad de una
persona y que calcule en costo de la entrada al cine.
•Para el cálculo de la entrada debe tener en cuenta la
edad de la persona:
• Si tiene hasta 12 años, el costo es de 7 nuevos soles
• Si es mayor de 65, el costo es de 10 nuevos soles.
• En otros casos el valor es de 15 nuevos soles
29. // asdf.cpp : main project file.
#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
using namespace System;
int main(array<System::String ^> ^args)
{
int edad,costo;
printf("Ingrese la edad de la persona : ");
scanf_s("%d",&edad);
if (edad >0 && edad <=12)
costo=7;
else
if (edad >65)
costo=10;
else
costo=15;
printf ("El costo de la entrada es de %d solesn",costo);
_getch();
}
30. Ejercicio if anidados
Una empresa ha decidido aumentar el sueldo a sus
empleados según sus años en la empresa:
▫Si tienen menos de 5 años de servicio, se le aumentará
el sueldo en 1000 nuevos soles
▫Si los años de servicio van de 5 a 10 , el incremento
será de 2000 nuevos soles, y
▫Si es mayor de 10, será de 3000 nuevos soles
Se le solicita a usted que escriba un programa que dado
como datos: el sueldo y los años de servicio de un
trabajador, nos determine su nuevo sueldo.
31. // asdf.cpp : main project file.
#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
using namespace System;
int main(array<System::String ^> ^args)
{
int anios;
float sueldo;
printf("Ingrese el sueldo: ");
scanf_s("%f",&sueldo);
printf("Ingrese la cantidad de a%cos laborados: ",164);
scanf_s("%d",&anios);
if (anios >0 && anios <5)
sueldo+=1000;
else
if (anios <=10)
sueldo+=2000;
else
sueldo+=3000;
printf ("El nuevo sueldo es %.2f solesn",sueldo);
_getch();
}
32. ESTRUCTURAS DE CONTROL SELECTIVAS
• De selección múltiple: switch
¿A dónde voy de vacaciones?
Paris Cusco Barcelona
Programación 1 - 2010-02 - Unidad 4 - Estructuras de control
33. ESTRUCTURAS DE CONTROL SELECTIVAS
• De selección múltiple:
▫ Esta instrucción, dependiendo de la condición dada
permite seleccionar una de varias posibilidades a
ejecutar.
Programación 1 - 2010-02 - Unidad 4 - Estructuras de control
34. Ejercicio
Escriba una aplicación que solicite un número entero e
indique el color que marca el semáforo:
1- Rojo
2- Ambar
3- Verde
35. int main(array<System::String ^> ^args)
{ int colorsemaforo;
printf("Ingrese un numero : ");
scanf_s("%d",&colorsemaforo);
switch (colorsemaforo)
{
case 1: printf("ROJO n");
break;
case 2: printf("AMBAR n");
break;
case 3: printf("VERDE n");
break;
default: printf("ERROR n");
}
_getch();
}
Dato de Entrada : 1
Datos de Salida : ROJO
36. int main(array<System::String ^> ^args)
{ int colorsemaforo;
printf("Ingrese un numero : ");
scanf_s("%d",&colorsemaforo);
switch (colorsemaforo)
{
case 1: printf("ROJO n");
break;
case 2: printf("AMBAR n");
break;
case 3: printf("VERDE n");
break;
default: printf("ERROR n");
}
_getch();
}
Dato de Entrada : 3
Datos de Salida : VERDE
37. int main(array<System::String ^> ^args)
{ int colorsemaforo;
printf("Ingrese un numero : ");
scanf_s("%d",&colorsemaforo);
switch (colorsemaforo)
{
case 1: printf("ROJO n");
break;
case 2: printf("AMBAR n");
break;
case 3: printf("VERDE n");
break;
default: printf("ERROR n");
}
_getch();
}
Dato de Entrada : 4
Datos de Salida : ERROR
38. Sintaxis de la Instrucción switch
switch(expresión)
{
case exp-const: instrucciones
break;
case exp-const:
case exp-const:
case exp-const: instrucciones
break;
default: instrucciones;
break;
}
•Se selecciona a partir de la evaluación de una única expresión
•La expresión ha de ser de tipo entero
•Los valores en cada case del switch han de ser constantes
•La sección default, marca el bloque de código que se realiza si es
que la expresión obtiene un valor no especificado en algún case
39. ESTRUCTURAS DE CONTROL SELECTIVAS
• De selección múltiple:
▫ Tomar en cuenta que si en algún case del switch no
se coloca break, entonces cada vez que ocurra una
coincidencia en la estructura, se ejecutaran
también los case restantes.
Programación 1 - 2010-02 - Unidad 4 - Estructuras de control
40. int main(array<System::String ^> ^args)
{ int colorsemaforo;
printf("Ingrese un numero : ");
scanf_s("%d",&colorsemaforo);
switch (colorsemaforo)
{
case 1: printf("ROJO n");
case 2: printf("AMBAR n");
break;
case 3: printf("VERDE n");
break;
default: printf("ERROR n");
}
_getch();
}
Dato de Entrada : 1
Datos de Salida : ROJO
AMBAR
break;
41. Ejecutemos el programa – Paso a Paso
int main(array<System::String ^> ^args)
{ int colorsemaforo;
printf("Ingrese un numero : ");
scanf_s("%d",&colorsemaforo);
switch (colorsemaforo)
{
case 1: printf("ROJO n");
case 2: printf("AMBAR n");
break;
case 3: printf("VERDE n");
break;
default: printf("ERROR n");
}
_getch();
}
Se ejecuta la línea de código
correspondiente a case 1
Pero como no existe un break,
continúa con la ejecución del
siguiente CASE
Dato de Entrada : 1
Dato de Salida :
ROJO
AMBAR
43. int main(array<System::String ^> ^args)
{ int numerodia;
printf("Ingrese un numero : ");
scanf_s("%d",&numerodia);
switch (numerodia)
{
case 1: printf("LUNES n");
break;
case 2: printf("MARTES n");
break;
case 3: printf("MIERCOLES n");
break;
case 4: printf("JUEVES n");
break;
case 5: printf("VIERNES n");
break;
case 6: printf("SABADO n");
break;
case 7: printf("DOMINGO n");
break;
default: printf("ERROR - NUMERO INVALIDO n");
}
_getch();
}
Dato de Entrada : 1
Datos de Salida : LUNES
44. int main(array<System::String ^> ^args)
{ int numerodia;
printf("Ingrese un numero : ");
scanf_s("%d",&numerodia);
switch (numerodia)
{
case 1: printf("LUNES n");
break;
case 2: printf("MARTES n");
break;
case 3: printf("MIERCOLES n");
break;
case 4: printf("JUEVES n");
break;
case 5: printf("VIERNES n");
break;
case 6: printf("SABADO n");
break;
case 7: printf("DOMINGO n");
break;
default: printf("ERROR - NUMERO INVALIDO n");
}
_getch();
}
Dato de Entrada : 10
Datos de Salida :
ERROR - NUMERO INVALIDO
45. int main(array<System::String ^> ^args)
{ int numerodia;
printf("Ingrese un numero : ");
scanf_s("%d",&numerodia);
switch (numerodia)
{
case 1: printf("LUNES n");
case 2: printf("MARTES n");
case 3: printf("MIERCOLES n");
case 4: printf("JUEVES n");
case 5: printf("VIERNES n");
case 6: printf("SABADO n");
case 7: printf("DOMINGO n");
break;
default: printf("ERROR - NUMERO INVALIDO n");
}
_getch();
}
Dato de Entrada : 1
Datos de Salida :
LUNES
MARTES
MIERCOLES
JUEVES
VIERNES
SABADO
DOMINGO
break;
break;
break;
break;
break;
break;
46. Ejercicio
Escriba un programa que permita ingresar dos números
enteros y la primera letra de la operación que desea realizar
(Suma, Resta, Multiplicación, División) y luego nos calcule e
imprima el resultado de la operación.
47. int main(array<System::String ^> ^args)
{ int numero1,numero2;
char operacion;
printf("Ingrese el primer numero : ");
scanf_s("%d",&numero1);
printf("Ingrese el segundo numero : ");
scanf_s("%d",&numero2);
_flushall();
printf("Ingrese la Operacion : ");
scanf_s("%c",&operacion);
switch (operacion)
{
case 'R': case 'r':
printf("RESTA n");
printf("El resultado es %d n",numero1-numero2); break;
case 'S': case 's':
printf("SUMA n");
printf("El resultado es %d n",numero1+numero2); break;
case 'M': case 'm':
printf("MULTIPLICACION n");
printf("El resultado es %d n",numero1*numero2); break;
case 'D': case 'd':
printf("DIVISION n");
if (numero2!=0)
printf("El resultado es %d n",numero1/numero2);
else
printf("No se puede dividir entre %d n",numero2);
break;
default:
printf("OPERACION NO RECONOCIDA n"); break;
}
_getch();
}
50. Yes
No
Programación 1 - 2010-02 - Unidad 4 - Estructuras de control
En el bloque switch se puede evaluar una variable
del tipo double???
51. Yes
No
Programación 1 - 2010-02 - Unidad 4 - Estructuras de control
Es obligatorio colocar la sección default???
52. Yes
No
Programación 1 - 2010-02 - Unidad 4 - Estructuras de control
Los valores constantes, ubicados en cada case, se
deben colocar en orden???
53. Yes
No
Programación 1 - 2010-02 - Unidad 4 - Estructuras de control
Si no escribo la instrucción break, el compilador la
coloca sólo?
54. ESTRUCTURAS DE CONTROL SELECTIVAS
• Operador Condicional ?:
▫ Abrevia el uso de la instrucción if.
▫ Nos permite incluir una condición dentro de una
expresión.
Programación 1 - 2010-02 - Unidad 4 - Estructuras de control
55. Ejemplo del Operador condicional ?:
int main(array<System::String ^> ^args)
{
int numero1;
printf("Ingrese el numero entero : ");
scanf_s("%d",&numero1);
printf ("%sn", numero1>=0?"Positivo":"Negativo");
_getch();
}
Desarrollar una aplicación en C, que indique si un número
entero es positivo o negativo.
• Datos de Entrada: Un número entero.
• Datos de Salida: Texto que indica si el número es positivo o
negativo.
Condición
Valor si la condición es verdadera
Valor si la condición es falsa
56. Sintaxis del operador condicional ?:
variable= condición? Exp1: Exp2;
Equivale a :
if (condición)
{
variable =Exp1;
}
else
{
variable =Exp2;
}
•Si la condición es VERDADERA se asignara el valor de la Exp1 a la
variable , si es FALSA, se asignara el valor de la Exp2 a la variable
Notes de l'éditeur
// asdf.cpp : main project file.
#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
using namespace System;
int main(array<System::String ^> ^args)
{
int edad,costo;
printf("Ingrese la edad de la persona : ");
scanf_s("%d",&edad);
if (edad >0 && edad <=12)
costo=7;
else
if (edad >65)
costo=10;
else
costo=15;
printf ("El costo de la entrada es de %d soles\n",costo);
_getch();
}
// asdf.cpp : main project file.
#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
using namespace System;
int main(array<System::String ^> ^args)
{
int edad,costo;
printf("Ingrese la edad de la persona : ");
scanf_s("%d",&edad);
if (edad >0 && edad <=12)
costo=7;
else
if (edad >65)
costo=10;
else
costo=15;
printf ("El costo de la entrada es de %d soles\n",costo);
_getch();
}
// asdf.cpp : main project file.
#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
using namespace System;
int main(array<System::String ^> ^args)
{
int edad,costo;
printf("Ingrese la edad de la persona : ");
scanf_s("%d",&edad);
if (edad >0 && edad <=12)
costo=7;
else
if (edad >65)
costo=10;
else
costo=15;
printf ("El costo de la entrada es de %d soles\n",costo);
_getch();
}
// asdf.cpp : main project file.
#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
using namespace System;
int main(array<System::String ^> ^args)
{
int edad,costo;
printf("Ingrese la edad de la persona : ");
scanf_s("%d",&edad);
if (edad >0 && edad <=12)
costo=7;
else
if (edad >65)
costo=10;
else
costo=15;
printf ("El costo de la entrada es de %d soles\n",costo);
_getch();
}
// asdf.cpp : main project file.
#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
using namespace System;
int main(array<System::String ^> ^args)
{
int edad,costo;
printf("Ingrese la edad de la persona : ");
scanf_s("%d",&edad);
if (edad >0 && edad <=12)
costo=7;
else
if (edad >65)
costo=10;
else
costo=15;
printf ("El costo de la entrada es de %d soles\n",costo);
_getch();
}
// asdf.cpp : main project file.
#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
using namespace System;
int main(array<System::String ^> ^args)
{ int colorsemaforo;
printf("Ingrese un numero : ");
scanf_s("%d",& colorsemaforo);
switch (colorsemaforo)
{
case 1: printf("ROJO \n");
break;
case 2: printf("AMBAR \n");
break;
case 3: printf("VERDE \n");
break;
default: printf("ERROR \n");
}
_getch();
}
// asdf.cpp : main project file.
#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
using namespace System;
int main(array<System::String ^> ^args)
{ int colorsemaforo;
printf("Ingrese un numero : ");
scanf_s("%d",& colorsemaforo);
switch (colorsemaforo)
{
case 1: printf("ROJO \n");
break;
case 2: printf("AMBAR \n");
break;
case 3: printf("VERDE \n");
break;
default: printf("ERROR \n");
}
_getch();
}
// asdf.cpp : main project file.
#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
using namespace System;
int main(array<System::String ^> ^args)
{ int numero1,numero2;
char operacion;
printf("Ingrese el primer numero : ");
scanf_s("%d",&numero1);
printf("Ingrese el segundo numero : ");
scanf_s("%d",&numero2);
_flushall();
printf("Ingrese la Operacion : ");
scanf_s("%c",&operacion);
switch (operacion)
{
case 'R': case 'r': printf("RESTA \n"); printf("El resultado es %d \n",numero1-numero2); break;
case 'S': case 's': printf("SUMA \n"); printf("El resultado es %d \n",numero1+numero2); break;
case 'M': case 'm': printf("MULTIPLICACION \n"); printf("El resultado es %d \n",numero1*numero2); break;
case 'D': case 'd': printf("DIVISION \n");
if (numero2!=0)
printf("El resultado es %d \n",numero1/numero2);
else
printf("No se puede dividir entre %d \n",numero2);
break;
default: printf("OPERACION NO RECONOCIDA \n");
break;
}
_getch();
}