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
breaktermina 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
continueinterrumpe únicamente la iteración actual, pero no rompe el bucle. Cuando el programa lee uncontinue, ignora todo lo que queda por ejecutarse en esa vuelta y salta inmediatamente al principio del bucle para evaluar la condición (en unwhile) o incrementar el contador (en unfor).
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
into de flotantesfloat). - Structs: Son estructuras de datos heterogéneas; permiten agrupar elementos de diferentes tipos de datos bajo un mismo nombre (por ejemplo, un
structalumno puede contener unintpara el legajo y unstringpara 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 delgetline(cin, var)para limpiar el buffer. - Tuplas: Para el retorno se usa
make_tuple(a, b)y para desarmar la tupla se utilizatie(a, b) = tupla_resultado. - Nota importante: ¡No olvidarse de utilizar el operador de referencia
&cuando sea necesario!