Week 2 - Section (Arrays) Flashcards

(38 cards)

1
Q

¿Cuál es el propósito principal de usar un array en programación C?

A

Almacenar múltiples valores del mismo tipo de datos de forma contigua en la memoria, en lugar de usar variables individuales dispersas.

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

¿Cuáles son las tres especificaciones que se deben proporcionar al declarar un array en C?

A

Un tipo de dato, un nombre para el array y un tamaño.

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

Escribe la sintaxis en C para declarar un array de enteros llamado hours que pueda almacenar 5 elementos.

A

int hours[5];

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

En C, los arrays tienen un tamaño _____, lo que significa que su tamaño debe ser especificado desde el principio y no puede cambiar durante la ejecución (según lo visto en la Semana 2 de CS50).

A

fijo

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

En C, un array solo puede contener valores de un _____ tipo de dato.

A

único

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

¿Qué es la ‘indexación basada en cero’ (0-indexed) en el contexto de los arrays?

A

Es el principio de que el primer elemento de un array se encuentra en el índice 0, el segundo en el índice 1, y así sucesivamente.

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

Dado el array int hours[5];, ¿cómo se accedería al primer valor del array?

A

Usando la sintaxis hours[0].

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

¿Cómo se asigna el valor 7 al primer elemento de un array de enteros llamado hours?

A

hours[0] = 7;

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

¿Cuál es la sintaxis para declarar e inicializar un array de enteros llamado numbers con los valores 1, 2, 4, 8 y 16 en una sola línea?

A

int numbers[5] = {1, 2, 4, 8, 16};

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

En C, un string es fundamentalmente un array de ____.

A

caracteres (chars)

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

¿Qué carácter especial se encuentra al final de cada string en C para indicar su terminación?

A

El carácter nulo (\0).

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

Si un string es “Hello”, ¿qué carácter se encuentra en word[1]?

A

El carácter ‘e’.

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

¿Cuál es la longitud del string “Hello” y cuántos bytes ocupa en memoria, incluyendo su terminador?

A

La longitud es 5, pero ocupa 6 bytes en memoria para incluir el carácter nulo (\0).

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

Cuando una computadora compara dos caracteres, como ‘H’ y ‘E’, ¿qué está comparando realmente?

A

Está comparando sus valores numéricos correspondientes en la tabla ASCII.

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

¿Qué valor numérico corresponde al carácter nulo (\0) en la tabla ASCII?

A

El valor 0.

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

En C, el tipo de dato string (como se usa en CS50) en realidad no es un tipo de dato nativo fuera de la librería de CS50. Es un alias para un tipo más fundamental. ¿Cuál es?

A

Es un alias para char * (un puntero a un carácter), que representa una secuencia de caracteres.

17
Q

Para imprimir un solo carácter en C usando printf, ¿qué especificador de formato (placeholder) se utiliza?

A

Se utiliza %c.

18
Q

Para imprimir el valor ASCII de un carácter como un entero, ¿qué especificador de formato se utiliza en printf?

A

Se utiliza %i.

19
Q

¿Qué son los argumentos de línea de comandos (CLAs)?

A

Son los argumentos o valores que se pasan a un programa cuando se ejecuta desde la terminal.

20
Q

En el comando make mario, ¿cuál es el argumento de línea de comandos?

A

El argumento es mario.

21
Q

¿Cómo debe modificarse la firma de la función main en C para aceptar argumentos de línea de comandos?

A

Debe cambiarse de int main(void) a int main(int argc, string argv[]).

22
Q

En int main(int argc, string argv[]), ¿qué representa el parámetro argc?

A

argc (argument count) es un entero que representa el número total de argumentos de línea de comandos, incluyendo el nombre del programa.

23
Q

En int main(int argc, string argv[]), ¿qué representa el parámetro argv?

A

argv (argument vector) es un array de strings que contiene los argumentos de línea de comandos reales.

24
Q

En el array argv, ¿qué valor se almacena siempre en el índice 0 (argv[0])?

A

El nombre del programa que se está ejecutando.

25
Si se ejecuta el comando `./caesar 13`, ¿cuál será el valor de `argc`?
El valor de `argc` será 2.
26
Si se ejecuta el comando `./caesar 13`, ¿qué string se almacenará en `argv[1]`?
El string "13".
27
¿Por qué es crucial verificar el valor de `argc` al inicio de un programa que espera argumentos de línea de comandos?
Para asegurarse de que el usuario ha proporcionado el número correcto de argumentos necesarios para que el programa funcione correctamente.
28
Si un programa espera un argumento de línea de comandos y el usuario no proporciona ninguno, intentar acceder a `argv[1]` probablemente resultará en un error de _____.
fallo de segmentación (segmentation fault)
29
¿Qué hace la función `strlen` de la librería `string.h`?
Calcula y devuelve la longitud de un string, sin contar el carácter nulo terminador.
30
¿Qué hace la función `isalpha` de la librería `ctype.h`?
Verifica si un carácter dado es una letra del alfabeto, devolviendo un valor verdadero si lo es.
31
Para usar la función `isalpha`, ¿qué archivo de cabecera (header) se debe incluir en el programa C?
Se debe incluir `#include `.
32
Por convención, ¿qué valor devuelve un programa en C desde `main` para indicar que se ejecutó con éxito?
Devuelve `0`.
33
Si un programa devuelve un valor distinto de cero desde `main` (por ejemplo, `return 1;`), ¿qué suele significar?
Suele significar que ocurrió un error durante la ejecución del programa.
34
¿Cuál es una mejor práctica de diseño para evitar el uso de 'números mágicos' (como un 5 repetido) para el tamaño de un array en un programa?
Declarar el tamaño como una constante al principio del programa (ej. `const int SIZE = 5;`) y usar esa constante en todo el código.
35
¿Por qué es más eficiente calcular la longitud de un string una vez y almacenarla en una variable antes de un bucle, en lugar de llamar a `strlen` en la condición del bucle?
Porque llamar a `strlen` repetidamente en cada iteración del bucle hace que la función tenga que recalcular la longitud del string una y otra vez, lo cual es ineficiente.
36
Dado el array `int data[] = {10, 20, 30};`, ¿cuál es el índice del valor 30?
El índice es 2.
37
¿Qué es un 'fallo de segmentación' (segmentation fault)?
Es un error que ocurre cuando un programa intenta acceder a una ubicación de memoria a la que no tiene permiso, como un índice fuera de los límites de un array.
38
En un bucle `for` que itera sobre un array de tamaño `N`, la condición es típicamente `i < N` en lugar de `i <= N`. ¿Por qué?
Porque los índices del array van de 0 a `N-1`. Usar `i <= N` intentaría acceder al índice `N`, que está fuera de los límites del array.