El ciclo de desarrollo y la estructura de un programa en C
Flashcards
- ¿En qué fases del desarrollo puede ser necesario retroceder al detectar un error durante las pruebas?
- La depuración permite retroceder a cualquiera de las fases previas: codificación, diseño en flujograma o definición del problema.
- ¿Qué diferencia existe entre un archivo .c y un archivo .o?
- El archivo .c contiene el código fuente en texto plano escrito por el programador, mientras que el .o contiene código objeto compilado a lenguaje máquina intermedio.
Preguntas tipo test
- ¿Qué módulo se encarga de unir archivos objeto y bibliotecas en un ejecutable?
- a) El editor de texto
- b) El depurador (debugger)
- c) El enlazador (linker)
- d) El preprocesador
Respuesta: c) El enlazador (linker). El enlazador es la herramienta que combina los ficheros de código objeto junto con las librerías para producir el .exe.
- ¿Qué implica que el lenguaje C sea de nivel medio-bajo de abstracción?
- a) Que no permite usar funciones
- b) Que opera muy cerca del hardware
- c) Que no requiere compilación previa
- d) Que carece de tipos numéricos
Respuesta: b) Que opera muy cerca del hardware. Tener un nivel medio-bajo de abstracción significa que sus operaciones están próximas al funcionamiento físico del hardware.
- ¿Cómo maneja C la distinción entre mayúsculas y minúsculas?
- a) Distingue estrictamente mayúsculas de minúsculas
- b) Depende del sistema operativo utilizado
- c) Solo distingue en comentarios de texto
- d) Las considera totalmente equivalentes siempre
Respuesta: a) Distingue estrictamente mayúsculas de minúsculas. C es sensible a mayúsculas y minúsculas en todos sus identificadores y palabras reservadas.
Componentes del lenguaje: léxico, sintaxis, semántica y datos primitivos
Flashcards
- ¿Cuántos valores enteros distintos puede almacenar un char sin signo (unsigned char) de 8 bits?
- Puede almacenar 256 valores diferentes, que van desde el 0 hasta el 255.
- ¿Qué representa el tipo void en C?
- Representa la ausencia de tipo o valor.
Preguntas tipo test
- ¿Qué elemento delimita obligatoriamente una sentencia simple en C?
- a) Un salto de línea
- b) Un paréntesis cerrado
- c) Un par de llaves ({ })
- d) Un punto y coma (;)
Respuesta: d) Un punto y coma (;). En lenguaje C, todas las sentencias simples deben finalizar obligatoriamente con el signo de punto y coma (;).
- ¿Cuál es el rango de valores de un tipo char de 8 bits con signo?
- a) -128 a 127
- b) -2 millones a 2 millones
- c) -32 a 32
- d) 0 a 255
Respuesta: a) -128 a 127. Un char con signo de 8 bits abarca un intervalo que va de -128 hasta 127.
- ¿Qué problema produce asignar un número mayor al rango de bits de una variable?
- a) Error de sintaxis léxica
- b) Fallo del enlazador
- c) Desbordamiento (overflow)
- d) Conversión automática a void
Respuesta: c) Desbordamiento (overflow). Sobrepasar el dominio representable de un tipo de variable causa una condición de desbordamiento (overflow).
Y 0 flashcards y 2 preguntas más en el documento.
Texto del documento
APUNTES FUNDAMENTOS DE PROGRAMACIÓN Grado en Ingeniería Informática Universidad Politécnica de Cataluña AprenAI 2026-2027 Apuntes de Fonaments de Programació: fases de desarrollo, enlazado, sintaxis de C y tipos primitivos con sus tamaños en memoria y rangos de valores.
APREN.AI Índice 1 El ciclo de desarrollo y la estructura de un programa en C Fases del desarrollo de un programa Generación del ejecutable y tipos de archivos Características y estructura del código fuente en C 2 Componentes del lenguaje: léxico, sintaxis, semántica y datos primitivos Dimensiones formales del lenguaje Elementos del nivel léxico y tipos de sentencias Abstracción de datos y memoria Clasificación de tipos de datos primitivos 3 Resumen para repasar Desarrollo y compilación en C Estructura y elementos del lenguaje Abstracción de datos y tipos primitivos Soluciones de las preguntas de repaso Estos apuntes pueden contener errores u omisiones.
Son un material de apoyo y no sustituyen al temario oficial ni al profesorado: contrasta la información importante. Ciclo de desarrollo, sintaxis y tipos primitivos en C 1 1 El ciclo de desarrollo y la estructura de un programa en C AL ACABAR SABRÁS Describir la secuencia ordenada del ciclo de desarrollo de software. Identificar el papel de cada tipo de archivo en el proceso de compilación y enlazado. Reconocer las características arquitectónicas principales del lenguaje C. PIÉNSALO ANTES DE LEER 1 ¿Por qué un archivo con código en C no puede ser ejecutado directamente por el procesador sin pasar por un compilador y enlazador?
Fases del desarrollo de un programa La creación de un programa informático sigue un proceso iterativo compuesto por varias etapas sucesivas. En cualquier momento del ciclo, la detección de fallos obliga a volver a fases anteriores mediante la depuración: Definición del problema: consiste en el análisis detallado de los requisitos que debe cumplir la solución. 1 Diseño de la solución: elaboración del algoritmo o diagrama de flujo (flujograma). 2 Codificación: redacción del código fuente en un lenguaje de programación específico. 3 Compilación y ensamblado: traducción del código fuente a lenguaje máquina para generar el programa ejecutable.
4 Ejecución y prueba: comprobación del funcionamiento práctico para localizar y corregir errores. 5 Ciclo de desarrollo, sintaxis y tipos primitivos en C 2 PROCESO Fases del desarrollo de software Generación del ejecutable y tipos de archivos Para obtener una aplicación funcional en lenguaje C intervienen distintos tipos de ficheros coordinados por las herramientas de compilación: Archivos de cabecera (.h): ficheros header que contienen declaraciones y directivas. Código fuente (.c): ficheros con las instrucciones escritas por el programador. Código objeto (.o o .obj): resultado intermedio de la compilación individual de los ficheros de código fuente.
Bibliotecas (.lib): colecciones de implementaciones funcionales previamente compiladas que exponen una interfaz definida. La herramienta denominada enlazador (linker) combina los ficheros objeto junto con las bibliotecas necesarias para generar el fichero ejecutable final (.exe). DEFINICIÓN Una biblioteca o librería es un conjunto de implementaciones funcionales codificadas en un lenguaje de programación que proporciona una interfaz bien definida para invocar sus operaciones.
Definir problema Análisis y especificación de requisitos 1 Diseñar solución Creación del flujograma o algoritmo 2 Codificar Escritura del código fuente en C 3 Compilar y ensamblar Generación del archivo ejecutable 4 Ejecutar y probar Pruebas funcionales y depuración 5 Ciclo de desarrollo, sintaxis y tipos primitivos en C 3 Esquema de la estructura de un programa fuente en lenguaje C. Características y estructura del código fuente en C El lenguaje C se caracteriza por situarse en un nivel medio-bajo de abstracción, lo que significa que opera muy cerca del hardware físico. Presenta un tipado débil, por lo que impone pocas restricciones al manipular variables y posiciones de memoria.
Además, es un lenguaje estructurado, distingue estrictamente entre mayúsculas y minúsculas (case-sensitive), y posee un núcleo estandarizado (como el estándar C99), aunque sus bibliotecas no siempre compartan la misma estandarización. A nivel de organización de ficheros, el código fuente se divide internamente en dos bloques principales: Primera parte: directivas al preprocesador (como #include <stdio.h> ) e importación de cabeceras. Segunda parte: cuerpo del código e instrucciones ejecutables, estructuradas a partir de la función principal int main() . COMPRUEBA 2 ¿Cuál es la función del enlazador (linker) en el proceso de generación del ejecutable?
Ciclo de desarrollo, sintaxis y tipos primitivos en C 4 ERROR FRECUENTE Olvidar que C distingue entre mayúsculas y minúsculas produce errores habituales de compilación: identificar variables o funciones como Main en lugar de int main provocará fallos inmediatos al enlazar. IDEAS CLAVE El desarrollo sigue un ciclo de análisis, diseño, codificación, compilación y depuración. El enlazador integra los archivos objeto (.o/.obj) y las bibliotecas (.lib) para generar el archivo ejecutable (.exe). C es un lenguaje estructurado de nivel medio-bajo, débilmente tipado y sensible a mayúsculas y minúsculas.
El código fuente se organiza en una zona de directivas/cabeceras y otra de definición de funciones centrada en main(). COMPRUEBA LO QUE HAS APRENDIDO 3. ¿En qué fases del desarrollo puede ser necesario retroceder al detectar un error durante las pruebas? 4. ¿Qué diferencia existe entre un archivo .c y un archivo .o? Test Rodea la respuesta correcta. Las soluciones están al final. 5. ¿Qué módulo se encarga de unir archivos objeto y bibliotecas en un ejecutable? 6. ¿Qué implica que el lenguaje C sea de nivel medio-bajo de abstracción? 7. ¿Cómo maneja C la distinción entre mayúsculas y minúsculas?
El editor de texto a) El depurador (debugger) b) El enlazador (linker) c) El preprocesador d) Que no permite usar funciones a) Que opera muy cerca del hardware b) Que no requiere compilación previa c) Que carece de tipos numéricos d) Distingue estrictamente mayúsculas de minúsculas a) Depende del sistema operativo utilizado b) Solo distingue en comentarios de texto c) Las considera totalmente equivalentes siempre d) Ciclo de desarrollo, sintaxis y tipos primitivos en C 5 8. ¿Qué elemento marca la entrada principal de ejecución en un fichero fuente en C?
2 Componentes del lenguaje: léxico, sintaxis, semántica y datos primitivos AL ACABAR SABRÁS Diferenciar los conceptos de léxico, sintaxis y semántica en C. Reconocer las distintas clases de elementos léxicos y tipos de sentencias. Calcular e identificar los rangos y tamaños en memoria de los tipos primitivos enteros y reales. PIÉNSALO ANTES DE LEER 9 ¿Por qué el ordenador no sabe si una celda de memoria de 8 bits contiene un carácter de texto o un número? Dimensiones formales del lenguaje La construcción de un programa en C se apoya en tres niveles de descripción formal: Léxico: conjunto de símbolos elementales y vocabulario aceptado por el lenguaje.
Sintaxis: conjunto de reglas formales que establecen cómo deben combinarse los símbolos para construir sentencias correctas. Semántica: determina el significado concreto y la acción que debe realizar el ordenador con cada sentencia.
Elementos del nivel léxico y tipos de sentencias El vocabulario de C se compone de letras, números y guiones bajos ( _ ) articulados en los siguientes elementos léxicos: Elemento léxico Función Ejemplos Comentarios Notas explicativas ignoradas por el compilador // línea o /* bloque */ Identificadores Nombres asignados a variables y funciones total , calcular_area Palabras reservadas Términos con significado predefinido por el lenguaje int , float , if , while , return Separadores Delimitan y aíslan otros elementos léxicos ( , ) , { , } , ; , , La directiva #include a) El archivo de cabecera .h b) El tipo primitivo void c) La función int main() d) Ciclo de desarrollo, sintaxis y tipos primitivos en C 6 Elemento léxico Función Ejemplos Literales Valores fijos escritos directamente en el código 10 , 3.14 , 'a' Operadores Símbolos de cálculo o comprobación Aritméticos ( + , - ), lógicos, relacionales A partir de estos elementos se definen las frases válidas del lenguaje: Expresión: combinación de identificadores, literales y operadores que produce un valor tras evaluarse.
Sentencia simple: secuencia válida de elementos léxicos terminada obligatoriamente en un punto y coma ( ; ). Sentencia compleja (o bloque): agrupación de sentencias delimitada entre llaves ( { } ), usada habitualmente en estructuras de control de flujo (selección o iteración) y definiciones. ESQUEMA Tipos de datos en C Abstracción de datos y memoria En el nivel más bajo (lenguaje máquina o ensamblador), los ordenadores solo gestionan celdas de memoria sin formato. Estas celdas carecen de capacidad para indicar por sí mismas qué tipo de dato contienen, dejando toda la responsabilidad de interpretación al programador y propiciando fallos constantes.
La abstracción de datos soluciona este problema otorgando un significado lógico a las secuencias de bits e independizando su uso de los detalles de la máquina física. Toda variable implica reservar un espacio de memoria ( ) que guarda un valor ( ) de un tipo de dato ( ) y queda referenciado por un identificador ( ). Datos primitivos Tipos básicos predefinidos Enteros char, short, int, long Reales float, double, long double Vacío (void) Ausencia de valor Datos compuestos Creados a partir de primitivos R v T N Ciclo de desarrollo, sintaxis y tipos primitivos en C 7 Esquema de tipos de datos primitivos en C y sus rangos de almacenamiento.
Clasificación de tipos de datos primitivos Un tipo de dato define el conjunto admisible de valores y el repertorio de operaciones que se pueden realizar sobre ellos. Se clasifican en compuestos (derivados de los primitivos) y primitivos. Categoría Tipo Tamaño Rango de valores Enteros char 8 bits Con signo: -128 a 127 Sin signo ( unsigned ): 0 a 255 short 16 bits Con signo: aprox. -32.000 a 32.000 Sin signo: 0 a 65.000 int 32 bits Con signo: aprox.
-2.000.000.000 a 2.000.000.000 Sin signo: 0 a 4.000.000.000 long 32 bits Equivalente a int en este entorno Reales (coma flotante) float 32 bits double 64 bits long double 80 bits Mayor rango y precisión extendida Ausencia de dato void — Representa la ausencia total de valor o tipo ERROR FRECUENTE El desbordamiento (overflow) ocurre cuando se asigna a una variable un número que sobrepasa el límite máximo o mínimo permitido por sus bits de memoria. Por ejemplo, en un char con signo, sobrepasar 127 corrompe el valor numérico al pasar a valores negativos.
1,17 × 10 < 38 x < 3,4 × 1038 2,2 × 10 < 308 x < 1,7 × 10308 Ciclo de desarrollo, sintaxis y tipos primitivos en C 8 COMPRUEBA 10 ¿En qué se distingue una sentencia simple de una expresión en C? IDEAS CLAVE El lenguaje se estructura en léxico (símbolos), sintaxis (reglas de escritura) y semántica (significado de las acciones). Las sentencias simples terminan en punto y coma (;), mientras que las complejas se agrupan entre llaves ({ }). La abstracción de datos asigna significado y operaciones a las secuencias de bits de la memoria física. Los tipos enteros (char, short, int, long) y reales (float, double, long double) definen el tamaño en bits y el rango accesible.
El desbordamiento u overflow ocurre al sobrepasar el rango del dominio admitido por el tipo de variable. COMPRUEBA LO QUE HAS APRENDIDO 11. ¿Cuántos valores enteros distintos puede almacenar un char sin signo (unsigned char) de 8 bits? 12. ¿Qué representa el tipo void en C? Test Rodea la respuesta correcta. Las soluciones están al final. 13. ¿Qué elemento delimita obligatoriamente una sentencia simple en C? 14. ¿Cuál es el rango de valores de un tipo char de 8 bits con signo? 15. ¿Qué problema produce asignar un número mayor al rango de bits de una variable? 16. ¿Cuántos bits de almacenamiento utiliza habitualmente el tipo double?
Un salto de línea a) Un paréntesis cerrado b) Un par de llaves ({ }) c) Un punto y coma (;) d) -128 a 127 a) -2 millones a 2 millones b) -32 a 32 c) 0 a 255 d) Error de sintaxis léxica a) Fallo del enlazador b) Desbordamiento (overflow) c) Conversión automática a void d) 64 bits a) 16 bits b) 32 bits c) 8 bits d) Ciclo de desarrollo, sintaxis y tipos primitivos en C 9 3 Resumen para repasar Desarrollo y compilación en C Concepto Qué es Ciclo de desarrollo Secuencia iterativa: Definición del problema Diseño (flujograma) Codificación Compilación y ensamblado Ejecución y prueba (depuración). Archivos de cabecera (.h) Ficheros con declaraciones y directivas importados al inicio del código.
Código objeto (.o / .obj) Resultado intermedio en lenguaje máquina de compilar el código fuente (.c). Biblioteca (.lib) Conjunto de implementaciones funcionales compiladas con una interfaz definida. Enlazador (linker) Herramienta que une los ficheros objeto y las bibliotecas para generar el ejecutable (.exe). Lenguaje C Lenguaje estructurado de nivel medio-bajo, sensible a mayúsculas/minúsculas y débilmente tipado con núcleo C99 estándar. Estructura y elementos del lenguaje Concepto Qué es Léxico Vocabulario o conjunto de símbolos válidos (letras, dígitos y guión bajo). Sintaxis Conjunto de reglas formales para escribir sentencias correctas en el lenguaje.
Semántica Significado concreto de las sentencias y acción a ejecutar por el ordenador. Elementos léxicos Comentarios, identificadores, palabras reservadas, separadores, literales y operadores. Expresión Combinación de identificadores, literales y operadores que produce un valor al evaluarse. Sentencia simple Secuencia léxica válida finalizada obligatoriamente en punto y coma ( ; ). Sentencia compleja Bloque delimitado por llaves ( { } ) para control de flujo o definiciones. Abstracción de datos y tipos primitivos Concepto Qué es Abstracción de datos Asignación de significado y operaciones a las celdas de memoria física.
Ciclo de desarrollo, sintaxis y tipos primitivos en C 10 Concepto Qué es Variable Espacio de memoria ( ) con un valor ( ), un tipo ( ) y un nombre ( ). char Tipo entero de 8 bits (-128 a 127 con signo, 0 a 255 sin signo). short Tipo entero de 16 bits (aprox. -32.000 a 32.000 con signo, 0 a 65.000 sin signo). int / long Tipos enteros de 32 bits (-2.000M a 2.000M con signo, 0 a 4.000M sin signo). float / double Tipos reales en coma flotante de 32 bits y 64 bits respectivamente. void Tipo primitivo que representa la ausencia de dato o valor. Desbordamiento (overflow) Error que sucede al superar el dominio de valores admitido por el tipo de variable.
R v T N Ciclo de desarrollo, sintaxis y tipos primitivos en C 11 Soluciones de las preguntas de repaso 1. Porque el ordenador solo ejecuta instrucciones binarias en lenguaje máquina, por lo que el código en texto debe traducirse y enlazarse con las bibliotecas del sistema. 2. El enlazador combina los archivos de código objeto (.o / .obj) con las bibliotecas (.lib) para generar el archivo ejecutable definitivo (.exe). 3. La depuración permite retroceder a cualquiera de las fases previas: codificación, diseño en flujograma o definición del problema. 4.
El archivo .c contiene el código fuente en texto plano escrito por el programador, mientras que el .o contiene código objeto compilado a lenguaje máquina intermedio. 5. c) El enlazador (linker). El enlazador es la herramienta que combina los ficheros de código objeto junto con las librerías para producir el .exe. 6. b) Que opera muy cerca del hardware. Tener un nivel medio-bajo de abstracción significa que sus operaciones están próximas al funcionamiento físico del hardware. 7. a) Distingue estrictamente mayúsculas de minúsculas. C es sensible a mayúsculas y minúsculas en todos sus identificadores y palabras reservadas. 8. d) La función int main().
La función main() es el punto de inicio donde arranca la ejecución de un programa en C. 9. Porque en el hardware solo existen patrones binarios de ceros y unos; es el tipo de dato asignado por el lenguaje el que define cómo interpretar esos bits. 10. Una expresión calcula y devuelve un valor, mientras que una sentencia simple representa una instrucción completa de ejecución que finaliza con punto y coma (;). 11. Puede almacenar 256 valores diferentes, que van desde el 0 hasta el 255. 12. Representa la ausencia de tipo o valor. 13. d) Un punto y coma (;). En lenguaje C, todas las sentencias simples deben finalizar obligatoriamente con el signo de punto y coma (;). 14. a) -128 a 127.
Un char con signo de 8 bits abarca un intervalo que va de -128 hasta 127. 15. c) Desbordamiento (overflow). Sobrepasar el dominio representable de un tipo de variable causa una condición de desbordamiento (overflow). 16. a) 64 bits. El tipo double para números reales en coma flotante utiliza un espacio de memoria de 64 bits. Ciclo de desarrollo, sintaxis y tipos primitivos en C 12