Programación I – Conceptos clave

0.0(0)
studied byStudied by 0 people
0.0(0)
full-widthCall with Kai
learnLearn
examPractice Test
spaced repetitionSpaced Repetition
heart puzzleMatch
flashcardsFlashcards
GameKnowt Play
Card Sorting

1/222

flashcard set

Earn XP

Description and Tags

Conjunto de tarjetas estilo pregunta-respuesta que abordan los conceptos esenciales de Programación I: algoritmos, estructuras de control, tipos de datos, programación en C, vectores, matrices, registros, punteros, archivos, recursividad y listas enlazadas.

Study Analytics
Name
Mastery
Learn
Test
Matching
Spaced
Call with Kai

No study sessions yet.

223 Terms

1
New cards

¿Qué es un algoritmo?

Una secuencia finita y ordenada de pasos lógicos que permiten resolver un problema.

2
New cards

Menciona los tres pasos básicos para construir un algoritmo.

1) Análisis del problema, 2) Diseño del algoritmo, 3) Verificación/Pruebas.

3
New cards

Cita dos características fundamentales que debe cumplir todo algoritmo.

Debe ser preciso y finito (tener inicio y fin definidos).

4
New cards

¿Qué tipos de lenguajes de programación existen según su nivel?

Lenguaje binario (máquina), lenguaje ensamblador (bajo nivel) y lenguajes de alto nivel.

5
New cards

Ventaja principal de un lenguaje de alto nivel sobre uno ensamblador.

Son independientes del hardware y más cercanos al lenguaje humano, facilitando la programación.

6
New cards

¿Qué es un programa?

Conjunto de instrucciones que, ejecutadas en orden, solucionan un problema.

7
New cards

¿Qué etapas recorre un programa en C desde que se escribe hasta que se ejecuta?

Edición, compilación, linkeo, posible depuración y ejecución.

8
New cards

Define dato e indica sus tres características.

Un dato es un valor manipulable por el programa; posee nombre, tipo y valor.

9
New cards

¿Cuál es la diferencia entre tipo de dato estándar y definido por el usuario?

El estándar viene predefinido en el lenguaje; el definido por el usuario lo crea el programador a partir de tipos básicos.

10
New cards

Diferencia entre constante y variable.

La constante mantiene su valor durante toda la ejecución; la variable puede cambiarlo.

11
New cards

¿Qué operador se usa para la asignación en C?

El signo igual (=).

12
New cards

¿Para qué sirve la función scanf?

Para leer datos desde la entrada estándar y almacenarlos en variables.

13
New cards

¿Para qué sirve printf?

Para mostrar datos o mensajes en la salida estándar.

14
New cards

Explica la estructura selectiva "if" simple.

Evalúa una condición y ejecuta un bloque de instrucciones solo si la condición es verdadera.

15
New cards

¿Qué es el operador condicional "? :"?

Operador ternario que permite decidir entre dos expresiones en una sola línea.

16
New cards

Nombra tres estructuras de repetición básicas en C.

for, while y do-while.

17
New cards

¿Qué diferencia existe entre while y do-while?

while evalúa la condición antes de entrar al bucle; do-while la evalúa al final, garantizando al menos una iteración.

18
New cards

¿Para qué sirve la sentencia switch/case?

Para seleccionar una entre múltiples alternativas según el valor de una variable entera o carácter.

19
New cards

¿Qué realiza la sentencia break dentro de un switch?

Termina la ejecución del case actual y sale de la estructura switch.

20
New cards

Define diagrama de flujo.

Representación gráfica de un algoritmo usando símbolos conectados por líneas de flujo.

21
New cards

¿Qué es el seudocódigo?

Notación descriptiva intermedia entre lenguaje natural y lenguaje de programación que especifica algoritmos.

22
New cards

Partes principales de un programa en C.

Directivas #include, declaración de constantes/tipos/variables y función main con el cuerpo del programa.

23
New cards

¿Qué simboliza el operador & en C?

Devuelve la dirección de memoria de una variable (operador "dirección de").

24
New cards

¿Y el operador * aplicado a un puntero?

Indirecciona: accede al contenido de la dirección almacenada en el puntero.

25
New cards

Define puntero.

Variable que contiene la dirección de memoria de otra variable.

26
New cards

Explica cómo se pasa un argumento por referencia en C.

Enviando a la función la dirección (&var) y recibiéndola como puntero (*ptr); así la función puede modificar la variable original.

