Sunteți pe pagina 1din 7

Prcticas de C++

Practica N 1

Fundamentos de Programacin Informtica III


Prof. Dr. Paul Bustamante

Prcticas de Programacin en C++

Pg. 1

NDICE
NDICE..................................................................................................................................................................... 1 1. Introduccin................................................................................................................................................. 1

1.1 1.2 1.3 1.4 1.5 1.6 1.7

Ejercicio 1: Clculo de la letra del NIF a travs del DNI .......................................... 1 Ejercicio 2: Mejorando el programa anterior ............................................................. 2 Ejercicio 3: Debugger................................................................................................. 2 Ejercicio 4: Clculo de PI........................................................................................... 2 Ejercicio 5: Encriptacin V1.0. .................................................................................. 3 Ejercicio 6: Deteccin de errores: CheckSum............................................................ 3 Ejercicio 7: Mini Calculadora v1.0 ............................................................................ 4

1. Introduccin.
Comienza Fundamentos de Programacin e Informtica III , y comienza con algunos ejemplos sencillos, de repaso, referidos a la programacin en C++, que nos ayuden a recordar los conceptos bsicos vistos en Informtica I y Fundamentos de Computadores I. Para realizar los Ejercicios de esta prctica debe apoyarse en el entorno de programacin de Visual Studio, recordando de utilizar siempre el Debugger. 1.1 Ejercicio 1: Clculo de la letra del NIF a travs del DNI Para que su introduccin en esta asignatura de Programacin en C++ sea todo un xito, le hemos preparado un sencillo programa de bienvenida. Este consiste en calcular la letra que va al final del DNI. Como ya sabis, esta letra se calcula de acuerdo a un algoritmo, el cual es muy sencillo. Esto permite que nadie se invente un nmero de DNI y una letra no vlida. Sin ms prembulos, a continuacin se muestra el programa que realiza esta tarea.
// Calculo de la Letra del DNI // Tecnun 2010 - PB #include <iostream> //para visual Studio 2005 #include <string.h> #include <stdlib.h> using namespace std; //para visual Studio 2005 void main() { char DNI[20]; char letras[] = "TRWAGMYFPDXBNJZSQVHLCKE"; int len=0; while(len!=8) { cout << "Dar el nmero del DNI(XX - Salir):"; cin >> DNI; if ( strcmp(DNI,"XX") == 0) return; //fin len = strlen(DNI); if (len < 8) cout << "\a"; } //algoritmo para calcular la letra int num=atoi(DNI); int pos=num%23; char let = letras[pos]; cout << "El DNI es: " << DNI <<"-"<<let << endl; cout << "Adios...\n"; } /* fin de main() */

Copyright @ Paul Bustamante & Tecnun Universidad de Navarra

Prcticas de Programacin en C++

Pg. 2

Deber crear un proyecto Ejer1 y el fichero de cdigo Ejer1.cpp. Para compilar y linkar el programa debe utilizar el men Build y las opciones Compile File (para compilar), Build (para compilar y linkar) y Ctrl+F5 (para ejecutar el programa). 1.2 Ejercicio 2: Mejorando el programa anterior Seguro que el programa del ejercicio anterior le ha dejado con ganas de continuar programando. Pues sigamos adelante.. En este nuevo ejercicio, que realizar Ud. solo, debe lograr que el programa pida un nmero de DNI con la letra incluida y que haga el clculo y diga si ese DNI es correcto o no. Para este ejercicio debe crear un proyecto llamado Ejer02, en el cual debe escribir el cdigo correspondiente. 1.3 Ejercicio 3: Debugger Este programa, a parte de calcular la distancia de un marathon en kilmetros, sirve para, aprender a encontrar errores, utilizando el debugger. Escriba el programa y slvelo como maraton.cpp.
// Fichero maraton.cpp // Un marathon tiene 26 millas y 385 yardas, y una milla 1760 yardas. /* Calcula la distancia del marathon en Kilmetros */ #include <iostream> using namespace std; //para visual Studio void main (void){ int millas,yardas; float kilometros; millas = 26; yardas = 385; /* frmula de conversin */ kilometros = 1.609 * (millas + yardas / 1760); // salida de datos cout <<"Un marathon tiene "<< kilometros << " kilometros" << endl; }

Debe crear un proyecto llamado Ejer03. El resultado que debera obtener es 42.1859, sin embargo no es as. Qu ha podido pasar? Use el debugger para descubrir el error. 1.4 Ejercicio 4: Clculo de PI. Es el momento de intentar hacer un ejercicio sin tener la solucin a mano, para lo cual primero debe tratar de pensar en cmo resolver el algoritmo en papel, y luego implementarlo en C++. El valor de PI se puede aproximar por la siguiente formula:

= 4 * * * * * *K
Disee un programa que calcule PI por dos mtodos distintos: 1. Iteraciones: Aproximar PI con un nmero de trminos (mayor que 1), dado por el usuario. 2. Error: Aproximar PI con un error (p.e 1E-3), y que el programa devuelva PI y el nmero de iteraciones en que lo ha hecho.
Copyright @ Paul Bustamante & Tecnun Universidad de Navarra

2 4 4 6 6 3 3 5 5 7

Prcticas de Programacin en C++

Pg. 3

