Вы находитесь на странице: 1из 36

Fundamentos de Programación Ing. en Sistemas Computacionales

4. CONTROL DE FLUJO

4.1 ESTRUCTURAS SECUENCIALES.

ENTRADA Y SALIDA DE DATOS.

Como ya se explicó anteriormente, los problemas requieren en ocasiones datos de entrada que permitan resolverlos, pero las salidas son esenciales ya que un programa sin salidas no mostraría el resultado.

4.2 ESTRUCTURAS SELECTIVAS.

Una Condición o Decisión indica operaciones lógicas o de comparación entre datos (normalmente dos) y en función del resultado de la misma determina cuál de los distintos caminos alternativos del programa se debe seguir, normalmente tiene dos salidas (respuesta SI o NO).

Operadores Relacionales

 

Operador

Función

Algoritmos

C#

 

>

>

Mayor que

<

<

Menor que

>= o

>=

Mayor o igual que

<= o

<=

Menor o igual que

=

==

Igual que

<>

!=

Diferente que

4.2.1 SELECTIVA SIMPLE.

Son aquellas que solamente tienen una condición para evaluar y el resultado de la evaluación solamente un verdadero. Su sintaxis, tanto para pseudocódigo como para diagrama de flujo, es:

<Valor o variable> <Operador relacional> <Valor o variable>

Por ejemplo:

A 8

A > 13

Falso

B 6

6 <= B

Verdadero

A = B

Falso

8 <> 6

Verdadero

Fundamentos de Programación Ing. en Sistemas Computacionales

Sintaxis para la estructura de Decisión en Pseudocódigo

Si <condición> Entonces

<bloque de instrucciones>

Fin si

Entonces <bloque de instrucciones> Fin si Verdadero Ejecutará el bloque de instrucciones si la

Verdadero

Ejecutará el bloque de instrucciones si la condición resulta verdadera. En caso contrario se sale de la condición.

Sintaxis para la estructura de Decisión en Diagrama de Flujo

<Condición si no
<Condición
si
no

Cuando se utiliza el símbolo, si la condición es verdadera se va en dirección del si.

Sintaxis para las condiciones en C# cuando hay una o más instrucciones a ejecutar

if ( <condición> ) <instrucción>;

Por ejemplo,

if (val == 2) txtDespliegue.Text=” Dos ”;

if ( <condición> ) { <instruccion1>; <instruccion2>; }

Ejemplo5. Algoritmo que determina si una persona es mayor de edad.

1. Inicio

2. Edad 0

3. Leer “Edad: “, Edad

4. Si Edad >= 18 Entonces Imprimir “Mayor de Edad”

5. Fin_si

6. Fin

Fundamentos de Programación Ing. en Sistemas Computacionales

Fundamentos de Programación Ing. en Sistemas Computacionales Inicio Edad  0 “Edad: “, Edad si no
Inicio Edad  0 “Edad: “, Edad si no Edad >= 18 “Mayor de Edad”
Inicio
Edad  0
“Edad: “, Edad
si
no
Edad >= 18
“Mayor de Edad”
Fin

//Codigo para boton cmdMayMen private void cmdMayMen_Click(object sender, EventArgs e)

{

//Programa que determina si una persona es mayor de edad //utilizando la selectiva simple //Ejemplo 5

//Declaracion de variables int Edad;

//Asignacion de valores a las variables Edad = System.Int16.Parse(txtEdad.Text);

//Condicion que determina mayor de edad if (Edad >= 18) lblMayMen.Text = "Mayor de Edad";

}

//Codigo para boton cmdLimpia

private void cmdLimpia_Click(object sender, EventArgs e)

{

lblMayMen.Text = "";

}

//Creado automáticamente para el botón cmdSalida

private void cmdSalida_Click(object sender, EventArgs e)

{

Close();

}

Nota: Si solamente hay una instrucción o sentencia en el verdadero no lleva llaves, en caso contrario todo el bloque se encierra entre llaves.

Fundamentos de Programación Ing. en Sistemas Computacionales

Ejercicios

Si la frecuencia es superior a 60, desplegar el mensaje “La frecuencia es demasiado alta”.

Si una persona nació antes de 1988 ya tiene mayoría de edad. Desplegar el mensaje “Ya eres mayor de edad”.

Si un ángulo es igual a 90 grados, imprimir el mensaje “el ángulo es un ángulo recto”.

4.2.2 SELECTIVA DOBLE (SI/ DE OTRO MODO) Y COMPUESTA.

Al igual que la simple, la doble tiene una condición para evaluar pero la diferencia es que aquí considera que la condición también pueda ser falsa. Su sintaxis, tanto para pseudocódigo como para diagrama de flujo es la misma.

Sintaxis para la estructura de Decisión en Pseudocódigo

Si <condición> Entonces

<bloque de instrucciones 1>

Sino

<bloque de instrucciones 2>

Fin si

Verdadero1> Sino <bloque de instrucciones 2> Fin si Falso Ejecutará el primer bloque de instrucciones si

FalsoSino <bloque de instrucciones 2> Fin si Verdadero Ejecutará el primer bloque de instrucciones si la

Ejecutará el primer bloque de instrucciones si la condición resulta verdadera. En caso de que la condición sea falsa ejecutará el segundo bloque de instrucciones.

Sintaxis para la estructura de Decisión en Diagrama de Flujo

si <condición> no
si
<condición>
no

Cuando se utiliza el símbolo, si la condición es verdadera se va en dirección del si y si la condición es falsa se va en dirección del no. En otras palabras, ejecuta uno o el otro bloque de instrucciones, pero no lo dos.

Sintaxis para las condiciones en C# cuando hay una o más instrucciones a ejecutar

if ( <condición> ) <Instrucción>; else <Instrucción>;

if ( <condición> ) <Instrucción>; else <Instrucción>;
if ( <condición> ) <Instrucción>; else <Instrucción>;
if ( <condición> ) <Instrucción>; else <Instrucción>;

if ( <condición> )

{<Instricción1>;

<Instrucción2>; }