27
New cards

¿Qué relación existe entre arreglos y punteros?

El nombre de un arreglo se comporta como un puntero al primer elemento; arr[i] equivale a *(arr+i).

28
New cards

Sintaxis para declarar un vector de 50 enteros llamado v.

int v[50];

29
New cards

¿Cómo se declara una matriz de 3 filas y 4 columnas de float?

float m[3][4];

30
New cards

¿Qué es un struct en C?

Tipo de dato compuesto que agrupa variables de distintos tipos en un mismo registro.

31
New cards

Ventaja de usar registros (struct).

Permiten modelar objetos reales agrupando múltiples datos relacionados bajo un solo nombre.

32
New cards

¿Para qué sirve typedef con estructuras?

Para asignar un nombre personalizado al tipo struct y simplificar futuras declaraciones.

33
New cards

Concepto de recursividad.

Técnica donde una función se llama a sí misma para resolver un problema dividiéndolo en subproblemas más simples.

34
New cards

Elementos imprescindibles de una función recursiva.

Caso base (condición de parada) y paso recursivo (llamada a sí misma con datos más simples).

35
New cards

Define archivo (file) en programación.

Estructura dinámica almacenada en disco que contiene registros datos y puede crecer o reducirse durante la ejecución.

36
New cards

Función para abrir un archivo y sus parámetros principales.

fopen(nombre, modo) donde modo puede ser "r", "w", "a", "r+", etc.

37
New cards

¿Para qué sirven fprintf y fscanf?

Para escribir y leer texto formateado en/desde archivos usando un descriptor FILE*.

38
New cards

¿Qué representan stdin y stdout?

Flujos estándar de entrada y salida (teclado y pantalla por defecto).

39
New cards

Explica una lista simplemente enlazada.

Estructura dinámica donde cada nodo contiene datos y un puntero al siguiente nodo.

40
New cards

¿Cómo difiere una lista doblemente enlazada?

Cada nodo posee dos punteros: uno al siguiente y otro al nodo anterior, permitiendo recorrer la lista en ambos sentidos.

41
New cards

¿Qué es malloc?

Función que reserva dinámicamente un bloque de memoria y devuelve un puntero al inicio del bloque.

42
New cards

¿Por qué es importante liberar memoria dinámica?

Para evitar fugas (memory leaks) y devolver la memoria al sistema; se usa free(ptr).

43
New cards

Operadores lógicos básicos en C.

&& (AND), || (OR) y ! (NOT).

44
New cards

¿Qué indica la precedencia de operadores?

El orden en que se evalúan los operadores dentro de una expresión; ^ o (), * / %, + -, etc.

45
New cards

¿Qué hace la función sizeof?

Devuelve (en bytes) el tamaño ocupado en memoria por una variable o tipo de dato.

46
New cards

¿Para qué sirve el cast (tipo)expr en C?

Convierte explícitamente el valor de una expresión a otro tipo de dato.

47
New cards

Diferencia entre memoria estática y dinámica.

La estática se reserva en tiempo de compilación (globals, arrays fijos); la dinámica se reserva y libera en tiempo de ejecución (malloc/free).

48
New cards

¿Qué es un buffer?

Zona temporal de memoria usada para almacenar datos mientras se transfieren entre el programa y un dispositivo o archivo.

49
New cards

Explica la sentencia continue dentro de un bucle.

Salta el resto de las instrucciones del ciclo actual y pasa directamente a la próxima iteración.

50
New cards

¿Qué es un algoritmo?

Una secuencia finita y ordenada de pasos lógicos que permiten resolver un problema.

51
New cards

Menciona los tres pasos básicos para construir un algoritmo.

1) Análisis del problema, 2) Diseño del algoritmo, 3) Verificación/Pruebas.

52
New cards

Cita dos características fundamentales que debe cumplir todo algoritmo.

Debe ser preciso y finito (tener inicio y fin definidos).

53
New cards

¿Qué tipos de lenguajes de programación existen según su nivel?

Lenguaje binario (máquina), lenguaje ensamblador (bajo nivel) y lenguajes de alto nivel.

54
New cards

Ventaja principal de un lenguaje de alto nivel sobre uno ensamblador.

Son independientes del hardware y más cercanos al lenguaje humano, facilitando la programación.

55
New cards

¿Qué es un programa?

Conjunto de instrucciones que, ejecutadas en orden, solucionan un problema.

56
New cards

¿Qué etapas recorre un programa en C desde que se escribe hasta que se ejecuta?

Edición (escribir el código), compilación (traducir a lenguaje de máquina), linkeo (unir partes), posible depuración (encontrar errores) y ejecución (correr el programa).

57
New cards

Define dato e indica sus tres características.

Un dato es un valor manipulable por el programa; posee nombre (cómo lo llamas), tipo (qué clase de dato es, ej. número, texto) y valor (el contenido actual).

58
New cards

¿Cuál es la diferencia entre tipo de dato estándar y definido por el usuario?

El estándar viene predefinido en el lenguaje (como int para números enteros); el definido por el usuario lo crea el programador a partir de tipos básicos para organizar mejor la información (como un struct para agrupar datos de una persona).

59
New cards

Diferencia entre constante y variable.

La constante mantiene su valor fijo durante toda la ejecución del programa (ej. PI 3.14159); la variable puede cambiar su valor en cualquier momento durante la ejecución (ej. la edad de una persona que se actualiza).

60
New cards

¿Qué operador se usa para la asignación en C?

El signo igual (=). Por ejemplo, x = 10; significa que a la variable x se le asigna el valor 10.

61
New cards

¿Para qué sirve la función scanf?

Para leer datos que el usuario introduce desde la entrada estándar (normalmente el teclado) y guardarlos en variables dentro del programa.

62
New cards

¿Para qué sirve printf?

Para mostrar datos o mensajes en la salida estándar (normalmente la pantalla de la consola).

63
New cards

Explica la estructura selectiva "if" simple.

Evalúa una condición. Si esa condición es verdadera, ejecuta un bloque de instrucciones; si es falsa, simplemente salta ese bloque y continúa con el resto del programa.

64
New cards

¿Qué es el operador condicional "? :"?

Es un operador especial que permite decidir rápidamente entre dos valores o expresiones basándose en una condición, todo en una sola línea. Su sintaxis es condicion ? expresion1 : expresion2;.

65
New cards

Nombra tres estructuras de repetición básicas en C.

for, while y do-while. Se usan para repetir un bloque de código varias veces.

66
New cards

¿Qué diferencia existe entre while y do-while?

while evalúa la condición antes de entrar al bucle, por lo que podría no ejecutarse ninguna vez si la condición es falsa desde el principio. do-while evalúa la condición después de ejecutar el bucle por primera vez, garantizando que el bloque de código se ejecute al menos una vez.

67
New cards

¿Para qué sirve la sentencia switch/case?

Para seleccionar de forma limpia y eficiente una entre múltiples alternativas posibles, basándose en el valor de una variable entera o de tipo carácter. Evita muchos if-else if anidados.

68
New cards

¿Qué realiza la sentencia break dentro de un switch?

Termina inmediatamente la ejecución del case actual y saca el control del programa fuera de la estructura switch. Es crucial para evitar que se ejecuten los siguientes case de forma indeseada.

69
New cards

Define diagrama de flujo.

Representación gráfica de un algoritmo usando símbolos estandarizados (cuadrados, rombos, círculos, etc.) conectados por líneas (flechas) que indican el flujo de ejecución. Es útil para visualizar la lógica.

70
New cards

¿Qué es el seudocódigo?

Es una forma de escribir algoritmos que está a medio camino entre el lenguaje natural (como el español) y un lenguaje de programación real. Usa palabras clave comunes (Inicio, Fin, Leer, Escribir, Si...Entonces...FinSi) para describir los pasos de una manera estructurada y fácil de entender.

71
New cards

Partes principales de un programa en C.

  1. Directivas de preprocesador: Líneas que empiezan con # (ej. #include <stdio.h> para incluir librerías).
  2. Declaración de constantes, tipos y variables: Donde defines los datos que usarás.
  3. Función main(): Es el corazón del programa, donde empieza la ejecución y se escriben las instrucciones principales.
72
New cards

¿Qué simboliza el operador & en C?

Devuelve la dirección de memoria donde está almacenada una variable. Es decir, te dice "dónde vive" la variable en la RAM. (Es el operador "dirección de").

73
New cards

¿Y el operador * aplicado a un puntero?

Cuando se aplica a un puntero, "indirecciona": accede al contenido que está guardado en la dirección de memoria a la que apunta el puntero. Es decir, te permite ver o modificar el dato "que vive en esa dirección".

74
New cards

Define puntero.

Una variable especial cuyo valor no es un dato directamente (como un número o una letra), sino una dirección de memoria. Guarda el "domicilio" de otra variable, permitiendo acceder a ella de forma indirecta.

75
New cards

Explica cómo se pasa un argumento por referencia en C.

En lugar de enviar el valor de una variable a una función, se envía su dirección de memoria (usando &var). La función recibe esta dirección con un puntero (tipo *nombre_ptr). Así, los cambios que la función haga a través del puntero (*nombre_ptr = ...;) afectan directamente a la variable original, no a una copia.

76
New cards

¿Qué relación existe entre arreglos y punteros?

El nombre de un arreglo (vector o matriz) se comporta como un puntero constante al primer elemento de ese arreglo. Puedes acceder a los elementos usando arr[i] o, de forma equivalente, *(arr + i) (desplazamiento de punteros).

77
New cards

Sintaxis para declarar un vector de 50 enteros llamado v.

int v[50];

78
New cards

¿Cómo se declara una matriz de 3 filas y 4 columnas de float?

float m[3][4];

79
New cards

¿Qué es un struct en C?

Es un tipo de dato que te permite agrupar variables de diferentes tipos (como un nombre de texto, una edad entera, una altura decimal) bajo un único nombre para formar un "registro" o "ficha" más complejo. Es útil para modelar objetos reales.

80
New cards

Ventaja de usar registros (struct).

Permiten modelar objetos complejos del mundo real (como un alumno con nombre, edad, y calificación) agrupando múltiples datos relacionados, incluso de distintos tipos, bajo un solo nombre. Esto hace que el código sea más organizado, legible y fácil de manejar.

81
New cards

¿Para qué sirve typedef con estructuras?

Es una palabra clave que sirve para crear un "alias" o un "apodo" para un tipo de dato existente. Con estructuras (struct), se usa para dar un nombre más corto y legible al struct, simplificando las futuras declaraciones de variables de ese tipo.
Ejemplo: typedef struct Persona { ... } DatosPersona; permite luego hacer DatosPersona miPersona; en lugar de struct Persona miPersona;.

82
New cards

Concepto de recursividad.

Una técnica de programación donde una función se llama a sí misma para resolver un problema, dividiéndolo en versiones más pequeñas y simples del mismo problema. Imagina resolver una tarea grande dividiéndola en tareas idénticas pero más manejables, hasta llegar a la más simple que ya sabes cómo resolver.

83
New cards

Elementos imprescindibles de una función recursiva.

  1. Caso Base: Es la condición de parada. Es la versión más simple del problema que ya se puede resolver directamente, sin más llamadas recursivas. Sin esto, la función se llamaría a sí misma infinitamente.
  2. Paso Recursivo: Es la parte donde la función se llama a sí misma, pero con una versión más pequeña o simplificada del problema original, acercándose al caso base.
84
New cards

Define archivo (file) en programación.

En programación, un archivo es una estructura dinámica de datos almacenada en un disco (no en la memoria RAM, que se borra al apagar el programa). Contiene registros o datos que el programa puede leer o escribir, y puede crecer o reducirse de tamaño durante la ejecución del programa.

85
New cards

Función para abrir un archivo y sus parámetros principales.

fopen(nombre_del_archivo, modo_de_apertura).

  • nombre_del_archivo: Cadena de texto con la ruta y el nombre del archivo (ej. "datos.txt").
  • modo_de_apertura: Cadena que indica cómo quieres abrir el archivo:
    • "r": para leer (read).
    • "w": para escribir (write), crea el archivo si no existe o lo sobrescribe si ya existe.
    • "a": para añadir (append), escribe al final del archivo.
    • "r+": para leer y escribir (el archivo debe existir).
    • "rb", "wb", etc.: para modos binarios (archivos de bytes crudos).
86
New cards

¿Para qué sirven fprintf y fscanf?

Ambas son versiones de printf y scanf pero para archivos:

  • fprintf: Se usa para escribir datos o texto formateado en un archivo (en lugar de la pantalla), usando un descriptor FILE* que representa el archivo abierto.
  • fscanf: Se usa para leer datos o texto formateado desde un archivo (en lugar del teclado), también usando un descriptor FILE*.
87
New cards

¿Qué representan stdin y stdout?

stdin (Standard Input) representa el flujo de entrada estándar, que por defecto es el teclado desde donde el usuario introduce datos.
stdout (Standard Output) representa el flujo de salida estándar, que por defecto es la pantalla de la consola donde el programa muestra sus resultados.
También existe stderr (Standard Error), para mensajes de error.

88
New cards

Explica una lista simplemente enlazada.

Es una estructura de datos dinámica donde los elementos (llamados "nodos") están enlazados uno tras otro. Cada nodo contiene los datos que queremos guardar y un puntero (una dirección de memoria) que "apunta" al siguiente nodo en la lista. El último nodo apunta a NULL.

89
New cards

¿Cómo difiere una lista doblemente enlazada?

A diferencia de la lista simplemente enlazada, donde cada nodo solo tiene un puntero al siguiente, en una lista doblemente enlazada, cada nodo tiene dos punteros: uno que apunta al siguiente nodo y otro que apunta al nodo anterior. Esto permite recorrer la lista en ambos sentidos (hacia adelante y hacia atrás).

90
New cards

¿Qué es malloc?

Es una función de C que se usa para reservar dinámicamente un bloque de memoria en el "heap" (una zona de memoria disponible). Devuelve un puntero al inicio de ese bloque de memoria. Se usa para asignar memoria en tiempo de ejecución, es decir, mientras el programa se está ejecutando, y no antes.

91
New cards

¿Por qué es importante liberar memoria dinámica?

Porque la memoria que se reserva dinámicamente con malloc (u otras funciones similares) no se libera automáticamente al terminar una función o al salir de un bloque de código. Si no liberas esta memoria con free(ptr) cuando ya no la necesitas, se produce una "fuga de memoria" (memory leak): esa memoria permanece ocupada por tu programa y no puede ser utilizada por otros programas ni por el sistema operativo, lo que puede causar problemas de rendimiento o bloqueos a largo plazo.

92
New cards

Operadores lógicos básicos en C.

&& (AND lógico): Devuelve verdadero (1) si ambas condiciones son verdaderas.
|| (OR lógico): Devuelve verdadero (1) si al menos una de las condiciones es verdadera.
! (NOT lógico): Invierte el valor de verdad de una condición (verdadero se vuelve falso, y falso se vuelve verdadero).

93
New cards

¿Qué indica la precedencia de operadores?

Es el orden en que se aplican los operadores en una expresión matemática o lógica. Por ejemplo, la multiplicación (*) y la división (/) tienen mayor precedencia que la suma (+) y la resta (-), lo que significa que se calculan primero. Los paréntesis () siempre tienen la mayor precedencia y fuerzan el orden de evaluación.

94
New cards

¿Qué hace la función sizeof?

Devuelve el tamaño en bytes que ocupa en memoria una variable o un tipo de dato. Es útil para la asignación dinámica de memoria o para saber cuánta memoria utiliza una estructura.

95
New cards

¿Para qué sirve el cast (tipo)expr en C?

Sirve para convertir explícitamente el valor de una expresión de un tipo de dato a otro. Se hace colocando el nuevo tipo de dato entre paréntesis delante de la expresión que se quiere convertir.
Ejemplo: (float)numero_entero / 2;

96
New cards

Diferencia entre memoria estática y dinámica.

  • Memoria Estática: Se reserva en el momento de la compilación del programa y su tamaño es fijo. Se usa para variables globales y arrays de tamaño predefinido. Se libera automáticamente al terminar el programa.
  • Memoria Dinámica: Se reserva y se libera en tiempo de ejecución, es decir, mientras el programa se está ejecutando (usando funciones como malloc y free). Su tamaño puede variar y el programador es responsable de gestionarla explícitamente.
97
New cards

¿Qué es un buffer?

Una zona temporal de memoria que se usa para almacenar datos mientras se transfieren entre el programa y un dispositivo (como el teclado, la pantalla, un disco duro) o un archivo. Actúa como un intermediario para optimizar la velocidad de las operaciones de entrada/salida.

98
New cards

Explica la sentencia continue dentro de un bucle.

Cuando se encuentra dentro de un bucle (for, while, do-while), continue salta el resto de las instrucciones del ciclo actual y pasa directamente a la próxima iteración del bucle. Es útil para omitir ciertos pasos bajo una condición específica.

99
New cards

¿Qué es un compilador?

Un programa que traduce el "código fuente" (el que escribes en un lenguaje como C) a "código máquina" (instrucciones que la computadora puede entender y ejecutar directamente).

100
New cards

¿Qué es el código fuente?

Es el texto legible del programa que escribes usando un lenguaje de programación (como C). Este texto es el que luego el compilador traduce a código máquina.