<?xml version="1.0" ?>

<documento html="default" latex="article">

<titulo> Métodos de Programação III
</titulo>

<autor>
João Saraiva <br/>
<link href="mailto:jas@di.uminho.pt"> jas@di.uminho.pt </link>
</autor>

<instituicao>
<it> <large> Matemática e Ciências da Computação </large> </it> <par/>
<it> <large> Engenharia de Sistemas e Informática </large> </it> <par/>
<bold> <it> 2005/2006 </it> </bold>
</instituicao>

<par/>


Esta página contém informação relativa à cadeira de <it>Métodos
de Programação III</it> a decorrer no <it>ano lectivo
2005-2006</it>. Métodos de Programação III é uma cadeira do 1º
Semestre do 3º Ano das licenciaturas em Engenharia de Sistemas e
Informática e em Matemática e Ciências da Computação.

Referências para páginas de instâncias anteriores podem ser
encontradas nos seguintes endereços:

<par/>

<tabela htmlview="html" bgcolor="white">


<linha>
<elem> Ano Lectivo 2004-2005:</elem> 
<elem> <link href="http://www.di.uminho.pt/~jas/mp3/04-05/mp3.html">Página
</link>
</elem> 
</linha>

<linha>
<elem> Ano Lectivo 2003-2004:</elem> 
<elem> <link href="http://www.di.uminho.pt/~prh/curmp303.html">Página
</link>
</elem> 
</linha>

<linha>
<elem> Ano Lectivo 2002-2003:</elem> 
<elem> <link href="http://www.di.uminho.pt/~prh/curmp302.html">Página
</link>
</elem> 
</linha>

<linha>
<elem> Ano Lectivo 2000-2001:</elem> 
<elem> <link href="http://www.di.uminho.pt/~jas/mp3/00-01/mp3.html">Página
</link>
</elem> 
</linha>

<linha>
<elem> Ano Lectivo 1999-2000:</elem> 
<elem> <link href="http://www.di.uminho.pt/~jas/mp3/index.html">Página
</link>
</elem> 
</linha>

</tabela>

<par/>

<small>
<it> Esta página está a ser gerada a partir de um documento XML, por
uma ferramenta que utiliza os métodos de programação leccionados neste
curso (eg, expressões regulares, autómatos finitos e gramáticas
independentes do contexto). A partir da especificação XML é produzida
esta página, bem como a sua representação em LaTeX. O formato LaTeX dá
origem aos seguintes documentos em postscript e pdf:

 <link
href="http://www.di.uminho.pt/~jas/mp3/05-06/pagina_mpiii.ps">[ps]
</link>,<link
href="http://www.di.uminho.pt/~jas/mp3/05-06/pagina_mpiii.pdf">[pdf]
</link>
</it>
</small>

<par/>


<imagem ficheiro="newflash.gif">
<huge> <bold> <cor cor="green"> Novidades e Avisos </cor> </bold> </huge>
</imagem>

<par/>

<centrar>
<tabela border="1">



<linha>
<elem>(23-09-04)</elem>
<elem>
<itemize>
<item><bold>A Ficha-Teórico-Prática nº8 já está disponível</bold></item>
<item><bold>A página da disciplina está no "ar".</bold></item>
</itemize>
</elem>
</linha>

</tabela>
</centrar>


<par/>

<par/>


<capitulo nome="Equipa Docente e Horário">

<itemize>

<item> <link pagina="http://www.di.uminho.pt/~jas">João Saraiva</link> 


<par/>

<tabela htmlview="html" bgcolor="white">
<linha>
<elem> Teóricas: </elem> 
<elem> LESI/MCC </elem>
<elem> T1 </elem> 
<elem> 2ª Feira - 11:00-12:00 </elem> <elem> sala CP2-103 </elem>
</linha>
<linha>
<elem> </elem> <elem> </elem> <elem> T2 </elem> 
<elem> 5ª Feira - 10:00-11:00 </elem> <elem> sala CP2-103 </elem>
</linha>


<linha>
<elem> Teórica-Prática: </elem> 
<elem> MCC </elem>
<elem> TP1 </elem> 
<elem> 4ª Feira - 11:00-13:00 </elem> 
<elem> sala DI 0.02  </elem>
</linha>

<linha>
<elem> </elem> 
<elem> MCC </elem>
<elem> TP2 </elem> 
<elem> 5ª Feira - 11:00-13:00 </elem> 
<elem> sala DI 0.02 </elem>
</linha>


<linha>
<elem> Dúvidas </elem> 
<elem> LESI/MCC  </elem>
<elem> </elem> 
<elem> 2ª Feira - 14:00-18:00 </elem> 
<elem> </elem>
</linha>

</tabela>

</item>

<item> <link pagina="http://www.di.uminho.pt/~prh">Pedro Rangel Henriques</link>

<par/>

<tabela htmlview="html" bgcolor="white">

<linha>
<elem> Teórica-Prática: </elem> 
<elem> LESI </elem>
<elem> TP1 </elem> 
<elem> 2ª Feira - 14:00-16:00 </elem> 
<elem> sala DI-A2 </elem>
</linha>