else

{<Instrucción1>;

<Instrucción2>; }

Fundamentos de Programación Ing. en Sistemas Computacionales

Ejemplo 6. Algoritmo que determina si una persona es mayor o menor de edad. (Práctica 9 del cuadernillo).

1. Inicio

2. Edad 0

3. Leer “Edad: “, Edad

4. Si Edad >= 18 Entonces Imprimir “Mayor de Edad”

5. Sino Imprimir “Menor de Edad”

6. Fin_si

7. Fin

5. Sino Imprimir “Menor de Edad” 6. Fin_si 7. Fin //Codigo para boton cmdMayMen Inicio Edad

//Codigo para boton cmdMayMen

Inicio Edad  0 “Edad: “, Edad si no Edad >= 18 “Mayor de Edad”
Inicio
Edad  0
“Edad: “, Edad
si
no
Edad >= 18
“Mayor de Edad”
“Menor de Edad”
Fin

private void cmbMayMen_Click(object sender, EventArgs e)

{

//Programa que determina si una persona es mayor o menor edad //Ejemplo 6

//Declaracion de variables int Edad;

//Asignacion de valores a las variables Edad = System.Int16.Parse(txtEdad.Text);

//Condicion que determina mayor de edad if (Edad >= 18) lblMayMen.Text = "Mayor de Edad";

else

lblMayMen.Text = "Menor de Edad";

}

//Codigo para boton cmdLimpia

private void cmdLimpia_Click(object sender, EventArgs e)

{

lblMayMen.Text = "";

}

//Creado automáticamente para el botón cmdSalida

private void cmdSalida_Click(object sender, EventArgs e)

{

Close();

}

Fundamentos de Programación Ing. en Sistemas Computacionales

Nota: Si solamente hay una instrucción o sentencia en el falso o verdadero de la condición no lleva llaves, en caso contrario todo el bloque se encierra entre llaves.

Ejercicios

Determinar si una calificación es aprobatoria o no, considerando el 70 como mínimo aprobatorio.

Una prueba de aislamiento para un cable requiere que el aislamiento soporte por lo menos 600 voltios. Programa que acepte un voltaje de prueba e imprima el mensaje “APROBO PRUEBA DE VOLTAJE” o el mensaje “REPROBO PRUEBA DE VOLTAJE”.

Una pequeña fábrica produce su propia energía con un generador de 20 kilovatios y otro de 50 kilovatios. Al escribir un código de carácter, el gerente de la planta indica cuál generador se requiere. Escribir programa que acepte éste código como dato de entrada. Si escribe el código “S” deberá desplegar un mensaje que indique al encargado que debe usar el generador pequeño; de otra manera, deberá desplegar el mensaje que le instruya utilizar el generador más grande.

Una empresa desea un programa que le permita calcular el sueldo neto para un empleado que gana menos de 1500 pesos mensuales ya que recibió el 8% de aumento. Los datos son Código, Nombre, Departamento y Sueldo Mensual.

Si la temperatura está arriba de 100 grados, mostrar el mensaje “por arriba del punto de ebullición del agua”; de otra manera, mostrar el mensaje “por debajo del punto de ebullición del agua”.

Determinar si un número es par o impar.

Determinar el mayor de dos números.

SELECTIVA COMPUESTA.

Son aquellas que evalúan más de una condición en una sola expresión, para esto hacen uso de los operadores lógicos.

Tabla de Verdad de los Operadores Lógicos

Operador

Condición 1

Condición 2

Evaluación

 

V

V

V

Y

F

V

F

V

F

F

 

F

F

F

 

V

V

V

F

V

V

O

V

F

V

F

F

F

No

 

V

F

F

V

Se deben cumplir las

dos condiciones para

que la expresión sea verdadera.

Deberá cumplirse al

menos una de las dos

condiciones para que la

sea

expresión

verdadera

Es la negación de una

condición.

La tabla de verdad es la misma en C# y los operadores serían:

Algoritmos

C#

Y

&&

O

||

No

¡

Fundamentos de Programación Ing. en Sistemas Computacionales

Sintaxis de una condición compuesta

<condición1> <operador lógico> <condición2>

Por ejemplo:

A 8

B 6

A

A

> 13

F

> 13

o

y

B = 6 V

6 = B

= V

F

V

= F

No

A > B

V

= F

Sintaxis para la estructura de Decisión Compuesta

Si <condición1> <operador lógico> <condición2> Entonces <bloque de instrucciones 1> Sino <bloque de instrucciones 2> Fin Si

Sintaxis para las condiciones en C# cuando hay una o más instrucciones a ejecutar

if ( <condición1><operador lógico><condición2 )

<instruccion1>;

else

<instruccion2>;

if ( <condición1><operador lógico><condición2 )

{ <instruccion1>;

<instruccion2>; } else

{ <instruccion1>;

<instruccion2>; }

Una instrucción} else { <instruccion1>; <instruccion2>; } Dos instrucciones 51 Elaboró: L.I. Karina Aidee Romero

Dos instruccioneselse { <instruccion1>; <instruccion2>; } Una instrucción 51 Elaboró: L.I. Karina Aidee Romero Alvarado

Fundamentos de Programación Ing. en Sistemas Computacionales

Ejemplo 7. Una escuela desea un diagrama para poder elegir los alumnos que podrán participar en un concurso. Los requisitos son que tengan un promedio de 90 o más y que pertenezcan al 5o. semestre. Imprimir si el alumno es aceptado o no. Los datos a considerar son: No. de Control, Nombre, Carrera, Semestre y Promedio. (Práctica 11 del cuadernillo).

1.- Inicio 2.- NC 0, Nom ”” C “”, S 0, P0 3.- Leer “No. Control: “, NC Leer “Nombre:”, Nom Leer “Carrera: “, C Leer “Semestre:”, S Leer “Promedio: ”, P 4.- Si P >= 90 y S = 5 Entonces Imprimir “Aceptado” 5.- Sino Imprimir “No Aceptado” 6.- Fin Si 7.- Fin

