a bomba só meu nome é ruim e essa é a nossa primeira aula da disciplina de linguagens formais e autômatos onde nós trataremos os conceitos básicos da nossa disciplina beleza vamos lá para nossa aula então então nós veremos aqui dentro da introdução na aula de hoje o que que é assim táxi e o que que é semântica depois nós passaremos para definição de alfabeto palavra linguagem informal gramática EA hierarquia de chomsky beleza uma linguagem formal nós temos que entender que o primeiro. Dela está relacionada as linguagens artificiais as linguagens de programação por exemplo eu não
vou falar sua linguagem de programação porque dentro da própria matemática os próprios circuitos lógicos são linguagens formais essas linguagens formais elas vem sendo desenvolvida desde a década de 50 Então são linguagens relativamente novas até porque de e a ciência da computação é uma assim esse é muito novo então começou se eu não me engano lá na década de 50 com fortran que é o que nós chamamos de fórmula translator fortran Foi simplesmente para traduzir língua expressões matemáticas então tinham um cunho totalmente matemático até porque é aonde nossa assim e se está inserida é dentro da
ciência da matemática e com o passar do tempo ela acabou indo para o lado das linguagens artificiais que aí veio depois Pascal ciência mais mais então são todas essas linguagens de programação e como eu falei para você nós queremos aqui com a disciplina linguagens formais e autômatos trazer construir uma base sólida para que no semestre que vem você venha conseguir construir a sua linguagem programação dentro da disciplina de compiladores tanto aqui quanto lá na disciplina de compiladores você vai ver e o enfoque maior dessas aplicações é resolver os problemas relacionados análise léxica que lá vai
chamar scanner e análise sintática que é o que nós vamos chamar lá de parça alguns exemplos de linguagens formais são as linguagens de programação os circuitos digitais as expressões matemáticas também são uma forma formal de escrever algo e bem informal e as linguagens naturais eu não posso sair falando aqui de qualquer jeito eu tenho que seguir uma certa gramática que nós vamos ver também aqui nessa disciplina para poder produzir uma frase para te dizer algo Então vamos lá vamos entender o que que essa sim táxi e o que que a semântica Relembrando então a quarta
ser assim táxi é a parte da gramática que estuda a disposição das palavras na frase e das frases no discurso Ou seja quando você faz uma a tática você está olhando à disposição a posição de cada palavra de cada termo dentro de uma oração consequentemente você vai tá olhando também a relação lógica entre elas se tem um sentido a palavra ou por exemplo o sujeito está depois o predicado predicado depois o sujeito para que isso faça sentido que análise semântica que vem posterior análise sintática ou sintáxi então alguns exemplos São José bebeu água Será que
essa frase está certa sintaticamente nós temos aqui um sujeito é um predicado Maria acabou a prova As Flores São Belas Não vejo problemas aqui que significa que essa organização de cada uma dessas palavras dentro desse discurso elas estão corretas agora vamos pensar no assim táxi errada água bebeu José Oi Tá esquisito isso aqui não tá é José que é o a gente que vai beber a água não a água que bebe José A não ser que sei lá né ele foi submersa enfim mas aí já seria um elemento figurativo né a prova acabou Maria também
né dentro do Nossa disciplina a prova às vezes acaba com a gente mas aqui tá errado não é isso que queria dizer as flores é bela dói até o ouvido né tem um problema aqui de concordância os bandidos começaram a correr em também tá errado conjugação do verbo eu vou correr mineradores falar assim né tira o último R isso aqui é um erro léxico ou seja um erro de escrita tá o cidadão aqui queria ter dito né eu vou correr então o erro aqui é léxico vamos avançar agora um pouquinho mais dentro do nosso dia
a dia o que um exemplo na José bebeu água está certo dentro das linguagens artificiais como por exemplo aqui ó if a menor que 10 Então se aqueceram triste código de Pascal Delphi algo dessa natureza não vejo nada errado aqui porque normalmente coloca o wi-fi aqui entre parentes nós temos a condição e aqui pode ter ou não a palavra dentro não vejo nada de errado na análise sintáxi sintática dessa frase aqui essa frase a recebe 45 tem alguma coisa de errado na disposição também não vejo nada de errado agora olha só eu coloco aqui ó
tem (a menor que 10 if isso aqui tá tudo ao contrário Isso aqui vai dar um erro de compilação claríssimo e a linha de baixo 45 recebe a gente na sua experiência de programação o número Qualquer que seja o número você pode atribuir alguma coisa nele não você atribui a uma variável como está aqui em cima aqui ó a variável a recebe 45 o número 45 já é um literal já é um número então ele não pode ser variável entender então esse aqui é um erro de syntaxe será que é que tem erro agora se
10 maior que a então aí eu troquei de lugar aqui tá mas não é porque eu troquei de lugar que tá errado por exemplo José bebeu água a água foi bebida por José então tem coisas que flexionam tem coisas que são positivas e possíveis de fazer dentro de uma linguagem senão a gente fica pensando que tudo está errado e não é por aí análise sintática ela segue manda a gramática Então pessoal dentro das linguagens dentro da com processo de compilação de um programa você faz então primeiro análise léxica para ver se tá tudo escrito corretamente
depois você faz análise sintática para ver se ordenadamente está correto cada coisa no seu lugar e no final você faz o que nós fazer falamos que é análise semântica que análise mais complicada porque que ela é complicada porque ela precisa do contexto então o que que análise semântica a semântica só que eu peguei na gramática tá gente na gramática lá do segalla ou qualquer outra a gente aprendeu na quarta quinta série é a parte da gramática que estuda o significado das palavras Ou seja eu quero saber o que que significa cada uma dessas palavras por
quê Porque um erro semântico ou seja uma palavra escrita errada ela muda completamente o sentido da sua frase e como quem sabe sentido da nossa frase simplesmente se ou melhor simplesmente não somente se eu ler todo o contexto Então vamos lá alguns exemplos aqui ó e o caminho todos os dias o caminho é longo dá uma olhadinha aqui gente essa palavra caminho ela não é igualzinha a essa ia ser de cima aqui olha dentro dessa frase o que que esse caminho significa Eu caminho ele é um verbo né de caminhar é um ato de andar
coloquei aqui para você agora esse aqui ó o caminho é longo aí Aqui já é uma estrada já é um lugar onde é passado então a palavra Idêntica aí você pode analisar ela só olhando para ela não em um aquela um substantivo né embaixo em cima é um verbo e olha só como que é complicado essa análise das linguagens olha como que é complicado quando você aperta F5 F9 para compilar o seu programa e ele vai lá e te falo tá ok E já era executável para você uma tarefa tão simples que faz todos os
dias você vai ver como que a complexo construir um compilador que análise para você todo seu código e te fale que está certo ou não está certo Olha só esse outro exemplo pessoal Vou Colher flores mas são concorda agora ó a colher caiu no chão Poxa além de aqui em cima ser um verbo aqui ser um objeto até a forma de dizer mudou português é um negócio bem legal né para não falar difícil então Vou Colher flores acolher Uai mas a palavra é a mesma não tem acento não tem nada é aqui ou pronuncie de
um jeito é que eu pronuncio de Ah pois é agora imagina o compilador procurando entender o que que é colher olhando só para essa palavra aqui ó olhando só para essa palavra aqui ele nunca vai saber que a de cima é um ato de pegar e o debaixo de um objeto da mesma maneira pessoal o seu compilador também ele não analisa o seu código Limpo Por mim tanto é que quando você tá lá no primeiro período a gente fica bravo né que fala assim ah mas esse compilador tá falando que tá o erro está na
linha 25 mas não é a linha 25 professor já te ensina né você vai ter que pagar todas as minhas aí por perto ou para cima ou para baixo enfim porque porque ele precisa ver como um todo para te falar você tá certo ou tá errado vamos lá vamos fazer mais dois exemplos aqui de semântica errado ó recebi um cheque sem fundo olha só aqui ó amanhã semântico muda completamente o sentido da frase eu recebi um cheque sem fundo você que não faz sentido Xeque com X é jogada de xadrez então eu recebi uma jogada
de xadrez sem fundo não não faz sentido o cara queria ter escrito cheque com ch que é o papel-moeda aí sim faz sentido se falar que tá sem fundo um outro exemplo a sessão inicia-se às 20horas Uai como assim né seção com c cedilha é divisão é uma repartição uma repartição pública né Por exemplo agora sessão com dois s que é de reunião de encontro né basta lembrar e da época lá de sessão da tarde a coisa do tipo aí agora vamos para o nosso mundo da programação tão aqui ó eu caminho todos os dias
o caminho é longo a palavra caminho é Idêntica só que numa frase é o significa uma coisa e na outra frase ela significa outra agora olha essa aqui soma Se você olhar para essa variável aqui para essa daqui e para essa daqui a palavra somos tem como você saber o que que é cada uma dessas posições de memória não não tem só tem jeito de você saber qual é o tipo dela olhando para palavra imediatamente anterior a ela Então esse somo aqui diz respeito a uma posição de memória que cabe o inteiro esse aqui uma
posição de memória que cabe um Flot e esse aqui é completamente diferente é uma classe é uma outra estrutura Tá certo e todas elas são palavras soma Então a gente tem que ficar atento que análise semântica Ela não é uma análise simples ela precisa de olhar como um todo o exemplo clássico disso aqui o seguinte você tá lá na linha 55 do seu código e você tenta atribuir 4,5 nem da variável soma Suponho que soma seja essa daqui ó aí será que tá certo ou tá errado atribuições uma recebe o 4,5 vai ter que olhar
lá na a segunda linha onde você declarou a variável somo se ela está declarada como flute se ela tiver como inteiro ela não vai aceitar o 4,5 entendeu que é o exemplo que eu tô colocando aqui para você ó e int soma soma recebe 2.4 vai aparecer um erro do tipo aqui ó e a semântico tipos incompatíveis vai ser algo alguma mensagem parecida com essa daqui ou seja você tá querendo colocar broa no potinho de biscoito não dá não tem jeito a mesma forma eu chego para você falta tem erro semântico aqui pessoal média recebe
52,1 me responde aí e se a sua resposta tem que ser não Zé eu não sei porque que não sabe porque eu não sei se ela foi definida eu não sei qual é o tipo de média tá Então nesse caso aqui se eu te der só essa linha e você sabe que vai dar um erro de compilação e ao erro de variável não definida ou seja para usar um espaço de memória você precisa declarar ele antes bom então por aqui nós Já começamos a entender o que que é erro sintático e o que que é
erro semântico então Toda vez que você usa ou variáveis em ter teclado e significa e se configura como o erro semântico beleza e assim por diante pessoal partir de agora quando você pegar o seu código você vai ter que ter essa percepção você vai estar muito mais maduro em relação a sua programação do que quando você começou a dois três quatro anos atrás então aqui ó só para gente fazer um paralelo entre sim táxi e semântico sintática ele é reconhecido antes da semântica primeira você analisa à disposição depois você analisa o sentido primeiro a receber
tratamento adequado tratar os erros sintáticos são muito mais simples é muito mais simples do que os semânticos possui construções matemáticas bem definidas e a ver somente reconhecidas que são no caso definido pela gramática de chomsky que é o que nós vamos estudar nessa disciplina ou seja tudo aquilo que é problema mas nós temos uma ferramenta que resolve esse problema Você concorda comigo que isso deixa de ser Problema que problema mesmo é aquele que existe e nós não conseguimos atacar esse problema Isso sim é um problema que eu no caso o da semântica é a análise
sintática é livre ela é sem significado associado enquanto que a semântica você tem que interpretar todo o contexto para saber cada um dessas posições esses objetos que estão aí então analise semântica é feita posterior às em táxi o tratamento é muito mais elaborado e a baseado em interpretações portanto mais subjetivo se é mais subjetivo é mais O gato é assim então vamos ficar atenta para nada semântica então para a gente finalizar nossa aula de hoje vamos só combinar com um vocabulário já inicial para a gente levar ao longo dessa disciplina Quando eu disser que um
programa está sintaticamente errado ou seja tem um erro sintático e significa dizer que dentro da linguagem formal o texto correto de se dizer é o texto escrito não é aceito pela linguagem Ou seja quando você aperta F5 lá para compilar e ele não compila o correto de ser aparecer ali na terra na tela deveria ser este programa não foi aceito pela linguagem a gente simplesmente análise ele como a deu bug aqui não rodou tá e o programa que está simpaticamente e semanticamente também correto nós podemos dizer que o texto desse programa ele é aceito pela
linguagem a coisa sim tem a linguagem português eu chego e falo table é como se o meu ouvido fácil pé não não pode porque essa palavra table não é aceita na linguagem portuguesa entender o pessoal agora a última linha aqui nos mostra o que quando a gente faz aquele programa que roda né que você aperta lá e compila mas dá um problema por exemplo era para multiplicar por três se multiplica por 4 é o salário de alguém cara vai ficar muito feliz né Mas é o que esse programa está correto ele é aceito pela linguagem
Sim ele é aceito pela linguagem porém ele tem um erro aí ele tem um bugue aí dentro então o correto de disse dizer é sintaticamente inválido ou seja o que esse texto que foi escrito aqui que esse código fonte ele é sintaticamente inválido ok pessoal bom então agora a sua visão de programa correto errado tem que mudar porque o que para um programa ser correto tem que depender se ele faz atende tanto a linguagem quanto o significado concorda comigo não é só porque rodou que tá certo nós temos que entender se a linguagem foi modelada
corretamente E se ela tem o comportamento desejado tá dentro das linguagens artificiais definir esses limites aí entre sintáxi semântica não é tão fácil eu que sou um brincar com o seguinte é igual eu sei muito bem olhando para o mapa onde começa a Minas Gerais onde termina o Rio de Janeiro por exemplo agora vai lá lá perto de Raposo lá na divisa lá e me fala a partir daqui a Minas a partir daqui a Rio de Janeiro será que você consegue não gente não consegue a mesma coisa aqui tá então lá na disciplina de compiladores
você os problemas desse dessa natureza pera aí onde começa a análise sintática onde começa na The semantic onde termina uma a gente não sabe muito bem Tá certo então por isso que tem que ser um negócio muito bem definido na matemática na linguagem formal para nós conseguimos avançar se não esquece não vai dar certo beleza pessoal essa disciplina que nós vamos concentrar nossa força nas análises sintáticas Então por hoje nós paramos por aqui e na aula que vem a gente já introduz os conceitos iniciais se você gostou dessa aula dá um joinha para gente e
até a próxima pessoal