Métodos de Programação III
Trabalho Prático Nº 2

(sistema AWK)
20 de Novembro de 1998


  

1 Objectivos e Organização
 

Este trabalho prático tem como objectivos levar os alunos, através da resolução de problemas reais, a:

Para o efeito, esta folha contém  três enunciados, dos quais deverá resolver um.

Quanto ao relatório a elaborar, para entregar na altura da apresentação do trabalho, deve ser claro e sucinto e, além do enunciado, deverá conter exemplos de utilização com os respectivos resultados.
 

2 Enunciados
 

Questao 1 (Concurso de Professores) 

Num determinado ficheiro existe a descrição de uma série de candidatos a ocupar vagas de docente numa universidade portuguesa. Sobre cada candidato, conhece-se o seu nome, o grau académico atingido (licenciado, doutorado, agregado), o número de anos efectivos de ensino (não incluindo os anos que esteve de licença sem serviçoo docente alocado) e o número total de anos de trabalho para essa instituição (como docente e/ou técnico / investigador).

Considerando esse ficheiro como tendo a seguinte estrutura:
 

 nome! grau! anosEns! anosCasa
pretende-se um sistema de produção que, através de um conjunto de regras (que traduzem a legislação interna da instituição), proceda à classificação automática dos candidatos, indicando para cada um o cargo (assistente-estagiário, assistente, professor convidado, professor uxiliar,  professor associado e professor catedrático) que lhe pode ser atribuido.

Escreva a base de regras em awk, atendendo à seguinte legislação:
 

Adicionalmente a essa classificação, o seu sistema em awk deve:
 


Questao 2 (Disciplinas)

Na folha de trabalhos práticos anterior (folha 1) foi-lhe pedido que, utilizando um grafo de dependências para modelar as precedências entre as
unidades de ensino de cursos de formação profissional, fosse capaz de sugerir uma possível sequência de estudo dos módulos, e de
identificar todas as unidades das quais uma dada unidade de ensino depende.

Para resolver tal problema, foi necessário começaar por ler o nome das unidades de ensino e as precedências entre elas para poder
construir em memória uma representação do grafo.

Neste contexto, pretende-se agora usar o awk para ler um ficheirode texto que foi escrito por alguém com o seguinte formato
 

disciplina: disc1, disc2, discn
(n >= 1 ) e gerar (produzir) um módulo em C com o código para inicializar a matriz de adjacências.

Para isso deve interpretar cada linha do ficheiro de entrada (com a estrutura acabada de mostrar), como indicando que as unidades de ensino disc1, disc2 e discn são precedências obrigatrias da unidade disciplina.

O código C a ser gerado deve ser uma sequência de atribuições da constante true ás componentes do array bidimensional (matriz) grafo cujos indices constituem um ramo do grafo de dependências.Por exemplo, para a linha acima ilustrada, seriam escritas as seguintes atribuições:
 

grafo[disc1][disciplina] = true;
grafo[disc2][disciplina] = true;
grafo[discn][disciplina] = true
 
Porém para que tal funcione é necessário atribuir a cada um dos identificadores de unidades de ensino um número inteiro que possa ser indice do array em causa. Para isso, e ainda em relação ao  exemplo anterior, seria necessário atribuir códigos (1, 2, 3, 4) ás quatro unidades de ensino referidas pela ordem com que aparecem (da esquerda para a direita), sendo então geradas no fim instruções C correspondentes à definição de tais constantes:

               #define disciplina  1
               #define disc1  2
               #define disc2  3
               #define discn  4
 

Note que se um identificador de unidade voltar a aparecer não se poderá criar um código; nesse caso mantém-se o código já atribuido, não se podendo escrever uma nova linha de definição.
 



 

Questao 3 (Labirinto)

 Neste caso, propoem-se um exercício semelhante em tudo ao enunciado anterior, mas considerando o problema do labirinto que foi proposta também na folha 1 de trabalhos práticos.

A estrutura do ficheiro de texto de entrada, onde estará descrito o labirinto com a indicação das quadriculas (definidas  pelas suas coordenadas) que estão ligadas, será escolhida pelos alunos.
 
 



Aqui podem encontrar a versão postscript do enunciado do trabalho prático.