<linha>
<elem> Teórica-Prática: </elem> 
<elem> LESI </elem>
<elem> TP2 </elem> 
<elem> 2ª Feira - 16:00-18:00 </elem> 
<elem> sala DI-A2 </elem>
</linha>


<linha>
<elem> Dúvidas </elem> 
<elem> LESI/MCC  </elem>
<elem>  </elem> 
<elem> ???  </elem> 
<elem> </elem>
</linha>

</tabela>
</item>


<item> <link pagina="http://www.di.uminho.pt/~tiago">Tiago</link>

</item>

</itemize>

</capitulo>


<capitulo nome="Estrutura e Funcionamento">

Exposição da matéria fundamental -- motivação, conceitos, definições,
métodos e justificações -- a nível das aulas teóricas. Resolução de
exercícios de consolidação, a nível das aulas teórico-práticas, no
quadro e no computador. Realização, no computador, extra aulas de
trabalhos concretos de aplicação, recorrendo à linguagem Haskell.

</capitulo>

<capitulo nome="Objectivos ">

É objectivo deste curso levar os alunos a:

<itemize>
<item> Aprofundar e interiorizar os conceitos fundamentais e os
métodos de programação em larga escala e a reutilização de programas,
dando especial relevo ao <it>paradigma funcional.</it> </item>

<item> Aprender o conceito de <it>Autómato Finito </it> e a teoria
associada, bem como a sua aplicação à simulação de <it>Sistemas de
Controlo</it> e à especificação e reconhecimento de <it>Linguagens
Regulares.</it> </item>

<item> Compreender os conceitos de <it>cálculo parcial ou
especialização de programas</it></item>

<item> Aprender o conceito de gramática e como descrever estruturas de
linguagens através de gramáticas.</item>

<item> Compreender o conceito: embeber linguagens de dominio
especifico (eg, gramáticas) numa linguagem de dominio geral (eg,
Haskell).</item>

<item> Reforçar a aptidão dos alunos para desenvolver programas
correctos e eficientes (quer no paradigma funcional quer em qualquer
outro paradigma de programação).</item>

</itemize>

</capitulo>

<capitulo nome="Avaliação">

A Avaliação tem uma componente teórica e uma componente
prática, ambas obrigatórias.  

<par/>

De acordo com o regulamento actualmente em vigor na UM, a <bold>nota
teórica</bold> será obtida através da realização de <bold>1 prova individual
escrita</bold>. Essa prova tem as instâncias a seguir indicadas (um aluno
só poderá fazer melhoria na época de recurso):

<itemize>

<item> Exame, realizado na 1ª chamada da época normal, no fim do 1º
semestre</item>

<item> Exame, realizado na 2ª chamada da época normal, no fim do 1º
semestre </item>

<item> Exame, realizado na época de recurso</item>
</itemize>


A <bold>componente prática</bold> sera formada por 2 componentes

<itemize>

<item> 2 trabalhos praticos a realizar durante o semestre </item>
<item> Uma prova escrita sobre os trabalhos praticos com 15 minutos 
de duraçao. Esta prova escrita sera realizada imediatamente antes 
(ou depois) da avaliaçao teorica da disciplina. 
</item>
</itemize>

A nota final será determinada de acordo com a seguinte fórmula:

<par/>

<centrar>
<bold> 
A anunciar em breve.
</bold>
</centrar>



</capitulo>



<capitulo nome="Programa">

<itemize>
<item> Programação baseada em Transições de Estado:  
  <itemize> 
    <item> Noções básicas </item>
    <item> Autómatos Finitos 
      <itemize>
        <item> Autómatos não-deterministas </item>
        <item> Autómatos deterministas </item>
        <item> Cálculo Parcial aplicado a Autómatos Deterministas </item>
        <item> Conversão de ANDs em ADs </item>
        <item> Conversão de AFND am AFD através de cálculo parcial </item>
        <item> Minimização de Estados de AFD </item>
        <item> Autómatos reactivos </item>
          <itemize>
            <item> Aplicação dos autómatos à simulação de Sistemas de Controlo </item>
            <item> Aplicação dos autómatos ao reconhecimento de Linguagens Regulares </item>
            <item> Definições; expressões regulares; gramáticas regulares </item>
          </itemize>
      </itemize>
    </item>
  </itemize>
</item>
<item> Programação baseada em Gramáticas:
 <itemize>
   <item> Conceito e exemplos </item>
   <item> Estrutura concreta e abstracta das linguagens formais </item>
   <item> Desenvolvimento de <it> Parsers baseados em Combinadores</it> 
          para Linguagens Formais. </item>
 </itemize>
</item>

</itemize>

</capitulo>



<capitulo nome="Fichas Teórico-Práticas">


As fichas a realizar em cada aula teorico-pratica serao
disponibilizadas nesta secçao. As fichas estarao disponiveis na
sexta-feira da semana anterior a aula a que se destinam.

