Introduccion al Lenguaje C++

Curso de C++

Curso de C++

1 Parte I

Este curso esta dirigido a principiante que deseen aprender el Leguaje C++. He reunido
en ésta entrada, a dos entradas que publiqué por separado anteriormente y se ha añadido
el tema de las sentencias de control.

Se va a mantener un indice del contenido para tratar la mayor cantidad de temas del curso
en un numero minimo de entradas.

El curso no esta finalizado y está en desarrollo constante.

1.1 Intruduccion a C++

C++ es un leguaje de programacion multiparadigma ampliamente utilizado en la industria
del software.
Desde el espacio hasta el fondo del mar se encuentra C++.
Los videos juegos de alto rendimiento grafico son programados en C++.

C++ es un lenguaje compilado. Para que un programa se ejecute, su texto fuente debe ser
procesado por un compilador, produciendo archivos objetos, los cuales son combinados por
un linker produciendo un programa ejecutable.

1.2 Lo basico

El programa minimo en C++ luce asi:
int main() {} //el progama mas sencillo en C++
Todo programa en C++ debe contenar una o mas funciones, y una de ella debe llamarse main,
si la funcion tiene argumentos se colocan entre parentesis.

Las llaves { }, indican el inicio y fin del cuerpo de la funcion.

Para definir una función principal main, debemos tener en cuenta cuatro elementos básicos:

  • el tipo de retorno de la función
  • el nombre de la función
  • una lista de parámetros entre paréntesis y
  • un bloque de instrucciones entre {}.
Una la función main (principal) debe tener la siguiente forma:
int main ()
{
   return 0;
}
En código fuente anterior se declara a la función main con un tipo de retorno entero (int), y
una lista de parámetros que puede estar vacía entre paréntesis (). El bloque de instrucciones
se escribe dentro las llaves {}. Como vemos en éste ejemplo sólo tenemos una instrucción llamada
return 0, la cual finaliza la función main retornando un valor compatible con el tipo con
la cual fue daclarada la función.
Como veremos en el transcurso del curso todas las instrucciones son finalizadas con un punto y
coma ";" si no se coloca el ";" obtendremos un mesaje de error del compilador.

Si se compila y se ejecuta el programa anterior no se obtiene ningún resultado.

1.3 Introducción a la entrada y salida en C++

El núcleo del lenguaje C++ carece de sentencias para manejar directamente las facilidades de
flujo de datos de entrada y salida. Para ello el lenguaje C++ contiene un conjunto de biblioteca
de apoyo con las facilidades que necesitamos. Para hacer uso de una biblioteca, debemos indicar
al compilador el nombre de la bibliteca que vamos a utilizar con la instruccion #include.

Las bibloteca estandar como iostream son desarrolladas por un comité para dar apoyo al lenguaje.
El comite se asegura que las librerias estandares sean compatibles con el universo de sistemas
operativos existentes.

Nosotros tambien podemos desarrollar nuestras priopias bibliotecas e incorporlarlas a nuestros
programas con la misma intrucción #include.

Cuando vamos utilizar una biblioteca estandar especificamos el nombre entre parentesis angulares <>.
Para el caso de bibliotecas creadas por nosotros mismos u otra persona, el nombre debe estar entre
comillas " ".

#include <iostream>
/#include "mi bibloteca"/
La biblioteca iostream tiene como algunas de sus funciones manejar la secuencia de caracteres
leídos desde el teclado y también, la secuencias de caracteres a ser escritos en la pantalla.

La biblioteca iostream define dos objetos, uno llamado cin para manejar las entradas y cout
para manejar las salidas.

Para ilustrar un ejemplo muy sencillo de como utilizar la biblioteca iostream vamos hacer un
programa que solicite al usuario que escriba un numero en el teclado y luego escribirlo en la
pantalla:

#include <iostream>
  int main ()
  {
   std::cout << "Introduzca un numero: " << std::endl;
   int numero = 0;
   std::cin >> numero;
   std::cout << "El numero introducido es:" << numero << std::endl;
   return 0;
  }
La primera linea del programa
#include <iostream>
le indica al compilador que incluya las declaraciones de las utilidades estándar de flujo de
E/S de iostream.
Escribir caracteres en la salida
La primera sentencia dentro del cuerpo de main ejecuta una expresión.

std::cout << "Introduzca un numero: " << std::endl;

Una expresión esta compuesta por uno o mas operando (std::cout, "Introduzca un numero") y un
operador (<<).
El operador << muestra un mensaje en la salida estándar.
El prefijo std:: indica que los nombres cout y endl se definen en el espacio de nombres
llamado std.

