Ing. Francisco Ríos Acosta Apuntes de Fundamentos de Programación UNIDAD 6. Instituto Tecnológico de la Laguna, a 12 de diciembre del 2008. pag. 3 de 44 6 Estructuras secuenciales y selectivas. Desde 1973 Edgser W. Dijkstra establece con sus principios de la programación estructurada, que las instrucciones de un programa deben ejecutarse en secuencia, es decir sin saltos abruptos, por decirlo de alguna manera. El código espaguethi es un ejemplo de saltos de un lado a otro dentro o hacia fuera del programa. Una instrucción que solía usarse dentro de un código espaguethi es el goto. Como buenos programadores y siguiendo las enseñanzas de Dijkstra, debemos evitar el uso de senetencias goto.
instr1; instr2; instr3; … …
La secuencia en que son ejecutadas las sentencias instrucciones- de un programa se le conoce como flujo de ejecución del programa. El control de flujo de ejecución de las sentencias de un programa en ocasiones debe variar, según sean realizadas algunas validaciones de datos. Por ejemplo, un algoritmo que efectúe la suma de los primeros n números naturales, donde n es un dato entero que se lee en nuestra aplicación. Si el valor de n leído es 5, el programa deberá calcular la suma de los primeros 5 números naturales. Digamos que las instrucciones del programa en secuencia son : n=oCalc.Leer(); oCalc.EfectuarSuma(n); visua la suma de los primeros , n, números naturales es = , oCalc.RetSuma(); oCalc es un objeto de una determinada clase a la que llamaremos Calculador, y es el encargado de leer el valor de n y de efectuar la suma de los n primeros números naturales, además de visualizar el resultado de la suma. El método EfectuarSuma(n) deberá calcular el valor de la suma de alguna forma : suma = 1 + 2 + 3 + 4 + 5; Ejecución en secuencia de las instrucciones de un programa Flujo de ejecución en secuencia de las instrucciones del programa Suma de los primeros 5 números naturales. Algo muy importante es que los números naturales no son negativos. ¿Qué pasaría si el usuario teclea un valor de n negativo?, digamos el -5. El programa debería entender que queremos calcular la suma de los ¡ primeros -5 números naturales !, cuestión que no es lógica. Por lo tanto debemos de modificar el control de flujo de ejecución de las sentencias cuando el valor leído sea negativo. A una instrucción que evalúa una condición (el resultado de una condición es false o true) y de acuerdo a esta evaluación controlar el flujo de ejecución del programa, se le denomina instrucción selectiva o de selección. A continuación expresamos visualmente cómo el flujo de ejecución del programa varía de acuerdo a la condición n < 0 ?.
n = oCalc.Leer();
true n < 0 ? visua valor de n debe ser mayor o igual que 0; false oCalc.EfectuarSuma(n);
visua la suma de los primeros , n, números naturales es = , oCalc.RetSuma();
Ing. Francisco Ríos Acosta Apuntes de Fundamentos de Programación UNIDAD 6. Instituto Tecnológico de la Laguna, a 12 de diciembre del 2008. pag. 4 de 44 Las flechas indican el flujo de ejecución del programa. Notemos que la condición se denota gráficamente mediante un rombo el cuál tiene 2 salidas : true cuando la condición probada es verdadera y false cuando no lo es. Cuando el valor de n es negativo el programa fluye hacia la sentencia de visualización del mensaje de error. Cuando el valor de n es positivo el control de ejecución del programa fluye hacia las sentencias que calculan la suma y visualizan los resultados.
En el transcurso de la exposición de esta unidad 6 explicaremos este tipo de sentencias selectivas, además de repasar las sentencias de entrada y salida de datos. También daremos el repaso a los modificadores de acceso public y private.
6.1 Modificadores de acceso – public y private -.
El uso de los modificadores de acceso constituyen una cuestión fundamental en la programación orientada a objetos. Estos permiten la buena o la mala programación orientada a objetos.
En C# existen 3 tipos de modificadores de acceso : private public protected Un beneficio fundamental en la orientación a objetos es el ocultamiento de datos atributos-, que consiste en que sólo los métodos definidos en la clase, son los únicos que pueden acceder a los atributos de los objetos pertenecientes a una clase. La implementación del concepto de ocultamiento de datos es efectuada haciendo a los atributos privados y a los métodos, públicos. En otras palabras, aplicar el modificador de acceso private a cada atributo y el modificador de acceso public a cada método. El modificador de acceso public permite desde cualquier parte del programa, el uso del método o atributo de la clase al que se le aplique. Por el contrario, el modificador de acceso private no permite el uso del atributo o método de la clase, solamente es visible a los métodos de la clase. Digamos que la clase Alumno tiene 3 atributos : noControl, nombre y calif. Además tiene 2 métodos : AsignaNoControl() y RetNoControl(), donde el primero de ellos recibe un parámetro necesario para asignarlo al atributo _noControl. La clase Alumno la escribiríamos de la siguiente manera :
class Alumno { private string _noControl; private string _nombre; private int _calif;
public void AsignaNoControl(string valor) { _noControl = valor; }
public string RetNoControl() { return _noControl; } } No hemos escrito los métodos para asignar y retornar los atributos _nombre y _calif sólo por no hacer mas abultada la clase Alumno, después los agregaremos.
Notemos que los 3 atributos han sido declarados antecediéndolos de la palabra reservada private, que indica que el atributo no puede ser accedido desde cualquier parte de la aplicación. El atributo así declarado, sólo podrá ser accedido por los métodos de la clase Alumno, en este caso por lo
Página siguiente |