<itemize>

<item>
<bold>Ficha Teórico-Prática nº 1: 
<cor cor="black"> Expressões Regulares </cor>
</bold>
  <itemize>
  <item><it>literate haskell</it> <link href="http://www.di.uminho.pt/~jas/mp3/05-06/ficha1.lhs">ficha1.lhs.
</link> e <it>pdf</it> <link href="http://www.di.uminho.pt/~jas/mp3/05-06/ficha1.pdf">ficha1.pdf.
</link>
  </item>
  </itemize>
</item>

</itemize>

</capitulo>



<capitulo nome="Software">

Ao longo do semestre o software usado (e/ou acnoselhado) ser
disponibilizado aqui.


</capitulo>


<capitulo nome="Contribuições dos Alunos">

Soluçoes de trabalhos praticos, desafios lançados nas aulas aos alunos
serao aqui disponibilizados.


</capitulo>


<capitulo nome="Trabalhos Práticos">


A anunicar em breve.

</capitulo>




<capitulo nome="Sumários">

<itemize>
<item> <link pagina="http://www.di.uminho.pt/~jas/mp3/05-06/sumarios.html"> 
       Engenharia de Sistemas e Informática </link> </item>
<item> <link pagina="http://www.di.uminho.pt/~jas/mp3/05-06/sumarios.html"> 
       Matemática e Ciências da Computação </link>  </item>
</itemize>

</capitulo>



<biblio erros="sim" ordenado="default">




<livro key="jas00">
  <tit>     Introduction to Language Theory, Languages and Computation </tit>
  <aut>     Hopcorft  and Ullman </aut>
  <ano>      2001                                                  </ano>
  <editora>                                               </editora>
  <edicao>  2nd Edition                                            </edicao>
</livro>



<livro key="jas00">
  <tit>      Language Processing (with a Functional Flavour)       </tit>
  <aut>      João Saraiva                                          </aut>
  <ano>      2000                                                  </ano>
  <editora>  DI/UM                                             </editora>
  <edicao>   1ª                                                 </edicao>
</livro>
  
<livro key="lsb96">
  <tit>      Elementos da Teoria dos Autómatos                     </tit>
  <aut>      L.S. Barbosa                                         </aut>
  <ano>      1996                                                  </ano>
  <editora>  DI/UM                                             </editora>
  <urlps>    http://www.di.uminho.pt/~jas/mp3/nlp.ps.gz          </urlps>
</livro>


<livro key="jas95">
  <tit>      Especificação e Processamento de Linguagens           </tit>
  <aut>      João Saraiva                                          </aut>
  <ano>      1995                                                  </ano>
  <editora>  DI/UM                                             </editora>
  <edicao>   1ª                                                 </edicao>
  <urlps>    http://www.di.uminho.pt/~jas/mp3/esp_proc_ling.ps.gz  </urlps>
  <urlhtml>  http://www.di.uminho.pt/~jas/TextosPedag/espProcLing/espprocling.html </urlhtml>
</livro>
  
<livro key="FB94">
  <tit> The Language of Machines: An Introduction to Computability and Formal Languages </tit>
  <aut> R. Floid and R. Beigel </aut>
  <editora> Computer Science Press </editora>
  <ano> 1994 </ano>
</livro>

<artigo key="haskellRep">
  <tit>     Report on the Programming Language Haskell 98              </tit>
  <aut>     S.P.Jones, et al                                           </aut>
  <ano>     1999                                                       </ano>
  <urlhtml> http://www.haskell.org/onlinereport                    </urlhtml>
  <urlps>   http://www.haskell.org/definition/haskell98-report.ps.gz </urlps>
  <urlpdf>  http://www.haskell.org/definition/haskell98-report.pdf  </urlpdf>
</artigo>


<livro key="Bird98">
  <tit> Introduction to Functional Programming using Haskell </tit>
  <aut> R. Bird </aut>
  <editora> Prentice Hall </editora>
  <ano> 1998 </ano>
</livro>

<livro key="SimonThompson99">
  <tit> Haskell - The Craft of Functional Programming </tit>
  <aut> S. Thompson </aut>
  <editora> Addison-Wesley </editora>
  <ano> 1999 </ano>
  <edicao> 2ª </edicao>
</livro>


<livro key="NeilJones93">
  <tit> Partial Evaluation and Automatic Program Generation </tit>
  <aut> N. Jones, C. Gomard and P. Sestoff </aut>
  <editora> Prentice Hall </editora>
  <ano> 1993 </ano>
</livro>


<livro key="Horowitz84">
  <tit> Fundamentos de Estruturas de Dados </tit>
  <aut> E. Horowitz and S. Sahni </aut>
  <editora> Editora Campus </editora>
  <ano> 1984 </ano>
</livro>


<livro key="Carrol89">
  <tit> Theory of Finite Automata  </tit>
  <aut> J. Carroll and D. Long  </aut>
  <editora> Prentice Hall  </editora>
  <ano> 1989 </ano>
</livro>


</biblio>


</documento>



