miércoles, 26 de febrero de 2020

Unidad 1 Analizador Léxico, Sintáctico y Semántico

¿Que es un analizador léxico?


Analizador Léxico, Sintáctico y Semántico

Los ordenadores son una mezcla equilibrada de Software y Hardware
Los compiladores son programas de computadora que traducen de un lenguaje a otro un lenguaje escrito en lenguaje fuente y produce un programa equivalente escrito en lenguaje objeto
Un compilador se compone internamente de varias etapas o faces que realizan operaciones lógicas y estas son:

Analizador léxico
Lee la secuencia de caracteres de izquierda a derecha del programa fuente y agrupa la secuencia de caracteres en unidades con significado propio (componentes léxicos o tokens)
Las palabras clave identificadores, operadores, constantes numéricas, signos de puntuación como separadores de sentencia, llaves, parestesias, etcétera. son diversas clasificaciones de componentes léxicos.



Actividad:
Dos conceptos de analizador léxico, ejemplo y representación de sus componentes.


Análisis léxico (Scanner)
Scanner tiene las funciones de leer el programa fuente como un archivo de caracteres y dividirlo en tokens. Los tokens son las palabras reservadas de un lenguaje, secuencia de caracteres que representa una unidad de información en el programa fuente. En cada caso un token representa un cierto patrón de caracteres que el analizador léxico reconoce, o ajusta desde el inicio de los caracteres de entrada. De tal manera es necesario generar un mecanismo computacional que nos permita identificar el patrón de transición entre los caracteres de entrada, generando tokens, que posteriormente serán clasificados. Este mecanismo es posible crearlo a partir de un tipo especifico de maquina de estados llamado autómata finito.


Ejemplos:

Unidad 1 que es una maquina, un dispositovo y un automata

¿que es una maquina?

Definición de máquina. Del latín machĭna, un máquina es un aparato creado para aprovechar, regular o dirigir la acción de una fuerza. Estos dispositivos pueden recibir cierta forma de energía y transformarla en otra para generar un determinado efecto. ... El conjunto de máquinas se conoce como maquinaria.

la primera acepción que menciona el diccionario de la Real Academia Española (RAE) del término autómata alude al dispositivo que cuenta con un mecanismo interno que le permite realizar ciertos movimientos o desarrollar determinadas tareas.

El concepto también se utiliza para nombrar al robot de apariencia humanoide o animal que imita los movimientos corporales del ser vivo. “Una firma japonesa diseñó un autómata capaz de limpiar la casa”, “Los empresarios sueñan con autómatas que reemplacen a los trabajadores humanos para reducir los costos”, “Inauguran un restaurante donde la comida es preparada por autómatas”.

Los primeros autómatas surgieron hace miles de años, con funcionalidades muy limitadas. En la Edad Media se avanzó en la complejidad de estas máquinas hasta que, en el siglo XVIII, se produjo un auge. Hoy en día existen autómatas que pueden realizar con éxito distintas tareas propias del ser humano, e incluso reemplazarlo en algunos contextos.

Autómata, por otra parte, es el calificativo que reciben los individuos que actúan de manera irreflexiva: “Miles de personas caminan observando sus teléfonos, como autómatas”, “¿Puedes dejar de contestar como autómata y prestar atención a lo que te estoy diciendo?”, “No quiero un presidente autómata que se limita a obedecer las órdenes de los poderosos”.

En el libro titulado «La Universidad Blanca«, publicado en el año 2015 por el escritor valenciano Ismael Belda, una de las historias trata acerca de las aventuras de un autómata de aspecto humano que se pasea por California y, entre los sucesos más interesantes que le ocurren, tiene la oportunidad de conversar con los fantasmas de Vlad Tepes y el marqués de Sade. Se trata de una novela escrita en verso que, junto con una suerte de cancionero, complementa el extenso poema que hace de pieza central.


Estructura general.[editar]