5.- Sino Imprimir “No Aceptado” 6.- Fin Si 7.- Fin // Código para el botón cmdCondicion

// Código para el botón cmdCondicion

Inicio
Inicio

NC 0, Nom ”” C “”, S 0, P0

“No. Control: “, NC “Nombre:”, Nom “Carrera: “, C “Semestre:”, S “Promedio: ” P si
“No. Control: “, NC
“Nombre:”, Nom
“Carrera: “, C
“Semestre:”, S
“Promedio: ” P
si
P >= 90
no
Y
S = 5
“Aceptado”
“No Aceptado”
Fin

private void cmdCondicion_Click(object sender, EventArgs e)

{

// Programa que permite seleccionar un alumno para participar // en un concurso. Los requisitos son que tenga promedio de 90 // o mas y que sea de 5to. semestre // Ejemplo 7 // Nombre:

//Declaración de variables int NC, S; float P; string Nom, C;

// Asignación de valores a las variables NC = System.Int16.Parse(txtNC.Text); Nom = txtNom.Text;

C

= txtCar.Text;

S

= System.Int32.Parse(txtSem.Text);

P

= System.Single.Parse(txtPro.Text);

Fundamentos de Programación Ing. en Sistemas Computacionales

// Condición compuesta if (P >= 90 && S == 5) lblDespliegue.Text = "ACEPTADO";

else

lblDespliegue.Text = "NO ACEPTADO";

}

// Código para el botón cmdLimpiar

private void cmdLimpia_Click(object sender, EventArgs e)

{

txtNC.Clear(); txtNC.Focus(); txtNom.Clear(); txtCar.Clear(); txtSem.Clear(); txtPro.Clear(); lblDespliegue.Text = "";

}

// Código para el botón cmdSalida private void cmdSalida_Click(object sender, EventArgs e)

{

}

Ejercicios

Close();

Una empresa desea un programa que le permita calcular el sueldo neto de los empleados del departamento de Sistemas que hayan participado en un proyecto para el gobierno, ya que los participantes recibirán un bono del 30% sobre su sueldo. Dar como entrada el código del empleado, nombre, departamento, sueldo y el código p en caso de que haya participado en dicho proyecto. Desplegar el mensaje de que no participó o en su caso el sueldo neto ya incluido el bono.

Los organizadores de una carrera de automóviles que recorrerán 100 km desean un programa que les permita seleccionar a aquellos que podrán participar en ella. Los prospectos tuvieron que realizar 3 pruebas en pista tomándoles el tiempo de recorrido en cada una. Los seleccionados serán aquellos cuyo tiempo promedio haya estado entre 25 y 35 minutos.

4.2.3 SELECTIVA ANIDADA.

Si en algún momento la solución de un problema requiere de varias condiciones sucesivas se puede hacer uso del anidamiento de condiciones.

En términos generales, el anidamiento de condiciones se refiere al tener una o más condiciones dentro de otra condición. Los lenguajes de programación permiten éste anidamiento en el falso de la condición. Esto quiere decir que si la primera condición no se cumple prueba la siguiente.

Sintaxis para la estructura de Decisión Anidada en Pseudocódigo

Fundamentos de Programación Ing. en Sistemas Computacionales

Si <condición1> Entonces <bloque de instrucciones 1> SinoSi <condición2> Entonces <bloque de instrucciones 2> Sino <bloque de instrucciones 3> Fin Si Fin Si

Verdadero Falso
Verdadero
Falso

Verdadero

Falso

Nota: Por cada “Si” anidado se deberá tener un “Fin Si”. Para el diagrama de flujo se utiliza el mismo símbolo. Se pueden tener todas las condiciones anidadas que se deseen, aunque en un momento dado pudiera hacerse muy complejo el algoritmo.

Sintaxis para la estructura de Decisión Anidada en C#

if ( <condición> )

if ( <condición> )

<instrucción1>;

{

<instrucción1>;

else if ( <condición> )

<instrucción2>; }

 

<instrucción2>;

else if ( <condición> )

<else

<instrucción3>;>

{

<instrucción1>;

 

<instrucción2>; }

 

<else

{

<instrucción1>;

 

<instrucción2>; }>

Ejemplo 8. Algoritmo que determina el elemento mayor de dos números considerando que pudieran ser iguales. (Práctica 10 del cuadernillo).

1.- Inicio 2.- N1 0, N2 0 3.- Leer “Número 1: “, N1 4.- Leer “Número 2: “, N2 5.- Si N1 = N2 Entonces imprimir “Son Iguales” 6.- SinoSi N1 > N2 Entonces Imprimir “El mayor es: “, N1 Sino Imprimir “El mayor es: “, N2 Fin Si 7.- Fin Si 8.- Fin

Fundamentos de Programación Ing. en Sistemas Computacionales

Inicio N1  0, N2  0
Inicio
N1  0, N2  0
“Número 1 “, N1 “Número 2:”, N2 si no N1 = N2 “Son Iguales” si
“Número 1 “, N1
“Número 2:”, N2
si
no
N1 = N2
“Son Iguales”
si
no
N1 > N2
“El mayor es:”, N1
“El mayor es:”, N2
Fin

//Codigo para el botón cmdMayor

private void cmdMayor_Click(object sender, EventArgs e)

{

 

// Programa que determina el número mayor de dos elementos // considerando que pudieran ser iguales // Ejemplo 8 // Nombre:

//Declaración de variables int N1, N2;

//Asignación de valores a las variables

N1=System.Int32.Parse(txtN1.Text);

N2 = System.Int32.Parse(txtN2.Text);

//Condición anidada if (N1 == N2) lblDespliegue.Text = "Son iguales"; else if(N1>N2) lblDespliegue.Text = "El mayor es " + N1.ToString();

else

lblDespliegue.Text = "El mayor es " + N2.ToString();

}

Fundamentos de Programación Ing. en Sistemas Computacionales

//Codigo para el botón cmdLimpia private void cmdLimpia_Click(object sender, EventArgs e)

