Está en la página 1de 7

Prcticas de C++

Practica N 1

Informtica II
Fundamentos de Programacin
Prof. Dr. Paul Bustamante
Prcticas de Programacin en C++ Pg. 1

NDICE
NDICE..................................................................................................................................................................... 1
1. Introduccin................................................................................................................................................. 1
1.1 Ejercicio 1: Clculo de la letra del NIF a travs del DNI .......................................... 1
1.2 Ejercicio 2: Mejorando el programa anterior ............................................................. 2
1.3 Ejercicio 3: Encriptacin V1.1. .................................................................................. 2
1.4 Ejercicio 4: Deteccin de errores: CheckSum............................................................ 3
1.5 Ejercicio 5: MiniCalculadora v1.0 ............................................................................. 4
1.6 Ejercicio 6: MiniCalculadora v1.1 ............................................................................. 5

1. Introduccin.
Comienza Informtica II y Fundamentos de Programacin, 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.
No es importante que hagan todos los ejercicios durante la prctica, sino que entiendan
muy bien cmo y por qu se hacen las cosas. Es preferible que entiendan muy bien un
programa a que hayan acabado todo sin haberse enterado de nada. Los primeros ejercicios
servirn para familiarizarse con el modo de programar y para que vayan entendiendo las
cosas. Les animamos a que intenten hacer uds. mismos modificaciones y variaciones, incluso
hay veces que un mismo problema puede resolverse de varias maneras diferentes que son
igualmente correctas.
Para realizar los Ejercicios de esta prctica debe apoyarse en el entorno de
programacin de Visual C++ 6.0, recordando de utilizar siempre el Debugger. Para cada
Ejercicio deber crear un Proyecto en un subdirectorio especial. Todos estos subdirectorios
estarn dentro de un directorio de su disco G:\.

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 2006 - PB
#include <iostream.h>
#include <string.h>
#include <stdlib.h>
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);

Escuela Superior de Ingenieros Tecnun Universidad de Navarra


Prcticas de Programacin en C++ Pg. 2

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() */

Deber copiar este programa en el editor del Visual C++, compilarlo y ejecutarlo para
comprobar su funcionamiento. El nombre del proyecto ser Ejer1 y el del programa ser
Ejer1.cpp. Para compilar y linkar el programa debe utilizar el men Build y las opciones
Compile File (para compilar), Build (para linkar) y Execute (para ejecutar). Cada opcin
comprende las anteriores, esto es, si se quiere ejecutar y no se ha compilado y linkado, se
realizan primero estas operaciones.
Si ha olvidado cmo se crea un proyecto en C++, recurra a la documentacin del
entorno que se le dio en clase.

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 dos cosas:
Que permita recibir por la lnea de argumentos el DNI y haga el clculo de la Letra
correspondiente, de tal forma que el programa se pueda ejecutar de la siguiente
manera:
Ejer2 87645327
Que el programa pida un nmero de DNI con la letra incluida (o el NIF) y que haga el
clculo y diga si ese nmero 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: Encriptacin V1.1.


Despus de estos dos ejercicios, 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.1), que para encriptar primero rota
los bits del carcter y luego le hace una operacin lgica XOR. Para desencriptar se hace el
proceso contrario.
Escriba el programa y slvelo como Encriptar.cpp.

// Encriptacin de Datos
// Tecnun 2006 - PB
#include <iostream.h>

Escuela Superior de Ingenieros Tecnun Universidad de Navarra


Prcticas de Programacin en C++ Pg. 3

#include <iomanip.h>
#include <string.h> //para strlen()
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.4 Ejercicio 4: 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.
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 2006 - PB
#include <iostream.h>
#include <iomanip.h>
#include <string.h>
#include <stdlib.h>

#define NUM 5

void main()
{

char array[NUM+1]; //uno para el checksum


int dat;
int num=0;

Escuela Superior de Ingenieros Tecnun Universidad de Navarra


Prcticas de Programacin en C++ Pg. 4

char chk=0;

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;
}
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 Ejer4 y al nombre del fichero fuente llmele checksum.cpp.

1.5 Ejercicio 5: MiniCalculadora 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 y luego Enter.
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:

// MiniCalculadora Version 1.0


// Tecnun 2006 - PB
#include <iostream.h>
#include <string.h>
#include <math.h>

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;
ope=false; cont=0;

for (int i=0;i<strlen(str);i++){


if (str[i]=='+'||str[i]=='-'||str[i]=='*'||str[i]=='/'){
ope=true;

Escuela Superior de Ingenieros Tecnun Universidad de Navarra


Prcticas de Programacin en C++ Pg. 5

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 = dop1 + dop2; break;
case '-': val = dop1 - dop2; break;
case '*': val = dop1 * dop2; break;
case '/': val = dop1 / dop2; break;
default: val=0;
}

cout << "\tans = " << val << endl;


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

1.6 Ejercicio 6: MiniCalculadora v1.1


En este ejercicio haremos la versin 1.1 de la MiniCalculadora, agregando lo siguiente:
Agregar el operador % para hallar el resto de una divisin de ENTEROS.
El resultado de una operacin anterior sea almacenado en una variable (por ejemplo
a), de tal forma que pueda hacer una nueva operacin con esa variable. Vase el
ejemplo:
3.5*10 ( Mostrar resultado (35) y almacenar internamente en variable a)
a/7 ( Mostrar resultado, que ser igual a 5)

La variable puede usarse en cualquier operando, ya sea el de la derecha como en el de la


izquierda.

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.

Escuela Superior de Ingenieros Tecnun Universidad de Navarra

También podría gustarte