Asignatura: Programación 1 Curso: 1 Facultad: Ciencias Empresariales. Especialidad: Ingeniería Industrial Año: 2do Semestre: 1ero Disciplina: Procesos de Información. Asignatura: Programación I Tema III: Estructuras de control: Estructuras condicionales e iterativas, en el lenguaje C#. Profesor: M.Sc. Carlos Manuel Celestrín Campa. Fecha: Grupo: I-21 Actividad No. 13 Tipo de clase: Conferencia (Conferencia 5) Temática: Estructuras condicionales en el lenguaje C#. Objetivos: Identificar la sintaxis relacionada con las estructuras condicionales en el lenguaje de programación C#. Aplicar las estructuras de selección simple if…else, las de selección múltiple swich…case, en el lenguaje de programación C#, para la resolución de problemas, utilizando el paradigma orientada a objetos. Sistema de Contenidos: - Cocimientos: Las estructuras condicionales simples y múltiples en el lenguaje C#. - Habilidades: Solucionar problemas utilizando las estructuras de selección simple y múltiple en el lenguaje de programación C#. - Valores: Responsabilidad, creatividad. - Experiencia de la Actividad creadora: Independencia y motivación (dimensiones de la creatividad). Sistema de Métodos: Elaboración Conjunta, explicativo-ilustrativo, resolución de problemas, mapa conceptual. Sistema de Medios: Pizarra, PC, presentación digital con Prezzi Sistema de evaluación: Sistemática mediante las respuestas y la participación durante la clase. Forma de organización de la enseñanza: Conferencia Profesor: M.Sc. Carlos Manuel Celestrín Campa UM Asignatura: Programación 1 Curso: 2 Organización de la clase: 1. Introducción 2. Estructura de control alternativa simple (if). 3. Estructura de control alternativa simple (if else) 4. Estructura de control alternativa múltiple (switch case) 5. Caso de estudio (ejemplo1): Clasificación de números. 6. Caso de estudio (ejemplo2): Calculadora. 7. Caso de estudio (ejemplo3): Facultad de Informática. 8. Conclusiones. Profesor: M.Sc. Carlos Manuel Celestrín Campa UM Asignatura: Programación 1 Curso: 3 Escojan hoy a quien quieren servir, si a los dioses que sirvieron sus antepasados. o a los dioses en cuyas tierras están morando. Pero en cuanto a mí y a mi casa, nosotros serviremos a Jehová. -Josuéi 1473-c.1450 a. E.C Introducción: 1. Se les realiza la bienvenida a los estudiantes al aula y se pasa la asistencia. 2. Se les explica a los estudiantes que a partir de esa semana se adentrarán aún más en el paradigma de la programación orientada a objetos, profundizando en la sintaxis del lenguaje C# a partir de comenzar a estudiar un nuevo tema de la asignatura, el Tema 3, orientado a aplicar a la resolución de problemas las estructuras de control: las estructuras de control alternativas o condicionales y las estructuras de control iterativas o repetitivas, permitiéndoles utilizar este nuevo contenido en el desarrollo de las soluciones vinculados a sus proyectos de curso. 1. Se les explica a los estudiantes como pueden encontrar los recursos del nuevo tema a tratarse en la plataforma MOODLE, así como las páginas a leer de cada una de las bibliografías orientadas para la asignatura: Colectivos de autores; Programación orientada objetos en C#, Universidad de Ciencias Informáticas. Universidad de Matanzas, 2003. Pág. 83-99. 3. Se les recuerda a los estudiantes la estructura del nuevo tema: 2 conferencias, 5 clases prácticas, 4 laboratorios. 4. Motivación: Se les comenta a los estudiantes que continuamente, en nuestra vida cotidiana, debemos solucionar problemáticas en las cuales tenemos que elegir caminos diferentes en concordancia a las condiciones que se nos presentan y que algunas de esas decisiones pueden marcar nuestro devenir en la vida, marcar nuestra existencia determinantemente. Se les menciona a los estudiantes la frase seleccionada y que caracteriza la nueva temática de estudio, y se explica que en esta primera conferencia aprenderan a desarrollar soluciones utilizando las estructuras de control condicionales simples y múltiples en el lenguaje C#. Desarrollo: 1. Se les explica a los estudiantes que las soluciones que se han desarrollado hasta el momento utilizando el lenguaje de programación C# se despliegan a través de un flujo secuencial, o sea, las instrucciones se ejecutan una a continuación de la otra en el mismo orden que son escritas, pero que, con mucha frecuencia, en la solución de los problemas aparecen situaciones en que la ejecución de una instrucción depende de si se cumple o no una condición. 2. Se explica a los estudiantes que es por ello que en los lenguajes de programación aparecen las estructuras de control alternativas o condicionales. Profesor: M.Sc. Carlos Manuel Celestrín Campa UM Asignatura: Programación 1 Curso: 4 3. Se les recuerda a los estudiantes que, en el tema 1 de la asignatura, estudiaron los algoritmos en diagrama de flujo y en seudocódigo representativos de las estructuras de selección simple y múltiple. Teniendo en cuenta la orientación de estudiarlos para este nuevo tema se pide a los estudiantes que levantando la mano y pasando a la pizarra describan algunos ejemplos (se evalúa su participación). 4. Se les explica a los estudiantes que el lenguaje C# cuenta con tres tipos de estructuras de selección: la instrucción if que realiza (selecciona) una acción si una condición es verdadera, o ignora la acción si la condición es falsa; la instrucción if…else que realiza una acción si una condición es verdadera o realiza una acción distinta si la condición es falsa; la instrucción switch…case que realiza una de varias acciones distintas, dependiendo del valor de una expresión (expresión de control). 5. Se les explica a los estudiantes que a la instrucción if se le llama instrucción de selección simple, debido a que selecciona o ignora una acción individual. A la instrucción if...else se le llama instrucción de selección doble, debido a que selecciona una de dos acciones distintas (o grupos de acciones). A la instrucción switch…case se le llama instrucción de selección múltiple, debido a que selecciona una de varias acciones distintas (o grupo de acciones). 6. Se les explica a los estudiantes la sintaxis general de una estructura condicional: if (expresión booleana) { Instrucción(es) de condición verdadera. } 7. Se explica que las llaves son opcionales si hay una sola acción y que normalmente es aconsejable añadirlas de todas formas, pues su omisión puede ser causa de fallos inesperados. 8. Se explica a los estudiantes que la instrucción if solo garantiza la ejecución de determinadas acciones basándose en una condición verdadera (true) se ejecuten o no, por lo que para controlar tanto la condición verdadera como la falsa (false) es necesario utilizar la instrucción if…else. 9. Se explica a los estudiantes que la sintaxis es: if (expresión booleana) { Instrucción(es) de condición verdadera. } else { Instrucción(es) de condición falsa. } 10. Se les alerta a los estudiantes que la condición siempre se evalúa en el if, por lo que nunca se evaluará una condición después de la sentencia else. Profesor: M.Sc. Carlos Manuel Celestrín Campa UM Asignatura: Programación 1 Curso: 5 11. Se explica a los estudiantes que muchas veces vamos a necesitar evaluar más de dos condiciones, por lo que nos podemos encontrar con la siguiente sintaxis e interpretación: if (condicion1) { Bloque de instrucciones que se ejecutan si la condición 1 es verdadera. } else if (condicion2) { Bloque de código que se ejecuta si la condición 2 es verdadera. } else if (condición n) { Bloque de código se la siguiente condición n es verdadera. } else { Bloque de código que se ejecuta si ninguna de las condiciones previas fue verdadera. } 12. Se recuerda a los estudiantes el uso de los operadores lógicos estudiados en las conferencias correspondientes al tema 1 de la asignatura y el resultado booleano (verdadero o falso) que estos producen, así como sus operandos. 13. Se recuerda que los operadores lógicos nos permiten formular condiciones complejas a partir de condiciones simples. 14. Se les recuerda a continuación la tabla con las tres compuertas lógicas básicas que les sirven como operadores lógicos: 15. OPERADOR AND C# && SINTAXIS Exp_Lógica && COMENTARIO Devuelve verdaderos si se cumplen ambas condiciones. Exp_Lógica OR NOT II ! Exp_Lógica || Devuelve verdaderos si se cumple al menos una de las Exp_Lógica condiciones. ! Profesor: M.Sc. Carlos Manuel Celestrín Campa Niega la condición. UM Asignatura: Programación 1 Curso: 6 La operación x && y corresponde a la operación x & y, excepto que y se evalúa solamente si x es true. La operación x || y corresponde a la operación x | y, excepto que y se evalúa solamente si x es false. 14. Se les explica a los estudiantes que a continuación se analizarán varios ejemplos en los cuales se aplican las estructuras condicionales simples estudiadas: Ejemplo 1: Desarrollar un programa que solicite al usuario un número y determine si dicha cantidad es par o impar, en caso de que el número sea par, el programa deberá verificar si el número está entre el rango [10 - 100]. Solución: Etapa de algoritmización. Solución: Etapa de codificación. (…) Console.WriteLine ("Ingrese un número:"); int numero = int.Parse (Console.ReadLine()); if (numero < 0) { Console.WriteLine ("Ingrese un número positivo");} else if (numero % 2 == 0) {Console.WriteLine("El número es par."); if (numero >= 10 && numero <= 100) {Console.WriteLine("El número pertenece al rango [10-100]");} else {Console.WriteLine("El número no pertenece al rango [10-100]");}} Profesor: M.Sc. Carlos Manuel Celestrín Campa UM Asignatura: Programación 1 Curso: 7 else { Console.WriteLine("El número no es par");} Console.ReadKey(); } (…) 15. A continuación, se les explica a los estudiantes que cuando hay muchas condiciones a evaluar, la instrucción if…else puede resultar demasiado compleja de manejar, por lo que una solución mucho más limpia en estos casos consiste en usar la instrucción switch…case. 16. Se explica que la instrucción switch…case permite cualquier valor entero o de cadena con múltiples valores. 17. Se explica que cuando se produce una coincidencia se ejecutan todas las instrucciones asociadas con ella y que esta estructura es muy utilizada a la hora de trabajar con menú dentro de las aplicaciones. 18. Se explica a los estudiantes que la sintaxis es: switch(expresión_de_control) { case<literal-1>: Instrucción(es) break; ... case<literal-n>: Instrucción(es) break; default: Instrucción(es) } 19. Se propone a los estudiantes el siguiente ejercicio. Ejemplo 2 Se necesita un programa que muestre un menú con las siguientes opciones: 1-Suma, 2-Multiplicación, 3Raíz Cuadrada, 4-Potenciación, 5-Salir del programa. El programa permitirá realizar cada una de las operaciónes matemáticas expresadas y mostrarlas. Solución: Etapa de algoritmización. Profesor: M.Sc. Carlos Manuel Celestrín Campa UM Asignatura: Programación 1 Curso: 8 Solución: Etapa de codificación. (…) int op; double numero1,numero2; Console.WriteLine("OPERACIONES MATEMÁTICAS"); Console.WriteLine("1. SUMAR"); Console.WriteLine("2. MULTIPLICAR"); Console.WriteLine("3. RAÍZ CUADRADA"); Console.WriteLine("4. POTENCIACIÓN"); numero2= double.Parse(Console.ReadLine()); Console.WriteLine("Digitar el primer número:"); numero1 = double.Parse(Console.ReadLine()); Console.WriteLine("Digitar el segundo número:"); Console.WriteLine("Digite su opción: "); op = int.Parse(Console.ReadLine()); switch (op) { case 1: Console.WriteLine("El resultado de la suma es: " + numero1+numero2); break; case 2: Console.WriteLine("El resultado de la multiplicación es: " + numero1*numero2); Profesor: M.Sc. Carlos Manuel Celestrín Campa UM Asignatura: Programación 1 Curso: 9 break; case 3: Console.WriteLine("La raíz cuadrada del primer número es " + Math.Sqrt(numero1)); Console.WriteLine("La raíz cuadrada del segundo número es" +Math.Sqrt(numero2)); break; case 4: Console.WriteLine("El cuadrado del primer número es " + Math.Pow(numero1,2)); Console.WriteLine("El cuadrado del segundo número es " + Math.Pow(numero2,2)); break; default: Console.WriteLine ("Opción no definida, intente de nuevo"); break; } Console.ReadKey(); } } (…) 20.Se les explica a los alumnos que por último para concluir se les propone un ejemplo que no solo incluye las nuevas estructuras de código estudiadas en C#, o sea las estructuras condicionales simples y múltiples, sino que a su vez utiliza el paradigma orientada objetos, la metodología orientada a objetos. 21.Se les propone entonces continuar desarrollando el caso de estudio Universidad presentado en las conferencias anteriores: Ejemplo 3 Próximo al mediodía el decano del Departamento de Informática llama por teléfono a la secretaria docente y le pregunta si el estudiante Manuel Octavio Celestrin Hernández cumplen con los requisitos docentes para pertenecer al Cuadro de Honor de la facultad. Poco después la secretaria docente se encarga de actualizar el índice académico de este estudiante y verificar si posee un índice académico mayor que 4.8. Minutos después la secretaria docente llama por teléfono al decano para comunicarle si el estudiante consultado puede pertenecer o no al Cuadro de Honor de la Facultad de Informática. Profesor: M.Sc. Carlos Manuel Celestrín Campa UM Asignatura: Programación 1 Curso: 10 Solución: Etapa de UML (Diagrama de Clases). Secretaria Docente Estudiante cadena nombre cadena nombres, apellidos entero nota1, nota2, nota3 void PuedePertenecerCuadroDeHonor () real Calcular Promedio () Existe una relación de dependencia, relación de uso, entre la clase SecretariaDocente y la clase Estudiante. Clase Estudiante (….) public class Estudiante { string nombres, apellidos; double nota1,nota2,nota3; public Estudiante(string nombres,string apellidos, double nota1, double nota2, double nota3) { this.nombres=nombres; this.apellidos=apellidos; this.nota1=nota1; this.nota2=nota2; this.nota3=nota3; } public double PromedioNotas() { return (nota1+nota2+nota3)/3; } } (…) Clase Secretaria Docente (…) public class SecretariaDocente { public SecretariaDocente() { } Profesor: M.Sc. Carlos Manuel Celestrín Campa UM Asignatura: Programación 1 Curso: 11 public string PerteneceCuadroHonor (Estudiante e) { if(e.PromedioNotas()>4.85) {return " pertenece al cuadro de honor de la universidad");} else return " no pertenece al cuadro de honor de la universidad"); } } (…) Clase Principal (…) class Program { public static void Main(string[] args) { SecretariaDocente s= new SecretariaDocente(); Estudiante e=new Estudiante(“Carlos Manuel”,”Celestrin Hernandez”,4.3,4,5); Console.WriteLine(“El estudiante ”+e.nombres+””+e.apellidos+””+ s.PerteneceCuadroHonor(e)); Console.Write(“Press any key to continue . . . “); Console.ReadKey(true); } } (…) Conclusiones: 1. Se concluye la clase realizando un resumen de los temas tratados construyendo con los estudiantes un mapa conceptual (se evalúan a los estudiantes que participan.) Profesor: M.Sc. Carlos Manuel Celestrín Campa UM Asignatura: Programación 1 Curso: 12 2. Se recuerda como encontrar el tema impartido, clase, bibliografía orientada y los ejercicios de estudio independiente con carácter evaluativo en la plataforma MODDLE, así como se realiza una breve descripción de la temática a tratar en el próximo encuentro: Las estructuras iterativas. Bibliografía: 2. Colectivos de autores; Programación orientada objetos en C#, Universidad de Ciencias Informáticas. Universidad de Matanzas, 2003. Pág. 83-99. 3. Mayo Joseph; C# al descubierto, Editorial Félix Valera La Habana, 2010. Anotaciones ________________________________________________________________________ ________________________________________________________________________ ________________________________________________________________________ ________________________________________________________________________ ________________________________________________________________________ ________________________________________________________________________ ________________________________________________________________________ ________________________________________________________________________ ________________________________________________________________________ _______________________________________________________________ i Según las Escrituras Sagradas Hebreas Arameas, hijo de Nun; efraimita que sirvió a Moisés y más tarde fue nombrado su sucesor. (Éx 33:11; Dt 34:9; Jos 1:1, 2.) Las Escrituras describen a Josué como un caudillo denodado e impávido, convencido de la veracidad de las promesas de Jehová, obediente a la dirección divina y resuelto a servir fielmente a Jehová. Profesor: M.Sc. Carlos Manuel Celestrín Campa UM