Un autómata programable se puede considerar como un sistema basado en un microprocesador, siendo sus partes fundamentales la Unidad Central de Proceso (CPU), la Memoria y el Sistema de Entradas y Salidas (E/S).
La CPU realiza el control interno y externo del autómata y la interpretación de las instrucciones del programa. A partir de las instrucciones almacenadas en la memoria y de los datos que recibe de las entradas, genera las señales de las salidas. La memoria se divide en dos bloques, la memoria de solo lectura o ROM (Read Only Memory) y la memoria de lectura y escritura o RAM (Random Access Memory).
En la memoria ROM se almacenan programas para el correcto funcionamiento del sistema, como el programa de comprobación de la puesta en marcha y el programa de exploración de la memoria RAM.
La memoria RAM a su vez puede dividirse en dos áreas:
  • Memoria de datos, en la que se almacena la información de los estados de las entradas y salidas y de variables internas.
  • Memoria de usuario, en la que se almacena el programa con el que trabajará el autómata.
El sistema de Entradas y Salidas recoge la información del proceso controlado (Entradas) y envía las acciones de control del mismo (salidas). Los dispositivos de entrada pueden ser pulsadoresinterruptoresfinales de carreratermostatospresostatosdetectores de niveldetectores de proximidad, contactos auxiliares, etc.
Por su parte, los dispositivos de salida son también muy variados: Pilotos indicadores, reléscontactores, arrancadores de motores, válvulas, etc. En el siguiente punto se trata con más detalle este sistema.

Sistema de entradas y salidas.[editar]

