Cplusplus 4
Cplusplus 4
1.- INTRODUCCIÓN
El lenguaje C se origina con el lenguaje BCPL, creado por Martin Richards, el lenguaje
B implementado por Ken Thompson y por último el lenguaje C , implementado por
Dennis Ritchie en 1971.
C++ es muy potente, complejo y extenso y como sus estructuras básicas son las
mismas que otros muchos lenguajes resulta de interés trabajar con él
Hola, mundo
Empezamos por escribir algo en la pantalla.
#include <iostream> Se trata de incluir una librería para que reconozca los
procedimientos de entrada y
salida con cin y cout que se usan para guardar
algo introducido por teclado en una variable,
leer teclado o mostrar algo por pantalla,
escribir en pantalla.
División X = 6 / 3
Módulo X = 5 % 2
+ X vale 8
* X vale 6
/ X vale 2
% X vale 1
-- Decremento X = 1; X-- X vale 0
++ Incremento X = 1; X++ X vale 2
Hallar el resto de una división también llamado módulo es una importante operación
en programación.
//módulo
#include <iostream>
int main ()
⎨
std::cout <<48%5; El resultado es el resto de dividir 48 entre 5; es decir 3.
return 0;
}
//Suma y resultado
#include <iostream>
int main ()
⎨
std::cout <<”6+7=” << 6+7; Cuando el programa se ejecute aparecerá en
pantalla 6+7= 13
return 0;
}
//Cuadrado de un número
#include <iostream>
int main ()
⎨
int numero; numero guarda un número entero std::cout<<”Dime un
numero:”; Pedimos el número al usuario std::cin>>numero; Leemos un dato
que guardamos en la variable numero.
std:: cout <<”El cuadrado de tu numero es”<<numero*numero;
Calculamos y mostramos
el
resultado.
return 0;
}
Problema 1: Calcula la resta de dos números que introduzca el usuario. Utiliza tres
variables.
2.5.- Evitar escribir std::
En programas largos puede resultar tedioso escribir std:: delante de cada cout y de
cada cin. Añadiendo using namespace std; al principio del programa se evitará
esto último.
int main ()
⎨
int n1, n2, suma;
cout<<”Dime un numero:”;
cin>>n1;
cout<<”Dime otro numero:”;
cin>>n2;
suma = n1+n2;
cout <<”Su suma es” <<suma <<endl;
return 0;
}
//Decimales
#include <iostream>
using namespace std;
int main ()
⎨
float n1, n2, cociente;
cout<<”Dime un numero:”;
cin>>n1;
cout<<”Dime otro numero:”;
cin>>n2;
cociente = n1/n2;
cout <<”La división es”<<cociente <<endl;
return 0;
}
Si queremos una precisión mayor utilizaremos una variable de tipo double que
tiene 15 cifras de precisión y permite disminuir errores de redondeo aunque ocupa
más espacio.
float angulogrados=45;
float PI=3.14159265;
double anguloradianes=angulogrados*PI/180;
cout <<”El seno de” <<angulogrados << “es”<<sin(anguloradianes) << endl;
return 0;
}
Problema 2: Crea un programa que calcule el coseno de ángulos con los siguientes
grados: 30, 45,60 y 90
3.1.- if
Para comprobar si se cumple una condición se emplea if (condición) sentencia;
int main ()
⎨
int numero;
cout<<”Escribe un número:”;
cin>> numero;
if (numero>0)
cout <<”El número es positivo.”;
return 0;
}
La orden if permite ejecutar una única sentencia en caso de que se cumpla la
condición, para poder realizar varias sentencias las agruparemos entre llaves ⎨⎬
formando una sentencia compuesta.
// sentencia compuesta
#include <iostream>
using namespace std;
int main ()
⎨
int numero;
cout<<”Escribe un número:”;
cin>> numero;
if (numero>0)
⎨
cout <<”El número introducido es positivo.”;
cout <<” También puedes escribir números negativos.”;
⎬
return 0;
}
3.2.- El caso contrario: else
Qué hacemos si no se cumple una condición.
// if y else
#include <iostream>
using namespace std;
int main ()
⎨
int numero;
cout<<”Escribe un número:”;
cin>> numero;
if (numero>=0)
cout <<”El número introducido es positivo.”;
else
cout <<”El número introducido es negativo.”;
return 0;
}
Mayor o igual X = 5; Y = 3;
if(x >= y) x+1;
> X vale 6
Y vale 3
<= X vale 3
Y vale 3
>= X vale 6
Y vale 3
== Igual X = 5; Y = 5; X vale 6
if(x == y) x+1; Y vale 5
¡= Diferente X = 5; Y = 3; X vale 5
if(x ¡= y) y+1; Y vale 4
return 0;
}
Problema 5
Crea un programa que pida un número entero al usuario e indique si es múltiplo de 5.
Para ello, deberá comprobar si el resto que obtiene al dividir dicho número entre cinco
es cero.
Problema 6
Realiza un programa que pida dos números e indique si el primero es múltiplo del
segundo.
Problema 7
Crea un programa que pida al usuario dos números enteros y diga cuál es menor.
Problema 8
Realiza un programa que pida dos número al usuario. Si el segundo no es cero,
mostrará la división de ambos; de lo contrario, aparecerá un mensaje de error.
int main ()
⎨
int numero;
cout<<”Escribe un número:”;
cin>> numero;
if (!(numero==0))
cout <<”No es cero.”;
if ((numero==2)||(numero==3))
cout <<” Es dos o tres.”;
if ((numero>=2)&&(numero<=7))
cout <<” Esta entre 2 y 7 (incluidos).”;
return 0;
}
// Operador condicional
#include <iostream>
using namespace std;
int main ()
⎨
int a=3, b=5;
int mayor= a>b ? a:b
cout<<”El mayor es:” << mayor;
return 0;
}
int main ()
⎨
int a=3, b=5, mayor;
if (a>b)
mayor = a;
else
mayor = b;
cout <<” el mayor es:”<< mayor;
return 0;
}
3.6.- switch
Para analizar varios valores posibles de una misma variable, se puede emplear la
orden switch. La variable entre paréntesis y cada posible valor se indica tras la
palabra case:. Las ordenes a ejecutar deben terminar con break y usando default se
indica qué hacer si no se da ninguno de los casos preestablecidos.
int main ()
⎨
int numero;
cout <<” Introduce un número del 1 al 5”;
cin>> numero;
switch (numero)
⎨
case 1: cout<<”Uno”;
break;
case 2: cout<<”Dos”;
break;
case 3: cout<<”Tres”;
break;
case 4: cout<<”Cuatro”;
break;
case 5: cout<<”Cinco”;
break;
default: cout<<”Valor incorrecto!”;
}
return 0;
}
Cuando varios casos tengan que mostrar un mismo resultado, se puede dejar vacío el
primero de ellos. Por ejemplo como 9 y 10 son ambos un sobresaliente, case 9:
case 10: cout<<”Sobresaliente”;
break;
Problema 9
Crea un programa que pida al usuario tres números reales e indique el valor numérico
del mayor de ellos. Tener en cuenta que el usuario puede meter algún valor repetido.
Problema 10
Elabora un programa que pida al usuario dos números enteros y diga:” Uno de los
números es negativo”, “los dos números son negativos” o bien “ Ninguno de los
números es negativo”, según corresponda.
Problema 11
Diseña, usando if, un programa que pida al usuario un número del 1 al 10 y diga si es
par o no.
Problema 12
Elabora, usando switch, un programa que pida al usuario un número del 1 al 10 y
escriba el nombre de la nota correspondiente.
Problema 13
Crea un programa, usando switch, que pida a un usuario un número del 1 al 10 y
diga si es múltiplo de 3 o no.
4.- BUCLES
Muchas veces tendremos que verificar las condiciones más de una vez y para ello
utilizaremos bucles.
4.1.- while
Para repetir una condición utilizaremos while (mientras) en lugar de if.
int main ()
⎨
int numero;
cout <<” Escribe un numero positivo”;
cin>> numero;
while (numero<=0)
⎨
cout <<” Ese numero no es positivo”<<endl;
cout <<” Escribe otro numero positivo”;
cin>> numero;
}
return 0;
}
Si el usuario escribe un número negativo, le dirá que no es negativo y que escriba
uno positivo tantas veces como el usuario meta números negativos. Una vez que
meta un número positivo, se saldrá del while y terminará el programa porque ya no
se cumple la condición del while.
4.2.- do-while
El do-while, haz mientras se cumpla la condición establecida.
int main ()
⎨
int numero;
do
⎨
cout <<” Escribe un numero positivo”;
cin>> numero;
if(numero<=0)
cout <<” Ese numero no es positivo”<<endl;
}
while (numero<=0);
return 0;
}
Con while, si introducimos un número positivo la primera vez, la condición del while
no se cumple y por tanto no se entrará en el bucle while y el programa terminará sin
embargo con do-while, siempre se realizará una vez las órdenes que se indiquen ya
que la condición se comprobará al final.
4.3.- Contadores
En programación se suelen usar mucho contadores para lo que usaremos while,
aumentando el valor de una variable.
int main ()
⎨
int numero=1;
while (numero<=10)
⎨
cout<<numero<< “ “;
numero=numero+1;
}
return 0;
}
4.4- for
Para crear contadores se puede usar una orden, for (para) de modo que podamos
agrupar los tres primeros pasos, valor inicial, incremento y comprobación.
int main ()
⎨
int numero;
for(numero=1; numero<=10; numero=numero+1)
cout<<numero<< “ “;
return 0;
}
Podemos salir de un bucle antes de tiempo utilizando la orden
break. // Interrumpir un bucle con break
#include <iostream>
using namespace std;
int main ()
⎨
int numero;
for (numero=1; numero<=10; numero++)
⎨
if (numero == 5)
break;
cout << numero <<” ”;
}
return 0;
}
int main ()
⎨
while(3>2) cout>>”Hola”;
for (int numero=0; numero<=10;)
cout << “ Hola “;
for (;;)
cout << “ Hola “;
return 0;
}
Podemos anidar bules para por ejemplo escribir tablas de multiplicar del 1 al
5. // Bucles anidados
#include <iostream>
using namespace std;
int main ()
⎨
int tabla, numero;
for (tabla=1; tabla<=5; tabla++)
⎨
for(numero = 1; numero<=10; numero++)
cout<<tabla<<”por”<<numero <<”es”<<tabla*numero<<endl;
break;
cout << endl;
}
return 0;
}
4.5- Incremento
Incrementar variables es una operación tan común que algunos lenguajes incorporan
una forma abreviada numero++.
int main ()
⎨
int numero;
for(numero=1; numero<=10; numero++)
cout<<numero<< “ “;
return 0;
}
int main ()
⎨
int numero;
for(numero=10; numero>=0; numero-=2)
cout<<numero<< “ “;
return 0;
}
int main ()
⎨
for(int numero=10; numero>=0; numero-=2)
cout<<numero<< “ “;
return 0;
}
Problema 14
Diseña un programa, usando while, que escriba en pantalla, de mayor a menor, los
números impares pares del 1 al 30.
Problema 15
Elabora un programa que dé al usuario la oportunidad de adivinar un número del 1 al
100, en un máximo de seis intentos. En cada intento, el programa deberá avisar al
usuario de si se ha pasado o se ha quedado corto.
Problema 16
Crea un programa que pida números positivos al usuario y calcule la suma de todos
ellos (saldremos del bucle con un número negativo o con el cero).
Problema 17
Elabora un programa que pida al usuario su código de usuario y su contraseña, y que
no le permita finalizar hasta que introduzca el código de usuario 2017 y la contraseña
7890.
// Arrays1
#include <iostream>
using namespace std;
int main ()
⎨
int datos[7] = (300,200,100,0,-100,250,175);
int suma;
int i;
for (i=0; i<=6; i++)
suma +=datos[i];
cout<<”Su suma es”<<suma;
return 0;
}
int main ()
⎨ int datos[5];
int i;
for (i=0; i<=4; i++)
⎨
cout<<”Dime el dato”<<i+1<<”:”;
cin>>datos[i];
}
for (i=4; i>=0; i--)
cout<<”El dato”<<i+1<<”es”<<datos[i]<<endl;
return 0;
}
Problema 18
Crea un programa que pida cuatro números al usuario, los memorice utilizando un
array, calcule su media aritmética y , finalmente, muestre en pantalla tanto la media
como los datos tecleados.
// Arrays bidimensionales
#include <iostream>
using namespace std;
int main ()
⎨ int medidas[2][10];
⎨
⎨2.25, 2.27, 2.30, 2.32, 2.33, 2.35, 2.36, 2.37, 2.38, 2.39}
⎨2.23, 2.26, 2.27, 2.29, 2.31, 2.32, 2.33, 2.35, 2.38, 2.40}
};
cout<<”La tercera medida de la serie 2 es ”<<tiempos[1][2];
return 0;
}
5.3.- Valores iniciales de arrays
Los datos de un array no tienen por qué tener como valor inicial 0, ya que pueden
contener “basura”, es decir, lo que en la posición de memoria que se está usando
quedé guardado de una operación anterior al igual que ocurre en los espacios
reservados para variables simples de modo que:
int main ()
⎨ float valor;
int datos[3];
cout<<”valor vale”<<valor<endl;
for (int i=0; i<=2; i++)
cout<<”El dato”<<i+1<<”es”<<datos[i]<<endl;
return 0;
}
int main ()
⎨ int datos[1000];
int contador=0;
int actual;
do
⎨
cout<<”dime un dato (5555 para salir):”;
cin>>actual;
if ((actual != 55555) && (contador<=999))
⎨
datos[contador] = actual;
contador++;
}
}
while ((actual != 55555) && (contador<=999));
cout<<”Los”<<contador<<”datos son: ”;
for (int i=0; i<contador; i++)
cout<<datos [i]<<” ”;
return 0;
}
Problema 19
Crea un programa que pida 11 números al usuario, los memorice (utilizando una tabla
no variables), calcule su media aritmética y finalmente muestre en pantalla los datos
tecleados y la media.
Problema 20
Elabora un programa que almacene en una tabla el número de días que tienen cada
mes (suponiendo que se trata de un año no bisiesto), pida al usuario que indique un
mes determinado (considerando 1=enero u 12= diciembre) y muestra en pantalla el
número de días que tiene el mes indicado.
Problema 21
Crea un programa que pida al usuario diez números enteros e indique cuál es el
menor.
Problema 22
Busca información sobre la “ordenación de burbuja” y crea un programa que pida diez
datos numéricos al usuario y los muestre ordenados de menor a mayor.