Introducción A Las Estructuras De Seleccion En C

39
Programación en C. Estructuras de Control Profesora: Painé Pintos. Materia: Práctica Profesional II Instituto Terciario “Simón Bolivar”

Transcript of Introducción A Las Estructuras De Seleccion En C

Page 1: Introducción A Las Estructuras De Seleccion En C

Programación en C.Estructuras de Control

Profesora: Painé Pintos.Materia: Práctica Profesional IIInstituto Terciario “Simón Bolivar”

Page 2: Introducción A Las Estructuras De Seleccion En C

Indice de la presentación

Estructuras de control. Diagrama de flujo. Estructuras de selección

Sentencia IF. Sentencia IF… ELSE. Sentencia IF… ELSE IF. Sentencias anidadas. Sentencia SWITCH (ejemplo).

Estructuras de repetición (bucles). Sentencia WHILE

Ejemplo 1 (bucle regulado por contador). Ejemplo 2 (bucle regulado por centinela).

Sentencia DO…WHILE. Uso de operadores de incremento y decremento

Sentencia FOR. Ejemplo 1 s

Page 3: Introducción A Las Estructuras De Seleccion En C

ESTRUCTURAS DE CONTROL

En general, las instrucciones de un programa se ejecutan una tras otra, en el orden que fueron escritas. A esto se llama EJECUCIÓN SECUENCIAL.

Las INSTRUCCIONES DE CONTROL son aquellas que permiten transferir el control a otras instrucciones sin seguir la ejecución secuencial. C proporciona 3 tipos de instrucciones de selección

: IF, IF…ELSE y SWITCH. Proporciona además 3 tipos

instrucciones de repetición: WHILE, DO…WHILE y FOR. s

I

Page 4: Introducción A Las Estructuras De Seleccion En C

DIAGRAMA DE FLUJO

Un diagrama de flujo es una representación gráfica de un algoritmo o de una porción de algoritmo.

Se dibuja con símbolos de propósito especiales tales como:

s

ISímbolo de acción: indica cualquier tipo de acción que desarrolla el programa.

