PROGRAMACIÓN DE INGENIERÍA S-06: Estructura Selectiva Múltiple Ing. Jorge A. Martel Torres Ingenierías Contenido • Estructuras de Programación – Secuencial, Decisión, Repetitivas – Anidaciones • Estructura de un Programa/Algoritmo – Entorno, Edición, grabación, otros • Elementos y estructura de un programa en C/C++ – Tipos de datos. – Operadores, Tipos • Instrucciones de I/O – Sentencias: ;, { }, //, /* */ – Sentencias cin >>, cout <<, endl – Funciones: printf(), scanf(), clrscr(), gotoxy(), getch() UNTELS JORGE A. MARTEL TORRES 2 Estructuras de Programación INICIO DIAGRAMA DE FLUJO SI SIMPLE PROCESO SI DOBLE V F MIENTRAS F V V PROCESO SALIDA POR PANTALLA F PROCESO PROCESO PROCESO HACER MIENTRAS FIN SELECTOR DE CASOS V PROCESO INICIO F INGRESO POR EL TECLADO 1 2 3 OTRO DESDE PARA PROCESO F ACCIONES S1 ACCIONES S2 ACCIONES S3 SALIDA POR PANTALLA UNTELS FIN VI, VF, INCR ACCIONES OTROS V JORGE A. MARTEL TORRES PROCESO 4 DIAGRAMA NASSI-SCHNEIDERMAN (D-NS) CONDICION Nombre del Algoritmo; Inicio Acción 1; Acción 2; Acción 1; ... Acción n; Fin. MIENTRAS CONDICION SI Acciones que se ejecutaran si la CONDICION es VERDAD Acciones por SI o Verdad CONDICION SI NO Acciones por SI o Verdad Acciones que se ejecutaran mientras QUE LACONDICION es VERDAD Acciones por No o Falsedad MIENTRAS CONDICION variable 1 2 3 OTRO PARA VI, VF, INCREMENTO ACCIONES ACCIONES ACCIONES ACCIONES ACCIONES S1 S2 S3 OTROS FIN_PARA UNTELS JORGE A. MARTEL TORRES 5 PSEUDOCODIGO SELECCION DOBLE SECUENCIAL Nombre del Algoritmo; Inicio Acción Acción Acción ... Acción Fin. V 1; 2; 1; n; F Si ( Condición ) Acciones Si la condición es verdad Si_No Acciones Si la condición es Falso Fin_Si MIENTRAS V HACER V SELECCION SIMPLE SELECTOR DE MULTIPLE Si ( Condición ) Seleccionar ( Condición ) CASO n1: Acciones CASO n2: Acciones CASO n3: Acciones Fin_Seleccionar Acciones Solo Si V la condición es Verdad Fin_Si UNTELS JORGE A. MARTEL TORRES Mientras ( Condición ) Acciones Solo Si la condición es Verdad Fin_Mientras Hacer Acciones Solo Si la condición es Verdad Mientras ( Condición ) PARA /DESDE/ HASTA V Para ( Vari; VIni; Vfin; Incre ) Acciones Que Solo Si la Vari >= Vfin Fin ( Condición ) 6 ? Estructuras Selectivas !!Alguien tiene que ser!! ? V ? F a V b ? c Estructuras Selectivas de Decisión Múltiple SELECTOR DE CASOS ? Lunes ( variable ) 1 2 3 OTRO Martes ACCIONES ACCIONES ACCIONES ACCIONES I II III IV Miercoles C=2 SELECTOR DE CASOS SELECTOR DE CASOS (C) Seleccionar ( variable ) CASO cons1 : Instrucciones I ; cons1 cons2 cons3 CASO cons2 : DeLoContra Instrucciones II ; CASO cons3 : ACCIONES I ACCIONES II ACCIONES III ACCIONES IV Instrucciones III ; NingunoAnterior : Instrucciones IV ; Fin_Seleccionar UNTELS JORGE A. MARTEL TORRES romper 8 Estructuras Selectivas de Decisión Múltiple Pseudocodigo ( variable ) con1 con2 con3 OTRO romper Seleccionar ( variable ) CASO cons1 : Instrucciones I ; CASO cons2 : ACCIONES ACCIONES ACCIONES ACCIONES “program” “fisica” “calculo” “FACE” Instrucciones II ; CASO cons3 : Instrucciones III ; NingunoAnterior : Instrucciones IV ; Fin_Seleccionar (C) break cons1 cons2 cons3 DeLoContra c/ c++ switch ( variable ) { case cons1 : Instrucciones I ; case cons2 : ACCIONES I ACCIONES II ACCIONES III Instrucciones II ; ACCIONES IV case cons3 : Instrucciones III ; default : Instrucciones IV ; UNTELS JORGE A. MARTEL TORRES } 9 Lunes Representar como Dia Programación Ejemplo Letra Numero Imprime Curso Lunes ´L´ 1 "programacion" Martes ´M´ 2 "fisica" Miercoles ´C´ 3 "calculo" char dia "feriado" switch ( dia ) { case ‘L’ : cout << “Programación\n” ; break ; case ‘M’ : cout << “Física\n”; break; case ‘C’ : cout << “Cálculo\n” ; break; default : cout << “Face - tota\n” ; } otros dia = ‘L’; ‘L’ “program” ‘M’ “fisica” ‘C’ “calculo” DeLoContra “face” cout UNTELS “que semana” Martes física Miercoles Se ingresa un identificador de día(letra), mostrar que curso me toca por dia seleccionado. ( dia ) Dia JORGE A. MARTEL TORRES Cálculo dia ; = ‘L’ ; << “que semana\n” ; 10 Lunes Representar como Dia Letra Numero Imprime Curso Lunes ´L´ 1 "programacion" Martes ´M´ 2 "fisica" Miercoles ´C´ 3 "calculo" otros Ejemplo int Dn Se ingresa un identificador de día(numero), mostrar que curso me toca por dia seleccionado. ( Dn ) 1 2 “program” “fisica” 3 “calculo” Dia “que semana” física DeLoContra “face” Cálculo Dn ; = 2; switch ( Dn ) { case 1 : cout << “Programación\n” ; break ; case 2 : cout << “Física\n”; break; case 3 : cout << “Cálculo\n” ; break; default : cout << “Face - tota\n” ; } cout UNTELS Martes Miercoles "feriado" Dn = 2; Programación JORGE A. MARTEL TORRES << “que semana\n” ; 11 Estructura de un Programa en C++ • Se ingresa desde el teclado un identificador (opcion) de carrera para mostrar el nombre de la carrera por la pantalla Representar como carrera Letra Numero Imprime administracion ´A´ 1 “administracion" ambiental ´B´ 2 “ambiental" electronica ´E´ 3 “electronica" “no hay" otros UNTELS char chrCarrera; main() { cout << "Ingresar un Caracter : “ ; cin >> chrCarrera; switch ( chrCarrera ) { case ‘A’ : cout << “administracion“; break; case ‘B’: cout << “ambiental“; break; case ‘E’ : cout << “Electronica“; break ; default : cout << “No hay“ ; } } JORGE A. MARTEL TORRES 12 Estructura de un Programa en C++ using namespace std ; int intN ; main() { cout << "Ingresar Número Entero: “ ; cin >> intN; switch ( intN ) { case 1 : cout << “uno“ ; break ; case 2 : cout << “dos“ ; break; case 3 : cout << “tres“ ; break; default : cout << “no hay“ ; } } UNTELS • Se ingresa desde el teclado un identificador (opcion) numero entero, mostrar el numero en letras por la pantalla Representar como Numero Letra Numero Imprime Curso 1 1 “uno" 2 2 “dos" 3 3 “tres" otros JORGE A. MARTEL TORRES “no hay" 13 Selectiva múltiple con if - else anidados if ( expresionLogica1 ) { Instruccioenes1 ; } else if ( expresionLogica2 ) { Instruccioenes2 ; } else if ( expresionLogica3 ) { Instruccioenes3 ; } else if ( expresionLogica4 ) { Instruccioenes4 ; } else { Instruccioenes5 ; } UNTELS Para Trabajar con rango (intervalos) de datos. Voltios (V) mensaje < 0; 1.2 ] “apagado” < 1.2; 2.5 ] “amarillo” < 2.5; 5.5 ] “rojo” < 5.5, 12.0 ] “verde” < 12 ; … > “peligro?” JORGE A. MARTEL TORRES v = 2.7 ; if ( ( v > 0 ) && ( v <= 1.2 ) ) { cout << “apagado” << endl; } else if ( ( v > 1.2 ) && ( v <= 2.5 ) ) { cout << “amarillo” << endl ; } else if ( ( v > 2.5 ) && ( v <= 5.5 ) ) { cout << “rojo” << endl ; } else if ( ( v > 5.5 ) && ( v <= 12 ) ) { cout << “verde” << endl ; } else { cout << “peligroso” << endl ; } 14 Selectiva múltiple con if - else anidados cin >> v ; Se ingresa un valor que representa los estados en voltios de un semáforo. Según el cuadro adjunto, mostrar un mensaje en función a los valores ingresados a un monitor de estados. UNTELS Voltios (V) mensaje < 0; 1.2 ] “apagado” < 1.2; 2.5 ] “amarillo” < 2.5; 5.5 ] “rojo” < 5.5, 12.0 ] “verde” < 12 ; … > “peligro?” JORGE A. MARTEL TORRES if ( ( v > 0 ) && ( v <= 1.2 ) ) { cout << “apagado” << endl; } else if ( ( v > 1.2 ) && ( v <= 2.5 ) ) { cout << “amarillo” << endl ; } else if ( ( v > 2.5 ) && ( v <= 5.5 ) ) { cout << “rojo” << endl ; } else if ( ( v > 5.5 ) && ( v <= 12 ) ) { cout << “verde” << endl ; } else { cout << “peligroso” << endl ; } 15 Contadores OP += -= = *= /= %= OP ++ -- UNTELS Operación suma más asignacion resta más asignacion Asignacion simple multiplicacion más asignacion division más asignacion modulo más asignacion Si a ++; ++ b; c --; -- d; Ejem plo Equivalente c += 7; c = c + 7; d -= 4; d = d - 4; a = b; e *= 5; e = e * 5 f /= 3; f = f / 3 g %= 9; g = g % 3 Operación Utiliza el valor actual, después suma 1 suma 1, después utiliza el valor actual Utiliza el valor actual, después quita 1 quita 1, después utiliza el valor actual JORGE A. MARTEL TORRES 16