1.5 Ejercicio 5: Encriptacin V1.0. Vamos a profundizar un poco ms en los algoritmos matemticos con C++. Como Ud. ya sabe, la Encriptacin es una medida de seguridad utilizada para que al momento de almacenar y/o transmitir informacin sensible, sta no pueda ser obtenida con facilidad por terceros. La encriptacin hace uso de diversas frmulas matemticas, con el propsito de transformar el texto en algo ilegible. Despus existe el proceso de Desencriptacin, que permite obtener el texto nuevamente. En este ejercicio vamos a realizar un programa (versin 1.0), que para encriptar primero rota los bits del carcter y luego le hace una operacin lgica XOR. Para desencriptar se hace el proceso inverso. Escriba el programa y slvelo como Encriptar.cpp.
// Encriptacin de Datos // Tecnun 2010 - PB #include <iostream> #include <iomanip> #include <string.h> //para strlen() using namespace std; //para visual Studio void main() { int len; const int NUM=120; //num. maximo de caracteres. unsigned char texto[NUM],key; cout << "Escriba un texto:"; cin.getline(texto,120); cout << "Introduzca la clave para codificar (un digito):"; cin >> key; len=strlen((char*)texto); cout << "\t*** texto Codificado ***\n"; for (int i=0;i<len;i++){ texto[i] = (texto[i] >> i%8) | (texto[i]<<(8-i%8));//rot a la der texto[i] = texto[i] ^ key; //XOR } cout << texto << endl; cout.fill('*'); cout << setw(50) << " Transmitiendo texto "; cout << setw(30) << " "<<endl; cout << "\t*** texto DeCodificado ***\n"; for (i=0;i<len;i++){ texto[i] = texto[i] ^ key; texto[i] = (texto[i] << i%8) | (texto[i]>>(8-i%8));//rot a la izq. } cout << texto << endl << endl; }

1.6 Ejercicio 6: Deteccin de errores: CheckSum. En comunicaciones de datos, por ejemplo envo de ficheros, se debe verificar que la transmisin ha sido correcta, para lo cual se utilizan diversas tcnicas de deteccin de errores, donde el algoritmo ms sencillo de implementar es el CheckSum, el cual tambin se enva al final de la transmisin de dichos datos.

Copyright @ Paul Bustamante & Tecnun Universidad de Navarra

Prcticas de Programacin en C++

Pg. 4

El checksum consiste en ir sumando los valores de los bytes a enviar, e ir almacenando el valor resultante en un byte. El resultado se comprueba con el valor enviado, y si los datos son iguales, la transmisin ha sido correcta, caso contrario hay error en la transmisin. A continuacin tenemos el cdigo:
// Clculo del CheckSum // Tecnun 2010 - PB #include <iostream> #include <iomanip.h> #include <string.h> #include <stdlib.h> using namespace std; //para visual Studio #define NUM 5 void main() { char array[NUM+1]; int dat; int num=0; char chk=0;

//uno para el checksum

for (int i=0;i<NUM;i++){ cout << "Dato["<<i<<"]:?"; cin >> dat; //directamente no se puede poner array[i] array[i] = dat; chk += array[i]; //calcula el checksum } array[NUM] = chk; //transmitir datos for ( i=0;i<NUM+1;i++){ //SendData( array[i] ); //transmision dat = array[i] & 0xFF; cout << setw(3) << hex << dat; } //resultado cout << "\nEl Byte de Checksum es: " << (int)(array[NUM]&0xff); cout << "\nAdios..."<<endl; }

Para comprender bien el funcionamiento del programa, debe ir ejecutndolo paso a paso con el debugger e ir viendo los valores en el array array[i] y en la variable chk. Debe crear un proyecto Ejer6 y al nombre del fichero fuente llmele checksum.cpp. 1.7 Ejercicio 7: Mini Calculadora v1.0 Este ejercicio consiste en hacer un programa que permita realizar las 4 operaciones bsicas: Suma, Resta, Multiplicacin y Divisin. Este programa tendr un funcionamiento similar a Matlab, es decir que la operacin se dar completa, por ejemplo: >>5.5*15.6 (Intro). ans = 85.8 El resultado aparecer en la consola y estar listo para escribir otra operacin. El programa finaliza con la letra E. A continuacin se da el cdigo. Recuerde que no solo basta con escribir el cdigo, hay que entenderlo:
Copyright @ Paul Bustamante & Tecnun Universidad de Navarra

Prcticas de Programacin en C++ // MiniCalculadora Version 1.0 // Tecnun 2010 - PB #include <iostream> #include <string.h> #include <math.h> using namespace std; //para visual Studio void main() { char str[30]; bool ope=false; char op1[20],op2[20]; int cont=0; char chope; //operador double dop1=0,dop2=0, val; while(true){ cout << ">>"; cin.getline(str,30); if (str[0]=='E') break; //Exit, salir del programa ope=false; cont=0; for (int i=0;i<strlen(str);i++){ if (str[i]=='+'||str[i]=='-'||str[i]=='*'||str[i]=='/'){ ope=true; op1[cont]=0; //fin de cadena op1 cont=0; //para segundo contador chope=str[i]; //almacena qu operador es }else{ if (!ope) op1[cont++]=str[i]; else op2[cont++]=str[i]; } } op2[cont]=0; dop1=atof(op1); dop2=atof(op2); switch(chope){ case '+': val = case '-': val = case '*': val = case '/': val = default: val=0; } cout << "\tans = "

Pg. 5

dop1 dop1 dop1 dop1

+ * /

dop2; dop2; dop2; dop2;

break; break; break; break;

<< val << endl; } cout << "Fin de la MiniCalculadora" << endl; }

Notas: - No olvide poner siempre ; al final de cada sentencia. - No olvide cerrar las comillas, los parntesis y las llaves { }. - No olvide declarar las variables, antes de usarlas. - Por ltimo, recuerde que C++ distingue de minsculas y maysculas.

Copyright @ Paul Bustamante & Tecnun Universidad de Navarra

S-ar putea să vă placă și