{

 

lblDespliegue.Text = " ";

txtN1.Clear();

txtN2.Clear();

txtN1.Focus();

}

//Codigo para el botón cmdSalida private void cmdSalida_Click(object sender, EventArgs e)

{

}

Ejercicios

Close();

Determinar si un número es positivo, negativo o igual a cero.

Dar entrada a un mes con número y desplegarlo con el nombre completo. Por ejemplo: 1 es Enero, 2 es Febrero, etc.

Todos los años cuyos días se pueden dividir exactamente entre 400 o entre 4 pero no entre 100 son años bisiestos. Por ejemplo, como 1600 puede dividirse exactamente entre 400, el año 1600 fue bisiesto. De la misma forma como 1988 es exactamente divisible entre cuatro pero no entre 100, 1988 también fue año bisiesto. Utilizando esta información, escribir un programa que acepte el año como dato de entrada por el usuario, determine si el año es bisiesto y despliegue al usuario un mensaje que indique si el año introducido es bisiesto o no.

El cuadrante en el cual se ubica una línea dibujada desde el origen está determinado por el ángulo que la línea forma con el eje positivo de x en la siguiente forma:

Angulo del eje positivo de x

Cuadrante

Entre 0 y 90 grados

I

Entre 90 y 180 grados

II

Entre 180 y 270 grados

III

Entre 270 y 360 grados

IV

Utilizando esta información, escribir un programa que acepte el ángulo de la línea como dato de entrada por el usuario y que despliegue el cuadrante apropiado conforme a los datos, (Nota: Si el ángulo es exactamente 0, 90, 180 o 270 grados, la línea correspondiente no se ubica en ningún cuadrante sino en un eje.)

Basándose en el año de fabricación y el peso de un automóvil, el Estado de México clasifica el peso del vehículo y determina la tarifa de registro, de acuerdo con la siguiente tabla:

Año modelo

Peso

Categoría de peso

Tarifa de registro

1970

o anterior

Menos de 2700 libras

1

1650

 

2700

a 3800 libras

2

2550

 

Más de 3800 libras

3

4650

1971

a 1979

Menos de 2700 libras

4

2700

 

2700

a 3800 libras

5

3050

 

Más de 3800 libras

6

5250

1980

o posterior

Menos de 3500 libras

7

1950

 

3500

o más libras

8

5250

Utilizando esta información, escribir un programa que acepte el año y el peso de un automóvil y que determine y muestre la categoría de peso y la tarifa de registro.

Fundamentos de Programación Ing. en Sistemas Computacionales

4.2.4 SELECTIVA MÚLTIPLE.

Cuando se llega a tener gran cantidad de condiciones anidadas el algoritmo se hace muy confuso de tal manera que tenemos que hacer uso de otra estructura que facilite la solución de un problema con estas características. Es así como aparece la estructura de decisión múltiple que permite evaluar diferentes casos por medio de un selector, en éste caso la variable que almacena el valor que se busca, que buscando o rastreando de la lista de casos identifica cuál es el que coincide y cuando lo encuentra ejecuta el bloque de instrucciones correspondiente.

Sintaxis para la estructura de Decisión Múltiple en Pseudocódigo

Seleccionar Caso <selector>

Caso <valor_1>:

<bloque de instrucciones 1>

Caso <valor_2>:

<bloque de instrucciones 2>

.

.

.

Caso <valor_N-1>:

<bloque de instrucciones N-1>

Sino

<bloque de instrucciones N>

Fin_Caso

Ejecutará el bloque de instrucciones del caso que coincida con el selector que está buscando. Si no coincide ninguno de los casos con el selector ejecuta la parte del Sino.

Sintaxis para la estructura de Decisión Múltiple en Diagrama de Flujo

Sintaxis para la estructura de Decisión Múltiple en Diagrama de Flujo 57 Elaboró: L.I. Karina Aidee

Fundamentos de Programación Ing. en Sistemas Computacionales

Sintaxis para la estructura de Decisión Múltiple en C#

switch (<selector>)

{

 

case <expression> :

[instrucción1;]

[instrucción2;]

[break;]

[default :

[instrucción1;]

[instrucción2;]

]

}

Ejemplo 9. Algoritmo que asigne el valor numérico a las calificaciones dadas en literal. A=10, M=9, B=8, R=7, S=6 y N=5. (Práctica 12 del cuadernillo).

1.- Inicio 2.- CL “”, CN 0 3.- Leer “Calificación en Literal: “, CL 4.- Seleccionar Caso CL Caso “A”:

CN10

Caso “M”:

CN9

Caso “B”:

CN8

Caso “R”:

CN7

Caso “S”:

CN6

Caso “N”:

CN5

5.- Sino

Imprimir “No válida“ 6.- Fin_Caso 7.- Imprimir “Calificación: “, CN 8.- Fin

Fundamentos de Programación Ing. en Sistemas Computacionales

Inicio CL  “”, CN  0
Inicio
CL  “”, CN  0
“Calificación en Literal “, CL CL
“Calificación en Literal “, CL
CL
 “”, CN  0 “Calificación en Literal “, CL CL “A” “M” “B” “R” “S”
 “”, CN  0 “Calificación en Literal “, CL CL “A” “M” “B” “R” “S”
“A” “M” “B” “R” “S” “N” No CN10 CN10 CN9 CN8 CN7 CN6 CN5 “No
“A”
“M”
“B”
“R”
“S”
“N”
No
CN10
CN10
CN9
CN8
CN7
CN6
CN5
“No válida“
“Calificación:”, CN
Fin
CN5 “No válida“ “Calificación:”, CN Fin //Código para el botón cmdCa private void

//Código para el botón cmdCa

private void cmdCa_Click(object sender, EventArgs e)

