Anda di halaman 1dari 7

Prácticas de C++

Practica Nº 1

Informática II
Fundamentos de Programación
Prof. Dr. Paul Bustamante
Prácticas de Programación en C++ Pág. 1

ÍNDICE
ÍNDICE..................................................................................................................................................................... 1
1. Introducción................................................................................................................................................. 1
1.1 Ejercicio 1: Cálculo de la letra del NIF a través del DNI .......................................... 1
1.2 Ejercicio 2: Mejorando el programa anterior ............................................................. 2
1.3 Ejercicio 3: Encriptación V1.1. .................................................................................. 2
1.4 Ejercicio 4: Detección de errores: CheckSum............................................................ 3
1.5 Ejercicio 5: MiniCalculadora v1.0 ............................................................................. 4
1.6 Ejercicio 6: MiniCalculadora v1.1 ............................................................................. 5

1. Introducción.
Comienza Informática II y Fundamentos de Programación, y comienza con algunos
ejemplos sencillos, de repaso, referidos a la programación en C++, que nos ayuden a recordar
los conceptos básicos vistos en Informática I y Fundamentos de Computadores I.
No es importante que hagan todos los ejercicios durante la práctica, sino que entiendan
muy bien cómo 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
servirán 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 práctica debe apoyarse en el entorno de
programación 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
estarán dentro de un directorio de su disco G:\.

1.1 Ejercicio 1: Cálculo de la letra del NIF a través del DNI


Para que su introducción en esta asignatura de Programación 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 sabéis, esta letra se calcula de acuerdo a un algoritmo, el cual es
muy sencillo. Esto permite que nadie se invente un número de DNI y una letra no válida. Sin
más preámbulos, a continuación 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 número del DNI(XX - Salir):";
cin >> DNI;
if ( strcmp(DNI,"XX") == 0) return; //fin
len = strlen(DNI);

Escuela Superior de Ingenieros – Tecnun – Universidad de Navarra


Prácticas de Programación en C++ Pág. 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 opción
comprende las anteriores, esto es, si se quiere ejecutar y no se ha compilado y linkado, se
realizan primero estas operaciones.
Si ha olvidado cómo se crea un proyecto en C++, recurra a la documentación 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 línea de argumentos el DNI y haga el cálculo de la Letra
correspondiente, de tal forma que el programa se pueda ejecutar de la siguiente
manera:
¾ Ejer2 87645327
• Que el programa pida un número de DNI con la letra incluida (o el NIF) y que haga el
cálculo y diga si ese número es correcto o no.

Para este ejercicio debe crear un proyecto llamado Ejer02, en el cual debe escribir el código
correspondiente.

1.3 Ejercicio 3: Encriptación V1.1.


Después de estos dos ejercicios, vamos a profundizar un poco más en los algoritmos
matemáticos con C++.
Como Ud. ya sabe, la Encriptación es una medida de seguridad utilizada para que al momento
de almacenar y/o transmitir información sensible, ésta no pueda ser obtenida con facilidad por
terceros. La encriptación hace uso de diversas fórmulas matemáticas, con el propósito de
transformar el texto en algo ilegible. Después existe el proceso de Desencriptación, que
permite obtener el texto nuevamente.
En este ejercicio vamos a realizar un programa (versión 1.1), que para encriptar primero rota
los bits del carácter y luego le hace una operación lógica XOR. Para desencriptar se hace el
proceso contrario.
Escriba el programa y sálvelo como Encriptar.cpp.

// Encriptación de Datos
// Tecnun 2006 - PB
#include <iostream.h>

Escuela Superior de Ingenieros – Tecnun – Universidad de Navarra


Prácticas de Programación en C++ Pág. 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: Detección de errores: CheckSum.


En comunicaciones de datos, por ejemplo envío de ficheros, se debe verificar que la
transmisión ha sido correcta, para lo cual se utilizan diversas técnicas de detección de errores,
donde el algoritmo más sencillo de implementar es el CheckSum, el cual también se envía al
final de la transmisión 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 transmisión ha sido correcta, caso contrario hay error en la transmisión.
A continuación tenemos el código:

// Cálculo 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


Prácticas de Programación en C++ Pág. 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 ejecutándolo 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 llámele checksum.cpp.

1.5 Ejercicio 5: MiniCalculadora v1.0


Este ejercicio consiste en hacer un programa que permita realizar las 4 operaciones básicas:
Suma, Resta, Multiplicación y División. Este programa tendrá un funcionamiento similar a
Matlab, es decir que la operación se dará completa, por ejemplo:
>>5.5*15.6 y luego Enter.
El resultado aparecerá en la consola y estará listo para escribir otra operación. El programa
finaliza con la letra ‘E’.
A continuación se da el código. Recuerde que no solo basta con escribir el código, 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


Prácticas de Programación en C++ Pág. 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 versión 1.1 de la MiniCalculadora, agregando lo siguiente:
• Agregar el operador % para hallar el resto de una división de ENTEROS.
• El resultado de una operación anterior sea almacenado en una variable (por ejemplo
‘a’), de tal forma que pueda hacer una nueva operación con esa variable. Véase 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 paréntesis y las llaves { }.
- No olvide declarar las variables, antes de usarlas.
- Por último, recuerde que C++ distingue de minúsculas y mayúsculas.

Escuela Superior de Ingenieros – Tecnun – Universidad de Navarra

Anda mungkin juga menyukai