Fundamentos de C# RUBÉN ANDRÉS LEIVA CORDERO 2016
Objetivos de la sesión • Conocer las estructuras de ciclos en C# • Hablar de la segunda sesión del material de certificación
Objetivos de la sesión • Conocer los elementos fundamentales programación en arquitecturas NET
de
• Hablar de los lenguaje C#
del
elementos
fundamentales
Ciclos en C# • Al igual que los lenguajes de alto nivel, C# posee los mismos ciclos de control. • Estas estructuras repetitivas de control, permiten al usuario trabajar y desarrollar tareas, ahorrando una enorme cantidad de tiempo en el desarrollo.
Ciclos en C# - While • A diferencia del ciclo FOR, la estructura While permite desarrollar una serie de instrucciones evaluando una condición previa.
Ciclos en C# - While • La modificación a este caso, permite agregar más condiciones a evaluar al interior del ciclo While.
Ciclos en C# - While • La modificación a este caso, permite agregar más condiciones a evaluar al interior del ciclo While.
El Ciclo while • Permite que el código se repita mientras se cumpla una condición Booleana. • Se evalúa la condición antes de ejecutar el código. • Se puede utilizar cuando el número de iteraciones no se conoce antes de ejecutar el ciclo. Inicialización
int i = 0; Condición
while (i < 5) { Console.WriteLine(i); Incremento
i = i + 1; }
El Ciclo for • Permite que el código se ejecute usando un contador de ciclos para controlar el número de veces que se repite. • Se usa cuando el número de iteraciones se conoce antes de la ejecución del ciclo. Inicialización
Condición
for (int i = 0; i < 5; i++) { Console.WriteLine(i); }
Incremento
Diagrama de flujo del ciclo for Inicialización
Condición ?
Ejecución del ciclo
Incremento
• Si la condición es falsa en la entrada del ciclo, entonces el ciclo nunca se ejecutará (ni siquiera una vez).
Ciclos en C# - For • La estructura FOR permite controlar bajo ciertos parámetros de entrada, la cantidad de repeticiones. EN LA PRIMERA PARTE DECLARAMOS EL CONTADOR
EN LA SEGUNDA PARTE LA CONDICIÓN A EVALUAR
EN LA TERCERA PARTE EL INCREMENTO O DECREMENTO
Ciclo while vs Ciclo for • Si observamos el siguiente ejemplo, la estructura de trabajo de ambos ciclos responden al mismo problema.
El Ciclo do-while • Permite que el código se repita mientras se cumpla una condición Booleana. • La condición se evalúa después de que el código ya se haya ejecutado una vez. • Se puede usar cuando el número de iteraciones no se conoce antes de ejecutar el ciclo pero se asume que se ejecutará al menos una vez.
Ciclo while vs Ciclo do-while • Un ciclo do-while se ejecutará por lo menos una vez. • Un ciclo while puede no ejecutarse nunca. • Todo esto por las condiciones que entreguemos al trozo de código, y dependerá el desarrollo que estemos trabajando.
Ciclos en C# - Do While
Errores de Ámbito for(int i = 0; i < 5; i++) { Console.Writeline(i); } Console.WriteLine(i); // error de Sintaxis // i es una variable local
¿En qué momento utilizar ciertos ciclos? • ¿Cuándo se usan los ciclos while? • Cuando no se sabe cuantas veces se iterará. •Los ciclos while incorporan una prueba (condición) y por lo tanto pueden no ejecutarse ni una sola vez. • ¿Cuándo se usan los ciclos for? • Cuando no se sabe el número específico de iteraciones. • Los ciclos for son más fáciles de revisar ya que son mas estructurados. • ¿Cuándo se usan los ciclos do-while? • Cuando se sabe que se debe ejecutar una sentencia por lo menos una vez.
Recursividad • La recursividad ocurre cuando se usa un método para resolver otra versión del mismo problema. • Con cada repetición, el problema se hace más fácil y avanza a un caso base. • El caso base se alcanza cuando no se requiere ninguna otra iteración. • Un caso base es el punto en el cual ya no se realiza ninguna otra iteración.
Identidad (num)
Acciones suspendidas
Regresar a la pila
Identidad (6)
6 + identidad (4)
22
Identidad (4)
4 + identidad (2)
16
Identidad (2)
2 + identidad (0)
12
Identidad (0)
10
Repaso • ¿Cuáles son las diferentes situaciones por las que opta por un tipo de ciclo en vez de otro? • ¿Cuáles son los componentes necesarios de un método recursivo?