miércoles, 20 de febrero de 2019

Condicionales en C++

CONDICIONALES PROGRAMACIÓN
Brayan Acosta 1003

Existen diferentes tipos de condicionales, cada uno tiene una utilidad y funcionalidad diferente, que consideran diferentes situaciones que se pueden llegar a presentar durante la ejecución de un algoritmo. Depende entonces del conocimiento que tengamos acerca de cada uno de los condicionales saber determinar correctamente cuando es necesario implementar uno u otro. Tenemos a nuestra disposición los siguientes tipos de condicionales en C++:

Resultado de imagen para c++ condicionales
Como mencioné anteriormente, cada uno de estos condicionales tiene ciertas características que lo hacen útil para algunos casos específicos, a lo largo de los contenidos de esta sección veremos cada uno de estos al detalle, aprendiendo durante el proceso los componentes de un condicional, sintaxis de los condicionales y esas características particulares que permiten decidir cual usar en qué momento, veremos también el concepto de condicionales anidados, y algunas otras cositas
Te recuerdo, que aunque intentaré profundizar bastante en cada concepto, lo haré enfocándome hacia el uso de los condicionales en el lenguaje C++ y no tanto hacia la parte de la lógica de estas estructuras condicionales en particular, si tienes problemas con la correcta comprensión de la lógica y utilidad de cualquier tipo de condicional o de los condicionales en general, te invito a que primero leas la sección de Fundamentales de Condicionales, en dicha sección podrás comprender correctamente el funcionamiento de un condicional y de cada tipo de estos y posteriormente podrás regresar a esta sección para aprender a implementar un condicional en C++ de manera mucho mas fácil y adecuada.

miércoles, 13 de febrero de 2019

C++

C++ QUE ES


C++ es un lenguaje de programación diseñado en 1979 por Bjarne Stroustrup. La intención de su creación fue extender al lenguaje de programación C mecanismos que permiten la manipulación de objetos. En ese sentido, desde el punto de vista de los lenguajes orientados a objetos, el C++ es un lenguaje híbrido.
Resultado de imagen para q es c++Posteriormente se añadieron facilidades de programación genérica, que se sumaron a los paradigmas de programación estructurada y programación orientada a objetos. Por esto se suele decir que el C++ es un lenguaje de programación multiparadigma.
Actualmente existe un estándar, denominado ISO C++, al que se han adherido la mayoría de los fabricantes de compiladores más modernos. Existen también algunos intérpretes, tales como ROOT.
Una particularidad del C++ es la posibilidad de redefinir los operadores, y de poder crear nuevos tipos que se comporten como tipos fundamentales.
El nombre "C++" fue propuesto por Rick Mascitti en el año 1983, cuando el lenguaje fue utilizado por primera vez fuera de un laboratorio científico. Antes se había usado el nombre "C con clases". En C++, la expresión "C++" significa "incremento de C" y se refiere a que C++ es una extensión de C.

La definición "oficial" del lenguaje nos dice que C++ es un lenguaje de propósito general basado en el C, al que se han añadido nuevos tipos de datos, clases, plantillas, mecanismo de excepciones, sistema de espacios de nombres, funciones inline, sobrecarga de operadores, referencias, operadores para manejo de memoria persistente, y algunas utilidades adicionales de librería (en realidad la librería Estándar C es un subconjunto de la librería C++) 

Ejemplos

A continuación se cita un programa de ejemplo Hola mundo escrito en C++:
/* Esta cabecera permite usar los objetos que encapsulan los descriptores stdout
y stdin: cout(<<) y cin(>>)*/
#include <iostream>

using namespace std;

int main()
{
    cout << "Hola mundo" << endl;
    return 0;
}

lunes, 11 de febrero de 2019

Vectores

Vector (informática)


En programación se le denomina vector es un arreglo generalmente asociados a los arreglos unidimensionales. Es una zona de almacenamiento contiguo, que contiene una serie de elementos del mismo tipo y se distinguen entre si por un indice. Vector también es la clase de la librería estándar de C++, que funciona como arreglo dinámico. El vector es una de las múltiples estructuras llamadas contenedores (otras son los conjuntos, mapas y listas).





En programación(de una sola dimensión) se le denomina vector o formación (en inglés array)1​ a una zona de almacenamiento contiguo que contiene una serie de elementos del mismo tipo, los elementos de la matriz.2​ Desde el punto de vista lógico una matriz se puede ver como un conjunto de elementos ordenados en fila (o filas y columnas si tuviera dos dimensiones).
En principio, se puede considerar que todas las matrices son de una dimensión, la dimensión principal, pero los elementos de dicha fila pueden ser a su vez matrices (un proceso que puede ser recursivo), lo que nos permite hablar de la existencia de matrices multidimensionales, aunque las más fáciles de imaginar son los de una, dos y tres dimensiones.
Estas estructuras de datos son adecuadas para situaciones en las que el acceso a los datos se realice de forma aleatoria e impredecible. Por el contrario, si los elementos pueden estar ordenados y se va a utilizar acceso secuencial sería más adecuado utilizar una lista, ya que esta estructura puede cambiar de tamaño fácilmente durante la ejecución de un programa.

Índices[editar]