Símbolo de decisión: indica el punto de lrpograma en el que se va a tomar una decisión (de acá pueden partir varios cursos de acción diferentes

Símbolo de inicio y final: indica el inicio y el final del programa entero. Se agrega adentro la palabra que sea pertienente (“inicio”, “fin”)

Símbolo conector: cuando se escribe parte del programa, se inicia y se termina el diagrama con este símbolo en vez de con los símbolos de inicio y final

Líneas de flujo: conectan los símbolos e indican secuencia de sentencias.

Page 5: Introducción A Las Estructuras De Seleccion En C

DIAGRAMA DE FLUJO – Ejemplo:

A==B

Declarar variablesA y B integer

inicio

Imprimir “Cargar dos valoresEnteros”

Leer valores enVariables A y B

Imprimir “A es igual B”

A!=B Imprimir “A es diferente B”

fin

verdadero

verdadero

falso

falso

Supongamos un programa en el que se ingresa dos enteros y se muestra si son iguales o no.

El diagrama sería

Page 6: Introducción A Las Estructuras De Seleccion En C

¿QUÉ SON LAS ESTRUCTURAS DE SELECCIÓN?

Las estructuras de selección (o bifurcación) se utilizan para elegir entre diversos cursos de acción. En este caso, se evaluará una condición que permitirá elegir hacer o no una acción o en otros casos, tomar un curso ú otro de acción.

Hay tres tipos de estructuras de selección: if (selección simple), if…else (selección doble) y switch (selección múltiple)

s

I

Page 7: Introducción A Las Estructuras De Seleccion En C

INSTRUCCIÓN DE SELECCIÓN SIMPLE IF

Esta sentencia de control permite ejecutar o no una sentencia simple o compuesta según se cumpla o no una determinada condición

s

IEjemplo: if (calificación >=6) printf

(“aprobado\n”);

• Calificación es la variable;

• “calificación >=6” es la condición;

• si esta condición es verdadera, se ejecuta “printf (“aprobado\n”); “

• si es falsa, se sigue con el resto del programa, sin ejecutar el printf.

Calificación >=6Imprime

“Aprobado”

verdadero

falso

Page 8: Introducción A Las Estructuras De Seleccion En C

INSTRUCCIÓN DE SELECCIÓN DOBLE: IF… ELSE

Esta sentencia permite realizar una bifurcación, ejecutando una parte u otra del programa según se cumpla o no una cierta condición

Ejemplo:

if (condicion>=60) printf (“Aprobado”);

else printf (“Reprobado”);

I

s

Page 9: Introducción A Las Estructuras De Seleccion En C

INSTRUCCIÓN DE SELECCIÓN MULTIPLE: IF… ELSE IF

Esta sentencia permite realizar una ramificación múltiple, ejecutando una entre varias partes del programa según se cumpla una entre n condiciones

Ejemplo:Ej: Para la nota ingresada de un alumno debe imprimirse una “A” si la calificación es mayor o igual a 90; una “B” si las calificaciones son mayores o iguales a 80 (pero menores a 90), una “C” si la calificación es mayor o igual a 70 (pero menor a 80); una “D” si la nota es mayor o igual a 60 (pero menor a 70); una “F” para todas las demás calificaciones.El código en C podría ser:

If (calificación >=90)Printf (“A\n”);

Else if (calificación >=80)Printf (“B\n”);

Else if (calificación >=70)Printf (“C\n”);

Else if (calificación >=60)Printf (“D\n”);

Else Printf (“F\n”);

I

Page 10: Introducción A Las Estructuras De Seleccion En C

DIAGRAMA DE FLUJO IF MÚLTIPLE.

If calificacion >= 90

Imprimir “A”

If calificacion >= 80 Imprimir “B”

If calificacion >= 70

Imprimir “C”

If calificacion >= 60

Imprimir “D”Imprimir “F”

V

verdadero

verdadero

verdadero

verdaderofalso

falso

falso

falso

Page 11: Introducción A Las Estructuras De Seleccion En C

INSTRUCCIÓN DE SELECCIÓN ANIDADAS

Una sentencia if puede incluir otros if dentro de la parte correspondiente a su sentencia, A estas sentencias se les llama sentencias anidadas

Ejemplo: Se realizará una división siempre y cuando el denominador sea menor o igual al numerador y no sea igual a 0. Supongamos que el numerador se ha cargado en A y el denominador en B

If (A >= B)if (B!=0)c=A/B;

Supongamos que en caso de que B no cumpla condiciones deberá guardarse en C un 0.

El código podría ser:If (A >= B)

if (B!=0)c=A/B;

elsec=0;

¿A quién pertenece el else?

Para evitar dudas, utilizar llaves:If (A >= B) { if (B!=0) c=A/B;}Elsec=0; s

I

Page 12: Introducción A Las Estructuras De Seleccion En C

SENTENCIA DE SELECCIÓN MÚLTIPLE: SWITCH

Desarrolla una función similar a la de la sentencia if ... else con múltiples ramificaciones, aunque con importantes diferencias

La instrucción switch consiste en una serie de etiquetas case y un caso opcional default.

I

s

Page 13: Introducción A Las Estructuras De Seleccion En C

SWITCH - EJEMPLO:

Ejemplo: supongamos que se quiere crear un programa que traduzca notas numéricas (1 a 10) a notas cualitativas aproximadas (exc, mb, b, r, mal) Para esto se le pide al alumno que ingrese su nota cuantitativa (almacenada en una variable NOTA) y se ingresa a la sentencia de selección:

V

D

Page 14: Introducción A Las Estructuras De Seleccion En C

DIAGRAMA DE FLUJO SWITCH

V

inicio

Declarar int nota

Cargar nota

case NOTA = 1

case 2

case 3 Imprimir nota “MAL” BREAK

Case 4

case 5 Imprimir nota “REGULAR”

BREAK

case 6

Case 7Imprimir nota

“BUENO”BREAK

Case 8Imprimir nota

“MUY BUENO”BREAK

Case 9

Case 10 Imprimir nota “EXCELENTE”

BREAK

DEFAULTImprimir “Ingresó valor

Incorrecto”;

final

v

v

v

v

v

v

Page 15: Introducción A Las Estructuras De Seleccion En C

INSTRUCCIONES DE REPETICIÓN

Instrucciones que permiten repetir una serie de veces la ejecución de unas líneas de código.

Esta repetición se realiza o bien un número determinado de veces o bien hasta que se cumpla una determinada condición de tipo lógico o aritmético.

De modo genérico, a estas sentencias se les denomina bucles.

Hay 3 tipos de instruc. de repetición: WHILE, DO…WHILE y FOR.

s

I

Page 16: Introducción A Las Estructuras De Seleccion En C

INSTRUCCIÓN WHILE

Permite ejecutar repetidamente, mientras se cumpla una determinada condición, una sentencia o bloque de sentencias Ej: encontrar la primera potencia de 2 que sea mayor que 1000. La variable producto se inicializa en 2. Producto = 2;

While (producto <=1000)

Producto = 2 * producto;

I

s

Page 17: Introducción A Las Estructuras De Seleccion En C

USO DE WHILE – EJEMPLO 1 (BUCLE CONTROLADO POR CONTADOR)

Programa que permite sacar el promedio de un grupo de 10 alumnos a partir de notas individuales ingresadas por teclado.

I

D

Page 18: Introducción A Las Estructuras De Seleccion En C

DIAGRAMA DE FLUJO WHILE – EJEMPLO 1

INICIO

Declarar INT contador, total,promedio, calificacion.

INICIALIZARcontador = 1;

total = 0;

While (contador <=10)

Ingresar nota en calificacion;

Guardar en promedio = total / 10;

Imprimir promedio;

Acumular calificacion en total;

Sumar 1 a contador;

FIN

verdadero

falso

V

Page 19: Introducción A Las Estructuras De Seleccion En C

Uso WHILE – EJEMPLO 1 - Variables

• Para sacar promedio necesitamos: sumar todas las notas (esto se hará en TOTAL); permitir el ingreso de cada nota individual (esto se hará en la CALIFICACION); habilitar una variable para almacenar el promedio una vez que se hayan ingresado TODAS las notas (esto se hará en PROMEDIO).

• La variable CONTADOR es la que permite regular el bucle: irá aumentando en 1 a medida que se vayan ingresando las notas.

V

Page 20: Introducción A Las Estructuras De Seleccion En C

Uso WHILE – EJEMPLO 1 - Inicialización

• TOTAL es un “acumulador”: va a ir “acumulando” los valores de las diferentes calificaciones. La operación de acumulación tiene la forma TOTAL =TOTAL+CALIFICACION. Si no inicializamos TOTAL en 0, en la primera asignación se estará sumando un valor “espurio”.

• CONTADOR debe inicializarse en 1 para ir contando los ciclos que deben repetirse.

V

Page 21: Introducción A Las Estructuras De Seleccion En C

Uso WHILE – EJEMPLO 1 - Bucle

• La condición que regula el ciclo es que CONTADOR sea menor o igual a 10. Si esta condición es VERDADERA, se ejecutan las instrucciones del bucle; si esta condición es FALSA, se “sigue de largo” y se continúa con la siguiente instrucción.

• Dentro del bucle se pide al usuario que cargue la nota y con esta nota cargada se ACUMULA en TOTAL y se ACTUALIZA el contador (se le suma 1).

• Cuando CONTADOR sea 11, no se cumplirá la condición y se saldrá del bucle.

V

Page 22: Introducción A Las Estructuras De Seleccion En C

Uso WHILE – EJEMPLO 1 - Terminación

• Ya fuera del bucle, se realiza el cálculo de PROMEDIO. En TOTAL se encuentra la suma total de las 10 notas ingresadas por el usuario.

• Se imprime el resultado de la variable PROMEDIO.

V

Page 23: Introducción A Las Estructuras De Seleccion En C

USO DE WHILE – EJEMPLO 2 (BUCLE CONTROLADO POR CENTINELA)

Programa que permite sacar el promedio de un grupo de “X” alumnos a partir de notas individuales ingresadas por teclado.

El usuario controla la cantidad de notas.

I

D

Page 24: Introducción A Las Estructuras De Seleccion En C

DIAGRAMA DE FLUJO WHILE – EJEMPLO 2

INICIO

Declarar INT contador, total, calificacion; float promedio.

INICIALIZARcontador = 0; total = 0;

While (calificacion !=-1)

Ingresar nota en calificacion;

Guardar en promedio = total / 10;

Imprimir promedio;

Acumular calificacion en total;

Sumar 1 a contador;

FIN

verdadero

falso

VIngresar calificacion

if contador !=0Imprimir “No se ingresaron nº”;verdadero

falso

Page 25: Introducción A Las Estructuras De Seleccion En C

Uso WHILE – EJEMPLO 2 - Variables

• Para sacar promedio necesitamos: sumar todas las notas (esto se hará en TOTAL); permitir el ingreso de cada nota individual (esto se hará en la CALIFICACION); habilitar una variable para almacenar el promedio una vez que se hayan ingresado TODAS las notas (esto se hará en PROMEDIO).

• El tipo de datos de PROMEDIO será ahora FLOAT. Se contemplará los lugares decimales del promedio.

• CONTADOR contará la cantidad de notas que ingresa el usuario.

V

Page 26: Introducción A Las Estructuras De Seleccion En C

Uso WHILE – EJEMPLO 2 - Inicialización

• TOTAL es un “acumulador”: va a ir “acumulando” los valores de las diferentes calificaciones.

• CONTADOR debe inicializarse en 0 para ir contando la cantidad de notas que ingresa el usuario. Ya no regula el bucle (como en el ejemplo 1). Por esta razón debe comenzar en 0. La operación de asignación será contador = contador +1.

V

Page 27: Introducción A Las Estructuras De Seleccion En C

Uso WHILE – EJEMPLO 2 Carga inicial de calificación.

• A diferencia del ejemplo 1, antes de entrar al bucle se hace una carga de la variable calificacion.

• Esto es así porque es calificacion la que ahora regula el bucle.

V

Page 28: Introducción A Las Estructuras De Seleccion En C

Uso WHILE – EJEMPLO 2 - Bucle

• La condición que regula el bucle es que CALIFICACION no sea igual a -1. Si esto es verdadero, se ejecutarán las instrucciones del bucle; si esto es falso, se “pasará de largo” al bucle y se ejecutará la siguiente instrucción.

• Dentro del bucle se pide al usuario que cargue la nota y con esta nota cargada se ACUMULA en TOTAL y se ACTUALIZA el contador (se le suma 1 – necesario para luego sacar el promedio.

• Cuando el usuario ingrese -1, no se cumplirá la condición y se saldrá del bucle.

V

Page 29: Introducción A Las Estructuras De Seleccion En C

Uso WHILE – EJEMPLO 2 – Verificación de valor

• Como el usuario regula ahora la ejecución del bucle, cabe la posibilidad de que el usuario no haya ingresado calificaciones. En este caso el contador será igual a 0 y al efectuar la división para sacar el promedio, dará un error (división por 0).

• Se realiza la verificación dentro de una instrucción IF…ELSE. Si el contador es distinto de 0, se realiza el cálculo del promedio y se muestra en la pantalla. Si el contador es igual a 0, se avisa que no se ha ingresado ningun valor y se sale del programa.

V

Page 30: Introducción A Las Estructuras De Seleccion En C

Uso WHILE – EJEMPLO 2 – Operador de conversión

• Los promedios no siempre resultan en valores enteros. A veces contienen una parte fraccional. Este tipo de valores se los conocen como números de punto flotante y se representan mediante el tipo de dato FLOAT.

• El cálculo total/contador resultará en un entero debido a que tanto total como contador son variables enteras, por lo tanto la parte fraccional se trunca.

• Al agregar el operador de conversión de tipo FLOAT a la variable total se realiza una conversión EXPLÍCITA. De esta manera se transforma temporalmente la variable total y contador a un tipo FLOAT y así, se preserva la parte fraccional que será almacenada, junto con la parte entera, en la variable PROMEDIO (que es de tipo FLOAT).

V

Promedio = (float) total / contador;

Page 31: Introducción A Las Estructuras De Seleccion En C

Uso WHILE – EJEMPLO 2 – Especificador de conversión de Printf

• La “f” especifica que se imprimirá un valor de punto flotante.

• El .2 es la precisión con la cual se desplegará el valor (es decir, se desplegará con 2 dígitos a la derecha del punto decimal).

• Si se utiliza el especificador de conversión %f sin especificar precisión se utiliza la precisión predeterminada de 6 (como si se hubiera utilizado %.6f).

• Se puede regular la cantidad de espacios que se imprimirán antecediendo al punto el número de posiciones. P.ej: %10.6f imprimirá el número con 6 lugares después de la coma en un espacio de 10.

• El valor impreso se redondea al número indicado de posiciones decimales.

• Ejemplos:Printf( “%.2f\n”, 3.446); IMPRIME 3.45Printf( “%.1f\n”, 3.446); IMPRIME 3.4

V

Printf(“El promedio del grupo es: %.2f\n”);

Page 32: Introducción A Las Estructuras De Seleccion En C

INSTRUCCIÓN DO… WHILE

• Funciona parecido a while.

• La diferencia es que la evaluación de la expresión de control se realiza al final del bucle, después de haber ejecutado al menos una vez las sentencias entre llaves del bucle

I

Ejemplo: se mostrarán los valores de 1 al 10:

int contador =1;

do {

printf (“%d “, contador);

} while (++contador <=10);

s

Page 33: Introducción A Las Estructuras De Seleccion En C

OPERADORES DE: incremento, decremento y asignación.

C proporciona operadores unitarios de incremento (++) y de decremento (--).

Así, la expresión c=c+1 se transforma en c++. Y la expresión c=c-1 se transforma en c--.

++c: incrementa un valor en c y después de usa en la expresión en que reside.

c++: utiliza el valor actual de c en la expresión en que reside y luego incrementa en 1.

También pueden utilizarse los operadores de asignación +=, -=, *=, /=. De esta forma la expresión c=c+1 podría transformarse en c+=1 o la expresión a=a*7 podría transformarse en a*=7.

V

Page 34: Introducción A Las Estructuras De Seleccion En C

INSTRUCCIÓN FOR

• Maneja todos los detalles de la repetición controlada por contador.

I

Por ej: supongamos el ejemplo anterior (mostrar los valores de 1 a 10).

int contador;

for (contador=1; contador <=10; contador++) {

printf(“%d\n ”, contador);

}

diagrama

s

Page 35: Introducción A Las Estructuras De Seleccion En C

DIAGRAMA DE FLUJO DE INSTRUCCIÓN FOR

V

Page 36: Introducción A Las Estructuras De Seleccion En C

INSTRUCCIÓN FOR – Ejemplo 1

I

Revisaremos el primer ejemplo de While, utilizando el For:

Hacer un programa que permite sacar el promedio de un grupo de 10 alumnos a partir de notas individuales ingresadas por teclado.

s

Page 37: Introducción A Las Estructuras De Seleccion En C

Uso FOR – EJEMPLO 1 – DECLARACIÓN DE VARIABLES

• En C se puede declarar variables y al mismo tiempo inicializarlas.

• Veasé la variable total. Se la declara INTEGER y al mismo tiempo, se la inicializa en 0

• La variable contador no se inicializa aquí; se hará dentro de la instrucción del FOR.

V

Page 38: Introducción A Las Estructuras De Seleccion En C

Uso FOR – EJEMPLO 1 – Bucle FOR.

• “contador = 1”: se inicializa el contador en 1.

• “contador <=10”: condición que de ser verdadera, habilita la ejecución de las instrucciones dentro del FOR. De ser falso, “pasa de largo” a la siguiente instrucción.

• “contador++”: posincremento. Contador primero será evaluada en la condición y luego se incrementará en 1. P.ej: en la primera vuelta, contador es = 1, por lo tanto es menor a 10 (cumple condición). Sólo luego de verificar esto, contador se incrementa en 1 (vale 2) y será evaluado en el próximo ciclo.

V

Page 39: Introducción A Las Estructuras De Seleccion En C

Uso FOR – EJEMPLO 1- TERMINACIÓN

• Al incluir el operador de conversión float delante de total, se preserva la parte fraccional de la división.

• Al almacenar el resultado del cálculo en la variable promedio (declarada como del tipo FLOAT), se almacena tanto la parte entera como la fraccional.

• Al mostrar el resultado, se utiliza el especificador de conversión %.2f. Esto permite que el promedio se muestre con dos valores después del punto decimal.

V