18 de abril de 2023

Diagrama secuencial


En las acciones secuenciales las tareas se realizan considerando que la salida de un proceso es la entrada del siguiente, y así sucesivamente hasta finalizar la cadena de procesos.

La sucesión se reconoce pues como la secuencia de eventos, asociados a un conjunto de números u otros objetos matemáticos relacionados o encadenados de forma sucesiva entre sí, teniendo en cuenta la posición relativa de cada número para  definir un criterio de orden.

Cuando ya se tiene una "regla de orden" se dice que ya se tiene la caracterización de la sucesión, por haberse descubierto las características relevantes o importantes.

La secuencia lineal es la estructura más simple, y consiste en una sucesión de etapas unidas consecutivamente por líneas de evolución y condiciones de transición. Dentro de un tramo  de la secuencia lineal, solamente una etapa debe estar activada en un instante determinado.

Al construir varias secuencias lineales de acción, basta construir cada acción en una línea diferente.

Debemos tener presente que la electrónica digital utiliza magnitudes con cantidades discretas, mientras que la electrónica analógica  utiliza magnitudes con valores continuos que varían en el tiempo.

  En la programación en lenguaje emsamblador :El diseño secuencial equivale un recorrido a través de los diversos niveles de descripción del sistema a partir de especificaciones o requisitos, los cuales se plantean con un grafo de estados  de sus biestables y los del circuito secuencia que están compuestos por circuitos combinacionales y elementos de memoria.

Por lo tanto un sistema secuencial es aquel cuyas salidas no solo dependen de las entradas para cambiar sus salidas, sino que también depende de otras variables como su estado anterior y en algunas ocasiones de un pulso de reloj.






5 de abril de 2023

Lógica de Boole

El ingenio y sabiduría del matemático,"experto en teoría de conjunto" señor George Boole, sentó las bases de la lógica computacional al crear el álgebra de boole que fortaleció una lógica sencilla pero original, ya que creo los operadores matemáticos lógicos especiales o únicos, como la suma lógica (no aritmética), producto lógico (no aritmético), y un operador que determina el complemento o negación de un valor a un estado previo lógico.
Para establecer una diferencia notoria entre las operaciones o funciones aritméticas comunes,se usan los símbolos de las operaciones lógicas encerrados en pequeñas circunferencias, ejemplo  aplicado: 
El producto lógico u operación AND:
                                  
La suma lógica u operación OR :














Negación o complemento lógico NOT :


Algoritmo

Algoritmo es pues una secuencia de pasos,etapas o instrucciones finitas ordenadas y bien definidas para resolver un problema.Cada paso se siguen de forma rigurosa para obtener siempre un mismo resultado, y el fin último es la obtención de una solución satisfactoria al problema,el cual se plantea previamente con claridad y precisiones óptimas.

Para llegara la solución,debemos disponer en dicha búsqueda de un planteamiento razonable con un lenguaje previamente elaborado para que lo que se pretende obtener tenga o cumpla con las condiciones iniciales planteadas y que sea, de procesos y resultados finitos. 

También debemos de disponer de unos formatos o gráficos que nos permitan estructurar las ideas previas en forma clara y precisa, a manera de borradores o borradores previos, como bocetos gráficos, usando diagramas de bloques o de flujo para establecer secuencias en el proceder en cada uno de los detalles de la secuencia de las actividades a desarrollar tener el resultado buscado, por ejemplo:

1.usar óvalos o rectángulos redondeados en los extremos para precisar los terminales de inicio y finalización del proceso total.

2. Para sugerir ingreso de datos, que pueden ser constantes, variables o cadenas de caracteres alfanuméricos o gráficos, podemos usar una figura geométrica trapezoidal.

3.Usaremos rectángulos como los marcos de referencia para reconocer los procesos necesarios en cada etapa a seguir para obtener el resultado parcial.

4.El rombos se asocia a situaciones de selección bicondicional para crear toma de decisiones o alternativas de depuración o procesamiento de datos en orden decremental o incremental, e incluso para crear ciclos iterativos improvisados. 

5.Un rectángulo con líneas paralelas en los extremos nos da la idea de la inserción de una subrutina, macros o programas preelaborado que potencian el resultado esperado. 

6.Un rectángulo con el borde inferior ondulado nos indica la presentación de resultados en pantalla, display  o por impresora, etc.



2 de marzo de 2023