{

// Programa que asigne el valor numérico a las calificaciones // dadas en literal. A=10, M=9, B=8, R=7, S=6 y N=5 // Ejemplo 9

// Declaración de variables int CN; char CL;

Fundamentos de Programación Ing. en Sistemas Computacionales

//Asignación de valores a variables

CL

= System.Char.Parse(txtCaL.Text);

CN

= 0;

//

Selección múltiple

switch (CL)

{

case 'A':

CN = 10; break; case 'M':

CN = 9; break; case 'B':

CN = 8; break; case 'R':

CN = 7; break; case 'S':

CN = 6; break; case 'N':

CN = 5; break; default:

lblError.Text = "No válida"; break;

}

lblCaN.Text = CN.ToString();

}

//Código para el botón cmdLimpia private void cmdLimpia_Click(object sender, EventArgs e)

{

lblCaN.Text = ""; lblError.Text = "";

}

//Código para el botón cmdSalida private void cmdSalida_Click(object sender, EventArgs e)

{

}

Ejercicios

Close();

Determinar la clasificación a la que pertenecen los participantes a un maratón. Considerar las siguientes categorías:

 

Edad

Clasificación

15

a 20 años

A

21

a 25 años

B

26

a 45 años

C

Fundamentos de Programación Ing. en Sistemas Computacionales

Imprimir el nombre, edad y categoría de cada participante. En caso de que no estén dentro de alguna categoría desplegar el mensaje “No puede participar”.

Programa que permita resolver, utilizando subprogramas y selección múltiple, cada una de la opciones que se muestran en el siguiente menú:

1. Convertir grados Centígrados a Farenheith.

2. Convertir Metros a Yardas.

3. Convertir Pulgadas a Centímetros.

4. Salida

4.2.5 SELECTIVA INTENTA (TRY/CATCH).

try

Las funciones en C# que pueden detectar errores y recuperarse se ejecutan con un bloque try.

Sintaxis:

try {

<bloque de instrucciones>

catch

}

Un manejador de excepciones catch con una lista de parámetros sigue a un bloque try.

Sintaxis:

catch(código_de_excepción variable )

{

<bloque de instrucciones>

}

finally

{

<bloque de instrucciones>

}

Ejemplo 10. Programa que valida una división entre cero y muestra mensaje de error. (Práctica 13 del cuadernillo).

entre cero y muestra mensaje de error. (Práctica 13 del cuadernillo). 61 Elaboró: L.I. Karina Aidee

Fundamentos de Programación Ing. en Sistemas Computacionales

Fundamentos de Programación Ing. en Sistemas Computacionales //Código para el botón cmdValidar private void

//Código para el botón cmdValidar

private void cmdValidar_Click(object sender, EventArgs e)

