Inicio esto con el propósito de seguir trabajando en él en un futuro, pero llegaré hasta el punto donde vea que yo controlo bien o que no me suponga un trabajo enorme el hacerlo, ya que hacer esto conlleva mucho tiempo.
También inicio esto con la posibilidad de que otros usuarios puedan ampliarlo con sus conocimientos, siempre basándonos en que esto es una iniciación a la programación en C++.
Para que el manual quede bien, al final pondre una lista de ejercicios. Estos ejercicios los adjuntaré al final en un archivo.
Bueno, creo que lo primero para saber a programar es empezar con el pseudocodigo, para así aprender algoritmia y lógica, que nos hará falta.
Comenzamos pues…….
Algoritmo
Conjunto de acciones necesarias que debemos realizar para resolver un determinado problema. Debe poseer una serie de propiedades, como ser Preciso (indicar el orden en el que vamos a realizar las acciones), Finito, Correcto y Eficiente (complejidad pequeña).
Programa
Un programa es un conjunto de instrucciones escritas en un determinado lenguaje de programación que resuelven un algoritmo.
Pseudocódigo
Es una herramienta que se utiliza para representar o diseñar algoritmos. Es un lenguaje intermedio entre el lenguaje natural y el lenguaje de programación. La notación del pseudocodigo se caracteriza por lo siguiente:
-No puede ser ejecutable directamente por el ordenador, no es un lenguaje de programación.
-Es independiente del lenguaje de programación que vayamos a usar
-Es fácil de aprender y utilizar
Decir que el pseudocodigo hay diversas formas de hacerlo, especificando mas o menos. El que pondré será básico y con esto nos bastara.
Partes del algoritmo con Pseudocodigo:
Código: Seleccionar todo
PROGRAMA: Nombre
MODULO: Nombre
INICIO
Datos:
-------
-------
Algoritmo:
Acciones
FIN
-El segundo bloque esta formado por los datos y las acciones necesarias para resolver ese problema.
Los algoritmos pueden llevar comentarios para facilitar su comprensión. Será // para una sola línea, y /* para varias líneas. Con este ultimo, para especificar donde terminan nuestros comentarios, pondremos */ para finalizar.
Contadores
Un contador es una variable que almacena un valor que se va incrementando o decrementando en una cantidad fija. Los contadores se utilizan para procesos repetitivos, es decir, para contar el conjunto de acciones que se desean repetir en un bucle mientras, hacer mientras o para.
Todo contador debe tomar un valor inicial antes de ser utilizado.
Acumuladores
Un acumulador es una variable que se utiliza para almacenar los resultados obtenidos en operaciones aritméticas que se van realizando sucesivamente dentro de un bucle. Al final nos permite obtener el total acumulado de dichas cantidades.
Todo acumulador debe ser inicializado.
Ejemplo 1: Calcular el área de un triangulo
Código: Seleccionar todo
PROGRAMA: Area_triangulo
MODULO: Principal
INICIO
Datos:
base numerico entero
/*definimos el nombre de nuestras variables, especificamos que se trata de un numero y en este caso de tipo entero */
altura numerico entero
area numerico entero
Algoritmo:
Leer base, altura
/*leer sirve para especificar que los datos base y altura los introduciremos nosotros por teclado cuando el programa nos lo pida y de esta manera almacenar el dato en la variable*/
area=(base*altura)/2
escribir area
/* escribir sirve para cuando queramos sacar algo por pantalla. En este caso queremos sacar el resultado de la operación que es justamente lo que queremos averiguar, el area */
FIN
Condicionales
Sirven para tomar una alternativa o distintos caminos dentro de un programa.
Existen dos en C++: IF y SWITCH
-IF
Se utiliza para tomar un camino ante dos posibles opciones dentro de un programa.
Se utiliza para preguntar dentro de un programa.
Estructura:
Código: Seleccionar todo
Si (condición) entonces
Instruccion1
Instruccion2
.
.
.
InstrucciónN
Finsi
-Reglas IF/ELSE
Else viene a significar “sino”.
Aunque puede existir un IF que no tenga ELSE, lo que jamás existirá será un ELSE sin su correspondiente IF
Ejemplo 2: Comparar 2 números e indicar cual es el mayor o si son iguales
Código: Seleccionar todo
PROGRAMA: Mayor
MODULO: Principal
INICIO
Datos:
num1 numerico entero
num2 numerico entero
Algoritmo:
Leer num1, num2
Si (num1>num2) entonces
Escribir “El mayor es num1”
Si no
Si (num2>num1) entonces
Escribir “El mayor es num2”
Si no
Escribir “Los números son iguales
Fin si
Fin si
FIN
-SWITCH
Sirve para tomar un camino ante varios posibles generalmente más de dos dentro de un programa)
Funciona como varios IF anidados (un bucle está anidado cuando está dentro de otro).
Estructura:
Código: Seleccionar todo
Según valor expresión
Valor 1: instrucción1
………
InstrucciónN
Valor2: instruccion1
……………
instrucciónN
………
ValorN: instruccion1
……………
instrucciónN
fin según valor
Ejemplo 3: Pedir 2num, y según la opción que elija el usuario, sumarlos restarlos, multiplicarlos y dividirlos.
Código: Seleccionar todo
PROGRAMA: Eleccion_de_calculos
MODULO: Principal
INICIO
Datos:
Num1 numerico real
Num2 numerico real
Opcion numerico entero
Total numerico real
Algoritmo:
Total=0
Escribir “Introduce primer numero: “
Leer num1
Escribir “Introduce segundo numero: “
Leer num2
Escribir “Elige la operación “
Leer opcion
Según valor opcion
1: total=num1+num2
Escribir total
2: total=num1-num2
Escribir total
3: total=num1*num2
Escribir total
4: total=num1/num2
Escribir total
Fin según valor
FIN
-WHILE
Permite repetir un bloque de instrucciones de 0 a N veces. En aquellos casos en las que la condición establecida sea falsa, no entramos en el bucle, y en los casos en que sea verdadera se entra en el bucle como máximo N veces.
Estructura
Código: Seleccionar todo
Mientras (condición) hacer
Instruccion1
………………
InstrucciónN
Fin mientras
Ejemplo 4: Calcular la suma de los números comprendidos entre el 1 y el 10
Código: Seleccionar todo
PROGRAMA: Sumas _ sucesivas
MODULO: Principal
INICIO
Datos:
Suma numerico entero
Num numerico entero
Algoritmo:
Suma=0 num=1
Mientras (num<=10) hacer
Suma=suma+num //acumulador
Num=num+1 //Contador
Fin mientras
Escribir suma
FIN
-DO WHILE
Permite ejecutar un conjunto de instrucciones mientras se cumpla una determinada condición. En los casos en los que la condición sea falsa el bloque de instrucciones se ejecutara una vez, pues la comprobación de la condición la hace siempre después de la ejecución de las instrucciones
Estructura
Código: Seleccionar todo
Hacer
Instruccion1
……………………
instrucciónN
mientras (condición)
Ejemplo 5: Leer números y mostrarlos por pantalla hasta que lea uno negativo
Código: Seleccionar todo
PROGRAMA: Num_post
MODULO: Principal
INICIO
Datos:
Num numerico entero
Algoritmo:
Escribir “Introduce numero”
Leer num
Si (num>0)
Hacer
Escribir num
Escribir “Introduce numero”
Leer num
Mientras (num>0)
Fin si
FIN
DIFERENCIAS ENTRE WHILE Y DO WHILE
-WHILE: es un bucle de entrada, es decir, 1º evalúa la condición y si esta se cumple entra y ejecuta el contenido del bucle
-DO WHILE: es un bucle de salida, es decir, 1º ejecuta el contenido del bucle y luego evalúa la condición, y si esta no se cumple sale.
¡¡¡RECUERDA!!!
El bucle DO WHILE se ejecuta al menos una vez.
-FOR
Sirve para cuando sabemos cuantas veces tenemos que ejecutar algo. Es un bucle contador.
Estructura
Código: Seleccionar todo
Para cont de U1 hasta Un con incremento=N
Instruccion1
……………………………
InstrucciónN
Fin para
Ejemplo 6: Suma de los 10 primeros números
Código: Seleccionar todo
PROGRAMA: Sumas
MODULO: Principal
INICIO
Datos:
Sum numerico entero
i numerico entero
Algoritmo:
Sum=0
Para i desde 1 hasta 10 con incremento=1
sum=sum+i
fin para
escribir sum
FIN
EJERCICIOS:
A continuación la lista de los ejercicios que adjunto luego, por si al ver los titulos no os interesa y así no teneros que descargar el archivo.
1-Programa que muestre por pantalla los números 1 al 50
2-Mostrar los números pares entre el 1 y el 50
3-Mostrar los impares del 1 al 100 descendentemente
4-Pedir opción. Si es uno muestra los numeros pares del 1 al 100 decrecientemente. Si es dos muestra los impares decrecientemente
5-Algoritmo que lea y muestre una serie de numeros mayores de 0 y que indique al final el total de numeros leídos
6-Algoritmo que muestre el producto de una serie de numeros leídos por teclado siendo introducido también por teclado el total de numeros que se van a leer. Mostrar resultado.
7-Algoritmo que indique si un número leído por teclado es primo o no.
8-Algoritmo que muestre los divisores de un número leído por teclado y que muestre el total de divisores que tiene ese numero.
9-Algoritmo que calcule el factorial de un numero
10-Leer 100 numeros por teclado y escribir el mayor y el menor de ellos.
11-Algoritmo que recoja 3 numeros y los ordene de mayor a menor
12-Dado un numero por teclado que nos diga a que DIA de la semana corresponde
13-Algoritmo que pida un número por teclado. Otro usuario debe averiguar el número. Solo puede preguntar si es mayor o menor que el número. Si en 5 ocasiones no lo adivina, se saldrá del programa.
14-Algoritmo que dado un numero escriba el inverso de ese numero
(ejemplo: 39à93)
15-Algoritmo que diga cuantos profesores hombres y mujeres están admitidos en un curso con un limite de admitidos y que sean mayores de 45 años.
16-Algoritmo que escriba los 100 primeros numeros pares de mayor a menor
17-Algoritmo que lea un número entero positivo y determine el número de dígitos necesarios para la representación de dicho valor.
18-Algoritmo que calcule la potencia de un número, dada la base y el exponente por teclado.
INICIACIÓN A LA PROGRAMACION EN C++ (Capítulo 2)
Bueno pues aquí continúo con el manual de Programación en C++.
Anteriormente expliqué el pseudocódigo, para así adquirir algo de lógica en cuanto a la programación. Visto eso, me centraré ahora en como es un programa en C++, pasando algunos de los ejercicios anteriores al lenguaje C++ y añadiendo otros nuevos de la recopilación que tengo de mi tocho de apuntes.
ESTRUCTURA DE UN PROGRAMA
Cabecera:
-Inclusión de librerías
-Declaración de datos globales
-Implementación de Funciones
Cuerpo:
Código: Seleccionar todo
-Función main
{
Declaración de datos locales
Instrucción de la función
}
-Inclusión de Librerías:
En C/C++ se ofrece un conjunto de funciones estándars que dan soporte a las operaciones que se utilizan con más frecuencia. Estas funciones están agrupadas en bibliotecas. Para utilizarlas sólo hace falta una llamada a esa función (ejemplo: cout).
Las funciones que forman parte de las estándar están divididas en grupos. Todas las funciones que pertenecen a un mismo grupo se definen en el mismo fichero de cabecera.
Cuando deseamos utilizar cualquiera de esas funciones utilizaremos la expresion #include para incluir los ficheros de cabecera en nuestro programa.
Ejemplo: #include <iostream.h>
En algunos de los compiladores actuales, en unas de estas librerias estándar ya no se necesita especificar el .h, por lo que debajo de los includes se añade la sintaxis using namespace std; para indicar al compilador que las que él ya lleve predefinida no hace falta especificar su .h
-Declaración de Datos Globales:
Se declaran los datos (constantes, variables globales,....) que serán usados en nuestro programa.
-Implementación de funciones:
Se implementan las funciones que desarrola el usuario (si es que las tiene) de nuestro programa.
-Función main
Es la función principal del programa. Es el punto por el que se empieza a ejecutar el programa. Todas las funciones tienen que devolver un valor. Cuando el valor es nulo (no devuelve nada) se utiliza el tipo void.
Todas las funciones tienen un comiendo y un final que se indica con las llaves { , }.
En los compiladores más modernos se ha pasado de especificar la función main como
void main() que era, a ponerla ahora como int main(). Para que el compilador no de error o warning (aunque casi nunca da) al finalizar el programa y antes de la llave de cierre del main se escribe la sentencia return 0; Esto es debido a que al indicar que la función main devuelve un valor (en este caso de tipo entero (int)) hay que indicar con la expresion return que se devuelve algo. El 0 es para indicar que el programa se realiza bien. Tambien podemos encontrar return exit_succesfull;
-Declaración de datos locales:
Se declaran todos los datos (constantes, variables....) que vamos a utilizar dentro de la función main.
-Instrucciones de la función:
En este apartado se implementan las instrucciones y expresiones que realizan la acción para la cual ha sido diseñado el programa.
TIPOS DE DATOS SIMPLES
Los tipos de datos básicos son:
-char: se utiliza para almacenar un carácter del conjunto de caracteres disponibles.
Por ejemplo: char opcion; char letra= 'a';
-int: se utiliza para almacenar números enteros. Hay que tener en cuenta que el tipo entero no puede almacenar números infinitos, tienen un máximo y un mínimo.
Por ejemplo: int contador=0; int posicion;
-float: se utiliza para almacenar los números reales con precisión simple. Estos números tienen una parte entera y una parte decimal. Al igual que los enteros tienen un máximo y mínimo para almacenar información. Por ejemplo: float precio= 1,35; float pi=3,14149;
CONSTANTES
Una constante es un valor que no varía a lo largo de todo el programa.
Se definen detrás de los includes y el using namespace std y antes del main:
Código: Seleccionar todo
#include<iostream>
using namespace std;
--------------------------- // definición de la constante
a) const tipo_dato nombre_constante = valor
const int N=5;
b) #define nombre_constante valor
#define N 5
OPERADORES
-ARITMETICOS:
a) Binarios: +, - , * , / , %
b) Monarios: - (negativo), ++ (incremento), -- (decremento)
-OPERADORES RELACIONALES:
<, >, <=, >=, == (igual para comparar), != (distinto)
-OPERADORES LOGICOS:
&& (and o y), || (or u o), ! (not o negación (se utiliza para invertir el sentido lógico de las operaciones))
-OPERADOR DE ASIGNACION:
= (para asignar un valor a una variable, ejemplo numero=5)
-OPERADOR PUNTO Y COMA (;) ;
La mayoría de las instrucciones en C/C++ terminan en ; . Se utiliza para separar una instrucción de otra.
FUNCION COUT
La función cout imprime una cadena de caracteres en pantalla. Esta función está definida en la librería iostream. Por eso cada vez que deseemos usarla deberemos incluir en la cabecera del programa la directiva de precompilación #include <iostream>
La sintaxis de la función cout es:
Código: Seleccionar todo
cout<< “hola calamar”; // con esto sacaremos un mensaje por pantalla
Si tenemos una variable (por ejemplo: int num=5) y queremos sacar su valor por patalla sera:
cout<<num;
FUNCION CIN
La función cin permite leer los datos que le metemos al programa por teclado. Al igual que la función cout, cin también utiliza la librería iostream.
Sintaxis:
Si queremos meter un valor a una variable (por ejemplo int edad;), será:
Código: Seleccionar todo
cout<<”Introduce los años que tienes”;
cin>>edad;
BUCLES
Es un conjunto de instrucciones que se repiten un número determinado de veces.
Hay tres tipos: WHILE, DO WHILE, FOR.
WHILE
Código: Seleccionar todo
while (condicion)
{
instruccion1;
instrucciónN;
}
-Iniciarlizar la variable que se utiliza antes del bucle
-Variar la variable dentro del bucle o estarmos en un bucle infinito
Código: Seleccionar todo
( i++; = i=i+1; i--; = i=i-1;)
Ejemplo1: Mostrar los numeros del 1 al 5 por pantalla
Código: Seleccionar todo
#include<iostream>
#include<conio>
using namespace std;
int main ()
{
int i=1;
while(i<=5)
{
cout<<i;
i++;
}
getch(); //esta función sirve para retener y poder visualizar el resultado por pantalla y funciona con la librería conio
return 0;
}
DO WHILE
Código: Seleccionar todo
do
{
instruccion1;
instruccionN;
}
while(condición);
-Por norma general, inicializar la variable antes del bucle
-Modificar la variable dentro del bucle o estaremos en un bucle infinito
Ejemplo2: Programa que pida un nº al usuario y saque por pantalla su tabla de multiplicar
Código: Seleccionar todo
#include<iostream>
#include<conio>
using namespace std;
int main()
{
int N, i=0;
cout<<”Introduce un numero: “<<endl; //endl sirve para saltar de linea
cin>>N;
do
{
cout<<N*i<<endl;
i++;
}
while(i<=10);
getch();
return 0;
}
FOR
Sirve para cuando sabemos cuantas veces tenemos que ejecutar algo. Es un bucle contador
Código: Seleccionar todo
for(variable=valor_inicial ; condicion; incremento)
{
instrucción1;
instrucciónN;
}
-Jamás se debe variar la variable dentro del bucle
Ejemplo3: Programa que pida un nº al usuario y calcular su factorial
Código: Seleccionar todo
#include<iostream>
#include<conio>
using namespace std;
int main()
{
int num, resul, i;
cout<<"Introduce un numero: ";
cin>>num;
resul=1;
for(i=1;i<=num;i++)
{
resul=resul*i;
}
cout<<"El factorial de "<<num<<" es : "<<resul;
getch();
return 0;
}
CONDICIONALES
Sirven para tomar una alternativa o distintos caminos dentro de un programa. Existen dos tipos: IF, SWITCH.
IF
Sirve para tomar un camino ante dos y sólo dos posibles caminos dentro de un programa.
Sirve también para cuando queremos preguntar.
Código: Seleccionar todo
if(condicion)
{
instrucción1;
instrucciónN;
}
-Aunque puede existir un if que no tenga else, lo que no puede existir es un else sin su correspondiente if.
Ejemplo4: Programa que muestre si eres o no mayor de edad.
Código: Seleccionar todo
#include<iostream>
#include<conio>
using namespace std;
int main()
{
int edad;
cout<<"introduce tu edad: ";
cin>>edad;
if(edad>=18)
cout<<"Eres mayor de edad";
else
cout<<"No eres mayor de edad";
getch();
return 0;
}
SWITCH
Sirve para tomar un camino ante varios posibles (generalmente más de dos dentro de un programa). Funciona como varios IF anidados.
Código: Seleccionar todo
switch(variable)
{
case valor1: instruccion1;
break; /*sirve para que cuando entre en un case se salga y no continúe con el siguiente case */
case valorN: instrucciónN;
break;
}
Código: Seleccionar todo
#include<iostream>
#include<conio>
using namespace std;
int main()
{
int opcion;
cout<<"Introduce numero: ";
cin>>opcion;
switch(opcion)
{
case 1: cout<<"Buenos dias";
break;
case 2: cout<<"Buenas tardes";
break;
case 3: cout<<"Buenas noches";
break;
default: cout<<"Error, introduce valor entre 1 y 3";
/*default sirve por si queremos hacer algo que no contemple los case,
en este caso, sacar un mensaje de error */
}
getch();
return 0;
}
Listado de ejercicios
1-Programa que muestre los números pares entre el 1 y el 50
2-Programa que muestre los impares del 1 al 100 descendentemente
3-Programa que indique si un número leído por teclado es primo o no.
4-Programa que muestre los divisores de un número leído por teclado y que muestre el total de divisores que tiene ese numero.
5-Programa que dado un numero escriba el inverso de ese numero (ejemplo: 39=93)
6-Programa que calcule la suma de los 20 primeros pares y el producto de los 20 primeros impares.
7-Programa que lea un número entero positivo y determine el número de dígitos necesarios para la representación de dicho valor.
8-Programa que calcule la potencia de un número, dada la base y el exponente por teclado.
9-Programa que pida un numero y calcule el factorial. Cuando saque el resultado nos preguntará si queremos realizar una operación más.
10-Programa que diga si un numero es bisiesto o no.
11-Calculadora. Pedir dos numeros al usuario y una operación. El programa sumará, restará, multiplicará, dividirá y realizará el modulo. Preguntará si se desea realizar otra operación.