Números binarios

 Desde tiempos inmemoriales el humano se ha acercado a la noción de cantidad de diversas formas pero la que hasta hoy es vigente está basada en polinomios con potencias de base diez, que usa 10 símbolos o dígitos únicos.

Se han descubierto muchos sistemas de numeración polinomiales y han asociado fácilmente el sistema de numeración hexadecimal o de base 16, el de base 8 u octal, y después de todo se a reconocido el sistema más sencillo al sistema binario o de base dos.

También se logró establecer una relación entre  los números binarios y el álgebra de Boole para interpretar la funcionalidad de todas las máquinas (desde la de palancas, poleas, de piñones con operadores neumáticos, hidráulicos, eléctricos, electrónicos y fotónicos, desde entonces al sistema binario se le llama "lenguaje de máquina o de bajo nivel" por estar muy cerca al funcionamiento de la máquinas, sobre todo a los microprocesadores y microcontroladores, que son el corazón de los computadores y robots.

Los números binarios pueden expresar entonces los diversos estados de los operadores tecnológicos que conmutan los estados y generan diferentes alternativas combinatorias con la lógica Booleana.

Por ejemplo podemos simular un circuito con cuatro interruptores (variables) como entradas del sistema que ponen a funcionar a tres bombillos, tomados como salidas o respuestas del sistema del ejemplo: 










Tabla de verdad o de análisis de comportamiento del circuito cuando se cierran (1) o se abren (0) y los interruptores prenden (1) o apagan (0) los bombillos.

Los interruptores(o entradas de datos del sistema) están representados por la letra S y las respuestas de los bombillos (o salidas del sistema) por la B con su respectivo subíndice.

Conversión de números decimales  a binarios usando el Código ...8421

Si entramos a reconocer que todo sistema de numeración se base en un polinomio, que se leen de derecha a izquierda y que cada posición se va incrementando de valor en ese orden, para el caso de los números binarios podemos utilizar el recurso didáctico del código 8421, así para un número de 4 cifras o 4 posiciones:

  •                Número binario           Número de base diez
  •                          0011                                3
  •                          0111                                 7
  •                          1111                               15
Si aún no es claro dicho método, podríamos usar el método de: conversión de decimal a binario de la división sucesiva por 2
ejemplo:  para el número 18.

residuo 0, de 18➗2=9, residuo 1, 9➗2da4, residuo 0, 4➗2da2;residuo 0, 2➗2da
Entonces tomamos los residuos, incluyendo el último divisor 1, quedando así,01001; al invertirlo queda: 10010 que es el equivalente en números binarios del número de base diez 18.:
18 = 10010
También podemos verificar el número binario expresándose en un número decimal de la siguiente manera:

18  = 1x (2^4) + 0x (2^3) + 0x ( 2^2) + 1x (2^1) + 0x  (2^0)
                     18   =  1 X 16 +  0           + 0             +  1x 2      + 0       
               18 =    16  + 2

Nota : 2^4= 16, significa dos elevado a la 4 que da como resultado 16.
            así como 2^1 da 2.


25 de febrero de 2023

El seudocódigo

 Son todos los recursos y peripecias formales (generalmente gráficas) para modelar y verificar la funcionalidad del algoritmo en estudio.

Para emprender la tarea de la programación de computadores debemos tener claro lo siguiente:

* Con qué metodología de trabajo contamos para resolver la necesidad o problema planteado en términos coloquiales.Algunos se referencian en el método de proyectos, muchos usan el método de problemas adecuandolo a las circunstancias específicas de la situación que quieren abordar. 

* También debemos referenciamos en el modelo sistémico para reconocer que debemos contar con unos insumos o datos de entrada, reconocer que debemos seguir unos procesos, debemos de plantear o desarrollar de forma finita los procesos para obtener los resultados intermedios y/o finales (según el encadenamiento de procesos planteados hasta llegar al final). 

* Debemos tener presente con qué  tipo de recursos gráficos y/o de de diseño debemos contamos para establecer la representación de la secuencias de las operaciones lógicas y matemáticas (diagramas de flujo o de bloques) de cada instrucción (asociada a comandos) para consolidar el paso a paso del proceso o procesos que debemos realizar para llegar al resultado esperado (rutinas y subrutinas) y así ir construyendo el algoritmo.

*Tener claro a qué programa de segundo nivel vamos a recurrir y por qué lo elegimos(para codificar las instrucciones que luego se compilaran para ser adecuado al lenguaje de bajo nivel de la máquina).

* Cuál es la mnemotecnia de los comandos, sentencias, códigos o instrucciones fundamentales del programa a usar.(muchas veces son palabras en inglés).

*Identificar los datos de entrada, manejar los caracteres alfanuméricos, y las variables como las constantes, reconocerlas y caracterizarlas.

* Tener en cuenta las prioridades u órdenes en las operaciones lógicas y matemáticas del los procesos algorítmicos, siempre economizando ciclos reiterativos e instrucciones para que estén las mínimas posibles. 

Al resolver un problema y definir sus pasos específicos para la solución en los cuales hay tareas recurrentes, la primera herramienta a la que debemos considerar son el pseudocódigo y los diagramas de flujo.

El pseudocódigo es pues un código falso pero es una herramienta prácticamente imprescindible en la arquitectura complejas de software. Y es para compartirlo o explicárselo a varias personas, es un lenguaje completamente comprensible para cualquier persona que hable español, y también es claro que cada instrucción puede convertirse a cualquier lenguaje de programación para hacer que una computadora haga el proceso planteado; por eso podemos decir que cuando trabajan varias personas escribiendo código sobre los mismos módulos de software y lo comparten, es cuando se empieza reconocer la importancia del pseudocódigo.

La sintaxis o forma de escribir el pseudocódigo es la de un lenguaje natural con una estructura de lenguaje de programación. El pseudocódigo no debe incluir código de programación que la máquina podría entender, si lo hace, deja de ser pseudocódigo.

Normas prácticas a considerar para que todos nos entendamos y seamos lo más homogéneo posible en relación con otros programadores:

--Lo que sea texto siempre se pone entre comillas, los números NO.

--Hacer referencia a estructuras de datos o procesos.

--Nombrar variables y especificar valores permitidos a esas variables.

--Poner en negrita las acciones o el punto de inicio de un proceso importante.

--Iniciar el programa con la palabra: Inicio.

--Finalizar el programa con la palabra: Fin.

 El Diagramas de flujo: es una forma gráfica del pseudocódigo. para representar condicionales y ciclos del programa, dos de las estructuras más importantes en la programación son las condicionales y los ciclos, Si sigues las direcciones de las flechas puedes entender cuando el ciclo se repite y esto va a depender de la condición propuesta inicialmente.

Para empezar, debemos tener conocimientos sobre principios de programación estructurada, como el concepto de variables, ciclos y funciones:

Variables: son un espacio en la memoria que puede ser modificado y que tiene un valor que nos será útil en un futuro para realizar un procedimiento específico.También existe un concepto muy similar llamado constante que es básicamente lo mismo, con la diferencia que el valor no se puede cambiar.[...]

Condicionales: es una estructura usada en la programación que evalúa una igualdad, desigualdad o un objeto literal, usado para resolver lo que se está evaluando y en caso de dar una respuesta positiva, ejecuta lo que está inmediatamente después en el proceso, en caso de resultar falso, no ejecuta lo que está a continuación, sino que realiza otra instrucción previamente definida por el programador.Ciclos: son funciones o procedimientos que se ejecutan N cantidad de veces de forma automática, ésto facilita mucho el manejo de grandes cantidades  de información y hace que el proceso se encargue de los procedimientos largos y complejos.

Hay muchas maneras de configurar un ciclo, while, do while, for, foreach, map, filter, etc. Pero todas cumplen con una misma función, recorrer un arreglo de datos para realizar una tarea que nosotros definamos.

Funciones: son bloques de código individuales y reutilizables que se comportan como microprogramas que pueden o no recibir parámetros, realizan un procedimiento y pueden o no retornar un valor al programa que se llamó.

Ejemplo de metodo de solucion de problemas:

  • 1. Definir y delimitar el problema a solucionar (enunciando el problema).
  • 2. Desarrollar un pseudocódigo o diagrama de flujo (algoritmo).
  • 3. Realizar verificaciones o lo que llaman pruebas de escritorio
  • 4. Codificación.
  • 5. Digitación.
  • 6. Compilación o interpretación del programa.
  • 7. Ejecución del programa.
  • 8. Evaluación de los resultados.

-------------------ooo-----------------------

Les recomiendo observar ésta página:

https://diagramaweb.com/simbologia-de-diagrama-de-proceso-2/




19 de febrero de 2019

Informática

La Informática es la reina de las tecnologías, por ser ciencia y tener componentes de la lingüística, con la inteligencia artificial (IA o smart), con la informática se manejan las comunicaciones,la información de forma eficiente (información como imágenes, símbolos, textos, música, etc.) y de manera automática recurriendo al computador, los celulares, la tv, la radio, etc.

La informática y la robótica constituyen los avances más significativos de  de los sistemas tecnológicos.y el corazón de ésos sistemas radica en el perfeccionamiento de los microprocesadores y microcontroladores.

Todo sistema informático tiene como aspectos importantes:
1. La energía apropiada para dicho fin 
2.La señal de reloj que sincroniza o armoniza la intervención de sus partes internas, dándole orden y rapidez al procesamiento sincrónico o asincrónico.
3. Manejo de señales de datos o información.
4. manejo de señal de control o redireccionamiento de la información, basadas en algún algoritmo que da prioridad en las tareas o actividades asignadas.
5. Manejo de señal de dirección o de ubicación de los datos en el proceso, ya sea secuencial o en paralelo en los buses o puertos correspondientes.

El fin último de la tecnología consiste en delegar todas las actividades repetidas o rutinarias a las máquinas o "sistemas tecnológicos mecánicos".
Las primeras máquinas para este fin fueron y son mecánicas, con palancas, poleas piñones y engranajes que al ser perfeccionadas, de ellas surgieron los primeros computadores analógicos.

Con el transcurrir del tiempo, el desarrollo tecnológico condujo a reconocer que toda máquina tiene "un código propio o lenguaje de máquina" que se basa en la codificación del sistema de numeración binaria: con el que podemos establecer toda una lógica o álgebra de Boole para impartir órdenes a dichas máquinas basadas instrucciones asociados a unos (1) y ceros ( 0).

Luego el humano reconoce que existen elementos de control de algún fluido físico o de energía, como el agua, los gases, la electricidad, el electromagnetismo o la luz; que sirven como elementos que canalizan materia, energía con información codificada.(ahí surge el salto de los sistemas combinacionales a secuenciales, considerado también los aspectos de costos económicos)

En el  estudio del desarrollo de cada condición física se fueron descubriendo analogías en el estudio de los comportamientos  de los elementos de cada sistema técnico que facilitaron  establecer similitudes que permiten saltar de elementos, dispositivos u operadores tecnológicos desde la mecánica, fluídica, electromecánica, electricidad, y la fotónica, por principios o paramatros analogicos de comportamiento en la interacción de conjunto del sistema, a resultados satisfactorios acordes al alcance y nivel de manejo de información de control sobre los datos suministrados en cada nivel de desarrollo tecnológico.

Del avance tecnológico, del estudio de la electricidad se ha llegado a un nivel de desarrollo más avanzado y especializado en el manejo de información cuando se inventa el transistor como un dispositivo de control de información más rápido y eficiente que los mismos interruptores mecánicos o válvulas electrónicas , que establecen la electrónica de nuestros días. 
La electrónica se caracteriza inicialmente en manejar información analógica y hoy en dia es híbrida o información digital.(el futuro nos depara computadores cuánticos o con rayos de luz, manejando información en forma probabilística)
Al interior de los microprocesadores y microcontroladores  se presenta un proceso de manejo de voltajes que cambian de nivel alto a bajo, o viceversa de bajo a alto, a gran velocidad. Pero todos estos cambios de estado en los voltajes son interpretados en lengua binario como "1" y y ceros, y les llamamos lenguaje de máquina o de bajo nivel. Pero todos estos cambios de pulsos eléctricos también tiene unas codificaciones asociadas en un mnemotécnico propio del fabricante de esos chips, o códigos de instrucciones.  
llamado lenguaje de programación también de bajo nivel, también conocido como lenguaje de ensamble (assembler) del fabricante. Cabe aclarar que los lenguajes de bajo nivel son más rápidos para ejecutar informacion por estar más cercanos a la máquina en sí como tal (comparados con los programas de alto nivel).
Cuando en la máquina lleva a cabo el procesamiento de todas las instrucciones en la memoria de forma efectiva, es cuando hablamos de un programa objeto escrito en sistema binario, y  concluimos deduciendo que ya tenemos un programa funcional.
 A nivel comercial existen muchos lenguajes de programación más populares, llamados de "segundo nivel",( lenguaje,, python, c++, lenguaje C, etc ),estos programas  después de ser funcionales o responder para lo que fueron elaborados requieren ser interpretados y compilados, para poder ser asimilados mediante una compilación ajustada a las instrucciones de la lógica de booleana en el sistema binario de la máquina computacional.