LENGUAJE C SEGUNDO PARCIAL Flashcards

(42 cards)

1
Q

¿Qué es una matriz en C?

A

Es una estructura de datos que almacena múltiples elementos del mismo tipo en posiciones contiguas de memoria.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

¿Qué es un apuntador en C?

A

Es una variable que almacena la dirección de memoria de otra variable.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

¿Cómo se pasan las matrices a funciones usando apuntadores?

A

Se pasa la dirección de la primera posición de la matriz o un puntero que la representa, evitando copiar toda la matriz.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

¿Cómo se representa una matriz bidimensional con apuntadores?

A

Puede representarse como un puntero a punteros, ya que cada fila es un puntero al primer elemento de esa fila.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Ejemplo de declaración de función que recibe una matriz bidimensional

A

void procesarMatriz(int (*matriz)[3], int filas);

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Ejemplo de declaración de función que usa apuntadores y dimensiones

A

int sumarMatriz(int *ptr, int filas, int columnas);

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Ventajas del uso de apuntadores con matrices

A

A1: Eficiencia: se evita copiar la matriz al pasarla a funciones.
A2: Manipulación flexible: se pueden crear funciones para manejar matrices de diferentes tamaños.
A3: Acceso dinámico: permite trabajar con matrices cuyo tamaño se define en tiempo de ejecución.
A4: Mayor control de la memoria.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Desventajas del uso de apuntadores con matrices

A

A1: El código se vuelve más difícil de leer.
A2: Mayor posibilidad de errores (por ejemplo, errores de segmentación).
A3: Difícil depuración.
A4: Restricciones de tipo: deben coincidir los tipos de datos.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Dificultades comunes al usar apuntadores con matrices

A

A1: Errores de indexación (acceder a memoria no deseada).
A2: Confusión en la notación cuando se usan varios niveles de apuntadores.
A3: Manejo complejo de memoria dinámica.
A4: Uso de punteros a punteros.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Ejemplo para insertar elementos en una matriz usando apuntadores

A

*(ptr + i * columnas + j) (donde ptr apunta al primer elemento de la matriz).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Ejemplo para imprimir elementos de una matriz usando apuntadores

A

printf(“%d “, *(ptr + i * columnas + j));

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Ejemplo para sumar elementos de una matriz usando apuntadores

A

suma += *(ptr + i * columnas + j);

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Ejemplo de uso de apuntadores con matrices (forma sencilla)

A

void sumaMatriz(int (*matriz)[3], int filas) {
int suma = 0;
for (int i = 0; i < filas; i++) {
for (int j = 0; j < 3; j++) {
suma += matriz[i][j];
}
}
printf(“La suma de los elementos es: %d\n”, suma);
}

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

¿Qué sucede cuando una variable se pasa por valor a una función?

A

La función recibe una copia y cualquier cambio dentro de la función no afecta la variable origina

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

¿Cómo se pueden pasar argumentos a funciones en C?

A

Por valor (se pasa una copia) o por referencia usando apuntadores (se pasa la dirección de memoria).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

¿Qué sucede cuando una variable se pasa por referencia con un apuntador?

A

La función puede modificar directamente el valor de la variable original.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Ventajas de usar apuntadores en funciones

A

A1: Permiten modificar variables fuera del ámbito de la función.
A2: Optimizan memoria, evitando copias de datos.
A3: Son esenciales para trabajar con estructuras de datos dinámicas.

17
Q

Ejemplo básico de función que usa un apuntador para modificar una variable

A

void incrementar(int ptr) {
(
ptr)++;
}

18
Q

¿Qué relación tienen los arreglos y los apuntadores en C?

A

Un arreglo es esencialmente un apuntador al primer elemento de la secuencia.

19
Q

Equivalencia importante entre arreglos y apuntadores

A

arr[i] es equivalente a *(arr + i).

20
Q

¿Cómo se obtiene la dirección base de un arreglo?

21
Q

Ejemplo de recorrido de un arreglo con apuntadores

A

int arr[] = {10, 20, 30, 40, 50};
int *ptr = arr;
for (int i = 0; i < 5; i++) {
printf(“Elemento %d: %d\n”, i, *(ptr + i));
}

21
Q

¿Cómo puede un apuntador recorrer un arreglo?

A

Usando aritmética de apuntadores, por ejemplo: *(ptr + i).

22
Q

¿Qué es la aritmética de apuntadores en C?

A

Es el conjunto de operaciones que permiten mover un apuntador a través de la memoria.

23
Operaciones comunes de aritmética de apuntadores
A1: ptr++ — avanza al siguiente elemento. A2: ptr-- — retrocede al elemento anterior. A3: ptr + n — avanza n posiciones. A4: ptr - n — retrocede n posiciones.
24
¿Cómo se representan las cadenas de texto en C?
Como arreglos de caracteres terminados en \0.
25
¿Cómo se puede recorrer una cadena usando apuntadores?
Avanzando mientras *cadena sea distinto de \0: while (*cadena) { printf("%c", *cadena); cadena++; }
26
¿Por qué es útil manipular cadenas con apuntadores?
Porque permite realizar operaciones como recorrido, concatenación, copia y comparación de forma eficiente.
27
¿Qué es un arreglo?
Es una estructura de datos que almacena elementos del mismo tipo en posiciones contiguas de memoria.
27
¿Qué es una matriz en C?
Es un arreglo bidimensional o multidimensional, organizado en filas y columnas.
27
¿Cómo se declara un arreglo unidimensional en C?
int numeros[5];
28
¿Cómo se declara una matriz bidimensional en C?
int matriz[3][3];
29
Beneficios de usar arreglos y matrices
A1: Permiten almacenar y manipular grandes volúmenes de datos eficientemente. A2: Facilitan el acceso rápido mediante índices. A3: Mejoran la organización de datos (por ejemplo, en tablas y listas). A4: Son clave en algoritmos como ordenamiento y búsqueda.
30
Limitaciones de los arreglos y matrices en C
A1: Tamaño fijo, no redimensionables dinámicamente. A2: Pueden usar memoria de forma ineficiente si se declaran demasiado grandes. A3: No hay verificación de límites (riesgo de errores de acceso).
31
Buenas prácticas para usar arreglos y matrices
A1: Definir tamaños adecuados para el programa. A2: Usar constantes para definir tamaños (evitar "hardcoding"). A3: Verificar índices antes de acceder a los elementos. A4: Usar memoria dinámica (malloc, calloc) si se requiere flexibilidad.
32
Fallos comunes al usar arreglos y matrices
A1: Desbordamiento de límites (acceder fuera del rango). A2: Uso de memoria no inicializada. A3: Confusión entre filas y columnas en matrices bidimensionales. A4: Olvidar el terminador nulo (\0) en arreglos de caracteres.
33
¿Para qué se usa break en C?
Se usa para salir inmediatamente de un ciclo (for, while, do-while), sin importar si se cumplió la condición. Ejemplo: for (int i = 0; i < 10; i++) { if (i == 5) break; printf("%d\n", i); }
34
¿Para qué sirve continue en C?
Permite saltar al siguiente ciclo omitiendo el resto del código de la iteración actual. Ejemplo: for (int i = 0; i < 10; i++) { if (i == 5) continue; printf("%d\n", i); }
35
Aplicaciones comunes de arreglos y matrices
A1: Almacenar listas de datos (números, nombres, registros). A2: Tablas de puntuaciones en juegos. A3: Procesamiento de imágenes (matrices de píxeles). A4: Implementación de algoritmos de ordenamiento y búsqueda. A5: Cálculo de matrices matemáticas.
36
¿Qué es goto y cómo se usa?
goto salta a una etiqueta dentro del programa. ⚠️ Su uso es desaconsejado por hacer el código difícil de leer (código espagueti). Ejemplo: if (x < 0) goto error; ... error: printf("Error detectado\n");
37
38