UNIVERSIDAD CENTRAL FACULTAD DE CIENCIAS FISICAS Y MATEMATICAS Programación: de Pseudocódigo a C++ 1. Introducción En esta sesión haremos un breve recuento de los básicos de la programación en C++ y veremos como ”traducir”nuestros programas escritos en pseudocódigo. Usaremos el compilador Dev-C++. 2. Hola, Mundo! Para comenzar, crea una carpeta con el nombre ”Proyectos C++”dentro de ”Mis Documentos”. Allı́ guardarás los distintos programas que vayas desarrollando. Ok, Recordemos ahora el tı́pico primer programa en C++ /∗ programa Hola Mundo∗/ #include <i o s t r e a m > 3 using namespace s t d ; int main ( ) { 5 cout<<” Hola , Mundo ! \ n” ; } 1 1 En la ventana de Dev-C++ con File->New->SourceFile generas un archivo donde desarrollar el programa, copia el programa tal como está escrito arriba y guárdalo con el nombre HolaMundo. Observa que Dev-C++ selecciona automáticamente la extensión .cpp para el programa, esto significa que el programa HolaMundo será tratado como un programa en C++. Si desearas escribir un programa en C entonces usarı́as la extensión .c . A continuación debes compilar el programa y ejecutarlo. Asegúrate de que el proceso de compilación no arroje errores. Lo más probable es que al ejecutar el programa no veas absolutamente nada, excepto tal vez una ventana de comandos que aparece y desaparece. Esto sucede porque la ejecución termina demasiado rápido. ¿Cómo verificamos que el programa se ejecutó correctamente?. Abre desde el menú de inicio de Windows una ventana con el sı́mbolo de sistema, luego ve hasta la carpeta en que guardaste el programa y ejecútalo escribiendo holamundo.exe. Tal vez no quieras hacer esto todo el tiempo. Lo usual es agregar la lı́nea cin.get(); al final del programa. Esto evita que la ventana se cierre hasta que apretemos la tecla <Enter>. Veamos: /∗ programa Hola Mundo∗/ 2 #include <i o s t r e a m > using namespace s t d ; 4 int main ( ) { cout<<” Hola , Mundo ! \ n” ; 6 cin . get () ; } Ejecuta este programa y analicemos lı́nea a lı́nea: Los comentarios en C++ comienzan con /* y terminan obligatoriamente con */. Al inicio del programa debemos incluir aquellas librerı́as que vamos a usar con la instrucción #include. En nuestro caso incluimos la librerı́a estándar iostream que nos permitirá usar las instrucciones cout y cin para LEER y ESCRIBIR de datos. 2 El uso de los namespaces (espacios de nombres) en C++ y en otros lenguajes de programación responde a una necesidad técnica para ganar claridad y evitar conflictos, especialmente en proyectos de gran tamaño. Busca “Espacios de nombres” en Wikipedia para leer al respecto. Todo programa en C++ debe contener una función main. El código ejecutado será aquel dentro de esta función. Observa el uso de “;” al final de cada instrucción. Esto es absolutamente necesario. 2.1. Básicos de Entrada-Salida Ya vimos que la instrucción cout imprime cosas en pantalla. Para poder leer datos (lo equivalente a la instrucción Leer en pseudocódigo) usaremos la instrucción cin. Un ejemplo: /∗ programa D u p l i c a r ∗/ #include <i o s t r e a m > 3 using namespace s t d ; int main ( ) { 5 int N cout<<”Dime un numero \n” ; 7 c i n >>N; cout<<” e l d o b l e de tu numero e s ”<<N<<”\n” ; 9 cin . ignore () ; cin . get () ; 11 } 1 3. Operaciones Matemáticas, IF-ELSE Para poder usar operaciones matemáticas complejas necesitamos incluir la librerı́a <math.h>. Por ejemplo: #include <i o s t r e a m > #include <math . h> 3 using namespace s t d ; int main ( ) { 5 cout<<” s e n ( p i / 3 )=”<<s i n ( 3 . 1 4 / 3 )<<” \n” ; 1 3 cout<<” r a i c e s : s q r t ( 2 )=”<<s q r t ( 2 )<<” \n” ; cout<<” c o n s t a n t e s : p i=”<<M PI<<” \n” ; cin . get () ; 7 9 } Ejercicios: Escribe un programa que multiplique dos números. Escribe un programa que calcule el área de un rectángulo. Escribe un programa que calcule el área de un triángulo. La estructura de un ciclo IF-ELSE (SI-Entonces) es la siguiente: 1 3 i f ( condicion ) { instrucciones ; } 4. Un Ejemplo: Hagamos en C++ el programa que calcula el área y el perı́metro de un triángulo a partir de la longitud de sus lados. Necesitaremos decidir si los valores ingresados para los lados pueden corresponder a un triángulo, por ejemplo, ningún triángulo tiene lados que midan 1, 1 y 3. Esto es la desigualdad triangular: la suma de los tamaños de dos lados de un triángulo es mayor que el tercer lado. Ejercicio: Escribe un programa que reciba tres números y decida si los números pueden corresponder a los lados de un triángulo. Veamos ahora nuestro ejemplo: #include <i o s t r e a m > #include <math . h> // Para poder tomar r a i c e s c u a d r a d a s 3 using namespace s t d ; bool e s t r i a n g u l o ( f l o a t a , f l o a t b , f l o a t c ) ; 1 5 7 9 int main ( ) { f l o a t L1 , L2 , L3 , area , p e r i m e t r o , s e m i p e r i m e t r o ; /∗ Obtenemos l o s l a d o s ∗/ 4 cout<<” p r i m e r l a d o : ” ; c i n >> L1 ; cout<<” segundo l a d o : ” ; c i n >> L2 ; cout<<” t e r c e r l a d o : ” ; c i n >> L3 ; c o u t << ” l a d o s : ”<<L1<<” , ”<<L2<<” , ”<<L3<< e n d l ; 11 13 15 17 /∗ v a l o r e s deben s a t i s f a c e r l a d e s i g u a l d a d t r i a n g u l a r ∗/ i f ( e s t r i a n g u l o ( L1 , L2 , L3 ) ) { cout<<” l o s l a d o s forman un t r i a n g u l o ”<<e n d l ; } else { c o u t << ” v a l o r e s i n c o r r e c t o s ” ; cin . ignore () ; cin . get () ; return 1 ; } 19 21 23 25 27 /∗ Calculamos p e r i m e t r o y area ∗/ p e r i m e t r o = L1 + L2 + L3 ; semiperimetro = perimetro /2; f l o a t s= s e m i p e r i m e t r o ; // s no e s t a b a d e c l a r a d a a r e a = s q r t ( s ∗ ( s−L1 ) ∗ ( s−L2 ) ∗ ( s−L3 ) ) ; c o u t << ” p e r i m e t r o e s : ” << p e r i m e t r o << e n d l ; c o u t << ” a r e a e s : ” << a r e a ; cin . ignore () ; cin . get () ; 29 31 33 35 37 } 39 41 43 bool e s t r i a n g u l o ( f l o a t a , f l o a t b , f l o a t c ) { i f ( ( a+b>c )&&(a+c>b )&&(b+c>a ) ) { return 1 ; } e l s e { return 0 ; } } Observaciones: Para efectuar operaciones matemáticas complejas usamos la librerı́a math.h. Debemos declarar las funciones que usaremos en el programa. 5 If (condicion) {acciones} busca en google por qué es necesario usar cin.ignore(). 5. Finalmente Veamos ejemplos de las otras estructuras básicas de control: 1. Ciclo “Para”: 1 3 5 f o r ( i =0; i <=10; i ++) { cout<<i <<e n d l ; } /∗ i+=5 hace c o n t a r de 5 en 5 i −=2 hace d e c r e c e r de 2 en 2 ∗/ 2. Ciclo “Hacer”: 1 3 int x = 0 do { cout<<” Esta l i n e a s e imprime aunque l a c o n d i c i o n sea f a l s a ” ; } while ( x !=0) ; 3. Ciclo “Mientras”: 1 3 5 6. int i = 0 ; while ( i <10) { cout<<” Ejecutamos Codigo ” ; i=i +1; } Ejercicios Tome la lista de ejercicios que usaron para practicar pseudocódigo y desarróllelos ahora en C++. 6