Leer caracteres de la entrada
Después de pedir la entrada por teclado, lo siguiente es leer esa entrada, para ello debemos
definir una variable donde vamos a guardar la entrada puesta en buffer de la entrada

int numero = 0;
la variable numero, puede contener dato de tipo entero (int) y al mismo tiempo de la declaración
inicializamos la variable con el valor de cero "0".

La próxima sentencia
std::cin >> numero;
lee la entrada. El operador de entrada (>>) se comporta igual que al operador de salida pero de
manera inversa.
Lee los datos en el flujo de entrada y almacena lo que lee en el objeto indicado (numero).

Terminando el programa
Lo que resta es imprimir el valor leído en la salida estándar
std::cout << "El numero introducido es:" << numero << std::endl;
Esta sentencia es muy parecida a la primera con la única diferencia que además de la cadena
de caracteres entre comillas también imprime le valor contenido en la variable numero. Como
vemos el operador << puede manejar varios tipos de operandos, como una cadena de texto,
valores enteros, e incluso tiene la capacidad de evaluar una expresión aritmética e imprimir
el resultado de la misma.

Otro programa que utiliza la librería IO
Con el siguiente ejemplo podemos ver como cout, tiene la capacidad de imprimir el resultado
de una expresión aritmética, para eso el siguiente programa pide al usuario introducir dos
números enteros y luego imprime la suma en pantalla:
#include <iostream>
int main()
{
  std::cout << "introduzca dos numeros" << std::endl;
  int n1 = 0, n2 = 0;
  std::cin >> n1 >> n2;
  std::cout << "La suma de" << n1 << " y " << n2 << " es; " << n1 + n2 << std::endl;
  return 0;
}
Como vemos el operador << puede majerar una variedad de operandos: la cadena de texto
"La suma de", los valores enteros como numero1 y numero2, y el resultado de la expresión
aritmética n1 + n2 son tratados tambien como operandos y se impreme el resultado en la salida
estandar (generalmente en pantalla).

1.4 Sentencias del control del flujo del programa

Las sentencias en un programa se ejecutan secuencialmente, es decir se ejecuta la primera
sentencia, luego la segunda, y así sucesivamente. Si necesitamos ejecutar varias veces una
secuencia o un grupo de ellas, o si necesitamos establecer condiciones para que se ejecuten
un bloque de secuencias, la mayoría de los lenguajes de programación proporcionan varias
sentencias de control de flujo que permiten flujo de ejecución mas complejas.

1.4.1 La Sentencia While