{

//Programa que valida una divisón entre cero

// Ejemplo 10

//Declaración e inicialización de variables int numero = 10; int divisor = 0; int resultado = 0;

//Uso del try-catch try

{

resultado = (numero / divisor);

}

catch (System.DivideByZeroException aviso)

{

MessageBox.Show("Error

}

finally

{

" + aviso);

lblSalida2.Text="Fin de validación";

}

}

//Código para el botón cmdSalida private void cmdSalida_Click(object sender, EventArgs e)

{

Close();

}

Ejemplo 11. Programa que convierte centímetros a pulgadas y valida que la caja de texto no quede vacía utilizando la excepcion System.FormatException.

de texto no quede vacía utilizando la excepcion System.FormatException . 62 Elaboró: L.I. Karina Aidee Romero

62

Elaboró: L.I. Karina Aidee Romero Alvarado

Fundamentos de Programación Ing. en Sistemas Computacionales

public void cmdproc_Click(object sender, EventArgs e)

{

// Programa que convierte pulgadas a centimetros // Ejemplo 11

// Declaracion de Variables double cm, inc;

// Selectiva try-catch que asegura que la caja de texto no quede vacía try

{

inc = System.Double.Parse(txtvalor.Text); cm = inc * 2.54;

MessageBox.Show(inc + " pulgadas son " + cm + " centimetros", "Resultado");

}

catch (System.FormatException)

{

//Mensaje en caso de que la caja de texto quede vacía MessageBox.Show("Favor de teclear un valor", "Error");

}

finally

{

 

txtvalor.Clear();

txtvalor.Focus();

}

}

Una vez que se ejecuta el código aparecerá la caja de mensaje 1 si se da entrada a un valor o la caja de mensaje 2 en caso de que la caja de texto quede vacía:

de mensaje 2 en caso de que la caja de texto quede vacía: Caja de mensaje

Caja de mensaje 1

caso de que la caja de texto quede vacía: Caja de mensaje 1 Caja de mensaje

Caja de mensaje 2

Ejemplo 12. Programa que divide dos números validando los datos de entrada desde las cajas de texto y la divisón entre cero.

los datos de entrada desde las cajas de texto y la divisón entre cero. 63 Elaboró:

Fundamentos de Programación Ing. en Sistemas Computacionales

// Declaración de variables globales int N1 = 0, N2 = 0;

//Código para el botón cmdValidar

private void cmdValidar_Click(object sender, EventArgs e)

{

// Programa que suma dos números validando los datos de entrada desde // las cajas de texto y la divisón entre cero

// Ejemplo 12 // Nombre:

//Declaración e inicialización de variables int R=0;

//Uso del try-catch try

{

R = (N1 / N2);

}

catch (System.DivideByZeroException)

{

MessageBox.Show("Error trataste de dividir entre cero");

txtN2.Focus();

txtN2.SelectAll();

}

txtR.Text = R.ToString();

}

//Código para la caja de texto txtN1 private void txtN1_TextChanged(object sender, EventArgs e)

{ //Uso del try-catch para validar la caja de texto N1 try

{

N1 = Convert.ToInt16(txtN1.Text);

}

catch (Exception)

{

 

txtN1.Focus();

txtN1.SelectAll();

MessageBox.Show("Introduce valor correcto", "Error");

}

}

//Código para la caja de texto txtN2 private void txtN2_TextChanged(object sender, EventArgs e)

{ //Uso del try-catch para validar la caja de texto N2 try

{

N2 = Convert.ToInt16(txtN2.Text);

}

catch (Exception)

{

 

txtN2.Focus();

txtN2.SelectAll();

MessageBox.Show("Introduce un valor correcto", "Error");

}

Fundamentos de Programación Ing. en Sistemas Computacionales

}

// Código para el botón cmdSalida private void cmdSalida_Click(object sender, EventArgs e)

{

Close();

}

Nota 1: Una vez que se ejecuta el código aparece la siguiente Caja de mensaje si se da entrada a un valor incorrecto en las cajas de texto:

se da entrada a un valor incorrecto en las cajas de texto: Nota 2: Una vez

Nota 2: Una vez que se ejecuta el código la siguiente Caja de mensaje si se trata de dividir entre cero da entrada a un valor incorrecto en las cajas de texto:

entre cero da entrada a un valor incorrecto en las cajas de texto: 65 Elaboró: L.I.

Fundamentos de Programación Ing. en Sistemas Computacionales

4.3 ESTRUCTURAS DE REPETICION.

Una estructura de repetición o ciclo (bucle, lazo o loop) es un segmento de un algoritmo o programa, cuyas instrucciones se repiten un número determinado de veces mientras una determinada condición existe o es verdadera la condición. Se debe establecer un mecanismo para determinar las tareas repetitivas. Este mecanismo es una condición que puede ser verdadera o falsa y que se comprueba una vez a cada paso o iteración del ciclo (total de instrucciones que se repiten en el ciclo).

Un ciclo consta de tres partes:

condición,

cuerpo del ciclo,

salida del ciclo.

El ciclo de la siguiente figura1 es infinito, ya que las instrucciones (1), (2) y (3) se ejecutan indefinidamente, pues no existe salida del ciclo, al no cumplirse una determinada condición. El ciclo dejará de ser infinito y tendrá fin cuando la condición sea falsa como en la figura2.

Inicio Inicio SUMA  0 N  0 SUMA  0 N  0 N
Inicio
Inicio
SUMA  0
N  0
SUMA  0
N  0
N
N
(1)
SUMA SUMA + N
(2)
SUMA SUMA + N
SUMA
no
N<>0
(3)
SUMA
Fin
si
Figura1
Figura2

CONTADORES

Los procesos repetitivos son la base del uso de las computadoras. En estos procesos se necesitan normalmente contar los sucesos o acciones internas del ciclo, como pueden ser los elementos de un

Fundamentos de Programación Ing. en Sistemas Computacionales

archivo, el número de iteraciones a realizar por el ciclo, etc. Una forma de controlar un bucle es mediante un contador.

Un contador es una variable cuyo valor se incrementa o decrementa en una cantidad constante en cada iteración.

Sintaxis en pseudocódigo y para Diagrama de Flujo:

CONTADOR CONTADOR + <incremento o decremento constante>

Ejemplos de Contadores en Incremento y Decremento:

Ejemplos de Contadores en Incremento y Decremento: Inicio C  0 C  C + 1
Ejemplos de Contadores en Incremento y Decremento: Inicio C  0 C  C + 1

InicioC  0 C  C + 1 C no C < 100 Fin si

C 0

Inicio C  0 C  C + 1 C no C < 100 Fin si
C  C + 1 C no C < 100 Fin si
C  C + 1
C
no
C < 100
Fin
si
C  0 C  C + 1 C no C < 100 Fin si Incremento:

Incremento: Números del 1 al 100

ACUMULADORES

Inicio C  50 C C  C - 1 no C >= 1 Fin
Inicio
C  50
C
C  C - 1
no
C >= 1
Fin
si

Decremento: Números del 50 al 1

Realiza la misma función que un contador, con la diferencia de que el incremento o decremento de cada suma es variable en lugar de constante, como en el caso del contador.

Un acumulador o totalizador es una variable cuya misión es almacenar cantidades variables resultantes de sumas sucesivas.

Sintaxis en pseudocódigo y para Diagrama de Flujo:

Fundamentos de Programación Ing. en Sistemas Computacionales

ACUMULADOR ACUMULADOR + <incremento o decremento variable>

Ejemplo de Acumulador en Incremento: Suma los números del 1 al 100 e imprime el resultado.

Inicio C  0; A  0 C  C + 1 A  A
Inicio
C  0; A  0
C  C + 1
A  A + C
no
C < 100
A
Fin
si

4.3.1 REPETIR MIENTRAS.

DO – WHILE

El ciclo Do – While es conocido también como ciclo que prueba por abajo ya que por lo menos ejecuta una vez el bloque de instrucciones antes de probar la condición para continuar o salir del ciclo. Una característica muy importante es que se mantendrá iterando mientras la condición sea verdadera, esto significa que cuando la condición sea falsa saldrá del ciclo. La condición que se defina para detener el ciclo puede manejar cualquier tipo de valor, ya sea numérico o alfanumérico.

Sintaxis en Pseudocódigo:

Repetir

<bloque de instrucciones>

Mientras <condición>

Fundamentos de Programación Ing. en Sistemas Computacionales

Estructura en Diagrama de Flujo:

Sintaxis en C#:

Inicio <Declaración> <Instrucciones> si no <Condición>
Inicio
<Declaración>
<Instrucciones>
si
no
<Condición>

Fin

do { <instrucciones>; }while(<condición>);

Ejemplo 13. Imprime los números del 1 al 10.

1.- Inicio 2.- C 0 3.- Repetir C C + 1 Imprimir C 4.- Mientras C < 10 5.- Fin

Inicio C  0 C  C + 1 C no C < 10 si
Inicio
C
 0
C  C + 1
C
no
C < 10
si

Fin

Fundamentos de Programación Ing. en Sistemas Computacionales

Para poder desplegar varios datos en la forma es necesario hacer lo siguiente: Ir a la propiedad Multiline del objeto Caja de Texto txtDespliegue y activar True para que permita varias líneas en la caja, además verificar que la propiedad WordWrap esté también en True y por último ir a TextAlign y seleccionar Center para centrar el texto.

a TextAlign y seleccionar Center para centrar el texto. private void cmdDespliegue_Click( object sender,

private void cmdDespliegue_Click(object sender, EventArgs e)

{

//Programa que imprime los números del 1 al 10 //utilizando el ciclo Do-While //Ejemplo 13 //Nombre:

//Declaración de variables int C=0;

//Despliegue de resultados do

{

C =

C + 1;

txtDespliegue.Text = txtDespliegue.Text+C.ToString()+"\r\n"; } while (C < 10);

}

private void cmdSalida_Click(object sender, EventArgs e)

{

Close();

}

Fundamentos de Programación Ing. en Sistemas Computacionales

Ejemplo 14. Dar entrada a 5 nombres y desplegarlos utilizando en ciclo Do-While. (En la implementación en C# se utiliza la llamada a una segunda forma).

1.- Inicio 2.- C0, Nombre” ” 3.- Repetir C C + 1 Leer Nombre Imprimir Nombre 4.- Mientras C < 5 5.- Fin

Inicio C  0, Nombre” “ C  C + 1 Nombre Nombre no C
Inicio
C  0, Nombre” “
C  C + 1
Nombre
Nombre
no
C < 5
si

Fin

Al momento de dibujar la forma se tiene que seleccionar la caja de texto txtNombres e ir a la Propiedad Multiline y elegir True y la propiedad ReadOnly a True.

y elegir True y la propiedad ReadOnly a True . //Código para el botón cmdCaptura private

//Código para el botón cmdCaptura private void cmdCaptura_Click(object sender, EventArgs e)

{

// Ciclo do-while que da entrada a 5 nombres invocando // una segunda forma // Ejemplo:

// Declaración de variables int c = 0;

Fundamentos de Programación Ing. en Sistemas Computacionales

string Nombre;

// Crea un objeto de la clase frmSegunda frmSegunda FormaCaptura = new frmSegunda();

// Desactivar botón de captura cmdCaptura.Enabled = false;

// Ciclo do-while do

{

c=c+1;

if (FormaCaptura.ShowDialog() == DialogResult.OK)

{

Nombre = FormaCaptura.txtNombre.Text; txtNombres.Text = txtNombres.Text + Nombre + "\r\n";

}

} while (c < 5);

}

// Código para el botón cmdOtro private void cmdOtro_Click(object sender, EventArgs e)

{

txtNombres.Clear(); cmdCaptura.Enabled = true;

}

// Código para el botón cmdSalida private void cmdSalida_Click(object sender, EventArgs e)

{

Close();

}

Para Crear la segunda forma se debe ir al menú elegir Project y posteriormente Seleccionar la opción Add Windows Form y aparecerá la siguiente caja:

opción Add Windows Form y aparecerá la siguiente caja: Aquí se deberá activar Windows Form para

Aquí se deberá activar Windows Form para agregar la nueva forma y después asignarle el nombre en Name: frmSegunda y finalmente dar click en Add. En la propiedad Text dejar com título Captura de Nombre, después ir a la propiedad FormBorderStyle y elegir FixedDialog, además ir a ControlBox y elegir False. Lo anterior se hizo para que la caja no incluya barra de desplazamiento, menú de control, botones de maximizar y

Fundamentos de Programación Ing. en Sistemas Computacionales

minimizar, barra de estado ni borde de tamaño ajustable (Si se desea se puede dejar como forma normal). A continuación se deberán agregar los siguientes objetos en la forma:

Objeto

Propiedad

Valor

Etiqueta

Name

lblNombre Introduce Nombre:

(Label)

Text

Caja de Texo (TextBox)

Name

txtNombre

Botón de Comando (Button)

Name

cmdAceptar

Text

&Aceptar

 

DialogResult

OK

Botón de Comando (Button)

Name

cmdCancelar

Text

&Cancelar

 

DialogResult

Cancel

Forma

StartPosition

CenteronParent

(Form)

La forma se deberá ver así:

CenteronParent (Form) La forma se deberá ver así: Dando doble click sobre la forma frmSegunda agregar

Dando doble click sobre la forma frmSegunda agregar el siguiente código:

// Código de la forma frmSegunda

private void frmSegunda_Load(object sender, EventArgs e)

{

 

txtNombre.Clear();

txtNombre.Focus();

}

Del explorador de la aplicación elegir Form2Designer.cs

} Del explorador de la aplicación elegir Form2Designer.cs 73 Elaboró: L.I. Karina Aidee Romero Alvarado

Fundamentos de Programación Ing. en Sistemas Computacionales

Finalmente, una vez ahí localizar el código que se deberá modificar a public, para que la caja de texto txtNombre que se encuentra en Form2 (frmSegunda) pueda ser accesada desde la primera Form1 (frmEjemplo14):

#endregion

private System.Windows.Forms.Label lblNombre;

public System.Windows.Forms.TextBox txtNombre;

private System.Windows.Forms.Button cmdAceptar; private System.Windows.Forms.Button cmdCancelar;

Ejercicios

Imprimir los números pares entre 200 y 300 y calcular la suma de éstos.

Dar entrada a los datos de 5 empleados, calcular su Sueldo Neto y al final imprimir el Total de la nómina. Los datos son: Código del Empleado, Nombre, Departamento, Horas Trabajadas y Sueldo por Hora.

Calcular el factorial de cualquier número entero positivo.

Fundamentos de Programación Ing. en Sistemas Computacionales

4.3.2 REPETIR HASTA (WHILE)

El ciclo While es conocido como el ciclo que prueba por arriba porque para poder ejecutar el bloque de instrucciones debe probar primero la condición. Aquí también se mantendrá iterando mientras la condición sea verdadera. La condición que se defina para detener el ciclo puede manejar cualquier tipo de valor, ya sea numérico o alfanumérico.

Sintaxis en Pseudocódigo:

Mientras <condición>

<bloque de instrucciones>

Repetir

Sintaxis en Diagrama de Flujo:

Inicio <Declaración> no <Condición> Fin si <Instrucciones>
Inicio
<Declaración>
no
<Condición>
Fin
si
<Instrucciones>

Ejemplo 15. Imprime los números del 1 al 10.

1.- Inicio 2.- C 0 3.- Mientras C < 10 C C + 1 Imprimir C 4.- Repetir 5.- Fin

Fundamentos de Programación Ing. en Sistemas Computacionales

Fundamentos de Programación Ing. en Sistemas Computacionales Inicio C  0 no C < 10 si
Inicio C  0 no C < 10 si C  C + 1 C
Inicio
C
 0
no
C
< 10
si
C  C + 1
C

Fin

private void cmdDespliegue_Click(object sender, EventArgs e)

{

 

//Programa que imprime los números del 1 al 10 //utilizando el ciclo While //Ejemplo 15 //Nombre:

//Declaración de variables int C=0;

//Despliegue de resultados

while(C<10)

 

{

 

C =

C + 1;

txtDespliegue.Text = txtDespliegue.Text+C.ToString()+"\r\n";

 

}

}

private void cmdSalida_Click(object sender, EventArgs e)

{

}

Ejercicios

Close();

Determinar si un número es primo o no.

Generar la serie de fibonacci para cualquier entero positivo.

Fundamentos de Programación Ing. en Sistemas Computacionales

4.3.3 REPETIR DESDE.

El ciclo Repetir Desde (For) es el más sencillo de los ciclos y es conveniente utilizarlo cuando ya se conoce el número de iteraciones que deberá realizar, en caso contrario se deberá utilizar otro tipo de ciclo donde no sea necesario indicar desde el principio las veces que iterará. Como ya se mencionó éste ciclo se repite un número específico de veces, de tal manera que se le debe indicar explícitamente el número de iteraciones que ejecutará.

El ciclo FOR tiene integrado un contador y la condición para finalizar, de tal manera que dicha condición es únicamente utilizando valores numéricos.

Sintaxis en Pseudocódigo:

Desde <variable> <inicio > hasta <final>

<bloque de instrucciones>

Siguiente <variable>

<Paso <incremento/decremento>>

Símbolo de Diagrama de flujo: Inicialización si Condición no Contador
Símbolo de Diagrama de flujo:
Inicialización
si
Condición
no
Contador

Sintaxis en C#:

a) El flujo entra por la Inicialización. Únicamente la primera vez pasa por ahí.

b) Después pasa por la Condición cada iteración para

