0% encontró este documento útil (0 votos)
9 vistas32 páginas

Estructuras

El documento detalla una actividad académica sobre la codificación de algoritmos modulares y la implementación de estructuras de datos en lenguaje C, enfocándose en el desarrollo de un programa para automatizar el control del Programa de Actividades Extracurriculares (PAE) en una preparatoria. Se abordan conceptos clave como la modularización, el paso de parámetros entre funciones y la organización de datos mediante estructuras. Además, se incluye un código fuente que ejemplifica la solución propuesta y su funcionamiento.

Cargado por

Edgar Solano
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
9 vistas32 páginas

Estructuras

El documento detalla una actividad académica sobre la codificación de algoritmos modulares y la implementación de estructuras de datos en lenguaje C, enfocándose en el desarrollo de un programa para automatizar el control del Programa de Actividades Extracurriculares (PAE) en una preparatoria. Se abordan conceptos clave como la modularización, el paso de parámetros entre funciones y la organización de datos mediante estructuras. Además, se incluye un código fuente que ejemplifica la solución propuesta y su funcionamiento.

Cargado por

Edgar Solano
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

1

Universidad Abierta y a Distancia


de México
División de Ciencias Exactas, Ingeniería y
Tecnología Desarrollo de software

Semestre: Primero
Unidad didáctica: Fundamentos de programación
Unidad de aprendizaje: Funciones y estructuras de
datos
Actividad: Evidencia de aprendizaje. Codificación de
algoritmos modulares e implementación de una
estructura de datos.
Nombre del estudiante: Jesús Edgar Solano
Sánchez
Matrícula: ES251117963
Grupo: DS-DFPR-2601-B1-027
Figura académica: Carlos Raul Montaño Espinosa
Fecha de entrega: 10 de marzo de 2026
Ciudad de México, marzo del 2026
2

ÍNDICE

Contenido
ÍNDICE...............................................................................................................................2

INTRODUCCIÓN...............................................................................................................4

Comunicación entre Módulos: Paso de Parámetros......................................................6

Organización de la Información: Estructuras de Datos..................................................6

DESARROLLO DE LA ACTIVIDAD...................................................................................9

...........................................................................................................................................9

Construye tu propuesta de solución en lenguaje C..................................................10

.........................................................................................................................................11

Código fuente...............................................................................................................12

CONCLUSIÓN.................................................................................................................30

REFERENCIAS BIBLIOGRÁFICAS................................................................................32

GLOSARIO DE TERMINOS............................................................................................33
3

INTRODUCCIÓN

La evolución de la informática ha transformado la manera en que los seres humanos

resuelven problemas, pasando de una programación manual y física en las primeras

computadoras a lenguajes de alto nivel que simplifican la escritura de código, en sus inicios el

desarrollo del lenguaje C recibió influencia directa de los lenguajes BCPL y B a finales de los

sesenta, consolidándose como una herramienta fundamental en la ingeniería para evitar el

desorden lógico conocido como "código espagueti". En este contexto, el dominio de

metodologías como el diseño descendente (Top-Down), la implementación técnica mediante

funciones y la organización de la información a través de estructuras de datos resultan pilares

indispensables para el desarrollo de software profesional, eficiente y mantenible. (Battistutti

Cairó, 2006, pág. 22).

En los albores de la computación, los programas se escribían en una sola pieza, pero la

complejidad creciente exigió la modularización o descomposición funcional, el diseño

descendente es una metodología basada en la reducción de problemas, la cual consiste en

dividir un problema general extenso en subproblemas más pequeños y manejables. Este

enfoque permite la abstracción, es decir, que el programador se concentre en el "panorama

general" ignorando temporalmente los detalles técnicos de bajo nivel. Si la solución se diseña

correctamente de arriba hacia abajo, el programa resultante será significativamente más fácil

de entender, depurar y modificar. (Farrell, 2013, pág. 62)

En el lenguaje C, la solución a cada subproblema identificado en el diseño modular se

expresa mediante una función, la cual es un bloque de código diseñado para realizar una tarea

específica.
4

 Declaración, Definición e Invocación: Un programa en C constituye una secuencia de

funciones donde el control siempre inicia en la función main, el proceso requiere una

declaración o prototipo para informar al compilador sobre la existencia de la función,

una definición que contiene las instrucciones lógicas reales y una invocación o llamada

que atrae al módulo para su ejecución, regresando el control al punto de partida una vez

finalizada la tarea.

 Alcance de las variables: El alcance o ámbito define la región del programa donde una

variable es visible y utilizable, las variables locales están limitadas a la función donde se

definen y desaparecen al terminar ésta, mientras que las variables globales tienen un

alcance amplio en todo el programa. Por razones de seguridad y eficiencia, se prefiere

el uso de variables locales para asegurar la independencia de los módulos.

Comunicación entre Módulos: Paso de Parámetros

La interacción entre funciones se logra mediante el paso de parámetros, permitiendo

que los datos fluyan de manera controlada.

 Llamada por Valor: En este método, se pasa una copia de la variable original a la

función. Si el parámetro se altera dentro de la función, la variable original en el

programa principal no se ve afectada.

 Llamada por Referencia: A diferencia del anterior, aquí se envía la dirección de memoria

de la variable mediante el uso de apuntadores. Esto permite que cualquier cambio

realizado dentro de la función afecte directamente al valor de la variable original.


5

Organización de la Información: Estructuras de Datos

La importancia de las estructuras de datos radica en su capacidad para representar

información compleja del mundo real que no podría manejarse con tipos simples de datos.

 Arreglos (Arrays): Son colecciones finitas, homogéneas y ordenadas de elementos del

mismo tipo almacenados de forma contigua en memoria, lo que facilita el procesamiento

de grandes volúmenes de datos mediante ciclos. En C, los arreglos siempre se pasan a

las funciones por referencia.

 Cadenas (Strings): Técnicamente, son arreglos unidimensionales de tipo char que

deben finalizar obligatoriamente con el carácter nulo (\0) para marcar el fin de la

información.

 Estructuras (Structs): Representan una herramienta poderosa al permitir agrupar

elementos heterogéneos (de diferentes tipos de datos) bajo un solo nombre o

identificador. Esto permite modelar "objetos" reales, como un alumno con su matrícula,

nombre y promedio, agrupando datos que lógicamente pertenecen a una misma

entidad.

En conclusión, la integración de estas técnicas desde la planeación jerárquica hasta la

gestión estricta de datos y memoria es lo que garantiza que un software sea finito, definido y

preciso, cumpliendo con los estándares de calidad necesarios para la ingeniería moderna.

El objetivo primordial de esta actividad, centrada en el Caso de estudio “PAE”, es

automatizar el control del Programa de Actividades Extracurriculares que la preparatoria

"Fuerte de San Diego" oferta a sus alumnos de primer año, mediante el desarrollo de un

programa funcional en lenguaje C.


6

Los aspectos tratados en la tarea se delimitan con precisión en los siguientes

componentes técnicos y lógicos:

 Codificación de algoritmos modulares: Aplicación del diseño descendente para

estructurar la solución en bloques independientes y manejables.

 Implementación de estructuras de datos: Uso de tipos estructurados para organizar y

almacenar la información de los estudiantes, tales como el número de registro, nombre,

apellido y fecha.

 Interfaz mediante menú interactivo: Desarrollo de un ciclo de control que presente

opciones de registro de estudiante, asignación de PAE y consulta de demanda, el cual

debe ejecutarse de forma continua hasta que el usuario decida salir.

 Procesos de búsqueda y validación: Uso de la matrícula como clave para buscar

alumnos dentro de la estructura; si el estado es "Registrado", el sistema permite asignar

una actividad específica como Danza, Pintura o Debate.

 Identificación institucional: El programa debe desplegar al inicio los datos del estudiante

(nombre, matrícula, grupo) y la unidad didáctica correspondiente.

 Gestión de capacidad: Emisión de mensajes informativos cuando la estructura de datos

alcance su límite máximo de registros.

 Salida de información: Generación de reportes que muestren la demanda de los PAE y

los estudiantes asignados a cada uno.


7

DESARROLLO DE LA ACTIVIDAD

Figura 1.

Diagrama de flujo modular.

Nota. Elaboración propia del autor (Solano, 2026).


8

Construye tu propuesta de solución en lenguaje C.

Figura 2.

Programa en lenguaje en entorno Dev-C++.

Nota. Elaboración propia del autor (Solano, 2026).

Explicación:

La imagen muestra un programa en lenguaje C desarrollado en el entorno Dev-C++. El

propósito principal del programa es realizar un sistema para automatizar el control del

“Programa de Actividades Extracurriculares (PAE)” , que se oferta a los alumnos de primer año.
9

Figura 3.

Programa en ejecución.

Nota. Elaboración propia del autor. (Solano, 2026).

Explicación:

La imagen muestra un programa en lenguaje C siendo ejecutado, mostrando el menú

principal y las diferentes opciones que se tienen para realizar diversas actividades, a modo de

ejemplo se ingresan datos del alumno para la prueba arrojando un registro exitoso con salida.
10

Código fuente

#include <stdio.h>

#include <string.h>

#include <stdlib.h>

#include <ctype.h>

#include <time.h>

#define MAX_ESTUDIANTES 6

#define MAX_PAE 3

#define MAX_POR_PAE 2

/* Estructura de datos del estudiante */

typedef struct {

int numRegistro;

char fecha[11];

char matricula[5];

char nombre[50];

int estado;

int paeAsignado;

} Estudiante;

/* Variables globales */

Estudiante estudiantes[MAX_ESTUDIANTES];

int totalRegistrados = 0;
11

int cuposPAE[MAX_PAE + 1] = {0, 0, 0, 0}; /* index 1=Danza,2=Pintura,3=Debate */

char nombresPAE[MAX_PAE + 1][10] = {"", "DANZA", "PINTURA", "DEBATE"};

/* ==================== FUNCIONES DE VALIDACION ====================

*/

/*

* Limpia el buffer de entrada para evitar que caracteres sobrantes

* contaminen la siguiente lectura (scanf deja '\n' en el buffer).*/

void limpiarBuffer() {

int c;

while ((c = getchar()) != '\n' && c != EOF);

/* Rechaza letras, simbolos y valores fuera del rango [min, max].*/

int leerEnteroSeguro(int min, int max) {

char linea[20];

int valor;

char *fin;

while (1) {

/* Leer linea completa como texto */

if (fgets(linea, sizeof(linea), stdin) == NULL) {


12

continue;

/* Eliminar salto de linea al final */

linea[strcspn(linea, "\n")] = '\0';

/* Verificar que no este vacio */

if (strlen(linea) == 0) {

printf(" Entrada vacia. Intente de nuevo: ");

continue;

/* Convertir a entero y verificar que TODA la cadena sea numerica */

valor = (int)strtol(linea, &fin, 10);

if (*fin != '\0') {

/* fin no apunta al final: habia letras o simbolos */

printf(" Solo se permiten numeros enteros. Intente de nuevo: ");

continue;

/* Verificar rango */

if (valor < min || valor > max) {

printf(" Opcion fuera de rango (%d-%d). Intente de nuevo: ", min, max);

continue;
13

return valor;

/*

* Obtiene la fecha actual del sistema y la devuelve como enteros.

* diaHoy, mesHoy, anioHoy se llenan por referencia.

*/

void obtenerFechaHoy(int *diaHoy, int *mesHoy, int *anioHoy) {

time_t t = time(NULL);

struct tm *hoy = localtime(&t);

*diaHoy = hoy->tm_mday;

*mesHoy = hoy->tm_mon + 1; /* tm_mon es 0-11 */

*anioHoy = hoy->tm_year - 100; /* tm_year desde 1900, queremos 2 digitos */

/*

* Valida que la cadena tenga el formato DD/MM/AA:

* - Longitud exacta de 8 caracteres

* - Posiciones correctas de digitos y '/'

* - Dia 01-31, Mes 01-12

* - La fecha no puede ser anterior a la fecha actual del sistema

* Retorna 1 si es valida, 0 si no.


14

*/

int validarFecha(const char *f) {

int dia, mes, anio;

int diaHoy, mesHoy, anioHoy;

if (strlen(f) != 8) return 0;

if (!isdigit(f[0]) || !isdigit(f[1])) return 0;

if (f[2] != '/') return 0;

if (!isdigit(f[3]) || !isdigit(f[4])) return 0;

if (f[5] != '/') return 0;

if (!isdigit(f[6]) || !isdigit(f[7])) return 0;

dia = (f[0]-'0')*10 + (f[1]-'0');

mes = (f[3]-'0')*10 + (f[4]-'0');

anio = (f[6]-'0')*10 + (f[7]-'0');

if (dia < 1 || dia > 31) return 0;

if (mes < 1 || mes > 12) return 0;

/* Comparar contra la fecha actual del sistema */

obtenerFechaHoy(&diaHoy, &mesHoy, &anioHoy);

if (anio < anioHoy) return 0;

if (anio == anioHoy && mes < mesHoy) return 0;


15

if (anio == anioHoy && mes == mesHoy && dia < diaHoy) return 0;

return 1;

/*

* Valida que la matricula tenga exactamente 4 digitos numericos.

* Retorna 1 si es valida, 0 si no.

*/

int validarMatricula(const char *m) {

int i;

if (strlen(m) != 4) return 0;

for (i = 0; i < 4; i++) {

if (!isdigit(m[i])) return 0;

return 1;

/*

* Valida que el nombre no este vacio y solo contenga letras y espacios.

* Retorna 1 si es valido, 0 si no.

*/

int validarNombre(const char *n) {

int i, len;

len = strlen(n);
16

if (len == 0) return 0;

for (i = 0; i < len; i++) {

if (!isalpha(n[i]) && n[i] != ' ') return 0;

return 1;

/* ==================== FUNCIONES MODULARES ==================== */

/* Datos del alumno y actividad */

void mostrarEncabezado() {

printf("============================================================

===========\n");

printf("Nombre completo : Jesus Edgar Solano Sanchez\n");

printf("Matricula : ES2511117963\n");

printf("Grupo : DS-DFPR-2601-B1-027\n");

printf("============================================================

===========\n");

printf("Evidencia de Aprendizaje: Codificacion de algoritmos modulares\n");

printf("e implementacion de una estructura de datos\n");

printf("============================================================

===========\n\n");

/* Muestra el menu principal */


17

void mostrarMenu() {

printf("==========================================\n");

printf(" PROGRAMA DE ACTIVIDADES\n");

printf(" EXTRACURRICULARES (PAE)\n");

printf("==========================================\n");

printf("1. Registro estudiante\n");

printf("2. Asignacion PAE\n");

printf("3. Consultar demanda PAE's\n");

printf("4. Salir\n\n");

printf("Selecciona una opcion: ");

/* Busca estudiante por matricula, retorna indice o -1 si no existe */

int buscarEstudiante(char matricula[]) {

int i;

for (i = 0; i < MAX_ESTUDIANTES; i++) {

if (estudiantes[i].estado > 0 &&

strcmp(estudiantes[i].matricula, matricula) == 0) {

return i;

return -1;

/* Opcion I: Registro de estudiante */


18

void registrarEstudiante() {

char opcion[5];

printf("==========================================\n");

printf("1. REGISTRO ESTUDIANTE\n");

printf("==========================================\n");

if (totalRegistrados >= MAX_ESTUDIANTES) {

printf("YA NO SE PUEDEN REGISTRAR MAS ESTUDIANTES.\n");

return;

do {

int idx = totalRegistrados;

estudiantes[idx].numRegistro = totalRegistrados + 1;

estudiantes[idx].estado = 1;

estudiantes[idx].paeAsignado = 0;

printf("\nRegistro No.: %d\n\n", estudiantes[idx].numRegistro);

/* --- Validacion de fecha DD/MM/AA (no anterior a hoy) --- */

int dHoy, mHoy, aHoy;

obtenerFechaHoy(&dHoy, &mHoy, &aHoy);

while (1) {
19

printf("Fecha(DD/MM/AA): ");

if (fgets(estudiantes[idx].fecha, sizeof(estudiantes[idx].fecha), stdin) == NULL)

continue;

estudiantes[idx].fecha[strcspn(estudiantes[idx].fecha, "\n")] = '\0';

if (validarFecha(estudiantes[idx].fecha)) break;

printf(" Fecha invalida. Use DD/MM/AA con numeros y no anterior a hoy

(%02d/%02d/%02d): ",

dHoy, mHoy, aHoy);

/* --- Validacion de matricula (4 digitos y no duplicada) --- */

char matTemp[10];

while (1) {

printf("\nMatricula (4 digitos): ");

if (fgets(matTemp, sizeof(matTemp), stdin) == NULL) continue;

matTemp[strcspn(matTemp, "\n")] = '\0';

if (!validarMatricula(matTemp)) {

printf(" La matricula debe tener exactamente 4 digitos numericos.");

continue;

}
20

/* Verificar que la matricula no este ya registrada */

if (buscarEstudiante(matTemp) != -1) {

printf(" Esa matricula ya esta registrada. Ingrese una diferente.");

continue;

/* Copiar al arreglo solo si paso todas las validaciones */

strncpy(estudiantes[idx].matricula, matTemp, 5);

break;

/* --- Validacion de nombre (solo letras y espacios) --- */

while (1) {

printf("\nEstudiante (nombre y apellido): ");

if (fgets(estudiantes[idx].nombre, sizeof(estudiantes[idx].nombre), stdin) ==

NULL) continue;

estudiantes[idx].nombre[strcspn(estudiantes[idx].nombre, "\n")] = '\0';

if (validarNombre(estudiantes[idx].nombre)) break;

printf(" El nombre solo puede contener letras y espacios, no puede estar

vacio.");

}
21

totalRegistrados++;

printf("\nESTUDIANTE REGISTRADO.\n");

if (totalRegistrados >= MAX_ESTUDIANTES) {

printf("YA NO SE PUEDEN REGISTRAR MAS ESTUDIANTES.\n");

break;

/* --- Validacion de opcion R/M --- */

while (1) {

printf("\n¿Registrar otro estudiante[R] o regresar al menu[M]?: ");

if (fgets(opcion, sizeof(opcion), stdin) == NULL) continue;

opcion[strcspn(opcion, "\n")] = '\0';

if (strlen(opcion) == 1 &&

(opcion[0]=='R' || opcion[0]=='r' || opcion[0]=='M' || opcion[0]=='m')) break;

printf(" Opcion invalida. Escriba R o M.");

} while (opcion[0] == 'R' || opcion[0] == 'r');

/* Opcion II: Asignacion PAE */


22

void asignarPAE() {

char matricula[10];

int idx, paeElegido;

printf("==========================================\n");

printf("2. ASIGNACION PAE\n");

printf("==========================================\n\n");

/* --- Validacion de matricula --- */

while (1) {

printf("Ingresa la matricula (4 digitos): ");

if (fgets(matricula, sizeof(matricula), stdin) == NULL) continue;

matricula[strcspn(matricula, "\n")] = '\0';

if (validarMatricula(matricula)) break;

printf(" La matricula debe tener exactamente 4 digitos numericos.\n");

idx = buscarEstudiante(matricula);

if (idx == -1) {

printf("\nMATRICULA NO ENCONTRADA.\n");

return;

}
23

printf("\nNo. Registro: %d\n", estudiantes[idx].numRegistro);

printf("Fecha registro: %s\n", estudiantes[idx].fecha);

printf("Estudiante: %s\n", estudiantes[idx].nombre);

if (estudiantes[idx].estado == 2) {

printf("\nEstado: ASIGNADO - %s\n", nombresPAE[estudiantes[idx].paeAsignado]);

printf("\nESTUDIANTE CUENTA CON REGISTRO Y PAE ASIGNADO.\n");

return;

printf("\nEstado: REGISTRADO\n");

printf("\nSelecciona PAE\n\n");

printf("1. DANZA\n");

printf("2. PINTURA\n");

printf("3. DEBATE\n\n");

/* --- Validacion opcion PAE --- */

printf("Escribe el numero: ");

paeElegido = leerEnteroSeguro(1, 3);

if (cuposPAE[paeElegido] >= MAX_POR_PAE) {

printf("\nPAE SIN CUPO\n");

return;

}
24

/* Realizar asignacion */

cuposPAE[paeElegido]++;

estudiantes[idx].paeAsignado = paeElegido;

estudiantes[idx].estado = 2;

printf("\nESTUDIANTE ASIGNADO AL PAE DE %s\n", nombresPAE[paeElegido]);

/* Opcion III: Consultar demanda PAE's */

void consultarDemanda() {

int p, i, encontrados;

printf("==========================================\n");

printf("3. CONSULTAR DEMANDA PAE'S\n");

printf("==========================================\n\n");

/* Verificar que exista al menos un estudiante registrado */

if (totalRegistrados == 0) {

printf("No hay estudiantes registrados en el sistema.\n");

return;

for (p = 1; p <= MAX_PAE; p++) {

printf("====%s====\n", nombresPAE[p]);

encontrados = 0;
25

/* Solo recorrer hasta totalRegistrados, no MAX_ESTUDIANTES */

for (i = 0; i < totalRegistrados; i++) {

if (estudiantes[i].estado == 2 && estudiantes[i].paeAsignado == p) {

printf(" %s\n", estudiantes[i].nombre);

encontrados++;

/* Mensaje cuando el PAE no tiene asignados todavia */

if (encontrados == 0) {

printf(" (Sin estudiantes asignados)\n");

printf("\n");

printf("Presiona Enter para continuar...");

getchar();

/* Opcion IV: Salir */

void salir() {

printf("\nGRACIAS POR USAR EL PROGRAMA DE ACTIVIDADES

EXTRACURRICULARES.\n");

}
26

/* ==================== FUNCION PRINCIPAL ==================== */

int main() {

int opcion;

/* Inicializar arreglo de estudiantes */

memset(estudiantes, 0, sizeof(estudiantes));

mostrarEncabezado();

do {

mostrarMenu();

/* --- Validacion del menu principal: solo enteros 1-4 --- */

opcion = leerEnteroSeguro(1, 4);

printf("\n");

switch (opcion) {

case 1:

registrarEstudiante();

break;

case 2:

asignarPAE();

break;

case 3:
27

consultarDemanda();

break;

case 4:

salir();

break;

printf("\n");

} while (opcion != 4);

return 0;

CONCLUSIÓN
28

En conclusión, el desarrollo del Caso de estudio “PAE” permitió integrar de manera

práctica los fundamentos de la programación estructurada y modular para resolver un problema

de automatización escolar. Los puntos clave tratados incluyeron la aplicación de la metodología

de diseño descendente (Top-Down), la implementación de funciones con paso de parámetros y

el uso de estructuras de datos complejas como arreglos de estructuras y cadenas de

caracteres. (Codigofacilito, 2017).

El objetivo planteado se logró al construir un software funcional que automatiza el

control del programa de actividades extracurriculares, mediante una arquitectura modular

coordinada por la función main, se garantizó el registro ordenado de hasta seis estudiantes, la

búsqueda precisa por matrícula y la asignación efectiva a actividades como danza, pintura o

debate, controlando en todo momento el cupo máximo por taller.

En cuanto a la reflexión sobre los aprendizajes, destaca la importancia de la

abstracción, que permite descomponer el sistema en subproblemas manejables e

independientes. Asimismo, se comprendió que el uso de variables locales y el paso de

parámetros por valor y referencia es vital para mantener la independencia de los módulos y la

integridad de la memoria.

Los desafíos enfrentados se centraron principalmente en la planeación lógica, evitar el

"código espagueti" requirió un esfuerzo intelectual profundo para "desenredar" los procesos y

transformarlos en estructuras de secuencia, selección y ciclo coherentes. Además, la gestión

de los límites de las estructuras de representó un reto técnico para asegurar la estabilidad del

programa bajo diferentes escenarios de uso.


29

Finalmente, este trabajo refuerza la relevancia del tema en el contexto de la ingeniería y

el desarrollo de sistemas de control, el dominio del lenguaje C y sus estructuras no solo permite

crear software confiable y eficiente que se acerca al hardware, sino que sienta las bases

indispensables para transitar hacia paradigmas más avanzados como la programación

orientada a objetos.
30

REFERENCIAS BIBLIOGRÁFICAS

Battistutti Cairó, O. (2006). Fundamentos de programacion. Piensa en C. (P. M. Rosas, Ed.)

Ciudad de México, México : Pearson Educación de México. Recuperado el 09 de 02 de

2026

Codigofacilito. (14 de 03 de 2017). Curso Basico de C. Estructuras. Obtenido de YouTube :

[Link]

v=6eEYpo0CIRY&list=TLGGll5v9qgXx1swOTAzMjAyNg

Farrell, J. (2013). Introducción a la programación lógica y diseño (7ma ed.). Cd de México,

Mexico: Cencage Learnig Editores. Recuperado el 11 de 02 de 2026


31

GLOSARIO DE TERMINOS

 Abstracción: Proceso mental que permite al programador concentrarse en el

"panorama general" de un problema, ignorando temporalmente los detalles técnicos de

bajo nivel para simplificar el diseño.3

 Alcance de las variables (o ámbito): Define la región del programa donde una variable

es visible y utilizable. Se divide principalmente en arreglos locales (limitadas a una

función) y globales (con alcance en todo el programa).4

 Arreglos (Arrays): Colecciones finitas, homogéneas y ordenadas de elementos del

mismo tipo que se almacenan de forma contigua en la memoria.5

 Cadenas (Strings): Técnicamente son arreglos unidimensionales de tipo char que

deben finalizar obligatoriamente con el carácter nulo (\0) para marcar el fin de la

información.5

 Código espagueti: Término que describe un desorden lógico en la escritura de código,

característico de programas escritos sin una metodología estructurada.3

 Código fuente: Conjunto de instrucciones escritas en un lenguaje de programación

(como el lenguaje C) que conforman la lógica técnica y funcional de un sistema de

software.10

 Declaración (o prototipo): Instrucción que informa al compilador sobre la existencia de

una función, detallando su nombre y tipo antes de su ejecución.4

 Definición (de función): Bloque de código que contiene las instrucciones lógicas

reales diseñadas para realizar una tarea específica.4

 Diagrama de flujo modular: Representación gráfica que ilustra la descomposición de

un problema complejo en módulos independientes y manejables.7


32

 Diseño descendente (Top-Down): Metodología basada en la reducción de problemas,

que consiste en dividir un problema general extenso en subproblemas más pequeños y

fáciles de procesar.3

 Estructuras (Structs): Herramienta poderosa que permite agrupar elementos

heterogéneos (de diferentes tipos de datos) bajo un solo nombre o identificador para

modelar objetos de la realidad.5

 Invocación (o llamada): Acción de ejecutar una función, lo que atrae al módulo para

procesar sus instrucciones y, al finalizar, regresa el control al punto de partida en el

programa.4

 Llamada por referencia: Método de interacción donde se envía la dirección de

memoria de una variable a una función, permitiendo que cualquier cambio afecte

directamente al valor original.4

 Llamada por valor: Método en el que se pasa una copia de la variable original a la

función; los cambios realizados dentro de la función no afectan a la variable en el

programa principal.4

 Modularización: Técnica de descomposición funcional necesaria para manejar la

complejidad creciente de los programas, dividiéndolos en piezas independientes.3

 Paso de parámetros: Mecanismo mediante el cual las funciones interactúan,

permitiendo que los datos fluyan de manera controlada entre diferentes módulos.4

 Variables locales: Datos definidos dentro de una función específica que desaparecen

al terminar la ejecución de esta, garantizando la independencia de los módulos y la

integridad de la memoria.4

También podría gustarte