Fundamentos de Programación en C++: Punteros, Estructuras y Principios SOLID

Enviado por Chuletator online y clasificado en Informática y Telecomunicaciones

Escrito el en español con un tamaño de 3,74 KB

1. Definición de Clases y Objetos en C++

A continuación, se presenta un ejemplo de cómo definir un nuevo tipo de dato utilizando la Programación Orientada a Objetos (POO):

#include <iostream>
#include <string>

using namespace std;

class Alumno {
public:
    string nombre;
    int edad;
    float promedio;
    char grupo;
    bool inscrito;
};

int main() {
    Alumno obj;
    cout << "Clase Alumno creada con 5 atributos exitosamente." << endl;
    return 0;
}

2. Acceso Indirecto mediante Punteros

Este programa demuestra cómo acceder a los miembros de un objeto utilizando punteros y el operador flecha (->):

#include <iostream>
#include <string>

using namespace std;

class Alumno {
public:
    string nombre;
    int edad;
    float promedio;
    char grupo;
    bool inscrito;
};

int main() {
    Alumno miAlumno;
    Alumno *ptrAlumno = &miAlumno;

    ptrAlumno->nombre = "Ian";
    ptrAlumno->edad = 20;
    ptrAlumno->promedio = 9.5;
    ptrAlumno->grupo = 'A';
    ptrAlumno->inscrito = true;

    cout << "Datos del alumno (acceso indirecto):" << endl;
    cout << "Nombre: " << ptrAlumno->nombre << endl;
    cout << "Edad: " << ptrAlumno->edad << endl;

    return 0;
}

3. Matriz Tridimensional y Aritmética de Punteros

Para recorrer una matriz de 3x3x3 con un solo ciclo y aritmética de punteros:

int matriz[3][3][3] = {0};
int *ptr = &matriz[0][0][0];
int totalElementos = 3 * 3 * 3;

for(int i = 0; i < totalElementos; i++) {
    *(ptr + i) = i;
    cout << *(ptr + i) << " ";
}

4. Estructuras de Datos: Comparativa

ElementoEstructuraAcceso (LIFO/FIFO)Operación principal
Pila (Stack)LinealLIFO (Last In, First Out)push / pop
Cola (Queue)LinealFIFO (First In, First Out)enqueue / dequeue
ListaLinealAleatorio/Secuencialinsert / delete

5. Algoritmos de Ordenamiento: Burbuja

Implementación del método de ordenamiento burbuja simple sobre un arreglo:

for(int i = 0; i < totalElementos - 1; i++) {
    for(int j = 0; j < totalElementos - i - 1; j++) {
        if(*(ptr + j) > *(ptr + j + 1)) {
            int temp = *(ptr + j);
            *(ptr + j) = *(ptr + j + 1);
            *(ptr + j + 1) = temp;
        }
    }
}

6. Conceptos Fundamentales

  • Puntero: Es una variable que almacena la dirección de memoria de otra variable. Sintaxis: tipo_dato *nombre_puntero;. Ejemplo: int *ptr = &numero;.
  • Recursividad: Técnica donde una función se llama a sí misma para resolver subproblemas. Requiere un caso base.
  • ADT (TDA): Tipo de Dato Abstracto; modelo matemático que define datos y operaciones sin especificar su implementación interna.

7. Principios SOLID: Sustitución de Liskov (LSP)

Este principio establece que los objetos de una clase derivada deben poder sustituir a los de su clase base sin alterar la integridad del sistema. Respetar el LSP garantiza que el código sea modular y que las jerarquías de clase sean consistentes.

8. Representación Binaria

Ejemplo de binario de boleta: 1111000101111000011110000011100

Entradas relacionadas: