Title: NOMBRE: ABIGAIL ALEJANDRA PIO LARA
1- NOMBRE ABIGAIL ALEJANDRA PIO LARA
- MATERIA LENGUAJES Y AUTOMATAS
- TEMA RESUMEN DE LA I UNIDAD
- PROFESOR M.C. JOSE ANGEL TOLEDO
2TEORIA DE CONJUNTOS
3INTRODUCCION
- Según lo leido en este tema la Teoría de
conjuntos, es una rama de las matemáticas a la
que el matemático alemán Georg Cantor dio su
primer tratamiento formal en el siglo XIX. El
concepto de conjunto es uno de los más
fundamentales en matemáticas
4ALGUNAS DEFINICIONES
- Un conjunto es una agrupación, clase o colección
de objetos denominados elementos del conjunto, un
conjunto se representa frecuentemente mediante
llaves que contienen sus elementos, ya sea de
forma explícita, escribiendo todos y cada uno de
los elementos, o dando una fórmula, regla o
proposición que los describa. Por ejemplo, S1
2, 4 S2 2, 4, 6, ..., 2n, ... todos los
enteros pares S3 x x2- 6x 11 3 S4
todos los varones vivos llamados Juan. S3 se
describe como el conjunto de todas las x tales
que x2- 6x 11 3. - Subconjuntos y superconjuntos Si todo elemento
de un conjunto R pertenece también al conjunto S,
R es un subconjunto de S, y S es un superconjunto
de R utilizando símbolos, R S, o S R. Todo
conjunto es un subconjunto y un superconjunto de
sí mismo. - Unión e intersección Si A y B son dos
subconjuntos de un conjunto S, los elementos que
pertenecen a A, a B o a ambos forman otro
subconjunto de S llamado unión de A y B Los
elementos comunes a A y B forman un subconjunto
de S denominado intersección de A y B . - Diferencia y complementario El conjunto de
elementos que pertenecen a A pero no a B se
denomina conjunto diferencia entre A y B, escrito
A - B (y a veces A\B). Si A es un subconjunto del
conjunto l, el conjunto de los elementos que
pertenecen a l pero no a A, es decir, l - A, se
denomina conjunto complementario de A (con
respecto a l), lo que se escribe l - A A' (que
también puede aparecer como A, Ã o A).
5ALGEBRA DE CONJUNTOS
- LPara cualquier conjunto A, B, y C
- A n A A
- A ? A A
- A \ A
- A n B B n A
- A ? B B ? A
- (A n B) n C A n (B n C)
- (A ? B) ? C A ? (B ? C)
- C \ (A n B) (C \ A) ? (C \ B)
- C \ (A ? B) (C \ A) n (C \ B)
- C \ (B \ A) (A n C) ? (C \ B)
- (B \ A) n C (B n C) \ A B n (C \ A)
- (B \ A) ? C (B ? C) \ (A \ C)
- A ? B sí y solamente si A n B A
- A ? B sí y solamente si A ? B B
- A ? B sí y solamente si A \ B Ø
- A n B Ø sí y solamente si B \ A B
- A n B ? A ? A ? B
- A n Ø
6MULTIPLICACION DE CONJUNTOS
- Si A y B son dos conjuntos, el conjunto de todos
los posibles pares ordenados de elementos de la
forma (a, b), donde a pertenece a A y b pertenece
a B, se denomina producto cartesiano de A y B,
que se escribe normalmente A B .
CORRESPONDENCIA ENTRE CONJUNTOS Los elementos del
conjunto A 1, 2, 3 se pueden relacionar,
emparejar o hacer corresponder con los elementos
del conjunto B x, y, z de distintas maneras,
de forma que a todo elemento de B le corresponda
uno de A, a todo elemento de A le corresponda uno
de B, elementos distintos de un conjunto están
emparejados con elementos distintos del otro.
7DIAGRAMA DE VENN
- A cada conjunto se le considera encerrado
dentro de una curva (plana) cerrada. Los
elementos del conjunto considerado pueden ser
específicamente dibujados o pueden quedar
(implícitamente) sobreentendidos. Los diagramas
son empleados, para representar tanto a los
conjuntos como a sus operaciones, y constituyen
una poderosa herramienta geométrica, desprovista
de validez lógica - EJEMPLO
8PRODUCTO CARTESIANO DE CONJUNTOS
- Se dice que si A y B son dos conjuntos, el
conjunto de todos los posibles pares ordenados de
elementos de la forma (a, b), donde a pertenece a
A y b pertenece a B, se denomina producto
cartesiano de A y B, que se escribe normalmente A
B. - Correspondencia entre conjuntos Se dice que
existe una correspondencia de conjuntos si los
elementos del conjunto A 1, 2, 3 se pueden
relacionar o hacer corresponder mediante una
correspondencia f con los del conjunto B x, y,
z de modo que a todo elemento de A le
corresponda uno, ninguno o varios elementos de B.
- Como nota importante se debe saber que Cuando
una correspondencia es tal que a cada elemento
del primer conjunto le corresponde uno y sólo uno
del segundo conjunto, entonces se llama
aplicación
9OPERACIONES CON CONJUNTOS
- Unión Dados dos conjuntos cualesquiera A y B
llamamos "Unión" de A y B al conjunto formado por
todos los elementos que pertenecen a A o a B. - Intersección Dados dos conjuntos cualesquiera A
y B llamamos "Interseccion" de A y B al conjunto
formado por todos los elementos que pertenecen a
A y pertenecen a B. - Diferencia Dados dos conjuntos cualesquiera A
y B llamamos "Diferencia" de A "menos" B al
conjunto formado por los elementos que pertenecen
a A y no pertenecen a B.
10LOGICA PROPOSICIONAL
11INTRODUCCION
- Se dice que la lógica proposicional trabaja con
sentencias u oraciones a las cuales se les puede
asociar un valor de verdad (cierto o falso)
estas sentencias se conocen como sentencias
declarativas o, simplemente, proposiciones pueden
existir proposiciones que son simples, así como
proposiciones que están construidas por otras
proposiciones usando elementos (conectivas
lógicas) que las asocian . - La lógica proposicional (o cálculo proposicional)
tiene el propósito de simbolizar cualquier tipo
de razonamiento para su análisis y tratamiento,
esta usa sentencias declarativas a las que se
puede asociar un valor de verdad (cierto o
falso) es decir, usa proposiciones. Ejemplo P y
Q son proposiciones - P El aguila es un ave
- Q La ballena es un mamifero
12CONECTIVAS LOGICAS
- La construcción de fórmulas compuestas requiere
del uso de elementos que permitan establecer una
relación entre los átomos que la forman estos
elementos se conocen como conectivas lógicas.
Conectiva Símbolos asociados
Negación (No) , , -
Conjunción (Y) Ù, ,
Disyunción (O) Ú, ,
Condicional (Si ... entonces)
Bicondicional (Si y solo si) ,
13- Como es posible determinar si una proposición es
cierta o falsa, al encontrarse con proposiciones
unidas por conectivas lógicas, es necesario
conocer cuales son las reglas que se aplican para
determinar si la proposición completa es cierta o
falsa.
P Q P PÙQ PÚQ P Q P Q
V V F V V V V
V F F F V F F
F V V F V V F
F F V F F V V
14JERARQUIA DE CONECTIVAS
- para determinar el valor de verdad de una
proposición compuesta, es necesario conocer
cuales son las reglas que se aplican para
determinar si la proposición completa es cierta o
falsa asimismo, al tener fórmulas con dos o más
conectivas, se deben conocer las reglas de
precedencia y asociatividad de las conectivas
para asegurar que la evaluación es correcta. - donde (negación) es el operador con mayor
jerarquía en la secuencia y (bicondicional) es
el operador con el menor peso.
15INTERPRETACION DE FORMULAS
- Una interpretación de una fórmula es una
asignación de valores de verdad a un conjunto de
átomos para una fórmula con dos átomos se tienen
dos posibles interpretaciones, para una con tres
se tienen ocho interpretaciones, y en general
para una fórmula con n átomos de tienen 2n
interpretaciones.
P Q R S P Q ( P Q) RÙS ( P Q) ( RÙS)
V F V V F V V V
16- De la evaluación de una fórmula, se pueden
definir los siguientes conceptos - Tautología o fórmula válida Una fórmula es una
tautología si es verdadera para todas sus
posibles interpretaciones. Una tautología también
se conoce como una fórmula válida. - Contradicción, fórmula inconsistente o fórmula
insatisfactible Una fórmula es una contradicción
si es falsa para todas sus posibles
interpretaciones. Una contradicción también se
conoce como una fórmula inconsistente o una
fórmula insatisfactible. - Fórmula consistente o fórmula satisfactible Una
fórmula que al menos tiene una interpretación
verdadera se conoce como una fórmula consistente
o satisfactible. - Fórmula inválida Una fórmula es inválida si es
falsa para al menos una interpretación
17FORMULAS EQUIVALENTES
- Al evaluar las fórmulas P-gtQ y PvQ se observa
que todas sus interpretaciones son iguales, por
lo que se dice que ambas fórmulas son
equivalentes - EJEMPLO
P Q P P Q PÚQ
V V F V V
V F F F F
F V V V V
F F V V V
18Ley de equivalencia Fórmula
Doble Implicación FG (F G)Ù(G H)
Implicación F G FÚG
Distribución FÚ(GÙH) (FÚG)Ù(FÚH)
FÙ(GÚH) (FÙG)Ú(FÙH)
Asociación (FÚG)ÚH FÚ(GÚH)
(FÙG)ÙH FÙ(GÙH)
Complementación FÙ F Contradicción
FÚ F Tautología
F F
Conmutación FÚG GÚF
FÙG GÙF
Cero FÚTautología Tautología
FÙContradicción Contradicción
Identidad FÚContradicción F
FÙTautología F
Idempotencia FÚF F
FÙF F
Absorción FÚFÙQ F
FÙ(FÚQ) F
FÚ FÙQ FÚQ
Leyes de Morgan (FÚQÚH) FÙ QÙ H
(FÙQÙH) FÚ QÚ H
- Existen varias equivalencias entre fórmulas de la
lógica proposicional, las cuales se conocen como
leyes de equivalencia. La tabla 3 muestra estas
leyes. Se utiliza el símbolo Tautología para
indicar una tautología y el símbolo Contradicción
para indicar una contradicción
19CIRCUITOS LOGICOS
- Debido a que una proposición puede ser evaluada y
resultar solo verdadera o falsa, se puede deducir
alguna equivalencia con el álgebra booleana, que
maneja solamente dos valores (0 y 1). Las
propiedades del cálculo proposicional son
equivalentes a las del álgebra desarrollada por
Boole. - En el álgebra booleana, una proposición es
equivalente a una variables, y las conectivas
lógicas se utilizan como compuertas lógicas. La
figura 1 muestra las compuestas lógicas más
representativas de esta álgebra. Los esquemas que
resultan de aplicar las compuertas lógicas se
conocen como circuitos lógicos.
20HISTORIA DE LOS LENGUAJES
21INTRODUCCION
- Es muy importante, el lenguaje de programación es
el medio de comunicación entre el hombre y la
máquina. El modelo general de las computadoras,
desde que fue esbozado por von Neumann, no ha
cambiado mucho, mientras que la invención humana
para proponerse nuevos problemas a resolver,
usando la computadora, parece no tener límites.
Un lenguaje es un conjunto de palabras. Por tanto
el conjunto 1,12,123,1234,12345,123456 es un
lenguaje sobre el alfabeto compuesto por digitos.
De forma similar, la colección de palabras
inglesas correctas es un lenguaje sobre el
alfabeto ingles. Obsérvese que si ? es un
alfabeto, también es un lenguaje, el formado por
todas las cadenas con un único símbolo.
22- En consecuencia, los lenguajes de programación
tienen que adaptarse a éstas crecientes
necesidades y aumentar la expresividad para poder
resolver problemas muy diversos y cada vez más
complejos. Además, tienen que ofrecer cierta
eficiencia en la ejecución. Es un logro difícil
de alcanzar y por lo tanto, se requiere una
búsqueda constante de nuevos lenguajes para ello.
- Aquí se expone un breve panorama de los más
importantes tipos de lenguajes de programación.
23AÑO LENGUAJE INVENTOR DESCRIPCION
1900 BINARIO Bool primer lenguaje
1946 Plankalkul Konrad Zuse creado para jugar al ajedrez
1949 Short Code lenguaje traducido a mano
1950 ASM (ensamblador) lenguaje ensamblador
1951 A-0 Grace Hopper fue el primer compilador
1952 AUTOCODE Alick E. Glennie compilador muy rudimentario
1956 FORTRAN IBM sistema de TRAducción de FORmulas matemáticas
1956 COBOL Compilador
1958 ALGOL 58
1960 LISP Interprete orientado a la Inteligencia Artificial
1961 FORTRAN IV IBM sistema de TRAducción de FORmulas matemáticas
24AÑO LENGUAJE INVENTOR DESCRIPCION
1961 COBOL 61 Extendido
1960 ALGOL 60 Revisado
1964 PASCAL Niklaus Wirth programacion estructurada
1964 BASIC Universidad de Dartmouth (california) Beginners All Purpose Symbolic Instruction Code
1965 SNOBOL
1965 APL solo anotacion
1965 COBOL 65
1966 PL/I
1966 FORTRAN 66 IBM sistema de TRAducción de FORmulas matemáticas
1967 SIMULA 67
25AÑO LENGUAJE INVENTOR DESCRIPCION
1968 ALGOL 68
1968 SNOBOL4
1970 GW-BASIC antiguo y clasico BASIC
1970 APL/360
1972 SMALLTALK Centro de Investigación de Xerox en Palo Alto pequeño y rapido
1972 C Laboratorios Bell lenguaje con tipos
1974 COBOL 74
1975 PL /I Lenguaje sencillo
1977 FORTRAN 77 IBM sistema de TRAducción de FORmulas matemáticas
1980s SMALLTALK/V Digitalk pequeño y rapido
1980 C con clases Laboratorios Bell lenguaje con clases
26AÑO LENGUAJE INVENTOR DESCRIPCION
1981 PROLOG Ministerio Japonés de Comercio Internacional e Industria (MITI) Lenguaje estandar para la Inteligencia Artificial
1982 ADA Ministerio de Defensa de los EE.UU lenguaje muy seguro
1984 C ATT Bell Laboratories (Bjarne Stroustrup) compilador
1985 CLIPPER compilador para bases de datos
1985 QuickBASIC 1.0 Microsoft compilador de BASIC
1986 QuickBASIC 2.0 Microsoft soporte de tarjeta gráfica EGA
1987 QuickBASIC 3.0 Microsoft 43 lineas con la tarjeta EGA
1987 QuickBASIC 4.0 Microsoft tarjetas Hercules, VGA
27AÑO LENGUAJE INVENTOR DESCRIPCION
1987 CLIPPER SUMMER '87 compilador para bases de datos
1988 QuickBASIC 4.5 Microsoft tarjeta SVGA
1989 QuickBASIC 7.1 Microsoft ultima version de QuickBASIC
1989 ASIC v5.0 interprete tipo QBASIC shareware
1990 VISUAL C
1990 VISUAL BASICScript Microsoft lenguaje de script
1990 HTML Tim Berners-Lee para internet
1993 XML C. M. Sperberg-McQueen para internet
1993 SGML Charles F. Goldfarb para internet
28AÑO LENGUAJE INVENTOR DESCRIPCION
1990 WML para internet
1990 ASP Microsoft para internet
1990 PHP para internet
1995 JAVA Sun Microsystems para internet y proposito general
1995 CLIPPER 5.01 compilador para bases de datos
1995 GNAT ADA95 Ministerio de Defensa de los EE.UU lenguaje muy seguro
1995 FORTRAN 95 IBM sistema de TRAducción de FORmulas matemáticas
1991 VISUAL BASIC 1.0 Microsoft
1992 VISUAL BASIC 2.0 Microsoft
29AÑO LENGUAJE INVENTOR DESCRIPCION
1993 VISUAL BASIC 3.0 Microsoft
1994 VISUAL BASIC 4.0 Microsoft
1995 VISUAL BASIC 5.0 Microsoft
1998 VISUAL BASIC 6.0 Microsoft
1990s C
2001 VISUAL BASIC .NET Microsoft La evolución de Visual Basic
30- Los primeros lenguajes de programación surgieron
de la idea de Charles Babagge a mediados del
siglo XIX. Consistía en lo que el denominaba la
maquina analítica, pero que por motivos técnicos
no pudo construirse hasta mediados del siglo XX. - Con el colaboro Ada Lovelace, la cual es
considerada como la primera programadora de la
historia, pues realizo programas para aquella
supuesta maquina de Babagge, en tarjetas
perforadas. Como la maquina no llego nunca a
construirse, los programas de Ada, lógicamente,
tampoco llegaron a ejecutarse, pero si suponen un
punto de partida de la programación. - En 1936, Turing y Post introdujeron un formalismo
de manipulación de símbolos (la denominada
máquina de Turing) con el que se puede realizar
cualquier cómputo que hasta ahora podemos
imaginar. Los "Lenguajes Maquina" y los
"Lenguajes Ensambladores" (primera y segunda
generación) son dependientes de la maquina. Cada
tipo de maquina, tal como VAX de digital, tiene
su propio lenguaje maquina distinto y su lenguaje
ensamblador asociado. El lenguaje ensamblador es
simplemente una representación simbólica del
lenguaje maquina asociado, lo cual permite una
programación menos tediosa que con el anterior.
Sin embargo, es necesario un conocimiento de la
arquitectura mecánica subyacente para realizar
una programación efectiva en cualquiera de estos
niveles lenguajes. - Los lenguajes de alto nivel son normalmente
fáciles de aprender porque están formados por
elementos de lenguajes naturales, como el inglés.
31- Lenguajes Imperativos. En este tipo de
lenguajes, cuyo origen está ligado a la propia
arquitectura de von Neumann, la arquitectura
consta de una secuencia de celdas, llamadas
memoria, en la cual se pueden guardar en forma
codificada, lo mismo datos que instrucciones y
de un procesador, el cual es capaz de ejecutar de
manera secuencial una serie de operaciones,
principalmente aritméticas y booleanas, llamadas
comandos. En general, un lenguaje imperativo
ofrece al programador conceptos que se traducen
de forma natural al modelo de la máquina. Los
lenguajes imperativos más destacados de la
historia han sido FORTRAN, Algol, Pascal, C,
Modula-2, Ada. - Lenguajes Funcionales. Una función convierte
ciertos datos en resultados. Si supiéramos cómo
evaluar una función, usando la computadora,
podríamos resolver automáticamente muchos
problemas. Así pensaron algunos matemáticos, que
no le tenían miedo a la máquina, e inventaron los
lenguajes de programación funcionales. - Aprovecharon la posibilidad que tienen las
funciones para manipular datos simbólicos, y no
solamente numéricos, y la propiedad de las
funciones que les permite componer, creando de
esta manera, la oportunidad para resolver
problemas complejos a partir de las soluciones a
otros más sencillos. También se incluyó la
posibilidad de definir funciones recursivamente. - El lenguaje funcional más antiguo, y seguramente
el más popular hasta la fecha, es LISP. En la
década de los 80 hubo una nueva ola de interés
por los lenguajes funcionales, añadiendo la
tipificación y algunos conceptos modernos de
modularización y polimorfismo, como es el caso
del lenguaje ML.
32- Lenguajes Lógicos. El conocimiento básico de las
matemáticas se puede representar en la lógica en
forma de axiomas, a los cuales se añaden reglas
formales para deducir cosas verdaderas (teoremas)
a partir de los axiomas. Algunos matemáticos, a
finales de siglo XX y principios de XXI,
encontraron la manera de automatizar
computacionalmente el razonamiento lógico que
permitió que diera origen a los lenguajes
lógicos. - También se conoce a estos lenguajes, y a los
funcionales, como lenguajes declarativos, porque
el programador, parar solucionar un problema,
todo lo que tiene que hacer es describirlo vía
axiomas y reglas de deducción en el caso de la
programación lógica y vía funciones en el caso de
la programación funcional. - En los lenguajes lógicos se utiliza el formalismo
de la lógica para representar el conocimiento
sobre un problema y para hacer preguntas que, si
se demuestra que se pueden deducir a partir del
conocimiento dado en forma de axiomas y de las
reglas de deducción estipuladas, se vuelven
teoremas. Así se encuentran soluciones a
problemas formulados como preguntas. - El PROLOG es el primer lenguaje lógico y el más
conocido y utilizado. También en este caso, las
aplicaciones a la Inteligencia Artificial
mantienen el lenguaje vivo y útil. - Lenguajes Orientados a Objetos.
- A mediados de los años 60 se empezó a vislumbrar
el uso de las computadoras para la simulación de
problemas del mundo real. Pero el mundo real está
lleno de objetos. - Así es que a dos noruegos, Dahl y Nygaard, se les
ocurrió el concepto de objeto y sus colecciones,
llamadas clases de objetos, que permitieron
introducir abstracciones de datos a los lenguajes
de programación. A ellos también les debemos el
concepto de polimorfismo introducido vía
procedimientos virtuales. - Todos estos conceptos fueron presentados en el
lenguaje Simula 67, desde el año 1967. En los
años 80 hubo una verdadera ola de propuestas de
lenguajes de programación con conceptos de
objetos encabezada por Smalltalk, C, Modula-3,
Ada 95 y terminando con Java.
33- Lenguajes Concurrentes, Paralelos y
Distribuidos. - La necesidad de ofrecer concurrencia en el acceso
a los recursos computacionales se remonta a los
primeros sistemas operativos. Por ejemplo,
mientras un programa realizaba una operación de
entrada o salida otro podría gozar del tiempo del
procesador para sumar dos números. - Cuando los procesadores cambiaron de tamaño y de
precio, se abrió la posibilidad de contar con
varios procesadores en una máquina y ofrecer el
procesamiento en paralelo, es decir, procesar
varios programas al mismo tiempo. Esto dio el
impulso a la creación de lenguajes que permitían
expresar el paralelismo. Finalmente, llegaron las
redes de computadoras, que también ofrecen la
posibilidad de ejecución en paralelo, pero con
procesadores distantes, lo cual conocemos como la
programación distribuida. - Históricamente encontramos en la literatura
soluciones conceptuales y mecanismos tales como
semáforos, regiones críticas, monitores, envío de
mensajes (CSP), llamadas a procedimientos remotos
(RPC), que posteriormente se incluyeron como
partes de los lenguajes de programación en
Concurrent Pascal, Modula, Ada, OCCAM, y
últimamente en Java.