La sentencia while (mientras que) ejecuta una sección de código hasta que la condición
establecida es verdadera, de lo contrario, es decir, si la prueba de la condicion resulta
falsa, sale del bucle y continua con el código siguiente después del bloque while que
esta finalizado con una llave '}'.
Una condición while tiene la siguiente estructura
while (condición)
sentencias
Como ejemplo vamos a utilizar la sentencia while para escribir un programa que sume los
números del 1 al 10 :
 1: // Programa suma los numeros del 1 al 10 usando la sentencia while
 2: #include <iostream>
 3: 
 4: int main()
 5: {
 6:    int sum = 0, val = 1;
 7:    while (val <= 10){ //ejecuta bloque while hasta que val se menor o igual a 10
 8:      sum += val; //suma val a sum
 9:      ++val; // suma 1 a val
10:    }
11:    std::cout << " La suma de 1 al 10 es: " << sum << std::endl;
12:    return 0;
13:  }
Compile, enlace y ejecute este programa (sin la numeración de las lineas)
Salida: La suma de 1 al 10 es: 55
Explicacion del Codigo
La primera linea iniciamos con // para escribir un comentario en la misma linea.
En la linea 2 como en todo programa en C++ primero incluimos la cabecera iostream que
proporciona las facilidads de entrada y salida.
En la linea 4 definimos la función main e iniciamos el cuerpo de la funcion con la llave
{ en la linea 5.
Dentro de main en la linea 6 se definen dos variables, sum y val con el tipo entero
(int). En sum vamos a totalizar la suma progresiva de los numeros desde 1 al 10 y se inicializa
con el valor de cero. La variable val se inicializa con 1, en cada ciclo de while
incrementará su valor en una unidad.
La linea 8 suma el valor contenido en la variable sum es decir:

sum += val
es equivalente a:
sum = sum + val.
La linea 9 suma 1 a valor contenido en la variable val.
siguiente instrucción:
++val;
que es equivalente a:
val = val + 1;
La linea 10 cierra el cuerpo de while, se evalua nuevamete la condicion establecidad en
linea 7, es decir si val es menor igual a 10 (val <= 10).
Si el resultado de la evaluacion es verdadera se ejecuta el nuevamente las sentencias dentro
del cuerpo de while de lo contrario salta a la linea 10 donde termina el cuerpo de while
y continua ejecutando las sentencias que se encuentran despues de la llave final del cuerpo
de while es decir la linea 11 que imprime en pantalla el valor de la variable sum y la
linea 12 que finaliza programa con la sentencia return.

1.4.2 La Sentencia For

Con la sentencia for podemos obtener el mismo resultado obtenido con while
Reescribimos el programa con la sentencia for para sumar los numeros del 1 al 10 de la
siguiente manera:

 1: // Programa suma los numeros del 1 al 10 usando la sentencia for
 2: #include <iostream>
 3: 
 4: int main()
 5: {
 6:    int sum = 0;
 7:    for (int val = 1; val <= 10; ++val)
 8:  sum += val;
 9:    std::cout << " La suma de 1 al 10 es: " << sum << std::endl;
10:    return 0;
11:  }
En la linea 6 se define a sum y se inicializa en cero.
En ésta versión definimos val como parte del la sentencia for:
for (int val = 1; val <= 10; ++val) sum += val;
La sentencia for tiene dos partes: una cabecera y un cuerpo. La cabecera indica como se ejecutará
el cuerpo. Como vemos la cabecera en sí está compuesta por tres partes: la inicialización, la
condición
y la expresion. En éste ejemplo la sentencia de inicialización es:

int val = 1;
define un objeto de tipo entero llamado val con un valor inicial de 1. La variable val sólo
existe dentro del bucle for; al finalizar el bucle ya no es posible usarla. También podemos ver
que la sentencia de inicialización sólo se ejecuta una sola vez.

La sentencia de condición:

val <= 10;
compara el valor contenido en val con el numero 10; y la condición se comprueba cada vez que se
repita el bucle. Mientras que val sea menor o igual a 10, se ejecuta el cuerpo de for. La expresion
se ejecuta despues del cuerpo de for. La expresion

++val
utiliza el operador prefijo de incremento para sumar 1 al valor de la variable val. Después de ejecutar
la expresión, for vuelve a probar la condición. Si el nuevo valor de val es menor o igual a 10, entonces
el cuerpo del bucle for se ejecuta nuevamente. Después de ejecutarse el bloque de sentencias o cuerpo val
se incrementa de nuevo. El bucle continua hasta que la condición sea falsa.

En éste bucle, el cuerpo de for realiza la sumatoria

sum += val; // equivalente a sum = sum + val
Para resumir, en general el flujo de este for es:

  • Crear val e inicializar a 1.
  • Prueba si val es menor o igual a 10. Si la prueba es exitosa, ejecuta el bloque de for. Si la
    prueba falla, sale del bucle y continúa la ejecución con la primera sentencia después del bloque for.
  • Incrementar val.
  • Repite la prueba del paso 2, continuando con los pasos restantes siempre que la condición es verdadera.

1.4.3 La Sentencia If

La sentencia if apoya la ejecución condicionada. Como ejemplo podemos utilizar if para
rescribir el programa de la sección 1.3 para que solicite al usuario dos números para restarlos,
validando que el primer número sea mayor o igual al segundo.

 1: //solicita dos numeros para restarlos asegurando que el primero
 2: //sea mayor o igual al segundo
 3: #include <iostream>
 4: int main()
 5: {
 6:   std::cout << "introduzca dos numeros" << std::endl;
 7:   int n1 = 0, n2 = 0;
 8:   std::cin >> n1;
 9:   std::cin >> n2;
10:   if (n1 >= n2){
11:        std::cout << "La resta de " << n1 << " menos " << n2 << " es; " << n1 - n2 << std::endl;
12:   }else{
13:        std::cout << "el primer numero es menor al segundo" << std::endl;
14:  }
15: 
16:  return 0;
17: }

1.5 Variable y Tipos Basicos

1.6 String, Vectores, y Arrays

1.6.1 El Tipo String

  1. Definiendo y Inicializando Strings (cadenas)
  2. Operaciones en Strings
  3. Manejando Caracteres en un String

1.6.2 El Tipo Vector

  1. Definiendo y Inicializando Vectores
  2. Agregando Elementos a un Vector
  3. Otras Operaciones de Vectores

1.6.3 Introduccion a los Iteradores

1.6.4 Arrays

1.6.5 Arrays Multidimensionales

Author:Intelligencia
Created: 2017-01-03 mar 20:47
Emacs 24.5.1 (Org mode 8.2.10)

Comentarios

Entradas populares de este blog

Mover formas simples en pantalla con C++ y SFML

Dibujar formas simples con C++ y SFML

Como Mover Formas Simples Con el Teclado con C++ y SFML