En general, las entradas y salidas (E/S) de un autómata pueden ser discretas, analógicas, numéricas o especiales.
Las E/S discretas se caracterizan por presentar dos estados diferenciados: presencia o ausencia de tensión, relé abierto o cerrado, etc. Su estado se puede visualizar mediante indicadores tipo LED que se iluminan cuando hay señal en la entrada o cuando se activa la salida. Los niveles de tensión de las entradas más comunes son 5 V cc, 24 V cc/ca, 48 V cc/ca y 220 V ca.
Los dispositivos de salida más frecuentes son reléstransistores y triacs.
Las E/S analógicas tienen como función la conversión de una magnitud analógica (tensión o corriente) equivalente a una magnitud física (temperatura, presión, grado de acidez, etc.) en una expresión binaria de 11, 12 o más bits, dependiendo de la precisión deseada. Esto se realiza mediante conversores analógico-digitales (ADC's).
Las E/S numéricas permiten la adquisición o generación de información a nivel numérico, en códigos BCD, Gray u otros (véase código binario). La información numérica puede ser entrada mediante dispositivos electrónicos digitales apropiados. Por su parte, las salidas numéricas suministran información para ser utilizada en dispositivos visualizadores (de 7 segmentos) u otros equipos digitales.
Por último, las E/S especiales se utilizan en procesos en los que con las anteriores E/S vistas son poco efectivas, bien porque es necesario un gran número de elementos adicionales, bien porque el programa necesita de muchas instrucciones. Entre las más importantes están:
  • Entradas para termopar y termorresistencia: Para el control de temperaturas.
  • Salidas de trenes de impulso: Para el control de motores paso a paso (PAP).
  • Entradas y salidas de regulación P+I+D (Proporcional + Integral + Derivativo): Para procesos de regulación de alta precisión.
  • Salidas ASCII: Para la comunicación con periféricos inteligentes (equipo de programación, impresora, PC, etc.).

Ciclo de funcionamiento.[editar]

Cuando se pone en marcha el PLC se realizan una serie de comprobaciones:
  • Funcionamiento de las memorias.
  • Comunicaciones internas y externas.
  • Elementos de E/S.
  • Tensiones correctas de la fuente de alimentación.
Una vez efectuadas estas comprobaciones y si las mismas resultan ser correctas, la CPU... inicia la exploración del programa y reinicializa. Esto último si el autómata se encuentra en modo RUN (marcha), ya que de estar en modo STOP (paro) aguardaría, sin explorar el programa, hasta la puesta en RUN.
Al producirse el paso al modo STOP o si se interrumpe la tensión de alimentación durante un tiempo lo suficientemente largo, la CPU realiza las siguientes acciones:
  • Detiene la exploración del programa.
  • Pone a cero, es decir, desactiva todas las salidas.
Mientras se está ejecutando el programa, la CPU realiza en sucesivos intervalos de tiempo distintas funciones de diagnóstico (watch-dog en inglés). Cualquier anomalía que se detecte se reflejará en los indicadores de diagnóstico del procesador y dependiendo de su importancia se generará un código de error o se parará totalmente el sistema.
El tiempo total del ciclo de ejecución viene determinado por los tiempos empleados en las distintas operaciones. El tiempo de exploración del programa es variable en función de la cantidad y tipo de las instrucciones así como de la ejecución de subrutinas. El tiempo de exploración es uno de los parámetros que caracteriza a un PLC y generalmente se suele expresar en milisegundos por cada mil instrucciones. Para reducir los tiempos de ejecución, algunas CPU's constan de dos o más procesadores que operan simultáneamente y están dedicados a funciones específicas. También se puede descargar de tareas a la CPU incorporando módulos inteligentes dedicados a tareas específicas.

Equipos de programación.[editar]

La misión principal de los equipos de programación, es la de servir de interfaz entre el operador y el autómata para introducir en la memoria de usuario el programa con las instrucciones que definen las secuencias de control.
Dependiendo del tipo de autómata, el equipo de programación produce unos códigos de instrucción directamente ejecutables por el procesador o bien un código intermedio, que es interpretado por un programa residente en el procesador (firmware).
Las tareas principales de un equipo de programación son:
  • Introducción de las instrucciones del programa.
  • Edición y modificación del programa.
  • Detección de errores.
  • Archivo de programas (cintas, discos).
Básicamente existen tres tipos de equipos de programación:
La conexión de la consola u ordenador al autómata programable se realiza mediante una conexión en serie (generalmente la RS-232C o la RS-422).

Unidad 1 cerradura de kleene y los productos

Clausura de KleeneEn lógica matemática y en ciencias de la computación, la clausura de Kleene (también llamada estrella Kleene o cierre estrella) es unaoperación unaria que se aplica sobre un conjunto de cadenas de caracteres o un conjunto de símbolos o caracteres (alfabeto), y representa el conjunto de las cadenas que se pueden formar tomando cualquier número de cadenas del conjunto inicial, posiblemente con repeticiones, y concatenándolas entre sí.

La aplicación de la clausura de Kleene a un conjunto V se denota como V*. Es muy usada en expresiones regulares y fue introducida en este contexto por Stephen Kleene (1909-1994) para caracterizar un cierto autómata.


Definición y notación
Dado




se define recursivamente

donde




Si V es un lenguaje formal, entonces la i-ésima potencia de V es la abreviatura de la concatenación de V consigo mismo i veces. Esto es, Vipuede entenderse como el conjunto de todos los strings de longitud i, formado a partir de los símbolos en V.
La definición de Kleene estrella en V es



Es decir, es la recopilación de todas los posibles cadenas de longitud finita generados a partir de los símbolos en V.
En algunos estudios de Lenguaje formal, usan Kleene plus que es una variación de la operación Kleene estrella. Kleene plus omite el términoV0 en la unión. En otras palabras, Kleene plus en V es





CERRADURA POSITIVA A+:



Se define de la siguiente manera A+ = U∞n=1 An es decir, indica que el carácter al que sigue el signo deberá aparecer al menos una vez.

Ejemplos

  • Sea el lenguaje L={a}L*={ε,a,aa,aaa,aaaa,...}.
  • Sea un B={0,1} lenguaje formal, B*={ε,0,1,00,01,10,11,000,001,010,011,...}.
  • Sea la expresión regular e1* el AF equivalente toma la forma:Thompson Clausura.gif donde T(e1) es el AFND-V resultante de las expresión e1

Unidad 1 estructura de lenguajes y sus elementos basicos

ALFABETO


Un alfabeto es un conjunto de símbolos finito y no vacío de elementos llamados símbolos o letras. Es una agrupación, que se lee con un orden determinado, de las gráficas utilizadas para representar el lenguaje que sire de sistema de comunicación, un grupo de letras estructurado bajo un orden especifico aceptado a nivel general en el marco de una lengua
Convencionalmente, utilizados el símbolo ∑ (sumatoria) para designar un alfabeto. Entre los alfabetos más comunes se incluyen los siguientes:

Ø ∑= {0,1}, el alfabeto binario

Ø ∑= {a, b, ……. z}, es el conjunto de todas las letras minúsculas

Ø El conjunto de todos los caracteres ASCII

cadena


Una cadena de caracteres (que también se denomina en ocasiones palabra) es una secuencia finita de símbolos seleccionados de algún alfabeto.
Una cadena o palabra es una secuencia finita de símbolos que pertenecen a un alfabeto y comúnmente se denota con la letra.

Ø EJEMPLO: si ∑= {0,1}, entonces ∑1= {0,1}, ∑2= {00, 01, 10, 11}, ∑3= {000, 001, 010, 011, 100, 101, 110, 111}, etc.

LA CADENA VACÍA

La cadena vacía es aquella cadena que presenta cero apariciones de símbolos. Esta cadena, designada por £, es una cadena que puede construirse en cualquier alfabeto

Ø EJEMPLO: observe que ∑0= {£}, independientemente de cuál sea el alfabeto ∑. Es decir, £ es la única cadena cuya longitud es 0.

Lenguajes


Un conjunto de cadenas, todas ellas seleccionadas de un ∑*, donde ∑ es un determinado alfabeto se denomina lenguaje. Ya que estas pueden ser cualquier cadena que cumpla con lo siguiente, está formada por los símbolos. Los lenguajes habituales pueden interpretarse como conjuntos de cadenas.

Ø EJEMPLO: Seria el inglés, donde la colección de las palabras correctas inglesas es un conjunto de cadenas del alfabeto que consta de todas las letras.

Ø EJEMPLO: Es el lenguaje C, o cualquier otro lenguaje de programación, donde los programas correctos son un subconjunto de las posibles cadenas que pueden formarse a partir del alfabeto del lenguaje.

Tipos de Lenguajes


Ø LENGUAJES DECLARATIVOS: Es fundamentalmente lenguajes de órdenes, dominados por Sentencias que expresan “lo que hay que hacer” en vez de “cómo hacerlo”.

Ø LENGUAJES DE ALTO NIVEL: Son los más utilizados como lenguajes de programación permiten que los algoritmos se expresen en un nivel y estilo de escritura fácilmente legible y comprensible por otros programadores.

LENGUAJE ENSAMBLADOR: Es el programa en que se realiza la tracción de un programa escrito en un programa escrito en ensamblador y lo pasa a lenguaje máquina. Directa o no directa de la traducción en que las instrucciones no son más que instrucciones que ejecuta la computadora.

Ø LENGUAJE MAQUINA: Es como la maquina interpreta lo que nosotros queremos hacer es una lectura de 0 y 1 es decir binario.

Gramática


La gramática es un ente formal para especificar, de una manera finita, el conjunto de cadenas de símbolos que constituyen un lenguaje.
Es un conjunto finito de reglas que describen toda la secuencia de símbolos pertenecidas a un lenguaje especifico y dos gramáticas que describen el mismo lenguaje que llaman gramáticas equivalentes.
  

Autómata


Un autómata es una construcción lógica que recibe una entrada y produce una salida en función de todo lo recibido hasta ese instante. En el caso de los Procesadores de Lenguaje un autómata es una construcción si dicha cadena pertenece o no a un determinado lenguaje.

Unidad 1 expresiones regulares

Expresiones Regulares

Aprender a programar significa, entre muchos otros detalles, memorizar expresiones y pasos que permiten ejecutar acciones simples y prácticas. Se podría alcanzar un símil comprensible con los típicos atajos de teclado: con una sencilla combinación de teclas uno es capaz de acceder al explorador, cerrar el navegador, buscar un programa… En algunos lenguajes de programación, las expresiones regulares sirven para detectar patrones en distintas cadenas de texto. Para los programadores, esas expresiones regulares facilitan su labor en un solo paso. 
Un ejemplo muy sencillo es la comprobación vía expresión regular que los datos rellenados por los usuarios en un formulario son correctos o no. Alguien puede utilizar un breve formulario para recabar el nombre, los apellidos y el teléfono de contacto de sus clientes, y que algunos de ellos no cumplimenten bien este ultimo campo. La forma rápida de comprobarlo es a través de una expresión regular. Los desarrolladores acostumbrados a utilizar Perl para sus proyectos conocen a la perfección estas herramientas para alcanzar objetivos mediante sencillos atajos.
De todas formas los programadores de Perl no son los únicos desarrolladores que pueden aprovecharse de las ventajas de las expresiones regulares. Los profesionales JavaScript también pueden disfrutar de estas expresiones regulares, concretamente para hacer comprobaciones determinadas en las distintas cadenas de texto a partir de un patrón que se puede resumir en una expresión abierta. También se utilizan en herramientas de analíticas como Google Analytics.

Así se utilizan las expresiones regulares en JavaScript

Una expresión regular usa caracteres y metacaracteres para definir, de forma abierta, patrones concretos en cadenas de texto. Esos caracteres, combinados unos con otros de forma especial, permiten extraer patrones o elementos concretos de esa cadenas para buscar o manipular el texto (identificadores, correos electrónicos…). En el caso de JavaScript, hay dos tipos de expresiones regulares:
●      Expresiones regulares mediante una cadena literal para encontrar un patrón: para ello se usa el constructor de objeto RegExp. Para crear un literal RegExp se utiliza esta expresión: var re = /regular expression/;. El patrón de expresión regular se encuentra entre la apertura y el cierre de las barras diagonales, una estructura que suele ser habitual y obligatoria.
●      Expresiones regulares de aplicación en varias cadenaexpReg.test(cadena). Si existe coincidencia, se devuelve true; y si no existe una coincidencia ente la expresión y un posible patrón, se devuelve false.
Algunos elementos esenciales para hacer expresiones regulares en JavaScript:
●      ^: el emparejamiento se debe realizar desde el principio de la cadena.
●      [A-Z]: cualquier carácter entre la A mayúscula y la Z mayúscula.
●      {1,2}: uno o dos caracteres.
●      \s: un espacio en blanco.
●      \d: un dígito.
●      {4}: cuatro dígitos.
●      \s: un espacio en blanco.
●      ([B-D]|[F-H]|[J-N]|[P-T]|[V-Z]): cualquier carácter entre la B mayúscula y la Z mayúscula, excepto las vocales.
●      {3}: tres caracteres.
●      $: el emparejamiento se debe realizar hasta el final de la cadena.

Casos concretos de uso de expresiones regulares

Es habitual usar expresiones regulares para detectar si existe una secuencia concreta de letras o palabras o bien números en una cadena determinada. Para conseguir eso sólo es necesario utilizar una expresión regular simple:
var reg = /javascript/;
 "Esto es lenguaje javaScript".match(reg);
 // devuelve un array de un elemento ["javascript"] 
porque dentro de la cadena se encuentra un elemento con esa secuencia concreta de letras. En el caso de que no existiera la palabras “javaScript” dentro de la cadena, devolvería un elemento null.
A veces se utiliza el elemento if para buscar coincidencias true o false a partir de una combinación de caracteres y palabras (expresiones) en una cadena completa:
if ("Esto es lenguaje javaScript".match(/javascript/) {
    // Se devolverá true porque si existe el elemento javaScript en la cadena.
 }
 if ("Esto es lenguaje Objective-C".match(/javascript/) {
    // Se devuelve false porque no existe el elemento javaScript en la cadena.
 }
Usando el elemento vinculado a la búsqueda de dígitos, las expresiones regulares se pueden utilizar para comprobar si una cadena tiene algún digito concreto, incluso programar expresiones regulares para detectar combinaciones o también repeticiones de una serie de dígitos dentro de una o varias cadenas de texto:
-       Búsqueda de un dígito concreto en una cadena de texto: en este caso especial el programador busca si la cadena de texto contiene el número 2. Como sí lo contiene, la expresión regular devuelve lógicamente un ["2"].
"Este número es un 2".match(/\d/); // Devuelve un ["2"]
-       Las expresiones regulares son capaces también de detectar la repetición de uno o varios dígitos dentro de una cadena de texto o una secuencia concreta de números dentro de esa misma cadena de texto. Lo único que es necesario es repetir dentro de la expresión el elementos \d, que debe ir acompañado, tanto en la apertura como el cierre, por el símbolo /:
"Este número es el 242".match(/\d\d\d/);   // Devuelve el ["242"] porque dentro de esa cadena existe una expresión que contiene 3 dígitos seguidos.
-       Para la búsqueda de dígitos en distintas cadenas de texto:
/\d{3}/       Busca 3 dígitos en la cadena
/\d{1,5}/    Busca entre 1 y 5 dígitos en la cadena.
/\d{2,}/      Busca 2 dígitos o más en la cadena.
Aquí algunos ejemplos concretos con esta última expresión regular: en el primer ejemplo, la expresión permite buscar dentro de una cadena de texto concreta (en este caso, “1234”), un máximo de dos dígitos, por eso devuelve el elemento ["12"]; en el segundo caso se solicita buscar en la cadena de texto entre uno y tres dígitos, por eso devuelve ["123"]; y en el tercer caso, la expresión está diseñada para buscar dentro de la cadena entre tres y diez dígitos, por eso devuelve cuatro, la cadena de texto completa: ["1234"]. 
"1234".match(/\d{2}/);
["12"]
"1234".match(/\d{1,3}/);
["123"]

"1234".match(/\d{3,10}/)
["1234"]

Unidad 1 tipos de alfabetos y expresiones

La comunicación ha evolucionado a lo largo de la historia, pero siempre se ha mantenido gracias a los símbolos. Antiguamente cuando los humanos todavía no desarrollaban un lenguaje, la primera manera de plasmar las historias y los hechos era a través de las imágenes y símbolos. De ahí, surgieron los jeroglíficos y con la consolidación del lenguaje las letras y alfabetos fueron adquiriendo relevancia cultural.
De acuerdo a su historia, cada región del mundo ha desarrollado su propio alfabeto, son símbolos diferentes y pronunciaciones de acuerdo a su unión. Aquí te dejamos algunos de los más relevantes:
Los alfabetos tradicionales son aquellos que utilizan letras consonantes y vocales, los dos más conocidos son:
Alfabeto latino
El alfabeto latino es uno de los más utilizados alrededor del mundo ya que se aplica en idiomas como español, inglés, portugués, alemán y francés. Consta de 26 letras que van desde la A a la Z y aunque parezca el mismo en todos estos idiomas, existen ligeras variaciones como la ñ o la ç e incluso los acentos que se utilizan, de ahí la diferencia de pronunciación entre cada idioma.
Alfabeto cirílico
Este tipo de alfabeto cuenta con 43 letras diferentes que pueden variar entre forma y uso según el idioma en el que se utilicen. Muchas de estas letras las comparten con el alfabeto latino. Los principales idiomas que usan el alfabeto cirílico son el ruso y sus derivaciones como el serbio, el búlgaro y el ucraniano.
Por otro lado, existen los alfabetos tipo abyad los cuales se caracterizan por estar formados únicamente por consonantes ya que las vocales se añaden usando tildes o caracteres específicos para entender cómo pronunciar la palabra. Algo curioso que se debe agregar es que en la mayoría de estos alfabetos, la escritura y la lectura de las palabras se realiza de derecha a izquierda, contrario a los alfabetos tradicionales. Ejemplos de alfabetos tipo abyad:
Alfabeto árabe
Cuenta con un total de 28 letras consonantes y una serie de tildes especiales para adjuntar las vocales, dando así la clave para pronunciar bien la palabra. Entre los idiomas que utilizan este abecedario se encuentran: el persa, urdú y árabe.
Alfabeto hebreo 
Uno de los alfabetos más antiguos que está conformado por 22 caracteres que únicamente son consonantes, sin embargo su pronunciación ya incluye el sonido de las vocales para dar paso a las palabras.

Alfabetos semántico-fonéticos 
Este tipo de alfabetos no tiene una cantidad exacta de “letras” o símbolos para construir palabras, al contrario, se componen de logoramas, pictoramas e ideogramas. Los logoramas representan alguna parte de las palabras, mientras que los pictoramas son símbolos que representan cosas concretas como árboles o montañas. Por su parte los ideogramas son símbolos gráficos que se utilizan para representar ideas o elementos abstractos como el amor. A través de las combinaciones de estos tres tipos de símbolos, se forman los alfabetos y lenguajes de idiomas como el chino, el japonés y el coreano.
Alfabetos especiales
Estos se utilizan de manera diferente en cada país y tienen como característica principal que no se leen con los ojos ni se pronuncian usando la voz, sino que se requieren de otros sentidos como el tacto o el oído para comprenderlos. Estos alfabetos se crearon de manera inclusiva para personas con discapacidades como los sordos, mudos y ciegos.
Entre los alfabetos especiales más comunes se encuentran el braille, el lenguaje de señas o sordomudo y el código morse.
Existen otros abecedarios más antiguos o en desuso y muchos más de los que aún no se tienen investigaciones, pero de lo que no queda duda es que, gracias a los alfabetos y el lenguaje se constituye una cultura, una sociedad y por ende la civilización.

Codigo y Video final de la evidencia del Carrito

El carrito pudimos hacerlo con un arduino para quese mueva , nos faltaron sensores pero es lo que pudimos pagar en el video se muestra que q...