miércoles, 5 de abril de 2023

Lección 01. Variables, entrada y salida estándar.

 Entrada y salida estándar. 

    En una computadora, el concepto clásico que todos tenemos, tiene varios dispositivos de entrada y salida de datos.

Entradas  Salidas
Teclado  Monitor
Micrófono
 Bocinas
Puertos USB
 Ventiladores
Botones de encendido/reinicio
 Puerto VGA
Ratón
 Puerto HDMI
Reloj de tiempo real
 Unidades de almacenamiento
Cámara de vídeo
 LEDs indicadores

    Un teléfono celular también es una computadora, la cual funciona con el propósito de hacer y recibir llamadas, aunque actualmente tienen un sin fin de utilidades más. Comparte con la PC clásica el hecho de que consta de dispositivos de entrada y salida de datos como lo es un touchpad, pantalla, micrófono, auriculares, bluetooth, wifi, etc.

    En lenguaje C es posible utilizar todos los dispositivos de entrada y salida de una computadora. Aunque esto puede ser tanto muy complejo como muy sencillo dependiendo de la aplicación que se esté desarrollando al momento.

    Para fines educativos, en este espacio se utilizará solamente la terminal o consola para hacer la ejecución de nuestros programas en Lenguaje C, y más adelante se utilizarán los puertos de entrada y salida de microcontroladores y/o microprocesadores a nuestra disposición. 

    En C estándar la biblioteca "studio.h" contiene las funciones básicas para el uso de los puertos de entrada salida, y en nuestro caso hemos utilizado ya una de ellas, que es "printf". Esta función sirve para imprimir mensajes en la pantalla. Su uso se irá extendiendo a base de ejercicios.

Variables

Tipos de datos

    Vamos a partir que en este punto, que tienes conocimientos de matemáticas básicos sobre todo algebra, pues en al final las computadoras solamente pueden reconocer números por medio de almacenamiento de energía eléctrica que se organizan en cadenas de 0s y 1s.  
    Una forma sencilla de comprender una variable es la x de una ecuación de primer grado solucionada, es decir un espacio que puede contener un valor. 
    En lenguaje C, tenemos unas cuantas formas de reconocer datos para considerarlos en diferentes tipos. Esto no sera tan fácil de digerir al inicio supongo, pero con la práctica se verá más fácil. Aquí usaremos el precepto de: "La mejor forma de aprender a programar es programando". Los elementales son los siguientes:
  • Enteros, tal como en las matemáticas son los números que no tienen parte fraccionaria, o punto decimal. Para declararlos existen palabras reservadas especificas:
    • int: Entero con signo de 2 bytes (16 bits) y puede tener valores entre -32768 a 32767. El númeto de datos que se pueden representar con 2¹⁶ en representacion binaria. Si no entendiste esta parte, con algunos ejercicios más adelante se intentará hacerlo más claro. 
    • unsigned int: Entero sin signo es decir, sus valores van de  0 a 65535.
    • long int: El modificador long, dobla el tamaño  "base" de los tipos de dato. para los enteros quedaria en 8 bytes, es decir  
  • Caracteres:
    • char: Es un tipo de datos de 1 byte (8 bits) que codifica el codigo acci (una googleada no esta mal para ver de que se trata).  
  • Cadena de caracteres:
    • No es un tipo de dato como tal en Lenguaje C, se maneja como un array de tipo char, mas adelante se tomara en cuenta de mejor manera.
  • Punto flotante:  Es el tipo de datos que permite utilizar números decimales es decir que tienen parte entera y parte fraccionaria. 
    • float: este tipo de dato por lo general es de 4bytes de precisión para representar numero decimales. sus valores van de 3.4E-38 a 3.4E+38
    • double: este tipo de dato esta compuesto de 8 bytes 1.7E-308 a 1.7E+308.
 Probablemente esto en un principio no sea tan importante, pero ya en el momento de trabajar es algo que debe tomarse muy en cuenta. Vale la pena empezar a familiarizar los conceptos.

Tipos de Variables
    Las variables se pueden organizar en dos grandes tipos. 

Globales

    Este tipo de variables se puede utilizar en cualquier momento dado que se declaran de forma que todo el código tenga la capacidad de acceder a ellas. 

Locales

    Este tipo de variable se define en una parte específica del código y es invisible o inaccesible para el resto de la aplicación. 

En este punto se que te estarás preguntando: ¿Que chingados?  sobre todo si es tu primera vez tomando estos conceptos. El autor esperaría que no, que ya estas ampliando tu conocimiento. En todo caso, se peude ver mejor en el repositorio de Github donde se incluye un ejemplo de uso de entrada y salida de datos que se guardan en variables de distintos tipos. 

Ejemplo práctico

    El archivo printScanVariables.c contiene el codigo para interactuar con la pantalla y el teclado con un codigo muestra, es muy básico pero creo que se comprendera facilmente. En el se puede ver el uso de la función scanf, printf y como pueden distintas variables tener alcances globales y locales.

    Las variables se declaran con un tipo de dato y el valor iniciar (de preferencia) debido a que si esto no se hace puede en algun punto haber comportamientos extraños producto de valores no esperados.

Como se puede ver se sigue la estructura de un programa estandar, al inicio los headers, la sección de macros, variables globales, prototipos de funcion, funcion principal y funciones vamos a llamarles secundarias. 

Dentro del archivo se puede encontrar tambien la forma de imprimir distintos tipos de datos, como lo son caracteres, enteros y números flotantes. utilizando el formato de la función printf (que de hecho deriva del nombre print with format). La función printf se utiliza en su forma más simple con la estructura: 

printf ("Cadena de caracteres", parametros de distinto tipo de dato).

Los modificadores de formato mas utilizados son los siguintes:
  • %d: para imprimir un número entero con signo.
  • %u: para imprimir un número entero sin signo.
  • %f: para imprimir un número en coma flotante.
  • %c: para imprimir un carácter.
  • %s: para imprimir una cadena de caracteres.
  • %p: para imprimir un puntero.
  • %x o %X: para imprimir un número en formato hexadecimal.

A grandes rasgos se utilizarán comas para separar los parametros di la funcion, que pueden ser los tipos de datos vistos anteriormente (enteros, caracteres, flotantes, etcétera).






















Para el caso de la lectura de datos desde el teclado, se utiliza la funcion scanf() la cual funciona  tomando datos de teclado y guardandolos en las variables. Al igual que printf funciona con la misma estructura utilizando caracteres de formato. 






En el código ejemplo se utilizan funciones que serán explicadas más adelante. Recomiendo descargar el código y en base a el crear una funcion main que permita escribir mensajes personalizados,  leer frases y leer variables para hacer algunas otras operaciones. Por ejemplo de desigualdades. 

Para el caso de la lectura de datos, se realiza por medio de la funcion scanf().

La funcion scanf(), utiliza los mismos operadores que scanf, no daremos muchos detalles debido a que este curso esta pensado en darle mas importancia a los sistemas embebidos. Asi que la utilizaremos solamente para aprender un poco la lógica de programación. 















No hay comentarios.:

Publicar un comentario

Yocto Project II. Primera configuración de sistema y compilación.

 Se dice que la mejor manera de aprender a programar es programando, el mismo principio se sigue respetando para cuestiones de sistemas oper...