probar si termina o continúa el ciclo.

c) Por último pasa por el Contador, también en cada

iteración para incrementar o decrementar el contador interno.

for(<inicializacion>;<condicion>;<incremento/decremento>)

{<bloque de instrucciones>; }

Ejemplo 16. Imprime los número del 1 al 10 utilizando el ciclo FOR:

1.- Inicio 2.- C 0 3.- Desde C 1 Hasta 10 Imprimir C 4.- Siguiente C 5.- Fin

Fundamentos de Programación Ing. en Sistemas Computacionales

Fundamentos de Programación Ing. en Sistemas Computacionales Inicio C  0 no C1 Fin C<=10 si
Inicio C  0 no C1 Fin C<=10 si CC+1 C
Inicio
C  0
no
C1
Fin
C<=10
si
CC+1
C

private void cmdDespliegue_Click(object sender, EventArgs e)

{

//Programa que imprime los números del 1 al 10 //utilizando el ciclo For //Ejemplo 16 //Nombre:

//Declaración de variables int C;

//Despliegue de resultados for (C = 1; C <= 10;C++)

{

txtDespliegue.Text = txtDespliegue.Text + C.ToString() + "\r\n";

}

}

private void cmdSalida_Click(object sender, EventArgs e)

{

Close();

}

Ejemplo 17. Imprime los números pares entre el 1 y el 40 utilizando el ciclo FOR:

1.- Inicio 2.- C 0 3.- Desde C 2 Hasta 40 Paso 2 Imprimir C 4.- Siguiente C 5.- Fin

Fundamentos de Programación Ing. en Sistemas Computacionales

Fundamentos de Programación Ing. en Sistemas Computacionales Inicio C  0 no C2 Fin C<=40 si
Inicio C  0 no C2 Fin C<=40 si CC+2 C
Inicio
C  0
no
C2
Fin
C<=40
si
CC+2
C

private void cmdDespliegue_Click(object sender, EventArgs e)

{

//Programa que imprime los números pares entre 1 y 40 //utilizando el ciclo For //Ejemplo 17 //Nombre:

//Declaración de variables int C;

//Despliegue de resultados for (C = 2; C <= 40;C=C+2)

{

txtDespliegue.Text = txtDespliegue.Text + C.ToString() + "\r\n";

}

}

private void cmdSalida_Click(object sender, EventArgs e)

{

}

Notas:

Close();

Como se puede observar si se desea un incremento diferente a 1 se debe incluir la palabra “Paso” y especificar el valor. Lo mismo aplica para los decrementos, se debe incluir “Paso” y el valor negativo (-1, -2, etc.). Podemos concluir entonces que si no se especifica “Paso” por default

Fundamentos de Programación Ing. en Sistemas Computacionales

lo considera incremento de 1. Dentro del símbolo del ciclo For en diagrama de flujo siempre se debe especificar el incremento o decremento en la sección del contador a diferencia del pseudocódigo.

Por otro lado, en C# se puede utilizar un contador con incrementos en 1 como cont ++ en lugar de cont = cont + 1, en el caso de incrementos diferentes a 1 es necesario utilizar cont += 2 para incrementos de 2 en 2, cont += 3 para incrementos de 3 en 3, etc. en lugar de utilizar cont = cont + 2 o cont = cont + 3.

Para el caso de un contador en decrementos de 1 en 1 se puede usar como cont -- en lugar de cont = cont - 1 y para los decrementos diferentes a 1 es necesario utilizar cont -= 2 para decrementos de 2 en 2, cont -= 3 para decrementos de 3 en 3, etc. en lugar de utilizar el formato cont = cont - 2 o cont = cont - 3.

Ejercicios

Imprimir cualquier tabla de multiplicar.

Determinar el máximo común divisor (Algoritmo de Euclides) de dos números enteros.