|

66. C++ || Punteros


En esta nueva sección veremos un tema que para muchos representa un gran dolor de cabeza, y con esto me refiero a los punteros en C++. Sin embargo, no nos vamos a apegar a esta mala tradición. No veo la necesidad de decir que los punteros son difíciles de aprender; difícil es que el estudiante estudie y se esfuerce.

Nos adentraremos a fondo en este apartado ya que es muy importante a la hora de programar en C++, y de hecho, este concepto es quien aporta toda la eficiencia que proporciona el lenguaje. Si no existiera la presencia de los punteros en un programa, tal vez no sería tan potente como el programador desearía.

A pesar de no ver el estudio de los punteros como una tarea muy complicada, vamos a entender de dónde nace esto, es decir, el problema a la hora de la enseñanza, es que en todas partes se encuentra el mismo concepto, no importa que sea en un libro, vídeos, en clases o por medio de otra persona, casi siempre dirán lo mismo. Esta práctica al parecer no da mucho resultados, porque si así no lo fuera, no existiría esa idea sobre que entender los punteros es muy difícil. Por eso trataré de crear un contenido más fresco de cara al estudiante. Los tiempos cambian y es sólo la educación la que se queda estancada en mejorar el proceso de aprendizaje. Quizá no han notado la importancia de transmitir los conocimientos de otra manera, y siempre lo han hecho igual; qué mal eso pienso yo.

A lo largo del contenido, que será largo, trataré de explicar este tema desde otro punto de vista, uno que sea totalmente nuevo que sirva para algunos, que de verdad ayude y que sea fácil de comprender porque esa es la verdad; los punteros no generan dificultades…

Tú como lector, me encantaría que me apoyaras en esto que trato de hacer: Buscar una mejor manera de explicar las cosas. Y que tras cada entrada que publique, sea comentada por ti, sugiriendo una mejor forma de decir las cosas. Sin más palabrerías, veamos qué vamos a aprender ahora.

  • ¿Qué son las referencia y direcciones?
  • Concepto claro de los punteros.
  • Declaración e inicialización de punteros.
  • Indirección de punteros.
  • Punteros NULL y void.
  • Puntero a puntero.
  • Punteros y arrays.
  • Arrays de punteros.
  • Ventajas de los punteros.
  • Punteros de cadenas.
  • Aritmética de punteros.
  • Punteros constantes frente a punteros a constantes.
  • Punteros como argumentos de funciones.
  • Punteros a funciones.
  • Punteros a estructuras.


Y que la cantidad de contenidos no asuste a nadie, todo es cuestión de hacer un esfuerzo para ser mejor.

Similar Posts

12 Comments

  1. #include
    using namespace std;

    int main () {
    int n, suma = 0;
    cin >> n;
    int i = 1;
    while (i<=n){
    suma = suma + i;
    ++i;
    }
    cout << suma << endl;
    }

  2. No entiendo el que son las referencias y direcciones y lo demas que menciono en la pagina donde lo encuentro ?? por favor me puedan responder lo mas pronto posible.

  3. Implementar un algoritmo que imprima el elemento que se repite m�as
    veces en un vector de enteros, de la siguiente forma:
    • El programa debe llenar el vector con 50 valores random, entre 1 y
    49
    • Luego se debe contar las veces que aparece cada elemento y generar
    un vector de valores y otro de frecuencias
    • Se debe borrar el elemento que se repite m�as veces y el que se repite
    menos veces del vector original
    • Finalmente, calcular la suma de los elementos pares del vector
    original luego del borrado, y la suma de los elementos impares luego
    del borrrado

  4. #include
    #include
    #include
    #include

    using std::cout; using std::cin;
    using std::endl; using std::string;
    #define T 20
    #define RANGO T
    #define MITAD T/2
    bool Valida_nun(int vec[], int pos_j , int &t);

    /* SOLO CAMBIAD T PARA TAMAÑO DEL VECTOR Y RANGO PARA SU RANGO:: RANGO-1*/
    // std::vector , "es mas sencillo".
    // tomad en cuenta que por vector de tam 50 tiene un aprox. de casi 1000 iteraciones

    //RECORDAD SIEMPRE LIBERAR MEMORIA

    // ESTETICAMENTE NO ESTA BONITO

    int main() {

    srand(time(0x0)); // time
    const int TAM = (T / 3) + MITAD;
    auto vector = new int[T]; // creacion dinamica del vector entero
    auto frecuencia = new int[TAM+1]{}; // creacion de vector frecuencia.. si es 50 , 25 es suficiente
    auto valores = new int[TAM+1]{}; // creacion de vector valores.. igual que frecuencia

  5. for (int n = 0; n < T; n++)
    vector[n] = 1 + rand() % (T-1); // llenando de 1 -> 49 aleatoriamente por for
    int conteo(0) ,a(0);
    int i, j;
    int tot = 0;
    for ( j = 0; j < T; j++)
    {
    if (!Valida_nun(vector, j,tot)) { // si no se encuentra el num nuevamente en vector,agregalo.
    valores[conteo++] = vector[j];

    }
    else
    continue;
    for ( i = j; i < T; i++)
    if (vector[j] == vector[i]) { // hacer el conteo en frecuencia de la misma posicion
    frecuencia[a] += 1;
    // tot++;
    }
    a++;
    }
    a = 0;
    cout << "Valores Frecuencia" << endl;
    while (valores[a])
    {
    cout << valores[a]<<" "< new int[50]
    delete[] frecuencia; // igual que arriba
    delete[] valores; // igual
    cout<< endl;
    return EXIT_SUCCESS;
    }

    bool Valida_nun(int vec[], int pos_j , int &t) {
    for (int i = 0; i < pos_j; i++) {
    //t = t+1;
    if (vec[i] == vec[pos_j])
    return true;
    }

    return false;
    }

Leave a Reply

Your email address will not be published. Required fields are marked *