Você está na página 1de 8

Universidade do Estado do Mato Grosso – UNEMAT

Núcleo Pedagógico de Rondonópolis


Ciência da Computação – 2º semestre
Discente: Lucas Angelo Mattesco
Docente: Prof. Me. Dárley Domingos de Almeida
Disciplina: Linguagens Formais e Autômatos

Aula 1
Introdução – A priemira aula abordou diferentes assuntos, desde técnicas de
estudo, conforme os ensinamentos do professor Pierluigi Piazzi, até informações sobre a
disciplina e o curso de Ciência da Computação
“Programar, em Ciência da Computação, é o processo de escrita, teste e
manutenção de um programa de computador.”
Linguagens de programação: método padronizado para comunicar instruções a um
computador, a partir de um conjunto específico de regras de sintaxe (estrutura) e
semântica (significado).
Taxonomia das Linguagens de Programação:
• Abstração (entendimento do programador)
o Alto nível (ex. C++) – linguagem humana
o Baixo nível (ex. Assembly) – linguagem de máquina
• Paradigma (modo pelo qual o programador irá guiar-se quando for
construir um programa de computador)
o Estruturado/imperativo
o Orientado a objetos
• Ambiente
o Desktop
o Web
As linguagens são uma forma de comunicação constituídas por um conjunto de
elementos (alfabeto) e métodos (regras), que são usados e entendidos por uma
comunidade, porém passíveis de ambiguidade (mais de um entendimento dependendo do
contexto).

Já as linguagens formais são linguagens artificiais com regras específicas e


formais que garantem a não ambiguidade (ambiguidade = múltiplos sentidos para uma
mesma frase), usando expressões regulares)
Autômato: representação gráfica de expressões regulares.
Interpretador: traduz o código em tempo real, linha a linha, na medida em que o
programa é utilizado, ou seja, os erros só são detectados quando a linha de código
defeituosa é executada. Usa menos memória, tem um pré-processamento mais rápido mas
um processamento mais lento.
Compilador: traduz todo o código de uma só vez, gerando um arquivo executável
(Windows). Só pode ser executado/compilado caso não haja nenhum erro.
Aula 2
Conjunto: “coleção ou agrupamento bem definido de objetos/elementos de
qualquer classe.”
Notação: A = {1; 2; 3; 4; ...}
• Os elementos são agrupados com ponto e vírgula (;)
• O conjunto é denominado por uma letra maiúscula.
Cardinal do conjunto: número de elementos distintos do conjunto.
• Q = {0; 0; 1; 1} = {0; 1}
• n(Q) = 2
Determinação de conjuntos:
• Por extensão: indicar todos os elementos.
o Ex.: A = {0; 1; 2; 3; 4; 5; 6; 7; 8; 9}
• Por entendimento: mediante uma propriedade.
o Ex.: A = {x | x = algarismo}
Diagrama de Venn: representar conjuntos de maneira gráfica.
Conjuntos especiais

• Conjunto vazio: não tem elementos ( ou { })


• Conjunto unitário: tem um só elemento.
• Conjunto finito: número limitado de elementos.
• Conjunto infinito: infinitos elementos.
• Conjunto universal (U): todos os elementos de uma situação particular
Relação de pertinência (entre elemento e conjunto):

• pertence
• não pertence
Relação de inclusão (entre conjuntos)

• / está contido / não está contido


• / ⊅ contém / não contem
• Propriedades:
o 1) Todo conjunto está incluído em si mesmo.
o 2) O conjunto vazio está incluído em todos os conjuntos.
o 3) A está contido em B = B contém A
o 4) A está contido em B se e somente se para todo elemento que
pertence a A, tal elemento pertence a B
Relacão complementar (entre conjuntos)
• Complementar de A em relação a B: conjunto formado pelos elementos
que pertencem a A e não pertencem a B.
Igualdade (entre conjuntos)

• Dois conjuntos são iguais se têm exatamente os mesmos elementos.


Conjuntos disjuntos (entre conjuntos)

• Dois conjuntos são disjuntos quando não têm elementos em comum.


Conjunto potência (P(A))
• Conjunto formado por todos os subconjuntos de um conjunto.
• n(P(A)) = 2^n
União de conjuntos (∪)

• Conjunto formado por todos os elementos dos conjuntos especificados.


Conjuntos comparáveis

• Dois conjuntos são comparáveis se entre eles existe uma relação de inclusão
Intersecção de conjuntos (∩)
• Todos os elementos que pertencem simultaneamente a dois conjuntos.
Diferença de conjuntos (A – B)

• Sendo a operação A – B, a diferença é composta por todos os elementos que


pertencem a A e não pertencem a B.
Diferença simétrica (A Δ B)
• Todos os elementos que pertencem a (A – B) ou (B – A).
Complemento de um conjunto (A’)

• Conjunto formado pelos elementos do conjunto universo (U) que não pertencem
ao conjunto A.
• U–A
Conjunto de conjuntos
• Conjunto cujos elementos são conjuntos.
• Ex.: A = { {a}; {b}; {a; b}}
Conjuntos numéricos
Aula 3
História
• Alan Turing (1930’s)
o Estudou os limites de uma máquina abstrata equivalente aos
computadores atuais.
• 1940-1950’s
o Estudos em autômatos finitos para modelar o cérebro.
• Noam Chomsky (1950’s)
o Gramáticas formais.
• S. Cook (1969)
o Teoria da Complexidade – o que é possível ou não computar.
Alfabeto: conjunto de símbolos (elementos) (geralmente Σ – sigma)
• não-vazio
• finito
Cadeia/palavra: sequência finita construída com símbolos de um alfabeto.

• s:[n] -> Σ
• s – sequência de símbolos
• [n] – comprimento – pode ser representado como |s|
• Σ – alfabeto
• ex.: Σ = {a; b} -> cadeias: (a), (aa), (b), (ab)...
• Σ = {a, b, c} e s = cbba
o s:[4] -> Σ
o s(1) = c
o s(2) = b
o s(3) = b
o s(4) = a
Cadeia vazia: nenhum símbolo (λ ou ε).
• λ ou ε = 0.
Tamanho de uma cadeia: número de símbolos que a compõem.
• x = aba
o |x| = 3
• T=c
o |T| = 1
Concatenação de cadeias
• u = abra
• v = cadabra
• uv = abracadabra
• vu = cadabraabra
• |u| + |v| = |uv|
Linguagem: conjunto de palavras ou sequência de símbolos de um alfabeto.

• Σ*: todas as sequências de cadeias possíveis formadas pelo alfabeto Σ.


• Pode ser usada em operações de conjuntos (união, intersecção, etc.)
Potência de uma linguagem (concatenação iterativa): produto cartesiano de por W
por W^n-1.
• L = {0, 11}

Fechamento de uma linguagem (fechamento reflexivo) (V*): conjunto de todas as


potências de V.
• V* = V^0 U V^1 U V^2 U V^3 U ...
• V* = {ε; 0; 1; 00; 01; 11; 000; ...}
Fechamento transitivo ou positivo
• V+ = V* - ε
Potência de um alfabeto
• Σ^k = possibilidades de cadeias com comprimento k e símbolos do
alfabeto Σ.
Σ = {0, 1} = conjunto de símbolos
Σ^1 = {0, 1} = conjunto de cadeias
Linguagem L sobre um alfabeto Σ é um subconjunto de Σ*.