UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS, TECNOLOGIA E INGENIERIA CONTENIDO DIDÁCTICO DEL CURSO: 301304 – INTRODUCCION A LA PROGRAMACION ESTRUCTURAS DE CONTROL La forma más razonable de encarar el desarrollo de un programa complicado es aplicar lo que se ha dado en llamar "Programación Top-Down". Esto implica que, luego de conocer cuál es la meta a alcanzar, se subdivide esta en otras varias tareas concurrentes, por ejemplo: Leer un teclado, procesar datos, mostrar los resultados. Luego a estas se las vuelve a dividir en otras menores: Y así se continúa hasta llegar a tener un gran conjunto de pequeñas y simples tareas, del tipo de "leer una tecla" ó "imprimir un caracter". Luego sólo resta abocarse a resolver cada una de ellas por separado. De esta forma el programador, sólo se las tendrá que ver con diminutas piezas de programa, de pocas líneas, cuya escritura y corrección posterior es una tarea simple. Tal es el criterio con que está estructurado el lenguaje C++, donde una de sus herramientas fundamentales son las funciones. Todo compilador comercial trae una gran cantidad de Librerías de toda índole, matemáticas, de entrada - salida, de manejo de textos, de manejo de gráficos, etc, que solucionan la mayor parte de los problemas básicos de programación. Ahora bien, para que esos bloques de código cumplan tareas específicas, es indispensable incluir sentencias de control y repetitivas que apoyan el diseño estructural de un programa y que se debe utilizar en atención a lo que se requiere lograr en la tarea. Sentencias de control selectivas if else, switch Las sentencias condicionales permiten elegir entre dos o más opciones. if … else: Se utiliza para elegir entre dos opciones. Sintaxis: if (condicion) sentencia si la condición es verdadera else sentencia si la condición es falsa. En C, si se utiliza más de una sentencia es necesario utilizar llaves. Ejs: if (a= = b) cout<<“iguales”; else cout<<“diferentes”; if (a= = b) { c++; x = z; } U1 Página 18 UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS, TECNOLOGIA E INGENIERIA CONTENIDO DIDÁCTICO DEL CURSO: 301304 – INTRODUCCION A LA PROGRAMACION else { v--; y = t; } Los if pueden anidarse para evaluar varias condiciones. Ej. if (condicion1) { sentencia 1; sentencia 2; if (condición 2) { if (condición 3) { sentencia 3; sentencia 4; } else { sentencia 5; sentencia 6; } } } else { sentencia 7; sentencia 8; } Ejemplo: Problema: Analizar 3 números digitados por el usuario, indicando mayor, menor e iguales. Análisis: Datos de entrada: 3 números que se almacenarán en las variables A, B y C. Datos de proceso: comparar los números Datos de saluida: mensaje de número mayor, número menor y números iguales. Diseño de solución: Programa: Comparación de 3 números INICIO LEER A, B, C SI (A = B) and (B = C) entonces ESCRIBIR “A, B y C son iguales” SI NO U1 Página 19 UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS, TECNOLOGIA E INGENIERIA CONTENIDO DIDÁCTICO DEL CURSO: 301304 – INTRODUCCION A LA PROGRAMACION SI (A=B) and (A>C) entonces ESCRIBIR “A y B son iguales; A y B son mayores que C” SI (A=B) and (A<C) entonces ESCRIBIR “A y B son iguales; A y B son menores que C” SI (A=C) and (A>B) entonces ESCRIBIR “A y C son iguales; A y C son mayores que B” SI (A=C) and (A<B) entonces ESCRIBIR “A y C son iguales; A y C son menores que B” SI (B=C) and (B>A) entonces ESCRIBIR “B y C son iguales; B y C son mayores que A” SI (B=C) and (B<A) entonces ESCRIBIR “B y C son iguales; B y C son menores que A” SI (A>B) and (B>C) entonces ESCRIBIR “A es el mayor y C es el menor” SI (A>C) and (C>B) entonces ESCRIBIR “A es el mayor y B es el menor” SI (B>A) and (A>C) entonces ESCRIBIR “B es el mayor y C es el menor” SI (B>C) and (C>A) entonces ESCRIBIR “B es el mayor y A es el menor” SI (C>A) and (A>B) entonces ESCRIBIR “C es el mayor y B es el menor” SI (C>B) and (B>A) entonces ESCRIBIR “C es el mayor y A es el menor” FIN SI FIN Prueba de escritorio Ejecución 1 2 3 4 5 A 5 1 3 15 -5 B 5 2 2 15 -7 C 5 3 1 3 -7 Salida A, B y C son iguales C es el mayor y A es el menor A es el mayor y C es el menor A y B son iguales; A y B son mayores que C B y C son iguales; B y C son menores que A Codificación en lenguaje C++ (IDE FALCON) /*Autor: Mirian Benavides - UNAD Programa: Comparación de 3 números */ //DIRECTIVAS DEL PRE-PROCESADOR #include <iostream> //Biblioteca estándar de entrada y salida, para utilizar cout y cin U1 Página 20 UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS, TECNOLOGIA E INGENIERIA CONTENIDO DIDÁCTICO DEL CURSO: 301304 – INTRODUCCION A LA PROGRAMACION #include <stdlib.h> /*Biblioteca para utilizar system("cls") limpieza de pantalla y system("pause") que detiene la ejecución del programa hasta que el usuario digite una tecla */ using namespace std; /*Indica al compilador que utilizará el espacio de nombres estandar para no incluirlos cada vez que se utilice cout y cin */ int main() //Función principal { int A, B, C; cout<<"COMPARACION DE 3 NUMEROS"<<endl<<endl; cout<<"Digite el valor del primer numero : "; cin>>A; cout<<"Digite el valor del segundo numero : "; cin>>B; cout<<"Digite el valor del tercer numero : "; cin>>C; if((A==B) && (B==C)) cout<<endl<<endl<<"A, B y C son iguales"; else { if ((A==B) and (A>C)) cout<<endl<<endl<<"A y B son iguales; A y B son mayores que C"; if ((A==B) and (A<C)) cout<<endl<<endl<<"A y B son iguales; A y B son menores que C"; if ((A==C) and (A>B)) cout<<endl<<endl<<"A y C son iguales; A y C son mayores que B"; if ((A==C) and (A<B)) cout<<endl<<endl<<"A y C son iguales; A y C son menores que B"; if ((B==C) and (B>A)) cout<<endl<<endl<<"B y C son iguales; B y C son mayores que A"; if ((B==C) and (B<A)) cout<<endl<<endl<<"B y C son iguales; B y C son menores que A"; if ((A>B) and (B>C)) cout<<endl<<endl<<"A es el mayor y C es el menor"; if ((A>C) and (C>B)) cout<<endl<<endl<<"A es el mayor y B es el menor"; if ((B>A) and (A>C)) cout<<endl<<endl<<"B es el mayor y C es el menor"; if ((B>C) and (C>A)) cout<<endl<<endl<<"B es el mayor y A es el menor"; if ((C>A) and (A>B)) cout<<endl<<endl<<"C es el mayor y B es el menor"; if ((C>B) and (B>A)) cout<<endl<<endl<<"C es el mayor y A es el menor"; } cout<<endl<<endl; system("pause"); return 0; } U1 Página 21 UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS, TECNOLOGIA E INGENIERIA CONTENIDO DIDÁCTICO DEL CURSO: 301304 – INTRODUCCION A LA PROGRAMACION switch: es una sentencia de bifurcación múltiple, que permite comparar una variable sucesivamente frente a una lista de constantes enteras o de carácter. Al encontrar una coincidencia se ejecuta el bloque de sentencias respectivas. Sintaxis: switch(variable) { case constante1: { bloque de sentencias; break; } case constante2: { bloque de sentencias; break; } case constante3: { bloque de sentencias; break; } default: { bloque de sentencias; } } La opción default se ejecuta cuando no hay coincidencias y es opcional. Se diferencia de if en que sólo permite comprobar por igualdad. Ejemplo: Problema: identifificar si un caracter digitado por el usuario es vocal o no. Si es vocal, a cuál corresponde. Análisis: Datos de entrada: un carácter Datos de proceso: verificar que vocal es o que no es vocal Datos de salida: mensaje indicando que vocal es o que no es vocal Diseño de solución: Programa: Evaluación de un carácter INICIO LEER caracter SEGÚN SEA caracter HACER caracter = ‘A’ ESCRIBIR “Vocal A” caracter = ‘a’ ESCRIBIR “Vocal a” U1 Página 22 UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS, TECNOLOGIA E INGENIERIA CONTENIDO DIDÁCTICO DEL CURSO: 301304 – INTRODUCCION A LA PROGRAMACION caracter = ‘E’ ESCRIBIR “Vocal E” caracter = ‘e’ ESCRIBIR “Vocal e” caracter = ‘I’ ESCRIBIR “Vocal I” caracter = ‘i’ ESCRIBIR “Vocal i” caracter = ‘O’ ESCRIBIR “Vocal O” caracter = ‘o’ ESCRIBIR “Vocal o” caracter = ‘U’ ESCRIBIR “Vocal U” caracter = ‘u’ ESCRIBIR “Vocal u” Si no ESCRIBIR No es vocal FIN SEGÚN SEA FIN Prueba de escritorio Ejecución 1 2 3 4 caracter i A 6 E Salida Vocal i Vocal A No es vocal Vocal e Codificación en lenguaje C++ (IDE FALCON) /*Autor: Mirian Benavides - UNAD Programa: Evaluación de un caracter */ //DIRECTIVAS DEL PRE-PROCESADOR #include <iostream> //Biblioteca estándar de entrada y salida, para utilizar cout y cin #include <stdlib.h> /*Biblioteca para utilizar system("cls") limpieza de pantalla y system("pause") que detiene la ejecución del programa hasta que el usuario digite una tecla */ using namespace std; /*Indica al compilador que utilizará el espacio de nombres estandar para no incluirlos cada vez que se utilice cout y cin */ int main() //Función principal { char caracter; cout<<"EVALUACION DE UN CARACTER"<<endl<<endl; cout<<"Digite un caracter : "; U1 Página 23 UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS, TECNOLOGIA E INGENIERIA CONTENIDO DIDÁCTICO DEL CURSO: 301304 – INTRODUCCION A LA PROGRAMACION cin>>caracter; switch (caracter) { case 'A': cout<<endl<<endl<<"Vocal A"; break; case 'a': cout<<endl<<endl<<"Vocal a"; break; case 'E': cout<<endl<<endl<<"Vocal E"; break; case 'e': cout<<endl<<endl<<"Vocal e"; break; case 'I': cout<<endl<<endl<<"Vocal I"; break; case 'i': cout<<endl<<endl<<"Vocal i"; break; case 'O': cout<<endl<<endl<<"Vocal O"; break; case 'o': cout<<endl<<endl<<"Vocal o"; break; case 'U': cout<<endl<<endl<<"Vocal U"; break; case 'u': cout<<endl<<endl<<"Vocal u"; break; default: cout<<endl<<endl<<"No es vocal"; break; } cout<<endl<<endl; system("pause"); return 0; } Sentencias de control repetitivas for, while, do while Las sentencias de control repetitivas, conocidas también como ciclos, permiten repetir un conjunto de instrucciones, mientras se cumpla una condición. Utiliza una variable control y puede interrumpirse mediante la instrucción break. U1 for (inicialización ; condición ; incremento) { bloque de sentencias; } Ej. Imprimir los números pares comprendidos entre 0 y 20. int i, residuo; for (i=1 ; i<=20; i++) { residuo = i % 2; if ( !residuo) cout<<“\n “<< i; } Página 24 UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS, TECNOLOGIA E INGENIERIA CONTENIDO DIDÁCTICO DEL CURSO: 301304 – INTRODUCCION A LA PROGRAMACION Si únicamente existe una sentencia que ejecutar la sintaxis es: int i; for(i=1; i<=10; i++) cout<< i; La siguiente sintaxis for( ; ; ) crea un ciclo infinito, a menos que exista una condición interna que obligue a salir del ciclo. Ej. int i; char r; for ( ; ; ) { cout<<“Desea continuar (s/n) : ”; cin>>r; if ( r != ‘s’) break; } Sentencia break: se utiliza para terminar la ejecución de un ciclo. Ejemplo: int i; for(i=0; i<=10; i++) { cout<< “\n ” <<i; if (i= =5) break; } // únicamente imprime los números del 0 al 5. Ejemplo: Problema: Imprimir la tabla de multiplicar que indique el usuario Análisis: Datos de entrada: número de la tabla de multiplicar a imprimir y almacenarlo en la variable tabla. Datos de proceso: resultado = tabla * 1 (se multiplica por los valores comprendidos entre 1 y 10) Datos de salida: resultado (de todas las operaciones) Diseño: Programa: tabla de multiplicar INICIO LEER tabla PARA n = 1 HASTA 10 HACER resultado = tabla * n ESCRIBIR tabla “x” n “=” resultado FIN PARA FIN Prueba de escritorio U1 Página 25 UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS, TECNOLOGIA E INGENIERIA CONTENIDO DIDÁCTICO DEL CURSO: 301304 – INTRODUCCION A LA PROGRAMACION Iteración 1 2 3 4 5 6 7 8 9 10 Tabla 5 Resultado 5 10 15 20 25 3 35 40 45 50 Salida 5x1=5 5 x 2 = 10 5 x 2 = 10 5 x 2 = 10 5 x 2 = 10 5 x 2 = 10 5 x 2 = 10 5 x 2 = 10 5 x 2 = 10 5 x 2 = 10 Codificación en lenguaje C++ (IDE FALCON) /*Autor: Mirian Benavides - UNAD Programa: Tabla de multiplicar */ //DIRECTIVAS DEL PRE-PROCESADOR #include <iostream> //Biblioteca estándar de entrada y salida, para utilizar cout y cin #include <stdlib.h> /*Biblioteca para utilizar system("cls") limpieza de pantalla y system("pause") que detiene la ejecución del programa hasta que el usuario digite una tecla */ using namespace std; /*Indica al compilador que utilizará el espacio de nombres estandar para no incluirlos cada vez que se utilice cout y cin */ int main() //Función principal { int n, tabla, resultado; cout<<"TABLA DE MULTIPLICAR"<<endl<<endl; cout<<"Digite el numero de tabla que desea imprimir : "; cin>>tabla; cout<<endl; for(n=1;n<=10;n++) { resultado = tabla*n; cout<<tabla <<" x " <<n <<" = " <<resultado; cout<<endl; } cout<<endl<<endl; system("pause"); return 0; } U1 Ciclo while: ejecuta un bloque de sentencias mientras la condición que evalúa es verdadera. Las condiciones que debe cumplir son: Antes del ciclo la variable que se evalúa debe tener un valor que haga la condición verdadera. Página 26 UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS, TECNOLOGIA E INGENIERIA CONTENIDO DIDÁCTICO DEL CURSO: 301304 – INTRODUCCION A LA PROGRAMACION Dentro del ciclo la variable control debe cambiar para que en algún momento la condición sea falsa y pueda terminar el ciclo. Ejemplo: Problema: verificar si el valor de una nota digitada por el usuario, se encuentra dentro del rango 0 y 5. Análisis: Datos de entrada: nota Datos de proceso: comparar si nota es >= 0 y es <= 5 Datos de salida: mensaje nota correcta o nota incorrecta Diseño de solución: INICIO LEER nota MIENTRAS nota < 0 OR nota >5 HACER ESCRIBIR “Nota incorrecta, digite nueva nota” LEER nota FIN MIENTRAS ESCRIBIR “Nota correcta” FIN Prueba de escritorio Ejecución 1 2 nota 3 6 -2 4.5 Iteración 1 1 2 3 Salida Nota correcta Nota incorrecta, digite nueva nota Nota incorrecta, digite nueva nota Nota correcta Codificación en lenguaje C++ (IDE FALCON) /*Autor: Mirian Benavides - UNAD Programa: Validación nota */ //DIRECTIVAS DEL PRE-PROCESADOR #include <iostream> //Biblioteca estándar de entrada y salida, para utilizar cout y cin #include <stdlib.h> /*Biblioteca para utilizar system("cls") limpieza de pantalla y system("pause") que detiene la ejecución del programa hasta que el usuario digite una tecla */ U1 Página 27 UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS, TECNOLOGIA E INGENIERIA CONTENIDO DIDÁCTICO DEL CURSO: 301304 – INTRODUCCION A LA PROGRAMACION using namespace std; /*Indica al compilador que utilizará el espacio de nombres estandar para no incluirlos cada vez que se utilice cout y cin */ int main() //Función principal { float nota; cout<<"VALIDACION DE NOTA"<<endl<<endl; cout<<"Digite nota : "; cin>>nota; cout<<endl; while((nota<0) or (nota>5)) { cout<<endl<<endl<<"\tNota incorrecta, digite nueva nota : "; cin>>nota; } cout<<endl<<endl<<"Nota correcta"; cout<<endl<<endl; system("pause"); return 0; } Ciclo do ….. while: ejecuta un bloque de sentencias y al final verifica si la condición es verdadera. La diferencia fundamental entre los ciclos while y do while, es que el primero evalúa la condición al inicio del ciclo y el segundo la evalúa al final. Esto hace que el bloque de sentencias en do while, se ejecuten por lo menos una vez. Sintaxis: do { bloque de sentencias; } while (condición) ; Ejemplo: Problema: diseñar un menú que facilite el acceso a 4 opciones, incluida la posibilidad de salir del programa. Análisis: Datos de entrada: opción elegida por el usuario Datos de proceso: comparación del dato digitado por el usuario con las opciones que tiene el menú. Datos de salida: mensaje de la opción elegida Diseño de solución: INICIO REPETIR ESCRIBIR “Menu” ESCRIBIR “1. Llenar datos” U1 Página 28 UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS, TECNOLOGIA E INGENIERIA CONTENIDO DIDÁCTICO DEL CURSO: 301304 – INTRODUCCION A LA PROGRAMACION ESCRIBIR “2. Consultar datos” ESCRIBIR “3. Eliminar datos” ESCRIBIR “4. Salir” LEER opcion SEGÚN SEA opción opcion = 1 ESCRIBIR “Llenar datos” opcion = 2 ESCRIBIR “Consultar datos” opcion = 3 ESCRIBIR “Eliminar datos” opcion = 4 ESCRIBIR “Programa finalizado” si no ESCRIBIR “Opción incorrecta” FIN SEGÚN SEA HASTA QUE opción ≠ 4 FIN Prueba de escritorio Ejecución 1 opcion 1 3 7 4 Iteración 1 2 3 4 Salida Llenar datos Eliminar datos Opción incorrecta Programa finalizado Codificación en lenguaje C++ (IDE FALCON) /*Autor: Mirian Benavides - UNAD Programa: Menú */ //DIRECTIVAS DEL PRE-PROCESADOR #include <iostream> //Biblioteca estándar de entrada y salida, para utilizar cout y cin #include <stdlib.h> /*Biblioteca para utilizar system("cls") limpieza de pantalla y system("pause") que detiene la ejecución del programa hasta que el usuario digite una tecla */ using namespace std; /*Indica al compilador que utilizará el espacio de nombres estandar para no incluirlos cada vez que se utilice cout y cin */ int main() //Función principal { int op; do { system("cls"); cout<<"MENU" <<endl <<endl; cout<<"1. Llenar datos " <<endl; U1 Página 29 UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA – UNAD ESCUELA DE CIENCIAS BASICAS, TECNOLOGIA E INGENIERIA CONTENIDO DIDÁCTICO DEL CURSO: 301304 – INTRODUCCION A LA PROGRAMACION cout<<"2. Consultar datos " <<endl; cout<<"3. Eliminar datos " <<endl; cout<<"4. Salir "; cout<<endl <<endl; cout<< "Elija opcion : "; cin>> op; switch(op) { case 1: cout<<endl <<"Llenar datos" <<endl; break; case 2: cout<<endl << "Consultar datos" <<endl; break; case 3: cout<<endl << "Eliminar datos" <<endl; break; case 4: cout<<endl << "Programa finalizado" <<endl; break; default: cout<<endl << "Opcion incorrecta" <<endl; break; } system("pause"); } while(op!=4); cout<<endl<<endl; system("pause"); return 0; } Ampliar información consultando: Deintel, Harvey M., Deintel, Paul J. Cómo programar en C++. Pags. 120 a 121. Disponible en http://books.google.es/books?id=CBhWani323wC&printsec=frontcover&dq=c%2B %2B&hl=es&sa=X&ei=v1d7VJbqEoekNr2lgqAE&ved=0CEwQ6AEwBg#v=onepag e&q=c%2B%2B&f=false Hernández Orallo Enrique, Hernández Orallo José & Juan Lizandra Ma Carmen. C++ estándar. Pags. 44 a 51. Disponible en http://books.google.es/books?id=sjxQIhrMCegC&printsec=frontcover&dq=c%2B% 2B&hl=es&sa=X&ei=YIB7VLm0MsqvggTx1IKwBQ&ved=0CGMQ6AEwCQ#v=one page&q=c%2B%2B&f=false U1 Página 30