Todo vector se compone de un determinado número de elementos. Cada elemento es referenciado por la posición que ocupa dentro del vector. Dichas posiciones son llamadas índice y siempre son correlativos. Existen tres formas de indexar los elementos de una matriz:
  • Indexación base-cero (0): en este modo el primer elemento del vector será la componente cero ('0') del mismo, es decir, tendrá el índice '0'. En consecuencia, si el vector tiene 'n' componentes la última tendrá como índice el valor 'n-1'. El lenguaje C es un ejemplo típico que utiliza este modo de indexación.
  • Indexación base-uno (1): en esta forma de indexación, el primer elemento de la matriz tiene el índice '1' y el último tiene el índice 'n' (para una matriz de 'n' componentes).
  • Indexación base-n (n): este es un modo versátil de indexación en la que el índice del primer elemento puede ser elegido libremente, en algunos lenguajes de programación se permite que los índices puedan ser negativos e incluso de cualquier tipo escalar (también cadenas de caracteres).

Notación[editar]

La representación de un elemento en un vector se suele hacer mediante el identificador del vector seguido del índice entre corchetes, paréntesis o llaves:
NotaciónEjemplos
vector[índice_1,índice_2...,índice_N]LuaPerl, etc.
vector[índice_0][índice_1]...[índice_N-1]CC++PHPJava, etc.
vector(índice_1,índice_2...,índice_N)BasicMATLAB
Aunque muchas veces en pseudocódigo y en libros de matemática se representan como letras acompañadas de un subíndice numérico que indica la posición a la que se quiere acceder. Por ejemplo, para un vector "A":
 (vector unidimensional)

Forma de acceso[editar]

La forma de acceder a los elementos de la matriz es directa; esto significa que el elemento deseado es obtenido a partir de su índice y no hay que ir buscándolo elemento por elemento (en contraposición, en el caso de una lista, para llegar, por ejemplo, al tercer elemento hay que acceder a los dos anteriores o almacenar un apuntador o puntero que permita acceder de manera rápida a ese elemento).
Para trabajar con vectores muchas veces es preciso recorrerlos. Esto se realiza por medio de bucles. La siguiente fuente escrita en el lenguaje C muestra un algoritmo típico para recorrer un vector '' y aplicar una función '' a cada una de las componentes del vector:
int i = 0;
int longitud = 99; // longitud del vector Ej. 99 
int V[longitud];

while(i < longitud) //Ej. con While
{
    //Se realiza alguna operación con el vector en la i-ésima posición
    f( V[i] ); 

    //Se aumenta el índice para la siguiente etapa
    i= i+1; // Tambien podria escribirse como i++; o i+= 1;
}

Vectores dinámicos y estáticos[editar]

Lo habitual es que un vector tenga una cantidad fija de memoria asignada, aunque dependiendo del tipo de vector y del lenguaje de programación un vector podría tener una cantidad variable de datos. En este caso, se les denomina vectores dinámicos, en oposición, a los vectores con una cantidad fija de memoria asignada se los denomina vectores estáticos.3
El uso de vectores dinámicos requiere realizar una apropiada gestión de memoria dinámica. Un uso incorrecto de los vectores dinámicos, o mejor dicho, una mala gestión de la memoria dinámica, puede conducir a una fuga de memoria. Al utilizar vectores dinámicos siempre habrá que liberar la memoria utilizada cuando ésta ya no se vaya a seguir utilizando.
Lenguajes más modernos y de más alto nivel, cuentan con un mecanismo denominado recolector de basura (como es el caso de Java) que permiten que el programa decida si debe liberar el espacio basándose en si se va a utilizar en el futuro o no un determinado objeto.

Ejemplos en C[editar]

  • Declaración en C/C++ de un vector estático.
int main(void)
{
  int i, v[5];  // v[5] es un vector de 5 componentes (Indexación base-cero)

  for(i=0; i<5; i++)
  {
    v[i] = 0; // Asignamos un valor
    printf("%d\n", v[i]);
    printf("\n");  // Crea una nueva línea
  }
  return 0;
}
  • Declaración en C/C++ de un vector estático utilizando aritmética de punteros.
Siendo el identificador del vector, un puntero constante que contiene la dirección del comienzo del vector (vector[0], primer elemento)
int main(void)
{
  int i, v[5];  // v[5] es un vector de 5 componentes (Indexación base-cero)

  for(i=0; i<5; i++)
  {
    *(v + i) = 0; // Asignamos un valor en la dirección (vector + ((índice * sizeof (int) cantidad de bytes de desplazamiento desde la base.)
    printf("%d\n", *(v + i));
    printf("\n");  // Crea una nueva línea
  }
  return 0;
}
  • Declaración en C++ de un vector de STL:
#include <vector>

vector<int> v; // Si no se especifica el tamaño inicial es 0

for(int i=0 ;i<5 ;i++)
{
  v.push_back(2*i); // inserta un elemento al final del vector
}
El ejemplo anterior está hecho para el lenguaje C++. En C, para crear vectores dinámicos se tendrían que utilizar las instrucciones malloc y realloc para reservar memoria de forma dinámica (ver biblioteca stdlib.h), y la función free para liberar la memoria utilizada.
Resultado:
01234
02468
El resultado de los dos ejemplos es el mismo vector.

Vectores multidimensionales[editar]

En BasicJava y otros lenguajes es posible declarar matrices multidimensionales, entendiéndolas como un vector de x dimensión. En dichos casos el número de elementos del vector es el producto resultante de cada dimensión.
Por ejemplo el vector v(4,1) tiene 10 elementos se calcula del siguiente modo: (0-4) * (0-1). Los elementos de la primera dimensión del vector contiene 5 elementos que van del '0' al '4' y la 2º dimensión tiene 2 elementos que van desde '0' a '1'. Los elementos serían accedidos del siguiente modo:
elemento 1: (0,0)
elemento 2: (0,1)
elemento 3: (1,0)
...
elemento 8: (3,1)
elemento 9: (4,0)
elemento 10: (4,1)

Véase también[editar]