Conceptos Fundamentales de Programación en C++: Funciones, Estructuras y Compilación

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

Escrito el en español con un tamaño de 5,04 KB

1. Funciones: Sobrecarga y Parámetros por Defecto

a) ¿Qué entiende por “sobrecarga” de funciones? ¿Y por “parámetros por defecto”? Dé un ejemplo de cada una (solo prototipos).

La sobrecarga de funciones permite que existan dos o más funciones con el mismo nombre, siempre que se diferencien en su lista de parámetros (ya sea por la cantidad de parámetros o por sus tipos de datos).
Ejemplo: int sumar(int a, int b); y int sumar(int a, int b, int c);

Los parámetros por defecto (o predeterminados) son valores que se especifican en la declaración de la función para que, en caso de que el usuario decida no pasarle ese argumento al momento de llamarla, la función use ese valor automáticamente. Siempre se deben colocar al final de la lista de parámetros.
Ejemplo: void imprimir(string mensaje, int veces = 1);

2. Estructuras de Control: Break y Continue

b) ¿Qué hacen “break” y “continue” dentro de una estructura de control iterativa?

  • La sentencia break termina inmediatamente la ejecución del bucle en el que se encuentra. El programa ignora cualquier código restante dentro del bloque repetitivo y sale del bucle.
  • La sentencia continue interrumpe únicamente la iteración actual, pero no rompe el bucle. Cuando el programa lee un continue, ignora todo lo que queda por ejecutarse en esa vuelta y salta inmediatamente al principio del bucle para evaluar la condición (en un while) o incrementar el contador (en un for).

3. Diferencias entre Arreglos y Structs

Homogeneidad vs. Heterogeneidad de los datos

  • Arreglos: Son estructuras de datos homogéneas; es decir, contienen elementos del mismo tipo de dato (por ejemplo, un vector de enteros int o de flotantes float).
  • Structs: Son estructuras de datos heterogéneas; permiten agrupar elementos de diferentes tipos de datos bajo un mismo nombre (por ejemplo, un struct alumno puede contener un int para el legajo y un string para el nombre).

Forma de acceso a los elementos (Índice vs. Campo)

  • Arreglos: Se accede a sus elementos de forma posicional mediante el uso de índices numéricos encerrados entre corchetes (por ejemplo, vector[i]).
  • Structs: Se accede a sus elementos (llamados campos o miembros) utilizando el operador punto (.) seguido del nombre específico del campo (por ejemplo, alumno.legajo).

4. Recursividad en Funciones

¿Qué significa que una función sea recursiva? ¿Es habitual observar una estructura de control iterativa en una función recursiva? ¿Y una condicional?

Significa que la función se llama a sí misma (ya sea de forma directa o indirecta) durante su ejecución para resolver un problema.

  • ¿Estructura iterativa? No, no es habitual. Las estructuras iterativas (for, while, do-while) se utilizan para resolver problemas de manera iterativa, no recursiva.
  • ¿Estructura condicional? Sí, es absolutamente obligatoria. Toda función recursiva necesita tener al menos una estructura condicional (if / else) para evaluar si se ha alcanzado el punto de parada (caso base).

5. Compilación y Ejecución

¿Qué significa compilar un programa? ¿Es posible ejecutar un programa sin compilarlo?

Compilar es traducir el código fuente a código máquina o ejecutable. En lenguajes compilados como C++ no es posible ejecutarlo sin compilarlo previamente. En lenguajes interpretados, sí puede ejecutarse mediante un intérprete.

6. Apuntes Técnicos y Sintaxis Útil

#include <iostream>
using namespace std;

int main(int argc, char *argv[]) {
    return 0;
}
  • Función con retorno struct: nombre_struct nombre_funcion() { }
  • Ingreso de structs a un vector de tamaño dinámico:
    vector<nombre_struct> a;
    nombre_struct x;
    cin >> x.tipo;
    a.push_back(x);
  • Uso de getline: Recordar colocar cin.ignore() antes del getline(cin, var) para limpiar el buffer.
  • Tuplas: Para el retorno se usa make_tuple(a, b) y para desarmar la tupla se utiliza tie(a, b) = tupla_resultado.
  • Nota importante: ¡No olvidarse de utilizar el operador de referencia & cuando sea necesario!

Entradas relacionadas: