Want to create interactive content? It’s easy in Genially!

Get started free

Unidad 3. Introducción a la programación de un lenguaje estructurado.

maria guadalupe herr

Created on March 30, 2025

Start designing with a free template

Discover more than 1500 professional designs like these:

Vertical Genial One Pager

Mobile App Dossier

Color Shapes Dossier

Notes Dossier

Futuristic Tech Dossier

Crowdfunding Campaign

Company Dossier

Transcript

Unidad 3. Introducción a la programación de un lenguaje estructurado.

empezar

Unidad 3. Introducción a la programación de un lenguaje estructurado.

Entornos de desarrollo integrados (IDE)

  • Visual Studio Code: Un IDE útil para programar en C/C++. La edición Express es gratuita para desarrolladores individuales.
  • Code:Blocks: Un IDE popular para editar y depurar código C.
  • Eclipse: Un IDE popular para editar y depurar código C.
  • Dev-C++: Es un completo entorno de desarrollo integrado (IDE) y editor de código para el lenguaje de programación C/C++.

Compiladores en línea

  • myCompiler: Un compilador en línea que permite escribir y ejecutar código C sin necesidad de descargar o instalar nada.
  • paiza.IO: Un compilador en línea que permite editar y ejecutar código C.

Introducción

La programación es una herramienta fundamental en la ingeniería industrial, ya que permite automatizar procesos, analizar datos y optimizar recursos. Para lograrlo, utilizamos lenguajes de programación estructurados como C, que nos ayudan a escribir código de manera lógica y organizada.

¿Qué es un Lenguaje de Programación Estructurado?

Es un lenguaje que sigue un conjunto de reglas para escribir código de forma clara y modular. Se basa en tres estructuras básicas:

  • Secuencia: Las instrucciones se ejecutan en orden, una tras otra.
  • Selección: Se toman decisiones en función de condiciones (if-else, switch).
  • Iteración: Se repiten instrucciones mediante ciclos (for, while).

¿Por qué es útil para la Ingeniería Industrial?

04

03

02

01

Reduce errores en cálculos manuales.

Ayuda en la toma de decisiones basada en datos.

Facilita la simulación de procesos productivos

Permite automatizar cálculos repetitivos.

Índice del módulo

3.1 Introducción y estructura del entorno de un lenguaje de programación

3. 6 Proposición de asignación.

3.2 Estructura básica de un programa

3.7 Operadores, operandos y expresiones

3.3 Tipos de datos

3.8 Prioridad de operadores, evaluación de expresiones

3.4 Identificadores

3.9 Elaboración de programas

3.5 Almacenamiento, direccionamiento y representación en memoria

3.10 Pruebas y depuración

3.1 Introducción y estructura del entorno de un lenguaje de programación

Cuando programamos en un lenguaje como C, utilizamos un entorno de desarrollo que incluye varios componentes esenciales:
Editor de Código
Consola o Terminal
Depurador
Compilador

Es donde se escribe el código fuente. Puede ser un editor simple o un Entorno de Desarrollo Integrado (IDE).

Es donde se ejecuta el programa y se muestra la salida de los resultados. En C, la función printf() se usa para mostrar información en la consola.

Permite detectar y corregir errores en el código, analizando línea por línea la ejecución del programa.

Convierte el código fuente en un programa ejecutable. En C, el compilador traduce el código a lenguaje máquina para que la computadora pueda entenderlo.

3.2 Estructura básica de un programa

Un programa en C sigue una estructura clara y organizada:

#include <stdio.h> // Librería estándar de entrada y salida int main() { // Función principal printf("¡Hola, mundo!\n"); // Imprime un mensaje en la pantalla return 0; // Indica que el programa terminó correctamente }

Explicación de la estructura

  • Directivas de Preprocesador (#include <stdio.h>)
    • Permiten incluir librerías que amplían las funcionalidades del lenguaje.
  • Función Principal (int main())
    • Todo programa en C inicia en main(), que define el flujo principal del código.
  • Instrucciones (printf())
    • Son las órdenes que el programa ejecuta. En este caso, printf() imprime un mensaje en la pantalla.
  • Valor de Retorno (return 0;)
    • Indica que el programa terminó correctamente.

3.3 Tipos de datos

Son fundamentales porque determinan qué tipo de información puede almacenar una variable y cómo la computadora la interpreta. En C, los tipos de datos se dividen en varias categorías:
Primitivos
Punteros
Compuestos
Modificados (Qualifiers)

Son los tipos básicos proporcionados por el lenguaje.

Los punteros almacenan direcciones de memoria en lugar de valores directos. Se definen con el operador *.

Son tipos de datos que agrupan varios valores en una sola estructura.

Algunos tipos de datos pueden modificarse para cambiar su tamaño o comportamiento

Primitivos

Se utilizan para representar información básica y realizar operaciones fundamentales en los programas.

Primitivos

float y double (Decimales)

int (Enteros)

char (Carácter)

_Bool (Booleano)

ejemplo

ejemplo

ejemplo

ejemplo

Ejemplo: Contar el número de piezas en una producción industrial.

Programa en C que realiza una operación simple sobre una variable entera que representa la cantidad de piezas en inventario. Inicialmente, el inventario cuenta con 100 piezas y se incrementa en 10 unidades. Al finalizar, el programa muestra en pantalla el total de piezas después de la actualización.

📌 Aplicaciones:

  • Contadores en ciclos (for, while).
  • Cálculos matemáticos en operaciones industriales.
  • Control de inventarios (cantidad de productos).

Ejemplo: Calcular el área de una pieza circular.

Programa en C que calcula el área de un círculo utilizando la fórmula matemática Área = π * radio². Para ello, se declara una variable radio con un valor predefinido de 5.5 y se usa la constante aproximada de π (3.1416). Luego, se realiza la operación matemática correspondiente y el resultado se muestra en pantalla con dos decimales de precisión mediante la función printf().

📌 Aplicaciones:

  • Cálculos de medidas en procesos de manufactura.
  • Simulación de datos físicos (temperatura, presión, velocidad).
  • Operaciones financieras en control de costos.

Ejemplo: Guardar la inicial de un producto.

Programa en C que muestra cómo declarar y utilizar una variable de tipo char. Se define una variable llamada codigo a la que se le asigna el carácter 'A', representando un código de producto.

📌 Aplicaciones:

  • Manejo de códigos de productos o categorías.
  • Entrada de comandos en sistemas automatizados.
  • Control de estados ('A' para "Activo", 'I' para "Inactivo").

Ejemplo: Verificar si una máquina está encendida.

Programa en C que muestra cómo utilizar variables booleanas y estructuras condicionales if-else para tomar decisiones en el código. Se declara una variable booleana _Bool maquina_encendida, donde 1 representa que la máquina está encendida y 0 indica que está apagada.

📌 Aplicaciones:

  • Control de encendido y apagado de máquinas.
  • Verificación de condiciones en sistemas automatizados.
  • Validaciones en bases de datos (Activo/Inactivo).

Modificados

Permiten ajustar el tamaño y el rango de los valores almacenados, lo que ayuda a optimizar el uso de memoria y a manejar datos específicos según las necesidades del programa. Mejoran el rendimiento y evitar desperdicio de recursos en aplicaciones industriales, científicas y financieras.

Modificados

long (Entero largo)

short (Entero corto)

unsigned (Solo valores positivos)

signed (Valores positivos y negativos)

ejemplo

ejemplo

ejemplo

ejemplo

Ejemplo: Guardar la cantidad de operarios en una línea de producción.

Programa en C que muestra cómo declarar y utilizar una variable de tipo short int para almacenar valores enteros pequeños.

📌 Aplicaciones:

  • Contadores pequeños en sistemas embebidos.
  • Gestión de recursos en sistemas con memoria limitada.
  • Variables que no necesitan almacenar números grandes.

Ejemplo: Registrar la cantidad de productos fabricados en un año.

Programa en C que muestra cómo declarar y utilizar una variable de tipo long int para almacenar valores enteros grandes.

📌 Aplicaciones:

  • Cálculo de producción a gran escala.
  • Procesamiento de datos financieros y de inventario.
  • Registros de grandes volúmenes en bases de datos.

Ejemplo: Contar piezas en un almacén sin permitir valores negativos.

Programa en C muestra cómo declarar y utilizar una variable de tipo unsigned int para almacenar un valor entero positivo.

📌 Aplicaciones:

  • Conteo de artículos en inventarios.
  • Sensores de producción que solo generan valores positivos.
  • Manejo de identificadores o códigos que no pueden ser negativos.

Ejemplo: Almacenar temperaturas en una bodega refrigerada.

Programa en C muestra cómo declarar y utilizar una variable de tipo signed int para almacenar valores enteros, tanto negativos como positivos.

📌 Aplicaciones:

  • Control de temperatura en sistemas industriales.
  • Cálculo de ganancias y pérdidas en negocios.
  • Simulación de fenómenos físicos con valores positivos y negativos.

Compuestos

Se utilizan en situaciones donde se necesita almacenar diferentes tipos de datos juntos para representar de manera más eficaz entidades del mundo real o estructuras más complejas.

Compuestos

union (Unión)

struct (Estructura)

enum (Enumeración)

ejemplo

ejemplo

ejemplo

Ejemplo: Representar a un empleado en una empresa.

Se crea una estructura en C llamada Empleado, la cual agrupa tres atributos: el nombre del empleado, la edad y el salario.

📌 Aplicaciones:

  • Bases de datos: Almacenar registros de clientes, empleados, productos, etc.
  • Gestión de inventarios: Representar productos con sus atributos (nombre, precio, cantidad).
  • Control de procesos industriales: Agrupar datos como temperatura, presión, velocidad en un solo registro de máquina.

Ejemplo: Representar un valor que puede ser un número entero o un carácter, pero no ambos al mismo tiempo.

En este ejercicio, vamos a trabajar con uniones en C, que son similares a las estructuras, pero con una diferencia clave: todos los miembros de una unión comparten la misma ubicación en memoria, lo que significa que solo uno de ellos puede contener un valor válido en un momento dado.

📌 Aplicaciones:

  • Protocolos de comunicación: Almacenar diferentes tipos de datos en un solo bloque de memoria.
  • Sistemas embebidos: Optimización de espacio de memoria cuando se sabe que solo un valor se utilizará a la vez.
  • Sistemas de codificación/decodificación: Manipulación de datos binarios en diferentes formatos.

Ejemplo: Representar los estados de una máquina (encendida, apagada, en mantenimiento).

Se crea una estructura en C llamada Empleado, la cual agrupa tres atributos: el nombre del empleado, la edad y el salario.

📌 Aplicaciones:

  • Bases de datos: Almacenar registros de clientes, empleados, productos, etc.
  • Gestión de inventarios: Representar productos con sus atributos (nombre, precio, cantidad).
  • Control de procesos industriales: Agrupar datos como temperatura, presión, velocidad en un solo registro de máquina.

Punteros

Los punteros en C son variables que almacenan direcciones de memoria, en lugar de valores directos. Su uso es fundamental en manejo de memoria, estructuras dinámicas, manipulación de arreglos y optimización de procesos.

Acceso y manipulación eficiente de datos

Paso de parámetros por referencia en funciones

Manipulación de arreglos y cadenas de caracteres

Creación de estructuras de datos avanzadas

Manejo dinámico de memoria

ejemplo

ejemplo

ejemplo

ejemplo

ejemplo

Ejemplo: Acceder al valor de una variable a través de un puntero.

📌 Aplicaciones:

  • Optimización en el acceso a variables.
  • Evita el uso innecesario de memoria al referenciar directamente los datos.

Ejemplo: Intercambiar valores de dos variables con punteros.

📌 Aplicaciones:

  • Modificación de variables sin necesidad de retornar valores.
  • Optimización en el uso de memoria y tiempo de ejecución.

Ejemplo: Asignar memoria dinámicamente a un arreglo.

📌 Aplicaciones:

  • Gestión eficiente de memoria en programas que manejan grandes volúmenes de datos.
  • Creación de estructuras dinámicas como listas enlazadas y árboles binarios.

Ejemplo: Recorrer una cadena de caracteres con un puntero.

📌 Aplicaciones:

  • Procesamiento de texto y manipulación de cadenas.
  • Acceso eficiente a elementos de arreglos sin usar índices.

Ejemplo: Definir un nodo de una lista enlazada.

📌 Aplicaciones:

  • Implementación de estructuras avanzadas como listas enlazadas, pilas y colas.
  • Uso en algoritmos de búsqueda y ordenamiento eficientes.

Prácticas

2. Tipo de Datos Modificados

1. Tipo de Datos Primitivos

4. Tipo de Datos Punteros

3. Tipo de Datos Compuestos

3.4 Identificadores

Son nombres que se utilizan para identificar o referirse a variables, funciones, estructuras, arrays u otros elementos dentro de un programa.

Características

Importancia

Ejemplo

3.5 Almacenamiento, direccionamiento y representación en memoria.

Esto es clave para la optimización de programas, manejo eficiente de memoria y depuración de errores.

Almacenamiento en memoria

Direccionamiento en memoria

Representación en memoria

Almacenamiento en memoria

El almacenamiento de datos en memoria depende de su tipo de dato y del sistema donde se ejecuta el programa. En general, la memoria se organiza en bloques llamados bytes, donde cada tipo de dato ocupa un número específico de bytes.

Código C

Resultado en consola

Aplicaciones

Direccionamiento en memoria

Cada variable almacenada en memoria tiene una dirección única que indica su ubicación. En C, podemos obtener esta dirección con el operador & (referencia).

Código C

Resultado en consola

Aplicaciones

Representación en memoria

Cuando declaramos una variable en un programa, la computadora la almacena en memoria usando una serie de 0s y 1s (binario). Cada tipo de dato tiene una forma diferente de representarse en la memoria. Conclusión

  • Cada variable tiene una dirección en memoria y se almacena en formato binario.
  • Los int ocupan 4 bytes, los char ocupan 1 byte, y los float usan IEEE 754.
  • Podemos ver direcciones de memoria en C con %p y sizeof().

3.6 Proposición de asignación.

En programación, una proposición de asignación es una instrucción que asigna un valor a una variable. Es una de las operaciones más básicas y fundamentales en cualquier lenguaje de programación estructurada, como C.
Asignación Simple
Asignación con Operadores Compuestos
Asignación con Entrada del Usuario
Asignación en Cascada
Asignación con Expresión

Se usa para asignar el mismo valor a varias variables al mismo tiempo.

Se asigna un valor calculado a partir de una expresión.

Cuando se asigna un valor directamente a una variable.

Se usa scanf() para asignar valores ingresados por el usuario.

Permite modificar una variable sin escribir su nombre dos veces.

Asignación Simple

Cuando se asigna un valor directamente a una variable.

Código C

Resultado en consola

Asignación con Expresión

Se asigna un valor calculado a partir de una expresión.

Código C

Resultado en consola

Asignación en Cascada

Se usa para asignar el mismo valor a varias variables al mismo tiempo.

Código C

Resultado en consola

Asignación con Operadores Compuestos

Permite modificar una variable sin escribir su nombre dos veces.

Código C

Resultado en consola

Asignación con Entrada del Usuario

Se usa scanf() para asignar valores ingresados por el usuario.

Código C

Resultado en consola

3.7 Operadores, operandos y expresiones

Definiciones básicas
  • Operadores: Son símbolos que representan una operación (ej. +, -, *, /).
  • Operandos: Son los valores o variables sobre los que actúa el operador.
  • Expresiones: Son combinaciones de operadores y operandos que producen un resultado.

+ Ejemplo

Operadores Aritméticos

Se usan para realizar operaciones matemáticas.

Ejemplo C

consola

Operadores Relacionales

Permiten comparar valores y devuelven 1 (verdadero) o 0 (falso).

Ejemplo C

consola

Operadores Lógicos

Se usan para evaluar múltiples condiciones juntas.

Ejemplo C

consola

Operadores de Asignación

Permiten asignar valores a variables.

Ejemplo C

consola

Operadores de Incremento y Decremento

Se usan para aumentar o disminuir el valor de una variable en 1.

Ejemplo C

consola

Práctica 5

Objetivo: Comprender el uso de operadores aritméticos, relacionales y lógicos en C mediante la implementación de un programa que evalúe diferentes expresiones matemáticas y lógicas.

Código C

Escribe un programa en C que solicite al usuario dos números enteros y realice lo siguiente:

  • Multiplicar los número entre si.
  • Compare si el segundo número es mayor que el primero.
  • Verificar que al menos un número sea negativo.
  • Analizar los resultados obtenidos e interpreta la salida del programa.

Consola

Práctica: Una empresa quiere calcular la producción total, piezas defectuosas y eficiencia de su fábrica, permitiendo que el usuario ingrese los valores.

Instrucciones:

  • Solicitar al usuario que ingrese la producción del turno 1 y 2, la cantidad de piezas defectuosas, la meta diaria y el número de lote.
  • Calcular y mostrar en consola:
    • Producción total
    • Si se cumplio la meta diaria
    • Si su calidad es aceptable (depende que la meta se cumpla y que la cantidad de piezas defectusas es menor al 5% de la producción total)
    • Cantidad de piezas defectuosas suponiendo que salen 2 piezas más
    • Determina si el lote es par o impar.

Código C

Consola

3.8 Prioridad de operadores, evaluación de expresiones.

Cuando escribimos operaciones en C, el compilador sigue un orden específico para evaluarlas. Este orden está determinado por dos reglas importantes:
  • Prioridad de operadores → Algunos operadores se ejecutan antes que otros.
  • Asociatividad de operadores → Cuando dos operadores tienen la misma prioridad, se ejecutan de izquierda a derecha o de derecha a izquierda.

ejemplos

  • Tabla de Prioridad de Operadores
  • prioridad

Código C

consola

Código C

  • asociatividad

Código C

consola

  • Uso de Paréntesis para Modificar la Prioridad

Código C

consola

Práctica: Cálculo de un Total con Prioridad de Operadores

Escribe un programa en C que calcule el total de producción de una fábrica, considerando los siguientes factores:

  • El costo de materiales.
  • El costo de mano de obra.
  • Un descuento aplicado sobre el total.
La fórmula para calcular el total es:
  • Total=(Costo Materiales+Costo Mano de Obra)−Descuento
Instrucciones:
  • Los usuarios ingresarán el costo de materiales, el costo de mano de obra y el descuento.
  • Asegúrate de que las operaciones se realicen en el orden correcto usando paréntesis si es necesario.
  • Imprime el resultado.

Código C

Consola

Práctica: Evaluación de Expresión Matemática Compleja

Escribe un programa en C que calcule la siguiente expresión matemática:

  • Resultado=(x+y)∗(a−b)/c+d%2
Los valores de x, y, a, b, c, y d deben ser ingresados por el usuario. Asegúrate de usar los operadores correctamente y tener en cuenta la prioridad de cada uno. Instrucciones:
  • Calcula el resultado de la expresión utilizando operadores aritméticos, incluyendo multiplicación, división, módulo y paréntesis.
  • Imprime el resultado final de la expresión.

Código C

Consola

3.9 Elaboración de programas.

Identificación del Problema

Pruebas y Depuración

Análisis del Problema

Optimización

Diseño del Programa

Documentación

Implementación del Programa

Mantenimiento

3.10 Pruebas y depuración

Definiciones básicas

La prueba y depuración son dos fases fundamentales en el proceso de desarrollo de software. Aunque la prueba asegura que el programa cumpla con los requisitos y funcione de acuerdo con lo esperado, la depuración se centra en identificar y solucionar los problemas cuando algo no funciona correctamente.

Pruebas de Software

Las pruebas son una serie de acciones diseñadas para verificar que el programa esté funcionando correctamente. Su objetivo es verificar que el programa cumpla con los requisitos y entregar los resultados esperados bajo diferentes condiciones.
  • Pruebas unitarias: Se enfocan en verificar si las funciones individuales del programa funcionan correctamente. Es como probar una pieza pequeña de un rompecabezas por separado.
  • Pruebas de integración: Verifican si diferentes partes del programa, que ya han sido probadas individualmente, funcionan bien cuando se integran. Esto es especialmente importante cuando el programa tiene varias funciones o módulos.
  • Pruebas de sistema: Se aseguran de que el sistema completo funcione como un todo. Se verifican las interacciones de todos los componentes y cómo funcionan juntos.
  • Pruebas de aceptación: Validan si el programa cumple con los requisitos del usuario y si está listo para su uso final. Esto es una validación final antes de que el software sea liberado.
  • Pruebas de regresión: Se realizan para asegurarse de que las modificaciones realizadas en el código no hayan roto otras funcionalidades que ya estaban trabajando correctamente.

Técnicas de Pruebas

Al realizar pruebas, es importante seguir ciertas estrategias para asegurar que el programa sea probado de manera exhaustiva.
  • Prueba con datos válidos: Es lo más común. Consiste en ingresar datos que deberían funcionar correctamente.
  • Prueba con datos inválidos: Se prueba cómo el programa maneja entradas incorrectas o inesperadas.
  • Prueba límite: Se prueba con valores en los límites del rango esperado de entradas.
  • Prueba de rendimiento: Se verifica si el programa sigue funcionando de manera eficiente cuando se le da una carga elevada de trabajo (por ejemplo, grandes cantidades de datos).

Depuración

La depuración es el proceso de identificar, analizar y corregir errores o "bugs" en el código. Es una parte crucial en la programación, ya que es inevitable cometer errores, y la depuración permite encontrar y corregir esos errores para que el programa funcione correctamente.
  • Revisar los errores de sintaxis: Al compilar el programa, si hay errores de sintaxis (por ejemplo, falta de punto y coma o paréntesis), el compilador te los indicará.
  • Revisar los errores lógicos: Estos son errores en la lógica del programa, donde el código se ejecuta, pero el resultado es incorrecto. Puede ser por condiciones mal planteadas, cálculos incorrectos, etc. Los errores lógicos son más difíciles de identificar que los errores de sintaxis.
  • Usar depuradores (debuggers): Los depuradores son herramientas que permiten ejecutar el programa paso a paso, ver el contenido de las variables en tiempo de ejecución y detectar en qué parte del programa ocurre el error.
  • Impresión de mensajes de depuración: A veces, es útil imprimir el valor de ciertas variables en puntos clave del programa para ver qué está sucediendo. Esto puede ayudar a detectar si el programa está siguiendo el flujo correcto.

Estrategias Comunes para la Depuración

La depuración es el proceso de identificar, analizar y corregir errores o "bugs" en el código. Es una parte crucial en la programación, ya que es inevitable cometer errores, y la depuración permite encontrar y corregir esos errores para que el programa funcione correctamente.
  • Revisar los errores de sintaxis: Al compilar el programa, si hay errores de sintaxis (por ejemplo, falta de punto y coma o paréntesis), el compilador te los indicará.
  • Revisar los errores lógicos: Estos son errores en la lógica del programa, donde el código se ejecuta, pero el resultado es incorrecto. Puede ser por condiciones mal planteadas, cálculos incorrectos, etc. Los errores lógicos son más difíciles de identificar que los errores de sintaxis.
  • Usar depuradores (debuggers): Los depuradores son herramientas que permiten ejecutar el programa paso a paso, ver el contenido de las variables en tiempo de ejecución y detectar en qué parte del programa ocurre el error.
  • Impresión de mensajes de depuración: A veces, es útil imprimir el valor de ciertas variables en puntos clave del programa para ver qué está sucediendo. Esto puede ayudar a detectar si el programa está siguiendo el flujo correcto.

Práctica: Identificación de Errores Lógicos

A continuación, tienes un programa en C que está diseñado para calcular la media de 5 números enteros ingresados por el usuario. Sin embargo, hay un error lógico en el cálculo de la media. Debes identificar el error, corregirlo y hacer las pruebas necesarias para verificar que el programa funcione correctamente.

Práctica: Depuración de un Programa con Errores de Sintaxis y Lógica

A continuación, tienes un programa con varios errores de sintaxis y lógica. Tu tarea será realizar las pruebas y depuraciones necesarias para que el programa funcione correctamente. El programa está diseñado para calcular el área de un triángulo a partir de su base y altura, pero presenta errores.

Unidad finalizada

Se usan para representar números enteros, sin decimales, ideales para conteos y cálculos en bucles o estructuras de control.

Se usan cuando se necesitan valores con decimales, como medidas de temperatura, costos o valores de precisión en ingeniería.

Se usa para almacenar caracteres individuales, como letras o símbolos.

Almacena solo 0 (falso) o 1 (verdadero), útil para tomar decisiones en el programa.

Se usa cuando los valores pueden ser muy altos, como en bases de datos o cálculos científicos.

Se usa cuando los valores no superan un cierto límite, lo que reduce el consumo de memoria.

Se usa cuando los valores nunca serán negativos, permitiendo almacenar números más grandes con el mismo tamaño de memoria.

Se usa cuando es necesario representar tanto valores positivos como negativos, como en mediciones de temperatura o presión.

Permiten almacenar diferentes tipos de datos bajo un solo nombre, lo que ayuda a representar entidades con atributos relacionados, como una persona

Permite almacenar diferentes tipos de datos, pero solo uno de ellos al mismo tiempo. Comparten la misma ubicación de memoria, lo que ayuda a ahorrar espacio.

Permite representar un conjunto de constantes con nombres que mejoran la legibilidad del código, lo que es útil en la toma de decisiones o para gestionar estados.

Los punteros permiten acceder y modificar datos en memoria de forma más rápida y eficiente

Permiten modificar variables dentro de una función sin necesidad de retornarlas.

Los punteros facilitan la manipulación de arreglos y cadenas de texto sin necesidad de índices.

Los punteros permiten reservar y liberar memoria en tiempo de ejecución con malloc y free.

Los punteros permiten implementar listas enlazadas, árboles y estructuras dinámicas.

Práctica: Uso de Tipos de Datos Primitivos en C

Objetivo: Comprender y aplicar los diferentes tipos de datos primitivos en C: int, float, double, char y bool (con stdbool.h). Instrucciones: Escribe un programa en C que solicite al usuario ingresar:

  • Un número entero (int) para representar la edad.
  • Un número decimal (float) para representar la temperatura.
  • Un número de alta precisión (double) para representar la distancia entre dos ciudades.
  • Un solo carácter (char) para representar la inicial de su nombre.
  • Un valor lógico (bool) para indicar si es estudiante (true o false).
  • Muestra en pantalla los valores ingresados con un mensaje adecuado.
Preguntas de análisis
  • ¿Qué sucede si ingresas una letra en lugar de un número entero?
  • ¿Qué diferencia notas entre float y double al manejar números decimales?
  • ¿Por qué se usa %lf en scanf para double pero %f en printf?
  • ¿Qué ocurre si ingresas más de un carácter en la variable char?

Práctica: Uso de Tipos de Datos Modificados en C

Objetivo: Utilizar tipos de datos modificados en C (short, long, unsigned, signed) para manejar diferentes rangos de valores. Instrucciones:

  • Declarar las siguientes variables en tu programa: short int edad, unsigned int poblacion, long int distancia, signed char letra, unsigned long int estrellas.
  • Solicitar al usuario los siguientes datos: edad (un número entero puede ser positivo o negativo), población (un número entero no negativo sin signo), distancia (un número largo puede ser positivo o negativo), letra (un solo carácter que puede ser una letra o símbolo), número de estrellas (un número entero largo no negativo sin signo).
  • Mostrar los valores ingresados: mostrar cada valor junto con el tipo de dato correspondiente y Asegúrate de que los valores se muestren en el formato adecuado.

Práctica: Uso de Tipos de Datos Compuestos en C

Objetivo: Aprender a utilizar los tipos de datos compuestos en C, específicamente las estructuras y arreglos, para organizar y manejar múltiples datos relacionados. Instrucciones:

  • Crea una estructura llamada Alumno que contenga los siguientes campos: nombre (de tipo char[50] para almacenar el nombre del alumno), edad (de tipo int para almacenar la edad), promedio (de tipo float para almacenar el promedio de calificaciones), matricula (de tipo char[10] para almacenar la matrícula del alumno).
  • Solicitar al usuario la información de un alumno: pide al usuario que ingrese el nombre, edad, promedio y matrícula de un alumno.
  • Almacenar y mostrar la información de un alumno: almacena la información ingresada en una variable de tipo Alumno y muestra la información del alumno utilizando la estructura.
  • Definir un arreglo de alumnos: define un arreglo de 5 alumnos, solicita al usuario la información de estos 5 alumnos, muestra la información de todos los alumnos ingresados.

Práctica: Uso de Tipos de Datos Punteros en C

Objetivo: Comprender el uso de punteros en C para manipular direcciones de memoria y trabajar con variables indirectamente. Instrucciones:

  • Declarar las siguientes variables en tu programa: una variable de tipo int llamada numero, una variable de tipo float llamada promedio, una variable de tipo char llamada letra.
  • Declarar punteros para cada una de las variables anteriores: un puntero de tipo int llamado ptr_numero, un puntero de tipo float llamado ptr_promedio, n puntero de tipo char llamado ptr_letra.
  • Asignar valores a las variables: asigna un valor entero a la variable numero, asigna un valor decimal a la variable promedio, asigna un carácter a la variable letra.
  • Asignar las direcciones de memoria de las variables a los punteros: utiliza los punteros para almacenar las direcciones de memoria de las variables correspondientes.
  • Modificar el valor de las variables usando los punteros: modifica el valor de cada variable utilizando su puntero (es decir, accediendo a la dirección de memoria y cambiando el valor a través del puntero).
  • Mostrar los resultados: muestra los valores de las variables y sus direcciones de memoria utilizando punteros y muestra los valores modificados de las variables después de usar los punteros.

Funciones

Estructuras

Arreglos

Variables

Son utilizadas para definir bloques de código que realizan tareas específicas.

Se utilizan para almacenar un conjunto de variables bajo un solo nombre.

Se utilizan para almacenar colecciones de datos.

Se utilizan para almacenar datos de un tipo específico

Características de los identificadores

  • Comienzo con una letra o un guion bajo (_):
    • Un identificador debe comenzar con una letra (mayúscula o minúscula) o un guion bajo (_). No puede empezar con un número.
    • Ejemplo: nombre, _valor, empleado1.
  • Pueden contener letras, números y guiones bajos:
    • Después del primer carácter, un identificador puede contener letras, números y guiones bajos.
    • Ejemplo: total_ventas, producto123.
  • No son palabras reservadas:
    • Los identificadores no deben ser palabras clave o reservadas en el lenguaje de programación, como int, float, while, if, etc.
    • Ejemplo incorrecto: int = 5; (aquí, int es una palabra reservada).
  • Sensibilidad a mayúsculas y minúsculas:
    • Los identificadores en C son sensibles a mayúsculas y minúsculas. Esto significa que empleado, Empleado y EMPLEADO son tres identificadores diferentes.
    • Ejemplo: total, Total, TOTAL son distintos.
Importancia de los identificadores
  • Legibilidad: Los identificadores deben tener nombres descriptivos que ayuden a comprender el propósito de la variable o función.
    • Ejemplo: totalVentas es más claro que t.
  • Mantenimiento del código: Un buen nombre de identificador facilita la modificación y depuración del código.
  • Evitar confusión: Es fundamental usar identificadores que no se confundan con palabras reservadas ni con otros identificadores en el programa.

📌 Aplicaciones:

  • Optimización de memoria: Elegir el tipo de dato adecuado para evitar desperdicio de memoria.
  • Sistemas embebidos: Uso de short int o char para ahorrar espacio en dispositivos con poca memoria.

📌 Aplicaciones:

  • Uso de punteros: Manipulación eficiente de datos en memoria.
  • Paso de parámetros por referencia: Para modificar valores dentro de funciones sin retornarlos.
  • Manejo de estructuras dinámicas: Como listas enlazadas y árboles binarios.

Ejemplo

int resultado = 10 + 5; + es el operador 10 y 5 son los operandos resultado = 10 + 5 es una expresión.

Tabla Resumida de Prioridad de Operadores

La elaboración de programas es un proceso fundamental en la programación que implica desarrollar soluciones mediante un conjunto organizado de instrucciones. Este proceso puede llevarse a cabo en varias etapas, desde la identificación del problema hasta la implementación de la solución en un lenguaje de programación.

Identificación del Problema

El primer paso en la elaboración de un programa es entender el problema que se debe resolver. Esto involucra identificar:

  • La necesidad: ¿Qué función debe cumplir el programa?
  • Las entradas y salidas: ¿Qué datos recibirá el programa (entradas) y qué resultados deberá entregar (salidas)?
  • Los requisitos: ¿Qué condiciones o restricciones deben cumplirse? ¿Hay limitaciones de tiempo, espacio o recursos?

Análisis del Problema

Una vez comprendido el problema, se debe realizar un análisis detallado:

  • Descomposición: Divide el problema en partes más pequeñas y manejables.
  • Determinar el algoritmo: El algoritmo es la secuencia de pasos ordenados que resuelven el problema. Esto incluye las decisiones lógicas y las operaciones necesarias.
  • Especificar entradas y salidas: Qué datos recibirá el programa y en qué formato se deben presentar los resultados.

Diseño del Programa

El diseño es la etapa donde se estructura el código que se va a implementar. Esto puede incluir:

  • Estructuras de datos: Definir cómo almacenar y organizar los datos (por ejemplo, enteros, flotantes, arrays, estructuras).
  • Diagrama de flujo o pseudocódigo: A veces, los programadores crean diagramas de flujo o escriben pseudocódigo para visualizar cómo el programa llevará a cabo las operaciones.

Implementación del Programa

La implementación es el proceso de escribir el código en un lenguaje de programación.

  • Aquí se deben seguir los pasos y la estructura del algoritmo utilizando la sintaxis del lenguaje elegido (en este caso, C).

Pruebas y Depuración

Una vez que el programa está implementado, es crucial realizar pruebas para verificar que funciona correctamente. Las pruebas deben cubrir una variedad de casos, incluyendo:

  • Entradas válidas: Asegurarse de que el programa funcione correctamente con datos normales.
  • Entradas inválidas: Probar con entradas no válidas para ver si el programa maneja errores adecuadamente.
Depuración: Si se detectan errores, el proceso de depuración ayuda a identificar y corregir problemas en el código. Esto puede implicar:
  • Revisar el flujo de datos.
  • Verificar la lógica.
  • Asegurarse de que las variables estén correctamente inicializadas.

Optimización

Después de que el programa funciona correctamente, es posible que desees mejorar su eficiencia. La optimización puede implicar:

  • Reducir el tiempo de ejecución: Hacer que el programa se ejecute más rápido.
  • Reducir el uso de memoria: Hacer que el programa consuma menos recursos.

Documentación

Una parte esencial de la elaboración de programas es la documentación. Esto incluye:

  • Comentarios en el código: Describir qué hace cada parte del programa para que otros programadores (o incluso tú mismo en el futuro) puedan entenderlo.
  • Manual de usuario: Si el programa es complejo, un manual de usuario puede ayudar a las personas a entender cómo usar el programa correctamente.

Mantenimiento

Una vez que el programa está en uso, es posible que necesite modificaciones o mejoras. El mantenimiento del programa incluye corregir errores, agregar nuevas características y asegurar que siga funcionando correctamente con el tiempo.